Polecenie zmiany tapety w XUbuntu

15

Przeprowadzenie wyszukiwania w Google ujawnia polecenie

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

Przy pierwszym uruchomieniu tego polecenia dostaję komunikat, że właściwość / background / screen0 / monitor0 / image-path nie istnieje w kanale xfce4-desktop.

Więc stworzyłem tę właściwość:

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

Ale wciąż tło się nie zmieniło.

Następnie zmieniłem tło z space-03.jpg na space-04.jpg normalnie z aplikacji Desktop Settings XUbuntu. Potem biegam:

$ 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

Jak widać, właściwość /backdrop/screen0/monitorLVDS1/workspace0/last-imageuległa zmianie (!).

Jeśli zmienię tę właściwość, to działa dobrze, ale muszę znaleźć ogólny sposób, aby wdrożyć ją w moim programie (Wallch).

Nawet Variety(nawiasem mówiąc, jest to bardzo fajny program) nie działa poprawnie na moim komputerze i decyduje się na zmianę właściwości, /backdrop/screen0/monitor0/image-pathktóra nic nie robi.

Jednym ze sposobów byłoby jednoczesne utworzenie wszystkich możliwych właściwości i zmiana ich wszystkich w razie potrzeby. Nie podoba mi się to rozwiązanie z dwóch powodów:

  1. Kilka wywołań systemowych, które będą potrzebne
  2. W pewnym momencie będę musiał wziąć ścieżkę bieżącego obrazu (aby otworzyć folder, skopiuj ścieżkę, usuń ją i niektóre inne funkcje, które program zapewnia). Nie wiedziałbym, która właściwość zawiera ścieżkę naprawdę ustawionego obrazu, aby udostępnić go programowi.

Nie rozumiem też, dlaczego XFCE zrobił to tak skomplikowane. Dlaczego jedna właściwość nie byłaby wystarczająca jak w zestawach?

hytromo
źródło
właśnie spróbowałem, xfconf-query -c xfce4-desktop -p / backdrop / screen0 / monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg działa dla mnie .... nigdy się nie zmienił mój obraz tła wcześniej - uważaj, aby to zrobić bez uprawnień administratora, ponieważ ustawienia są specyficzne dla użytkownika.
Wolfgang,
1
@hakermania - może coś takiego jak ten skrypt w punkcie 9 tutaj - czy to daje kilka pomysłów, jak postępować (lub przynajmniej zidentyfikować odpowiedni monitor)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom
@fossfreedom zobacz odpowiedź, której udzieliłem w odpowiedzi poniżej.
hytromo

Odpowiedzi:

4

Myślę, że to powinno wystarczyć

Użyj następującego kodu, aby uzyskać podłączone urządzenia i policzyć je:

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)

następnie musisz nimi manipulować i wybrać, czy chcesz ustawić wartość ścieżki obrazu, czy ostatniego obrazu

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

Załóżmy, że 1.jpeg to dowolny plik potrzebny do domyślnego utworzenia łańcucha. A 2.png to pożądane zdjęcie do ustawienia. Dodałem pierwszą linię, aby upewnić się, że xfce4-desktop istnieje.

Ten skrypt został przetestowany na mojej maszynie i działa dobrze.

Mam nadzieję, że to pomaga mojemu przyjacielowi

EDIT: lista nazw portów stwierdzono tu tak:

Wyjściowe nazwy portów

Sterownik Intel - UMS

VGA - Analogowe wyjście VGA

LVDS - panel laptopa

DP1 - wyjście DisplayPort

TV - Zintegrowane wyjście TV

TMDS-1 - Pierwsze wyjście DVI SDVO

TMDS-2 - Drugie wyjście DVI SDVO

Wyjścia TV SDVO i DVO nie są obecnie obsługiwane przez sterownik.

Sterownik Intel - KMS

LVDS1 - panel laptopa

VGA1 - Analogowe wyjście VGA

DVI1 - Cyfrowe wyjście wideo

kierowca radeon

VGA-0 - Analogowe wyjście VGA

LVDS - panel laptopa

S-video - Zintegrowane wyjście TV

DVI-0 - wyjście DVI

Aby uzyskać więcej informacji, sprawdź tutaj

Kamil
źródło
Dlaczego to powinno działać?
Seth
@Seth Ponieważ przeglądam wszystkie dostępne monitory i ustawię odpowiednią wartość dla znalezionego monitora. ostatni obraz lub ścieżka obrazu
kamil
W nowo zainstalowanym systemie XFCE wartości nawet nie istnieją. Są tworzone, gdy zmienisz ręcznie tło pulpitu. Moim zdaniem nie jest to dobre rozwiązanie. Uwzględniam tę odpowiedź w swoim pytaniu. Mówię wyraźnie, że mógłbym wypróbować je wszystkie (za każdym razem tworzyć i zmieniać), ale nie jest to dobre rozwiązanie problemu.
hytromo
możesz tworzyć nieruchomości tak jak ty
kamil
@hakermania sprawdź edycję
kamil