Script bashsgedit

Script bashsgedit

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 sudoda sua conta de usuáriogedit

sgedit 80 coluna direita slider.gif

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 geditvocê não pode fazer nem salvar essas configurações. Com o script abaixo sgeditas 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 sgeditroteiro:

  • Ligue usandosgedit filename1 filename2...
  • Obtém as configurações do gedit do usuário para tabulações, fontes, quebra de linha, etc.
  • Eleva para sudo -Hpreservar 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 setapenas nas diferenças (reduz 174 setcomandos 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/bindiretó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.

informação relacionada