我已经使用 elementary os 半年了,现在我已经在系统上安装了最新的 Ubuntu。在 elementary os 上,我使用以下命令更改桌面背景:
gsettings set org.gnome.desktop.background picture-uri file:///path_to_image
但是,这个命令在 Ubuntu 中似乎不起作用。我可以通过从“外观”菜单中选择其他图像来更改背景,但我需要从脚本更改背景,因此需要一个有效的命令。
在终端中运行上述命令时不会产生任何错误。如果我运行 gsetting get 命令,它会返回它始终具有的背景图像,好像什么都没发生一样。它完全忽略了我的 set 命令。我尝试使用此命令的图像与默认提供的 /usr/share/backgrounds 图像中的图像相同。此外,我将整个背景文件夹(及其内容)的权限更改为每个人都可以读取和写入,但无济于事。
我尝试注销并重新登录,看看是否会对背景产生任何变化,但什么也没发生,即使发生了,我也不想每次背景发生变化时都重新登录......
网上搜索没有结果。
感谢您的时间!
答案1
gsettings
如果无法写入设置,则显然会成功退出:
$ chmod a-w .config/dconf/ -R
$ gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/Forever_by_Shady_S.jpg
$ echo $?
0
这要么是设计太差,要么就是一个 bug。确保~/.config/dconf
文件夹及其中的所有内容都是可写的,并且归你所有:
sudo chown $USER:$USER ~/.config/dconf -R
chmod u+w ~/.config/dconf -R
答案2
我遇到了同样的问题,我的解决方案如下:
- 将 anaconda gsettings 更改为 gsettings_old 以免干扰系统 gsettings。
- 将颜色方案添加到命令的“picture-uri”部分为“picture-uri-dark”。
$ gsettings set org.gnome.desktop.background picture-uri-dark file:///usr/share/backgrounds/Forever_by_Shady_S.jpg
这是一个简单的脚本来检测主题并设置背景
# Set wallpaper
echo "Set wallpaper"
current_theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
echo "current_theme: $current_theme"
if [[ "$current_theme" == *"dark"* ]]; then
theme="-dark"
else
theme=""
fi
echo "Clearing background."
# I know this looks redundant and mispelled, but it works.
# DO NOT ALTER
gsettings set org.gnome.desktop.background picture-uri ""; gsettings set org.gnome.desktop.background picture-uri-dark file:///home/user/active_bg.jpe
echo "output_file file://$output_file"
gsettings set org.gnome.desktop.background picture-uri$theme file://$output_file
gsettings set org.gnome.desktop.background picture-options "centered"
echo