在 XUbuntu 中更改壁纸的命令

在 XUbuntu 中更改壁纸的命令

进行谷歌搜索会显示该命令

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>

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

因此,我创建了这个属性:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>

但背景仍然没有改变。

然后,我从 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

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

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

甚至Variety(顺便说一下,这是一个非常好的程序)也无法在我的计算机上正常工作,并选择更改/backdrop/screen0/monitor0/image-path不执行任何操作的属性。

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

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

我也不明白为什么 XFCE 会把它弄得这么复杂。为什么像 gsettings 中那样一个属性就不够用?

答案1

我认为应该可以

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

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)

然后你必须对它们进行操作并选择是否设置 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

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

该脚本已在我的计算机上测试过并且运行良好。

希望可以帮助我的朋友

编辑:找到了端口名称列表这里像这样:

输出端口名称

英特尔驱动程序 - UMS

VGA——模拟 VGA 输出

LVDS——笔记本电脑面板

DP1 - DisplayPort 输出

电视 - 集成电视输出

TMDS-1 - 第一个 DVI SDVO 输出

TMDS-2 - 第二 DVI SDVO 输出

该驱动程序目前不支持 SDVO 和 DVO 电视输出。

英特尔驱动程序 - KMS

LVDS1——笔记本电脑面板

VGA1-模拟 VGA 输出

DVI1——数字视频输出

Radeon 驱动程序

VGA-0-模拟 VGA 输出

LVDS——笔记本电脑面板

S-video - 集成电视输出

DVI-0——DVI 输出

如需更多信息,请查看这里

相关内容