Czy okresowo zmieniasz tapetę w GNOME 3?

15

Korzystam z Fedory 15 z GNOME 3 i chciałbym, aby moja tapeta okresowo się zmieniała, tak jak jest to możliwe w systemie Windows 7. Byłoby najlepiej, gdyby mógł używać RSS / Atom lub określonego katalogu.

Nie znalazłem żadnych narzędzi w repozytorium. Myślę, że możesz to zmienić za pomocą skryptu i crona, ale szukam czegoś bardziej eleganckiego.

KovBal
źródło

Odpowiedzi:

19

Zapisz gdzieś następujący skrypt powłoki:

#!/bin/bash

WP_DIR=/home/honeyp0t/wallpapers

cd $WP_DIR
while [ 1 ] 
  do
  set -- * 
  length=$#
  random_num=$((( $RANDOM % ($length) ) + 1)) 

  gsettings set org.gnome.desktop.background picture-uri "file://$WP_DIR/${!random_num}"

  sleep 600 
done

Następnie w swoim katalogu domowym w .config / autostart umieść następujące polecenie w pliku o nazwie wallpaper-changer.desktop

[Desktop Entry]
Name=wallpaper-changer
Exec=/home/sammhe/bin/setbg.sh
Comment=change wallpaper every so often
Hidden=false
Type=Application
X-GNOME-Autostart-enabled=true

Spowoduje to zmianę tapety co 10 minut… lub dowolną wartość ustawioną w skrypcie…

Pierwotnie zamieściłem to jako komentarz do posta zatytułowanego „Dostosowywanie powłoki GNOME” w Musings of a Hydraulik systemu operacyjnego.

Hubert Samm
źródło
Nie mogę znaleźć niczego na temat zmiany tapety lub Huberta Samma na twoim łączu. Możesz być bardziej dokładny?
KovBal
Albo możesz to zapisać tutaj :) (nie sprawdziłem twojego imienia, przepraszam :))
KovBal
1
Warto zauważyć, że możesz również chcieć ustawić pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn
to nie działa na gnome 2, prawda?
Vicfred
Co „set - *” robi dokładnie?
SergioAraujo,
3

Jeśli wolisz używać zadania cron zamiast skryptu init, oto co zrobiłem. Dzięki Hubert za inspirację!

#!/bin/bash

walls_dir=$HOME/.wallpapers
selection=$(find $walls_dir -type f -name "*.jpg" -o -name "*.png" | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$selection"

Zapisz skrypt gdzieś (np. $HOME/bin/rotate_bg), Spraw, aby był wykonywalny ( chmod +x $HOME/bin/rotate_bg), a następnie dodaj cronzadanie, aby uruchamiać go tak często, jak chcesz, aby zmieniło się tło. Uruchom, crontab -eaby edytować crontabelę dla użytkownika. Oto link opisujący format crontab . Poniższy wpis spowoduje obrócenie tła co 10 minut:

*0 * * * * $HOME/bin/rotate_bg
Nathan Wallace
źródło
Jesteś tutaj niepoprawny. Sen nie jest zajęty czekaniem
Art Gertner
jeśli dostaniesz cytat, zmienię moją odpowiedź
Nathan Wallace
z tego samego źródła, że mam połączone powyżej: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Np. Proces nie zostaje wywołany i nie marnuje cykli procesora. Również z Busy Waiting on Wiki :Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time
Art Gertner
1

Z jakiegoś powodu nie widzę sposobu na odpowiedź Hubertowi Sammowi, ale uznałem jego link za pomocny. Na wypadek, gdyby się nie udało lub nie chcesz przeczytać całości, aby uzyskać tę konkretną odpowiedź, dodałem, w jaki sposób udało mi się uzyskać aktualizację na żywo w Gnome 3.

Przechodząc do ~ / .cache / gnome-control / center / tła znajdziesz plik o długiej nazwie (coś w rodzaju „a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27”), która jest buforowaną wersją pliku, na którym ustawiłeś tło. Jeśli usuniesz ten plik i utworzysz dowiązanie symboliczne o tej samej nazwie, aby go zastąpić:

$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27 
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27

następnie, gdy oryginalny plik zostanie zaktualizowany, tło pulpitu zmieni się, aby to odzwierciedlić. Używam tej techniki, aby upewnić się, że moje tło XPlanetFX jest aktualne. Na przykład po prostu obraz o nazwie „background.jpg” i zmieniaj ten plik za każdym razem, gdy chcesz zaktualizować tło.

Prawdopodobnie bardziej poprawnym sposobem jest skorzystanie z gsettings, aby zmienić adres obrazu-uri, aby wskazywał bezpośrednio na wybrany plik, ale wybrałem opcję dowiązania symbolicznego, ponieważ nie wiedziałem, jak trwała będzie zmiana ustawienia podczas korzystania z interfejsu użytkownika do zmiany tapety. Oba sposoby powinny jednak działać w teorii.

Uwaga: nie wiem tego na pewno, ponieważ go nie testowałem, ale istnieje duża szansa, że ​​jeśli zmienisz tło za pomocą zwykłego interfejsu użytkownika, zmieni się długa unikalna nazwa pliku, a twoje dowiązanie symboliczne nie będzie już przydatne .

Adam
źródło
1

Zapisz gdzieś następujący skrypt powłoki:

#!/bin/bash
while true; do
file=`/bin/ls -1 $1 | sort --random-sort | head -1`;path=`readlink --canonicalize "$dir/$file"`;
gsettings set org.gnome.desktop.background picture-uri "file://"$1$path;sleep $2;done

Uruchom go, używając składni:

scriptname directoryofpictures howmanyseconds
Brainz
źródło