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).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


Switch On/Off dans le systray


Mise à jour le : 13/05/2023
  • Nécessite yad : apt install yad
  • La version avec fichier d'éat nécessite inotifywait : apt install intofy-tools
  • Une icône dans le systray
  • Un clic gauche bascule l'état de l'icône
  • Un clic droit montre un menu : Switcher ou Quitter
  • Un fichier contenant l'état actuel de l'icône (selon la version)
  • Possibilité de coder les actions (on et off) dans le script (ou d'utiliser le fichier pour gérer les actions selon la version)

Les scripts (2 versions)

Ils s'appuient sur le mode notification de yad.
Dans le chapitre “Images icônes”, vous trouverez des fichiers images pour les icônes ON et OFF.

Version avec fichier d'état.

(Possibilité de mettre les instructions dans le script ou de faire un script extérieur qui viendra lire le fichier d'état)

systray_switch_with_file
#!/bin/bash
 
 
### Variables Customisables.
Icon_Off="/chemin/de/l'image/ON"     # À adapter.
Icon_On="/chemin/de/l'image/OFF"     # "  "
Switch="$HOME/systray_switch_state"  # "  "    Fichier d'état (contient soit ON soit OFF).
 
 
### Fonctions.
_quit ()
{
   local s="inotifywait -qme close_write ${Switch//\//\\\\/}"
   kill -15 "$(ps -ef | awk -vs="$s" '$0 ~ s && !/awk/{print $2}')"
}
 
_switch ()
{
   local etat
   etat=$(<"$Switch")
   if [ "$etat" = "ON" ]
      echo "OFF" >"$Switch"
      #
      # Actions pour OFF
      #
   else
      echo "ON" >"$Switch"
      #
      # Actions pour ON
      #
   fi
}
 
_icon_set ()
{
   local etat icon
   while read -r
   do
      etat=$(<"$Switch")
      [ "$etat" = "ON" ] && icon="$Icon_On" || icon="$Icon_Off"
      echo "icon:$icon"
   done < <(echo; inotifywait -qme close_write "$Switch")
}
 
 
### Export (Variable et Fonctions).
export Switch
export -f  _quit  _switch
 
 
exec 2>/dev/null  # Pour éviter le message `Complété` à la fermeture de yad par la fonction `_quit`.
 
 
### Notification YAD (icône systray).
# text = affiché au survol de la souris
# menu = affichage+action(si clic) du menu sur clic droit de la souris
# command = switch direct sur clic gauche de la souris
yad --notification                                                    \
    --text "Texte de la bulle au survol de la souris"                                     \
    --icon-size 64                                                    \
    --no-middle                                                       \
    --menu "Switcher!bash -c '_switch'|Quitter!bash -c '_quit'"       \
    --command "bash -c '_switch'"                                     \
    --listen < <(_icon_set)
Version sans fichier d'état

(oblige de mettre les instructions On/Off dans ce script).

systray_switch_without_file
#!/bin/bash
 
### Variables Customisables.
Icon_Off="/home/tawal/Images/Icônes/switch-off.png"
Icon_On="/home/tawal/Images/Icônes/switch-on.png"
 
### Créations des canaux de communication
mkfifo fifo fifo2
exec 8<>fifo 4>fifo 5<fifo 8>&-
exec 9<>fifo2 6>fifo2 7<fifo2 9>&-
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
      #
      # Actions pour OFF
      #
   else
      echo "ON" >&4
      echo "icon:$Icon_On" >&6
      #
      # Actions pour 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)

Images icônes

Utilisation

Bah, il ne reste plus qu'à le lancer en début de session ^_^
Après adaptation évidemment … :-P

utilisateurs/tawal/scripts/switch-on-off-dans-le-systray.1683929005.txt.gz · Dernière modification: 13/05/2023 00:03 par Tawal

Pied de page des forums

Propulsé par FluxBB