命令更改XUbuntu中的墙纸


15

谷歌搜索显示命令

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

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

因此,我创建了此属性:

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中还不够?



刚刚尝试过,xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg对我有用....从未改变我之前的背景图片-请注意不要具有root权限,因为这些设置是用户特定的。
Wolfgang 2014年

1
@hakermania-也许是此处#9中的类似脚本-这是否为您提供一些有关如何进行操作(或至少确定正确的监视器)的想法?bugs.launchpad.net/variety/+bug/1064825
fossfreedom


@fossfreedom看到我在下面的答案中给出的答案。
2014年

Answers:


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)

那么您必须操纵它们并选择是设置图像路径值还是最后一个图像的值

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 TV输出。

英特尔驱动程序-KMS

LVDS1-笔记本电脑面板

VGA1-模拟VGA输出

DVI1-数字视频输出

radeon驱动程序

VGA-0-模拟VGA输出

LVDS-笔记本电脑面板

S-video-集成电视输出

DVI-0-DVI输出

有关更多信息,请点击此处


为什么要做这项工作?
赛斯

@Seth因为我正在遍历所有可用监视器,所以我将为找到的监视器设置适当的值。最后一张图片或图片路径
kamil

在新安装的XFCE系统中,这些值甚至不存在。它们是在您手动更改桌面背景时创建的。因此,我认为这不是一个好的解决方案。我将这个答案包括在我的问题中。我明确地说过,我可以尝试所有方法(每次都创建和更改它们),但这远不是解决问题的好方法。
hytromo

您可以像以前一样创建属性
kamil

@hakermania检查编辑
kamil
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.