脚本 dconf 更改

脚本 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-user 身份运行第三个脚本文件:

#!/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

这对我来说很管用!如果有更简单的方法请告诉我。

相关内容