Команда змінити шпалери в XUbuntu


15

Здійснення пошуку в Google розкриває команду

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>

Але все-таки фон не змінився.

Потім я звичайно змінив фон з space-03.jpg на space-04.jpg, як правило, із програми XUbuntu Desktop Settings. Потім я бігаю:

$ 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яка нічого не робить.

Одним із способів було б створити всі можливі властивості та змінити їх усі за потребою одночасно. Мені це рішення не подобається через 2 причини:

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

Я також не розумію, чому XFCE зробив це так складно. Чому одного властивості не вистачить, як у геттінгах?



просто спробував, xfconf-query -c xfce4-desktop -p / backdrop / 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)

то вам доведеться маніпулювати ними та вибирати, чи потрібно встановити значення для шляху зображення чи останнього зображення

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.

Цей сценарій був протестований на моїй машині, і він працює добре.

Сподіваюся, що допоможе моєму другові

EDIT: Список імен портів був знайдений тут , як так:

Імена вихідних портів

Драйвер 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 Оскільки я переглядаю всі доступні монітори та встановлю відповідне значення для знайденого монітора. або останнє зображення, або зображення-шлях
kamil

У щойно встановленій системі XFCE значення навіть не існують. Вони створюються, коли ви змінюєте один раз фон робочого столу вручну. Отже, на мою думку, це не гарне рішення. Я включаю цю відповідь у своє запитання. Я чітко кажу, що я міг би спробувати їх усіх (створювати та змінювати їх кожен раз), але це далеко не гарне рішення проблеми.
hytromo

ви можете створити такі властивості, як ви
kamil

@hakermania перевірити правки
kamil
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.