Quando abro um arquivo com root gedit, gostaria de ter a mesma configuração do meu gedit normal. Então tema, preferências e complementos.
Posso configurar alguns links simbólicos no lugar certo para conseguir isso?
Responder1
Eu acho que isso é impossível porque o gedit gerencia suas configurações através do gconf e para sincronizá-las seria necessário um gnome-settings-deamon rodando como root.
Responder2
Você normalmente não sincronizaria as configurações normais do gedit com as configurações do usuário root do gedit.
O Root tem suas próprias configurações e o usuário do computador tem suas próprias configurações. Os dois não são o mesmo. Isso ocorre intencionalmente.
Quando você opera como root, você está usando o perfil do usuário root, e quando você opera como você mesmo, você está usando seu perfil pessoal. Cada um tem suas próprias permissões e propriedade, vinculadas a essa conta específica. Eles não pretendem ser iguais.
Responder3
Herdar as configurações sudo
da sua conta de usuáriogedit
Neste exemplo, as configurações do usuário para nome da fonte, tamanho da fonte, tabulações, conversão de tabulações em espaços, destaque de 80 colunas e barra deslizante de miniatura do lado direito foram herdadas por sudo
.
Com regular sudo -H gedit
você não pode fazer nem salvar essas configurações. Com o script abaixo sgedit
as configurações são herdadas da sua conta de usuário.
Este script também aborda os problemas " gksu
é ruim e não é instalado por padrão" e " pkexec
é difícil de configurar".
Fundo
Tenho sido incomodado pelo mesmo problema há anos. O projeto deste fim de semana foi escrever o sgedit
roteiro:
- Ligue usando
sgedit filename1 filename2...
- Obtém as configurações do gedit do usuário para tabulações, fontes, quebra de linha, etc.
- Eleva para
sudo -H
preservar a propriedade do arquivo enquanto obtém poderes de root. - Solicita senha se o último sudo expirou.
- Obtém as configurações do gedit do sudo
- Compara as diferenças entre as configurações do usuário e do sudo gedit
- É executado
gsettings set
apenas nas diferenças (reduz 174set
comandos para uma dúzia ou menos. Da próxima vez, talvez seja executado apenas uma ou duas alterações, mas muitas vezes nenhuma. - Chama o gedit como uma tarefa em segundo plano, de modo que o prompt do terminal reapareça imediatamente.
Script 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
Serviço de limpeza
Copie o script bash acima para um novo arquivo chamado sgedit
. Eu recomendo colocá-lo em seu $HOME/bin
diretório, ou seja /home/YOURNAME/bin
, . Talvez seja necessário criar o diretório primeiro.
Marque o arquivo como executável usando:
chmod a+x ~/sgedit
Nota ~
é um atalho para /home/YOURNAME
.