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 sudo
de su cuenta de usuariogedit
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 gedit
no puede realizar ni guardar estos ajustes de configuración. Con el script a continuación, sgedit
la configuración se hereda de su cuenta de usuario.
Este script también soluciona los problemas " gksu
es malo y no está instalado de forma predeterminada" y " pkexec
es difícil de configurar".
Fondo
Hace años que me molesta el mismo problema. El proyecto de este fin de semana era escribir el sgedit
guión:
- Llamar usando
sgedit filename1 filename2...
- Obtiene la configuración de gedit del usuario para tabulaciones, fuentes, ajuste de línea, etc.
- Se eleva a
sudo -H
para 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 set
solo en las diferencias (reduce 174set
comandos 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/bin
directorio, 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
.