aleatoriamente ciclos de diferentes papéis de parede em cada monitor

1

Então eu tenho um programa chamado "Display Fusion" instalado na minha unidade do Windows, e eu adoro isso por literalmente apenas um recurso:

Eu posso configurá-lo para que cada um dos meus 3 monitores altere aleatoriamente o papel de parede a cada X minutos. Eu posso apontar para uma pasta que eu tenho de mais de 500 papéis de parede, e cada monitor irá escolher aleatoriamente um (assim eles dificilmente terão o mesmo papel de parede em cada duas telas).

Eu estou rodando o Debian Jessie, com o Gnome Shell 3.14.4, e até agora eu tentei os seguintes aplicativos, e tive os seguintes problemas:

Nitrogênio: não funciona de todo. Não é possível definir "Fazer com que o gerenciador de arquivos manipule a área de trabalho" para "OFF", pois a ferramenta Gnome Tweak não lista essa opção em nenhum lugar.

Syncwall: Na verdade, não há como definir papéis de parede diferentes para cada monitor, mas o recurso de ciclagem aleatória é feito com perfeição.

Existe algum outro software em potencial que esteja faltando e que possa fazer o que estou tentando fazer?

Estou faltando algo obviamente com o software que eu já tentei?

Atualização 1:

Tentei o segundo bloco de código na resposta de Gilles:

#!/bin/sh
wallpaper_directory= MY WALLPAPER FOLDER
interval=300 # in seconds
IFS='
'; set -ef
while true; do
  set $(find "$wallpaper_directory" -type f | shuf -r -n 3)
  xloadimage -onroot -at 0,0 "$1" -at 1920,0 "$2" -at 3840,0 "$3"
  sleep "$interval"
done

adicionou a /etc/init.d/

e executou chmod 755 wallpaper_script.sh

e update-rc.d wallpaper_script.sh defaults

Agora, eu tenho minhas configurações do Tweak Tools definidas para o seguinte:

E meu histórico em todos os três monitores agora é um azul sólido.

MAS , quando eu reinicializo (presumindo que o Gnome Shell pare de funcionar), vejo três dos meus papéis de parede piscarem logo antes da reinicialização.

Então o script parece estar funcionando, mas o Gnome está em conflito, e depois de cavar em gsettings e dconf-editor eu ainda não consigo encontrar uma configuração que faça o que o Tweak-Tools fez no Gnome2.

    
por WorseDoughnut 09.04.2016 / 02:13

1 resposta

1

Se o Gnome não tiver nada embutido, você pode escrever um script para fazer isso. O seguinte carrega papéis de parede aleatórios de ~/wallpapers em três monitores, supostamente dispostos da esquerda para a direita, com cada monitor sendo 1680 pixels de largura. Ele usa xloadimage (veja Várias imagens na janela raiz com o ImageMagick ). Ajuste os tamanhos dos monitores e os locais dos papéis de parede, conforme adequado. Se você quiser que os papéis de parede sejam distintos, remova a opção -r para shuf . Para mais monitores, aumente o parâmetro de shuf -n .

#!/bin/sh
IFS='
'; set -f
set $(find ~/wallpapers -type f | shuf -r -n 3)
xloadimage -onroot -at 0,0 "$1" -at 1680,0 "$2" -at 3360,0 "$3"

Para alterar o papel de parede a cada N minutos, adicione o seguinte script aos seus aplicativos de inicialização de sessão.

#!/bin/sh
wallpaper_directory=~/wallpapers
interval=300 # in seconds
IFS='
'; set -ef
while true; do
  set $(find "$wallpaper_directory" -type f | shuf -r -n 3)
  xloadimage -onroot -at 0,0 "$1" -at 1680,0 "$2" -at 3360,0 "$3"
  sleep "$interval"
done

Aqui está um script mais complexo que chama xrandr para obter os tamanhos e posições do monitor. Essa variante assume que os papéis de parede estão em um subdiretório com o nome dos tamanhos dos monitores, por exemplo, ~/wallpapers/1680x1050 .

#!/bin/sh
wallpaper_directory=~/wallpapers
interval=300 # in seconds

random_wallpaper () {
  find ~/wallpapers/$1 -type f | shuf -n 1
}
command="xloadimage -onroot"
i=1
for m in $(xrandr | sed -n 's/^.* connected.*[^0-9]\([0-9]*x[0-9]*\)+\([0-9]*\)+\([0-9]*\).*$/,,/p'); do
  size="${m%%,*}" position="${m#*,}"
  command="$command -at $position \"\$(random_wallpaper $size)\""
  i=$((i+1))
done

if ! eval "$command"; then
  echo >&2 "Unable to load initial wallpapers, aborting."
  exit 2
fi
while sleep "$interval"; do
  eval "$command"
done

(Aviso: todo o código desta resposta não foi testado).

Alternativamente, pode haver uma maneira de fazer com que o Nitrogênio funcione definindo o valor correto com gsettings (imitando o que a ferramenta Tweak fez no Gnome 2), mas não sei qual chave precisa ser alterada.

    
por 11.04.2016 / 03:02