Mudando periodicamente o papel de parede no GNOME 3?

15

Eu uso o Fedora 15 com GNOME 3 e gostaria que meu papel de parede mudasse periodicamente, como é possível no Windows 7. Seria o melhor se ele pudesse usar RSS / Atom ou um diretório especificado.

Não encontrei nenhuma ferramenta no repositório. Eu acho que você pode alterá-lo com um script e cron, mas estou procurando algo mais elegante.

KovBal
fonte

Respostas:

19

Salve o seguinte script de shell em algum lugar:

#!/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

Em seu diretório pessoal, em .config / autostart, coloque o seguinte em um arquivo chamado 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

Isso mudará seu papel de parede a cada 10 minutos ... ou qualquer valor que você definir no script ...

Originalmente, publiquei isso como um comentário em um post intitulado "Personalizando o shell do GNOME" em Musings de um encanador de sistema operacional.

Hubert Samm
fonte
Não consigo encontrar nada sobre como alterar o papel de parede ou Hubert Samm no seu link. Você poderia ser mais específico?
KovBal
Ou você pode simplesmente anote aqui :) (Eu não verifiquei o seu nome, desculpe :))
KovBal
1
Vale ressaltar que você também pode querer definir o seguinte pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn
isso não funciona para o gnome 2, certo?
Vicfred
O que "set - *" faz exatamente?
SergioAraujo
3

Se você preferir usar um trabalho cron em vez de um script init, aqui está o que eu fiz. Agradecimentos a Hubert pela inspiração!

#!/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"

Salve o script em algum lugar (por exemplo $HOME/bin/rotate_bg), torne-o executável ( chmod +x $HOME/bin/rotate_bg) e adicione o crontrabalho para executá-lo quantas vezes quiser que seu plano de fundo seja alterado. Execute crontab -epara editar a crontabela para seu usuário. Aqui está um link que descreve o formato crontab . A entrada a seguir alternará seu plano de fundo a cada 10 minutos:

*0 * * * * $HOME/bin/rotate_bg
Nathan Wallace
fonte
Você está incorreto aqui. O sono não é uma espera ocupada
Art Gertner
se você tiver uma citação, mudarei minha resposta #
Nathan Wallace
da mesma fonte que eu tenho ligado acima: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Por exemplo, o processo não é chamado e não desperdiça ciclos da CPU. Também de Busy Waiting no 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

Por alguma razão, não vejo uma maneira de responder a Hubert Samm, mas achei o link útil. Caso isso ocorra, ou você não queira ler a coisa toda para obter essa resposta específica, adicionei como consegui obter um plano de atualização ao vivo no Gnome 3.

Ao acessar ~ / .cache / gnome-control / center / backgrounds, você encontrará um arquivo com um nome longo (algo como "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27"), que é a versão em cache do arquivo para o qual você definiu seu plano de fundo. Se você excluir este arquivo e criar um link simbólico com o mesmo nome para substituí-lo:

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

então, conforme o arquivo original for atualizado, o plano de fundo da área de trabalho será alterado para refletir isso. Estou usando esta técnica para garantir que meu plano de fundo do XPlanetFX permaneça atualizado. Por exemplo, basta ter uma imagem chamada "background.jpg" e alterar esse arquivo sempre que desejar atualizar o plano de fundo.

Provavelmente, a maneira mais correta de fazer isso seria usar gsettings para alterar o endereço de figura-uri para apontar diretamente para o arquivo de sua escolha, mas eu escolhi a opção de link simbólico porque não sabia o quão persistente seria a alteração na configuração. ao usar a interface do usuário para alterar o papel de parede. De qualquer maneira, no entanto, deve funcionar em teoria.

Nota: Não sei ao certo porque não o testei, mas há uma boa chance de que, se você alterar seu plano de fundo por meio da interface normal, esse nome de arquivo único e longo será alterado e seu link simbólico não será mais útil .

Adão
fonte
1

Salve o seguinte script de shell em algum lugar:

#!/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

Execute-o usando a sintaxe:

scriptname directoryofpictures howmanyseconds
Brainz
fonte