script de bashsgedit

script de bashsgedit

Cuando abro un archivo con gedit raíz, me gustaría tener la misma configuración que mi gedit normal. Tema, preferencias y complementos.

¿Puedo configurar algunos enlaces simbólicos en el lugar correcto para lograr esto?

Respuesta1

Creo que esto es bastante imposible porque gedit administra su configuración a través de gconf y para sincronizarlas requeriría un gnome-settings-deamon ejecutándose como root.

Respuesta2

Normalmente no sincronizarías la configuración normal de gedit con la configuración del usuario raíz de gedit.

Root tiene su propia configuración y el usuario de la computadora tiene su propia configuración. Los dos no son lo mismo. Esto es por diseño.

Cuando opera como root, utiliza el perfil del usuario root y cuando opera como usted mismo, utiliza su perfil personal. Cada uno tiene sus propios permisos y propiedad, vinculados a esa cuenta en particular. No están destinados a ser iguales.

Respuesta3

Haber heredado la configuración sudode su cuenta de usuariogedit

sgedit control deslizante derecho de 80 columnas.gif

En este ejemplo, la configuración de usuario para el nombre de la fuente, el tamaño de la fuente, las tabulaciones, la conversión de tabulaciones a espacios, el resaltado de 80 columnas y la barra deslizante de miniaturas del lado derecho han sido heredadas por sudo.

Con normal sudo -H geditno puede realizar ni guardar estos ajustes de configuración. Con el script a continuación, sgeditla configuración se hereda de su cuenta de usuario.

Este script también soluciona los problemas " gksues malo y no está instalado de forma predeterminada" y " pkexeces difícil de configurar".


Fondo

Hace años que me molesta el mismo problema. El proyecto de este fin de semana era escribir el sgeditguión:

  • Llamar usandosgedit filename1 filename2...
  • Obtiene la configuración de gedit del usuario para tabulaciones, fuentes, ajuste de línea, etc.
  • Se eleva a sudo -Hpara preservar la propiedad del archivo mientras obtiene poderes de root.
  • Solicita una contraseña si el último sudo ha expirado.
  • Obtiene la configuración gedit de sudo
  • Compara las diferencias entre la configuración de usuario y sudo gedit
  • Se ejecuta gsettings setsolo en las diferencias (reduce 174 setcomandos a una docena o menos. La próxima vez se ejecuta quizás solo uno o dos cambios, pero muchas veces ninguno.
  • Llama a gedit como una tarea en segundo plano de modo que el indicador del terminal reaparece inmediatamente.

script de bashsgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
    grep -v docinfo | \
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {

    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history | \
        grep -v docinfo | \
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
#    nohup gedit $@ &>/dev/null &
    nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
#              Set the X geometry window size (WIDTHxHEIGHT+X+Y).

}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

exit 0

Limpieza interna

Copie el script bash anterior a un nuevo archivo llamado sgedit. Recomiendo colocarlo en su $HOME/bindirectorio, es decir /home/YOURNAME/bin. Es posible que primero tengas que crear el directorio.

Marque el archivo como ejecutable usando:

chmod a+x ~/sgedit

Note ~es un atajo para /home/YOURNAME.

información relacionada