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


11

我已经进行了大量的谷歌搜索,但未能找到解决我问题的方法。

我是一名老师,并且在某些学生计算机上使用Xubuntu。我的所有功能都锁定得很好,但是我想不出如何限制用户更改墙纸而不必在Kiosk模式下关闭整个计算机的方法。我不在乎他们是否在工作期间进行更改,但是我想创建一个crontab,在重新启动时将其重置为原始的.png。

我希望有一个简单的cron条目,但是如果需要的话,我很愿意进入shell脚本世界。

有任何想法吗?

Answers:


10

在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不是该属性。


当我在命令行中运行它时,它就像一个超级按钮。当我尝试将其添加到cron时,它什么也没做。有任何想法吗?`
约翰,

如何将整个内容封装在一个Shell脚本中,然后cron改为使用运行Shell脚本呢?
切斯特,

创建了shell脚本并使其可执行。双击运行它,我可以在命令行中运行它。我尝试使用@reboot将其添加到cron,但它似乎不起作用。除了脚本路径之外,我是否还需要向cron添加其他内容?
约翰,

@John在cron中不起作用,因为cron在root特权下工作,并且这是用户特定的背景。尝试更改以用户身份运行的命令
kamil 2014年

1
对我来说,--property /backdrop/screen0/monitorLVDS1/workspace0/last-image绝招。
Ilmari Karonen 2015年

9

对于Xubuntu 14.04中的xfce4,请使用属性/ 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-)

就我而言,我想每天旋转一次墙纸(选定文件夹中的随机图像),但是我不定期地打开PC,因此我每半小时运行一次cron脚本来解决此问题,但只生效一次一天。

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

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

rotation-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不同,请使用此属性名称


2

设置image-path对我的系统没有任何影响(XFCE 4.12,Debian buster / sid)。

我使用以下设置所有工作区的背景图像:

xfconf-query --channel xfce4-desktop --list | grep last-image | while read path; do
    xfconf-query --channel xfce4-desktop --property $path --set <path>
done

0

尝试

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

file://是必需的。


我没有运气就尝试过。自从我运行XFCE以来,我甚至还有gsettings吗?该命令的语法对我来说很有意义,但我不知道如何使它适用于Xubuntu。
约翰·约翰·

0

不要使用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替换为新背景图像的真实路径,并确保您的用户有权读取该图像


1
为什么这被否决?OP请求了一种在重启时生效的方法。OP可能需要将其应用于多个用户,但没有明确说明。这个答案似乎还可以(不过尚未测试)。那么,为什么要投票?
斯特凡纳·古里科

0

在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 = 0xFF(十六进制)。

将8位十六进制颜色代码转换为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

uff地说^^

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.