#!/bin/bash ### Variables Customisables. Icon_Off="/chemin/de/l'image/ON" # À adapter. Icon_On="/chemin/de/l'image/OFF" # " " ### Créations des canaux de communication mkfifo fifo fifo2 exec 8<>fifo 4>fifo 5&- exec 9<>fifo2 6>fifo2 7&- rm fifo fifo2 fd4="/proc/$$/fd/4" fd5="/proc/$$/fd/5" fd6="/proc/$$/fd/6" ### Initialisation de l'état de l'icône. # Partie à adapter selon les actions pour ON et OFF. # Mais quel que soit l'état de départ, il faut envoyer les bonnes informations aux bons canaux. echo "OFF" >&4 echo "icon:$Icon_Off" >&6 ### Fonctions. _quit () { exec 6>"$1" echo "EOF" >&6 } _switch () { local etat exec 4>"$1" 5<"$2" 6>"$3" read -r etat <&5 if [ "$etat" = "ON" ] then echo "OFF" >&4 echo "icon:$Icon_Off" >&6 # # Code ICI pour les actions OFF # else echo "ON" >&4 echo "icon:$Icon_On" >&6 # # Code ICI pour les actions ON # fi } ### Export des Fonctions et Variables. export -f _quit _switch export Icon_On Icon_Off ### Notification YAD (icône systray). yad --notification \ --text "Texte au survol de la souris." \ --icon-size 64 \ --no-middle \ --menu "Switcher!bash -c '_switch $fd4 $fd5 $fd6'|Quitter!bash -c '_quit $fd6'" \ --command "bash -c '_switch $fd4 $fd5 $fd6'" \ --listen < <(while read -r <&7; do [ "$REPLY" = "EOF" ] && break; echo "$REPLY"; done)