(Xubuntu)如何使用命令行设置壁纸?

我做了很多谷歌搜索,但无法找到我的问题的解决方案。

我是老师,我在一些学生电脑上使用Xubuntu。 我把一切都锁定得很好,但我无法弄清楚如何限制用户更改壁纸而不必在Kiosk模式下退出整个机器。 我不在乎他们是否在工作期间更改它,但我想创建一个crontab,在重启时重置为原始的.png。

我希望有一个简单的cron入口,但我愿意轻松进入shell脚本世界,如果这就是它需要的东西。

有任何想法吗?

在Xfce的土地上,那是

xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg 

(当然,替换所需的文件路径。)

 xfconf-query --channel xfce4-desktop --list 

列出所有相关属性,以防screen0 / monitor0不是那个。

对于Xubuntu 14.04中的xfce4,使用property / backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image而不是/ backdrop / screen0 / monitor0 / image-path

您还需要设置DBUS_SESSION_BUS_ADDRESS环境变量,如下所示:

 PID=$(pgrep xfce4-session) export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-) 

在我的情况下,我想每天一次旋转壁纸(来自所选文件夹的随机图像),但我不定期地打开我的电脑,所以我通过每半小时从cron运行一个脚本来解决它,但只生效一次一天。

crontab中的条目(通过crontab -e命令添加):

 0,30 * * * * /home/lucifer/scripts/rotate-wallpaper.sh 

rotate-wallpaper.sh:

 #!/bin/bash wallpaperdir="/home/lucifer/Pictures/wallpapers" datefile="/home/lucifer/.wallsw" thisday=$( date +%j ) wallfiles=($wallpaperdir/*) randompic=`printf "%s\n" "${wallfiles[RANDOM % ${#wallfiles[@]}]}"` PID=$(pgrep xfce4-session) export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-) if [ -f "$datefile" ] then lastday=$( cat "$datefile" ) if [ "$lastday" != "$thisday" ] then date +%j > "$datefile" xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic fi else date +%j > "$datefile" xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorDisplayPort-1/workspace0/last-image --set $randompic fi 

注意: – 如果您使用的是非英语系统区域设置,则该属性可以具有不同的名称。 找到属性名称,打开终端窗口并运行此命令的最佳方法:

 xfconf-query -c xfce4-desktop -m 

这将打开xfce4-desktop属性的监视。 现在手动更改背景。 您应该在终端窗口中看到受此更改影响的属性名称。 如果它与/ backdrop / screen0 / monitorDisplayPort-1 / workspace0 / last-image不同,请使用此属性名称

尝试

 gsettings set org.gnome.desktop.background picture-uri file:///your/picture/location.jpg 

file://是必需的。

不要使用cron。 而是使用启动脚本。 虽然你可以使用cron,但我不喜欢它,因为它是用户特定的。

这样做:

 sudo vi /etc/rc.local 

在文件末尾添加以下内容

 sudo -u YOURUSERNAME -g $( id -g YOURUSERNAME ) xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/image-path --set /usr/share/backgrounds/xfce/xfce-blue.jpg 

并确保将YOURUSERNAME替换为您当前的用户。 并通过新背景图像的实际路径替换/usr/share/backgrounds/xfce/xfce-blue.jpg,并确保您的用户有权读取图像

在bash脚本中设置xfce背景颜色:

 d=0; r=$d; g=$d; b=$d; \ xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace0/color1 \ -s $r -s $g -s $b -s 65535 

颜色:

 black: d=0; white: d=65535; red: r=65535; g=0; b=0; 

等等

rgb是16位十进制RGB组件。

65535 = 255 * 257。 255 =hex0xFF。

从8位hex颜色代码转换为16位十进制RGB组件:

 x='C31717' # dark red r=$((16#${x:0:2} * 257)) g=$((16#${x:2:2} * 257)) b=$((16#${x:4:2} * 257)) 

如果背景颜色未更改,请将图像样式设置为无

 xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace0/image-style \ -s 0 

….并将填充样式设置为实体

 xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace0/color-style \ -s 0 

为每个工作区设置不同的颜色:

 xfconf-query -c xfce4-desktop \ -p /backdrop/single-workspace-mode \ -s false i=1; # workspace id xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace$i/image-style \ -s 0 xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace$i/color-style \ -s 0 x=0; r=$x; g=$x; b=$x; \ xfconf-query -c xfce4-desktop \ -p /backdrop/screen0/monitor0/workspace$i/color1 \ -s $r -s $g -s $b -s 65535 

努夫说^^