在 XUbuntu 中更改壁纸的命令

hyt*_*omo 15 xfce command-line background

进行谷歌搜索显示命令

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>
Run Code Online (Sandbox Code Playgroud)

第一次运行此命令时,我收到一条消息,指出通道 xfce4-desktop 中不存在属性 /backdrop/screen0/monitor0/image-path。

所以,我创建了这个属性:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>
Run Code Online (Sandbox Code Playgroud)

但背景仍然没有改变。

然后我从 XUbuntu 的桌面设置应用程序正常地将背景从 space-03.jpg 更改为 space-04.jpg。然后我运行:

$ xfconf-query -c xfce4-desktop -p /backdrop -lv
/backdrop/screen0/image-path                           /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-show                  true
/backdrop/screen0/monitor1/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor1/image-show                  true
/backdrop/screen0/monitorLVDS1/workspace0/color-style  0
/backdrop/screen0/monitorLVDS1/workspace0/image-style  5
/backdrop/screen0/monitorLVDS1/workspace0/last-image   /usr/share/backgrounds/space-04.jpg
Run Code Online (Sandbox Code Playgroud)

如您所见,该属性/backdrop/screen0/monitorLVDS1/workspace0/last-image已更改 (!)。

如果我更改此属性,则它可以正常工作,但问题是我需要找到一种通用方法才能在我的程序 (Wallch) 中实现它。

Even Variety(顺便说一句,这是一个非常好的程序)在我的机器上不能正常工作,并选择更改/backdrop/screen0/monitor0/image-path什么都不做的属性。

一种方法是创建所有可能的属性,并在需要时同时更改所有属性。我不喜欢这个解决方案,原因有两个:

  1. 需要的几个系统调用
  2. 有一次我需要获取当前图像的路径(为了打开它的文件夹,复制它的路径,删除它以及程序提供的一些其他功能)。我不知道哪个属性包含真正设置的图像的路径,以便程序可以使用它。

我也不明白为什么 XFCE 做得这么复杂。为什么像 gsettings 那样一个属性不够用?

kam*_*mil 4

我认为应该可以完成这项工作

使用以下代码获取已连接的设备并对其进行计数:

connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") 
connected=$(echo $connectedOutputs | wc -w)
Run Code Online (Sandbox Code Playgroud)

那么你必须对它们进行操作并选择是否设置 image-path 或 last-image 的值

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s  ~/Pictures/1.jpeg
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s  ~/Pictures/1.jpeg

for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
    xfconf-query -c xfce4-desktop -p $i -n -t string -s ~/Pictures/2.png  
    xfconf-query -c xfce4-desktop -p $i -s ~/Pictures/2.png

done
Run Code Online (Sandbox Code Playgroud)

假设 1.jpeg 是默认创建字符串所需的任何文件。2.png 就是想要设置的图片。我添加第一行只是为了确保 xfce4-desktop 存在。

该脚本在我的机器上进行了测试,运行良好。

希望对我的朋友有帮助

编辑:在这里找到了端口名称列表,如下所示:

输出端口名称

英特尔驱动程序-UMS

VGA - 模拟 VGA 输出

LVDS - 笔记本电脑面板

DP1 - DisplayPort 输出

电视 - 集成电视输出

TMDS-1 - 第一个 DVI SDVO 输出

TMDS-2 - 第二个 DVI SDVO 输出

驱动程序目前不支持 SDVO 和 DVO TV 输出。

英特尔驱动程序-KMS

LVDS1 - 笔记本电脑面板

VGA1 - 模拟 VGA 输出

DVI1 - 数字视频输出

Radeon 驱动程序

VGA-0 - 模拟 VGA 输出

LVDS - 笔记本电脑面板

S-video - 集成电视输出

DVI-0 - DVI 输出

欲了解更多信息,请查看此处