Команда изменить обои в XUbuntu

15

Выполнение поиска в 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которое ничего не делает.

Одним из способов будет создание всех возможных свойств и изменение всех их при необходимости одновременно. Мне не нравится это решение по двум причинам:

  1. Несколько системных вызовов, которые понадобятся
  2. В какой-то момент мне нужно будет взять путь к текущему изображению (чтобы открыть его папку, скопировать путь к нему, удалить его и некоторые другие функции, которые предоставляет программа). Я не знаю, какое свойство содержит путь к действительно установленному изображению, чтобы сделать его доступным для программы.

Я также не понимаю, почему XFCE сделал это так сложно. Почему одного свойства недостаточно, как в gsettings?

hytromo
источник
Вы пробовали этот forum.xfce.org/viewtopic.php?id=8198 или этот ubuntuforums.org/showthread.php?t=838184
jabbink
только что попробовал, xfconf-query -c xfce4-desktop -p / фон / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg работает для меня .... никогда не менялся мое фоновое изображение раньше - позаботьтесь о том, чтобы сделать это без привилегий root, потому что настройки зависят от пользователя.
Вольфганг
1
@hakermania - может быть, что-то вроде этого сценария в # 9 здесь - это дает вам некоторые идеи о том, как действовать (или, по крайней мере, определить правильный монитор)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom см. ответ, который я дал в ответе ниже.
Hytromo

Ответы:

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)

затем вы должны манипулировать ими и выбирать, устанавливать ли значение для 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 TV не поддерживаются драйвером.

Драйвер Intel - KMS

LVDS1 - Панель ноутбука

VGA1 - аналоговый VGA-выход

DVI1 - Цифровой видеовыход

водитель Radeon

VGA-0 - аналоговый VGA-выход

LVDS - Панель ноутбука

S-video - встроенный телевизионный выход

DVI-0 - выход DVI

Для дальнейшей информации проверьте здесь

камил
источник
Почему это должно делать работу?
Сет,
@Seth Потому что я перебираю все доступные мониторы и устанавливаю соответствующее значение для найденного монитора. либо последнее изображение, либо путь к изображению
Камил
В недавно установленной системе XFCE значения даже не существуют. Они создаются при ручном изменении фона рабочего стола. Так что, на мой взгляд, это не очень хорошее решение. Я включил этот ответ в свой вопрос. Я четко говорю, что могу попробовать их все (создавать и изменять их каждый раз), но это далеко не хорошее решение проблемы.
Hytromo
Вы можете создавать свойства, как вы сделали
Камил
@hakermania проверить редактирование
Камил