При выполнении поиска в Google открывается команда
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>
При первом запуске этой команды я получил сообщение о том, что свойство / background / screen0 / monitor0 / image-path не существует в канале xfce4 -Desktop.
Итак, я создал это свойство:
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>
Но все же фон не изменился.
Затем я изменил фон с space-03.jpg на space-04.jpg как обычно, из приложения «Настройки рабочего стола» XUbuntu. Затем я запускаю:
$ 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
, которое ничего не делает.
Одним из способов было бы создание всех возможных свойств и изменение всех их при необходимости одновременно. Мне не нравится это решение по двум причинам:
Я также не понимаю, почему XFCE сделал это так сложно. Почему одного свойства недостаточно, как в gsettings?
Я думаю, что следует выполнить работу
Используйте следующий код, чтобы получить подключенные устройства и сосчитать их:
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 существует.
Этот скрипт был протестирован на моей машине, и он работает хорошо.
Надеюсь, это поможет моему другу
РЕДАКТИРОВАТЬ: Список имен портов был найден здесь примерно так:
Имена выходных портов
Драйвер Intel - UMS
VGA - Аналоговый VGA-выход
LVDS - Панель ноутбука
DP1 - Выход DisplayPort
TV - Встроенный телевизионный выход
TMDS-1 - первый выход DVI SDVO
TMDS-2 - второй выход DVI SDVO
Телевизионные выходы SDVO и DVO не поддерживаются драйвером в на этот раз.
Драйвер Intel - KMS
LVDS1 - Панель ноутбука
VGA1 - Аналоговый VGA-выход
DVI1 - Цифровой видеовыход
Radeon Driver
VGA-0 - Аналоговый VGA-выход
LVDS - Панель ноутбука
S-video - Встроенный ТВ-выход
DVI-0 - выход DVI
Для получения дополнительной информации см. здесь