Salut tous le monde.
Je voudrais savoir comment vous vous y pendriez pour
1) pour afficher une image qui resterait toujours aux dessus de toutes ce qui peut s'afficher sur l'écran.
2) pour faire varier l'opacité de l'image de 0% à X% puis X% à 0% sur un intervalle de temps donné.
3) pour recommencer le point précédent à intervalle régulier en changeant l'image
4) pour faire comme si l'image n’existait pas. On ne peut pas interagir avec elle ni avec le clavier ni avec la souris. Les fenêtres situées derrière récupèrent le focus et les événements du clavier et de la souris.
Pour le moment j'ai fait ce petit script qui fait les point 1) 2) 3)
Pour faire 1) j'utilise pqiv en mode fenêtre flottante sur tous les bureaux virtuels.
i3-msg floating enable
i3-msg sticky enable
Pour faire 2) j'utilise transset dans une boucle for
Pour faire 3) j'utilise pqiv --slideshow --slideshow-interval $interval
Pour faire 4) aucune idée sachant que lorsque la fenêtre une opacité de 0% elle continue à capturer le focus et les événements du clavier et de la souris.
J'utilise debian 10.1 et i3 4.16
#! /bin/bash
set -eu
# Paramètre
# Temps en seconde pour que la fenêtre passe d'une opacité de 0% à opacite et de opacite à 0%
delai=2
# Nombre fois par seconde où modifier la valeur de l'opacité de la fenêtre
nombre_etape_par_seconde=25
# Nombre fois pendant delai où modifier la valeur de l'opacité de la fenêtre
nombre_etape=$(($nombre_etape_par_seconde*$delai))
# Valeur d'opacité maximal
opacite=30
# Pause en seconde entre deux cycles de variation d'opacité de 0% vers opacite et de opacite vers 0%
pause=10
# Lecteur d'image
# /bin/mirage ./images/ &> /dev/null &
pqiv -c -s -d $(($delai+2)) -i -l -t --shuffle --low-memory images/ &
pid="$!"
# Patiente jusqu'à l'ouverture de la fenêtre et récupère son identifiant
fenetre_id=''
while : ; do
fenetre_id="`wmctrl -lp | awk -vpid=$pid '$3==pid {print $1; exit}'`"
[[ -z "${fenetre_id}" ]] || break
done
# Opacité à 0% puis donne le focus à la fenêtre
transset -i "${fenetre_id}" 0 > /dev/null
wmctrl -ia "${fenetre_id}"
# Fenêtre flottante sur tous les bureaux virtuels
i3-msg floating enable > /dev/null;
i3-msg sticky enable > /dev/null
# Redimensionner et centré la fenêtre
i3-msg resize set 800 600 > /dev/null;
i3-msg move position center > /dev/null;
# Temps de pause entre deux variations d'opacités
opacite_pause=$(echo "scale=6;$delai/$nombre_etape/2" | bc )
# Valeur d'opacité à ajouter après chaque pause
variation_opacite=$(echo "scale=6;$opacite/100/$nombre_etape/2" | bc)
# Diaporama
fin=false
while [ "$fin" != "true" ]
do
# Augmentation de l'opacité de la fenêtre
for i in $(seq 1 $nombre_etape)
do transset -i "${fenetre_id}" --inc $variation_opacite > /dev/null
sleep $opacite_pause
done
# Diminution de l'opacité de la fenêtre
for i in $(seq 1 $nombre_etape)
do transset -i "${fenetre_id}" --dec $variation_opacite > /dev/null
sleep $opacite_pause
done
# Met en 'pause' le processus pour arrêter le diaporama
kill -s SIGSTOP $pid
# Pause entre deux images du diaporama
sleep $pause
# 'Redémarre' le processus pour continuer le diaporama
kill -s SIGCONT $pid
done
Dernière modification par Erutluc (10-10-2019 13:16:15)