Script de alterações no dconf

Script de alterações no dconf

Eu escrevi um script simples para nossas máquinas Ubuntu na faculdade que define algumas substituições do dconf para definir o tema, o plano de fundo etc. No entanto, não consigo definir corretamente o plano de fundo da tela de login.

Seção do script para este propósito:

#Set login background and remove dots
echo "Setting lightdm dconf settings"
xhost +SI:localuser:lightdm
su lightdm -c "gsettings set com.canonical.unity-greeter background '/background.png'"
su lightdm -c "gsettings set com.canonical.unity-greeter draw-grid false"

Esses mesmos comandos funcionam se inseridos diretamente em um terminal conectado como usuário lightdm, por exemplo:

sudo su lightdm -s /bin/bash
gsettings set com.canonical.unity-greeter background '/background.png'
gsettings set com.canonical.unity-greeter draw-grid false

Define bem o papel de parede

Alguma idéia de por que os comandos funcionam, mas não o script?

Obrigado

Responder1

Veja como resolvi isso, em vez de executar "sudo bash" ou, no seu caso, executar "sudo -c" (que faz seu script pausar ao mudar de usuário ou simplesmente não funciona), executo três pequenos scripts.

(Não se esqueça de tornar cada um dos scripts executáveis ​​com "chmod +x script_name.sh")

O primeiro script é meu install.sh:

sudo cp third_script.sh /tmp         # Copy third_script to tmp for easier access
sudo chmod 0755 /tmp/third_script.sh # This needs to be executable by lightdm
sudo bash second_script.sh           # Runs next file
sudo rm /tmp/third_script.sh         # Now we can remove the third script

Então, em second_script.sh, adiciono lightdm ao xhost e executo o terceiro arquivo de script como lightdm-user:

#!/bin/bash
echo "$USER"                         # To see if root is running the script
xhost +SI:localuser:lightdm
su lightdm -s /tmp/third_script.sh

E o third_script é onde a mágica acontece:

#!/bin/bash
echo "$USER"                         # To see if lightdm is running the script
gsettings set com.canonical.unity-greeter background '/background.png'
gsettings set com.canonical.unity-greeter draw-grid false

Isso funciona para mim! Deixe-me saber se existe alguma maneira mais fácil.

informação relacionada