Сценарии изменений dconf
Я написал простой скрипт для наших машин с Ubuntu в колледже, который устанавливает некоторые переопределения dconf для установки темы, фона и т. Д. Однако я не могу заставить его правильно установить фон экрана входа в систему.
Раздел сценария для этой цели:
#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"
Эти же команды работают, если они введены непосредственно в терминал, который зарегистрирован как пользователь lightdm, например:
sudo su lightdm -s /bin/bash
gsettings set com.canonical.unity-greeter background '/background.png'
gsettings set com.canonical.unity-greeter draw-grid false
Устанавливает обои отлично
Любые идеи относительно того, почему команды работают, но не сценарий?
Спасибо
1 ответ
Вот как я решил это, вместо того, чтобы запускать "sudo bash" или в вашем случае запускать "sudo -c" (который либо заставляет ваш скрипт останавливаться при смене пользователя, либо просто не работает), я запускаю три небольших скрипта.
(Не забудьте сделать каждый из скриптов исполняемым с помощью "chmod +x script_name.sh")
Первый скрипт - мой 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
Затем в second_script.sh я добавляю lightdm в xhost и запускаю третий файл скрипта от имени пользователя lightdm:
#!/bin/bash
echo "$USER" # To see if root is running the script
xhost +SI:localuser:lightdm
su lightdm -s /tmp/third_script.sh
И третий_скрипт, где происходит волшебство:
#!/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
Это работает для меня! Дайте мне знать, если есть какой-нибудь более простой способ.