logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 23-09-2017 16:02:54

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

[résolu] script: fonds d'écran / wallpapers aléatoires

Bonjour tout le monde,

Je viens à nouveau vers vous pour demander conseil. Je cherche à changer mon fond d'écran de façon aléatoire avec une transition en douceur (fade in fade out) de préférence sans programme supplémentaire (j'utilise déjà feh, nitrogen, pcmanfm). J'ai un peu fouiné sur le wiki et forum, voici les liens que j'ai trouvé:

1. https://debian-facile.org/utilisateurs: … -changeant
2. [url]https://debian-facile.org/doc:environnements:lxde:diaporama-fond-ecran?s[]=fonds&s[]=%C3%A9cran[/url]
3. [url]https://debian-facile.org/doc:environnements:x11:openbox?s[]=fonds&s[]=%C3%A9cran#le-fond-d-ecran[/url]
4. [url]https://debian-facile.org/utilisateurs:severian:tutos:systemd-feh?s[]=fonds&s[]=%C3%A9cran[/url]

Avant de me lancer, voici mes impressions sur ce qui me bloquerait:
Le premier lien: j'aimerais éviter de devoir renommer les fichiers et de devoir enlever l'extension.
Le deuxième: apparemment propre à lxde, donc je suppose que ça ne va pas marcher (j'utilise i3 et occasionnellement openbox)
Le troisième: il manquerait pas le script? Ce n'est quand même pas la ligne: «Include(Openbox, ,from=“^##TAG:WALLPAPER.SH:START”,to=“^##TAG:WALLPAPER.SH:END”)»? Si?
Le quatrième: là, je pense que ça pourrait me convenir. Ça me plait assez bien de créer un service pour systemd mais par contre il n'y a (je suppose) pas de transition en douceur...

Si vous avez d'autres solutions, je suis preneur.

edit: désolé pour le formattage des liens, il y a une astuce pour prendre en compte des crochets dans les liens?

Dernière modification par Batmood (01-10-2017 09:34:10)

Hors ligne

#2 27-09-2017 21:00:30

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

J'ai retrouvé un vieux script qui traînait sur un de mes disques durs. Il ne vient pas de moi. Par contre, je ne sais plus où je l'ai pris et qui l'a réalisé. Donc merci à celui qui l'a écrit. Il fonctionne sans problème. Il manque juste une transition en fade in / fade out. Mais cette option-là n'existe apparemment pas sans outils supplémentaires. Quiconque a une idée à proposer, je suis preneur...

#!/bin/bash

Dir="$HOME/Images/wallpapers/"

if [ ! -d "$Dir" ]; then
    echo "Not Exist $Dir"
    exit 1
fi

SetBG () {
    while IFS= read -rd '' file; do list+=("$file"); done < <(find "$Dir" ! -type d -print0)
    TotalFiles=${#list[@]}
    RandomNumber=$(( $RANDOM % $TotalFiles ))
    test ! $RandomNumber = 0 || RandomNumber=1

    RandomFile="${list[RandomNumber]}"

    #echo "Selected File: $RandomFile"
    nitrogen --set-auto "$RandomFile"
    #nitrogen --set-zoom-fill  "$RandomFile"
}

while true; do
    SetBG
    sleep 1m
done




En cherchant une solution, je suis tombé sur autre chose qui a l'air pas mal, il s'agit de fond d'écran animé. Je n'ai pas encore testé mais ai lu que ça consommerait un peu de ressources (ce qui serait logique):
https://github.com/iabem97/komorebi
Quelqu'un a déjà testé?

Hors ligne

#3 28-09-2017 08:26:38

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

bonsoir

je ne sais pas si ça peut t'aider mais voila ce que j'ai mis en place avec feh (pas de transition)
tous mes fonds d'écran sont dans le dossier ~/.wallpaper
script dans le dossier ~/.bin  (déclaré pour héberger les scripts de mon utilisateur)
le script : random-wallpaper

#! /bin/bash
DISPLAY=:0 /usr/bin/feh --bg-max "$(find ~/.wallpaper/|shuf|head -n 1)"


dans le dossier ~/.config/systemd/user/
feh-wallpaper.service

[Unit]
Description=Random wallpaper with feh

[Service]
Type=oneshot
ExecStart=/home/sev/.bin/random-wallpaper

[Install]
WantedBy=default.target
 


feh-wallpaper.timer

[Unit]
Description=Random wallpaper with feh

[Timer]
OnStartupSec=5m
OnUnitActiveSec=1hr
Unit=feh-wallpaper.service

[Install]
WantedBy=default.target
 


(changement toutes les heures), voir man systemd.time et man systemd.timer
il ne reste plus qu'a activer systemd

systemctl enable --user feh-wallpaper.timer
 


et de le mettre en route

systemctl start --user feh-wallpaper.timer
 



je n'ai pas poussé la recherche plus loin, à savoir s'il était possible de faire des transition avec feh

Dernière modification par Severian (28-09-2017 08:27:22)

Hors ligne

#4 29-09-2017 23:09:22

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Impec! Merci Severian! J'ai utilisé ton script (mais j'ai modifié feh pour nitrogen) et que j'ai rajouté en parallèle à celui que j'utilisais dans mon post #2. Il y a juste que je n'ai pas créé le service mais j'ai rajouté un raccourci clavier sous openbox pour le changer quand je le souhaite. Le tien change donc aléatoirement 1x le fond d'écran.
Celui que j'utilise en post #2 change aléatoirement toutes les minutes.

Pour l'effet de transition, je ne trouve rien. J'ai bien l'impression que ce n'est pas possible sans outils additionnels car en gros, il faudrait que le fond ancien reste visible le temps que le fond nouveau vienne par-dessus progressivement en opacité. Donc jouer avec des couches. Quiconque a une solution peut partager.

Par contre, je me posais une question avec ton script Severian. Si je souhaite utiliser non pas un répertoire mais plusieurs répertoires (soit un dossier qui serait ailleurs, soit un sous-dossier), comment pourrait-on faire?
edit: Ce que je souhaiterais faire au final, c'est choisir un fond aléatoirement dans un dossier, en fonction de l'heure. Par exemple entre telle heure et telle heure, choisir parmi ce dossier, sinon choisir l'autre dossier. Je ne sais pas si c'est possible. Existe-t-il une commande pour obtenir l'heure et qui serait exploitable dans un script?

Dernière modification par Batmood (29-09-2017 23:16:43)

Hors ligne

#5 30-09-2017 10:04:11

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

bonsoir

# si l'heure est inferieur ou égal à 10
if [ `date +%H` -le 10 ]; then
   ta commande avec dossier 1
     else
   ta commande avec dossier 2
fi
 


$num1 -eq $num2
    Vérifie si les nombres sont égaux (equal). À ne pas confondre avec le « = » qui, lui, compare deux chaînes de caractères.

$num1 -ne $num2
    Vérifie si les nombres sont différents (nonequal).
Encore une fois, ne confondez pas avec « != » qui est censé être utilisé sur des chaînes de caractères.

$num1 -lt $num2
    Vérifie si num1 est inférieur ( < ) à num2 (lowerthan).

$num1 -le $num2
    Vérifie si num1 est inférieur ou égal ( <= ) à num2 (lowerorequal).

$num1 -gt $num2
    Vérifie si num1 est supérieur ( > ) à num2 (greaterthan).

$num1 -ge $num2
    Vérifie si num1 est supérieur ou égal ( >= ) à num2 (greaterorequal).

Hors ligne

#6 30-09-2017 13:19:22

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Merci pour ton aide Severian, j'y vois déjà un peu plus clair. J'imagine que la sélection de la commande se fera alors pour la période temps de minuit à 10h (dans ton exemple). Si je veux effectuer la commande entre 19h et 7h (donc entre 7h du soir et 7h du matin), il faudrait que je rajoute 2 conditions dans le "if"? Peut-on écrire quelque chose du style:

# si l'heure est supérieure ou égal à 19 ET inférieure à 7
if [ `date +%H` -ge 19 && -lt 7 ]; then
   DISPLAY=:0 /usr/bin/feh --bg-max "$(find ~/MONDOSSIER1/|shuf|head -n 1)"
     else
   DISPLAY=:0 /usr/bin/feh --bg-max "$(find ~/MONDOSSIER2/|shuf|head -n 1)"
fi



Je rajoute des esperluettes && mais je ne sais pas du tout si en bash ça se fait (j'utilise ça dans le terminal dans mes commandes, donc je me pose la question).

Hors ligne

#7 30-09-2017 14:06:53

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Bonjour
Tu pourras sûrement mettre le même genre de script avec les commandes xrandr et xbacklight pour ton autre post wink

-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#8 30-09-2017 15:16:27

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Oui, effectivement, je serais trop content que tout fonctionne! smile Je pensais tester mais j'attends votre confirmation pour savoir si les && fonctionnent et ne risquent pas de faire exploser ma machine big_smile

Hors ligne

#9 30-09-2017 15:33:59

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

J'ai été impatient big_smile et j'ai testé avec une petite commande echo. Ça a l'air de fonctionner mais en lancant via le terminal, j'ai un message d'erreur.
Voici le script:

# si l'heure est supérieure ou égal à 19 ET inférieure à 7
if [ `date +%H` -ge 19 && -lt 7 ]; then
   echo Hello night
     else
   echo Hello day
fi



Voici la commande et le retour:

bash message_day_or_night.sh


message_day_or_night.sh: ligne 2 : [: « ] » manquant
Hello day



Est-ce un ou plusieurs caractères manquant?
edit: il me met toujours Hello day, même si je mets la valeur à 17 ou 18 au lieu de 19.

Dernière modification par Batmood (30-09-2017 17:29:32)

Hors ligne

#10 30-09-2017 17:48:33

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Je pense avoir corrigé l'erreur, j'ai rajouté un elif:

#!/bin/bash -x
# si l'heure est supérieure ou égal à 19 ET inférieure à 7
if [ `date +%H` -ge 19 ]; then
   echo "Hello night apres 19h du soir"
elif [ `date +%H` -lt 7 ]; then
   echo "Hello night avant 7h du matin"
     else
   echo "Hello day entre 7h et 19h"
fi



edit: je sais, je ne suis pas très doué lol Peut-être le code n'est-il pas optimisé? Je ne sais pas si on peut faire plus court ou bien c'est correct?

Dernière modification par Batmood (30-09-2017 17:50:26)

Hors ligne

#11 30-09-2017 21:44:53

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

@Severian, que veut dire le "|shuf|head -n 1" à la fin? shuf je suppose que c'est shuffle mais le "head" et "-n 1"?

Je partage le script fini qui fonctionne, que je lance au démarrage de ma session dans mon fichier autostart (openbox) et qui est lancé via crontab toutes les minutes smile :

#!/bin/bash -x
# si l'heure est supérieure ou égal à 19 ET inférieure à 7
if [ `date +%H` -ge 19 ]; then
   DISPLAY=:0 nitrogen --set-auto "$(find ~/Images/wallpapers/wall-dawn/|shuf|head -n 1)"
elif [ `date +%H` -lt 7 ]; then
   DISPLAY=:0 nitrogen --set-auto "$(find ~/Images/wallpapers/wall-night-copy/|shuf|head -n 1)"
     else
   DISPLAY=:0 nitrogen --set-auto "$(find ~/Images/wallpapers/wall-day/|shuf|head -n 1)"
fi



J'utilise nitrogen pour changer de wallpaper. J'ai fait un dossier nommé wall-dawn avec des fonds d'écran un peu plus foncés et un dossier wall-night-copy avec des fonds encore plus foncés. Le dossier wall-day contient les wallpapers un peu plus clairs pour la journée.

Dernière modification par Batmood (30-09-2017 23:26:04)

Hors ligne

#12 01-10-2017 08:02:46

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Batmood a écrit :

@Severian, que veut dire le "|shuf|head -n 1" à la fin? shuf je suppose que c'est shuffle mais le "head" et "-n 1"?



shuf -> Afficher sur la sortie standard une permutation aléatoire des lignes d'entrée. Bref il te sort la liste des fonds d'écran dans un ordre aléatoire
head -n 1 -> tiré de man head :
-n, --lines=[-]K
              afficher  les K premières lignes au lieu des 10 premières ; avec le préfixe
              « - », afficher toutes les lignes sauf les K  dernières  lignes  de  chaque
              fichier
donc ne demande d'afficher que la première ligne

Hors ligne

#13 01-10-2017 09:33:37

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Merci beaucoup pour ton aide et tes explications Severian, vraiment! Je suis super content!

Je passe  le sujet en résolu mais si quelqu'un trouve un moyen de rajouter des effets de transitions, n'hésitez pas à proposer des soluces smile

Hors ligne

#14 01-10-2017 14:42:09

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

si quelqu'un trouve un moyen de rajouter des effets de transitions


faut pas abuser les effet de transitions c'est pour les diaporamas tongue

Dernière modification par Croutons (01-10-2017 14:54:09)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#15 01-10-2017 16:40:45

Batmood
Membre
Distrib. : Debian Bullseye
Noyau : 5.10.0-19-amd64
(G)UI : KDE
Inscription : 31-08-2017

Re : [résolu] script: fonds d'écran / wallpapers aléatoires

Je sais mais c'est tellement joliiiiiiiiiiiii! big_smile Enfin... juste le fade in fade out hein, parce que les animations en tuiles ou roulements spirales & co je trouve ça un peu plus kitch! Mais bon, les goûts et les couleurs... hein! tongue Si ça ne tenait qu'à moi, il y aurait même des vidéos en fond à la place d'images statiques (je sais que ça existe mais mon petit ordi me bouderait pour l'utilisation processeur en fond smile )

Hors ligne

Pied de page des forums