
Quero escrever um script bash que possa remover o papel de parede atual do wallchlista de reprodução. Por playlist, falo daquela lista no wallch à qual você pode adicionar fotos e pastas, informando ao wallch que ele pode usá-las como papel de parede.
Como esta playlist é armazenada pelo wallch? sqlite? xml? Posso acessar e modificar esta playlist programaticamente?
Responder1
Seria bastante difícil remover o papel de parede atual da lista do Wallch enquanto o Wallch está executando e alterando os papéis de parede, pois a lista é acessada pela memória (também salva em ~/.config/Wallch/MainWindow.conf, mas não é lida por lá live, este local é usado para restaurar a lista de reprodução, se, por exemplo, o computador travar ou o programa não for desligado corretamente).
Seria muito mais fácil criar um script que alterasse automaticamente o plano de fundo durante a leitura de um arquivo album.wallch usando o comando
gsettings set org.gnome.desktop.background picture-uri "/path to image/here.jpg"
e um loop 'while'. Exemplo:
while read line; do
gsettings set org.gnome.desktop.background picture-uri "$line"
#here do what you want, remove image from the file being read, move image to trash
#(located in ~/.local/share/Trash/files) and mark it as not wallpaper material.
sleep $timeout #<- sleep the timeout you want until the next image
done < album.wallch
Outra solução, mas muito complicada, seria a seguinte:
- Inicie o Wallch normalmente e adicione algumas imagens, se não houver nenhuma na lista
- Sair do Wallch (Ctrl+Q)
- Inicie o Wallch em um terminal usando o comando
wallch --constant
- Remova o papel de parede correspondente de ~/.config/Wallch/MainWindow.conf
- Faça o que você quiser fazer.
- Repita a partir do passo 3.
Mas eu realmente sugeriria a 1ª solução, fazer seu próprio script para isso, se você quiser usar o Wallch apenas para alterar a imagem de fundo, você deve usar totalmente o comando direto
gsettings set org.gnome.desktop.background picture-uri "/path to image/here.jpg"
Responder2
Eu uso o wallch e geralmente não gosto dele: é difícil modificar a lista de arquivos (como você pode ver). No entanto, é possível criar um diretório cheio de links virtuais e fazer com que o wallch os exiba. Então, seu script pode mexer com os soft links e o wallch nem perceberá. Use o comando “ln” com -s para configurar um link simbólico. Se você tiver /home/me/Pictures/Backgrounds como o diretório com os links nele, faça algo como
ln -sf /home/me/Pictures/Vacation2013/GreatPic.jpg /home/me/Pictures/Backgrounds/1.jpg
para substituir o arquivo "1.jpg" no diretório Backgrounds. Ele será vinculado a GreatPic.jpg no outro diretório e poderá ser facilmente substituído programaticamente. Use links virtuais (opção -s) para não vincular as imagens. Use a opção “force” (-f ou -sf) para excluir e substituir links ou arquivos existentes no diretório.
Um problema: essa abordagem não permite alterar o número de fundos exibidos no wallch. Você só pode alterar quais fotos elas são.
Tentei o comando gsettings e descobri que a parte "caminho" precisa ter o arquivo de formato:/blah/blah/blah. Fiquei surpreso ao ver issohttp://server.tld/blah/blah/blahnão funciona.
É importante poder fazer algo com ou com o plano de fundo exibido no momento? Então provavelmente seria melhor executar um script Python ou Perl (o que você conhece) e manipular sinais. Por exemplo, você pode fornecer ao seu script um manipulador de sinal que exclua o arquivo exibido no momento (se esse for o tipo de coisa que você pretendia).