dzen2 est un logiciel de messages, notifications et menus pour X11. il a été conçu pour être léger, rapide et pour supporter les scripts en différents languages.
dzen2 supporte les polices XFT (en options), les couleurs et le formatage simple, les icônes et graphiques et les actions du clavier/souris. dzen2 est disponible dans la plupart des distributions GNU/Linux: la version intégrée au livarp vient des dépôts svn: dzen2-0.9.5.
dzen2 est utilisé sur livarp principalement dans la session echinus: le script dzenbar.sh situé dans votre $HOME/bin utilise conky pour récupérer des informations puis les afficher dans une barre interractive.
dzen accepte différentes options, nous décriront plus tard le format appliqué à ces options:
options.....argments.................description
-fg.........#RRGGBB,color............couleur du texte
-bg.........#RRGGBB,color............couleur du fond
-fn.........police xft ou classic....type de police utilisé
-ta.........l(eft),c(enter),r(ight)..alignement du texte de la fenêtre “titre”
-sa..................................alignement du texte de la fenêtre “esclave”
-tw.........x(pixels)................largeur de la fenêtre “titre”
-w...................................largeur de la fenêtre
-h...................................hauteur des lignes, par défaut: hauteur de la police +2px
-x...................................position horizontale depuis le bord gauche de l'écran
-y...................................position verticale depuis le bord haut de l'écran
-l..........n(nombre)................nombre de lignes affichées dans la fenêtre “esclave”
-m...................................dzen2 en mode “menu” (voir section “menu”)
-e...................................évennements et actions (voir section events & actions)
-p..........s(econdes)...............la dernière valeur est persistente pendant 's' secondes (en option)
-u...................................mettre à jour les fenêtres “titre” et “esclave” en même temps
-xs.........n(uméro).................numéro de l'écran xinerama à utiliser
-v...................................version de dzen2
dzen2 affiche les fenêtres “titre” et “esclave” comme suit:
la première ligne passée à dzen2 est affichée dans la fenêtre titre, les autres lignes seront affichées dans la zone esclave à moins que vous n'utilisiez l'option de format '^tw()' pour surpasser le comportement par défaut.
dzen2 suspend l'affichage:
notez que les options décrites ici sont celles par défaut. vous pouvez modifier ces comportements grâce à l'option -e (voir events & actions).
utiliser l'option -l pour afficher plusieurs lignes au survol du pointeur sur la fenêtres “titre” de dzen2. le nombre de ligne à afficher est passé en argument (-l 5 affiche 5 lignes).
lorsque le pointeur quitte la fenêtre “esclave”, celle-ci est masquée, sauf si vous “fixez” la fenêtre avec un clic central.
les boutons 4 et 5 (molette de la souris) font défiler le contenu de la fenêtre “esclave” si le nombre de ligne dépasse la hauteur de la fenêtre.
exemple: une manière simple de comprendre comment la fenêtre esclave fonctionne (clic droit pour quitter dzen2):
cat ~/.bashrc | dzen2 -l 30 -p
dzen permet d'associer certains évennements (clavier/souris) à des actions configurables.
syntaxe de l'option -e: -e 'event1=action1:option1:…option'n',…,action'm';…'
chaque évennement peut être associé à plusieurs actions qui peuvent avoir plusieurs options (limité à 64 pour chaque mais modifiable depuis les sources, fichier action.h).
-e 'button1=exec:xterm:firefox;entertitle=uncollapse;button3=exit'
liste des évènements acceptés par dzen2
les évennements clavier:
toutes les touches peuvent entrainer une action avec l'otion -e. la syntaxe utilisée est celle du fichier /usr/include/X11/keysymdef.h . par exemple, pour “e” event = key_e , pour “_” event = key_underscore
liste des actions:
les évennements par défaut:
si aucune option n'est passée en arguments, dzen observe les comportements par défaut suivant:
note: si vous définissez des options différentes, dzen ne tiendra aucun compte des valeurs par défaut: vous devrez spécifiez toutes les options.
-e 'button3=exit:13'
-e 'entertitle=uncollapse,grabkeys; enterslave=grabkeys;leaveslave=collapse,ungrabkeys; button1=menuexec;button2=togglestick;button3=exit:13; button4=scrollup;button5=scrolldown; key_Escape=ungrabkeys,exit'
-e 'enterslave=grabkeys;leaveslave=ungrabkeys; button4=scrollup;button5=scrolldown; key_Left=scrollup;key_Right=scrolldown; button1=menuexec;button3=exit:13 key_Escape=ungrabkeys,exit'
dzen propose deux modes de menu: vertical et horizontal. pour activer ces modes, ajouter 'v'(ertical) ou 'h'(horizontal) à l'option '-m'. le menu est vertical par défaut.
dzen2 -p -l 4 -m < file dzen2 -p -l 4 -m v < file
dzen2 -p -l 4 -m h < file
toutes les actions commençant par “menu” sont appliquées à l'entrée de menu sélectionné.
le mode de menu fonctionne de paire avec l'option '-l n'
le menu horizontal n'a pas de fenêtre titre, les actions passées à la fenêtre titre seront ignorées.
cette option permet la mise à jour simultané entre la fenêtre titre et la fenêtre esclave.
un exemple sera plus explicite: imaginons que nous voulions afficher l'heure dans la fenêtre titre et une sortie de log dans le fenêtre esclave:
while true; do date # output goes to the title window dmesg | tail -n 10 # output goes to the slave window sleep 1 done | dzen2 -l 10 -u
pour que cela fonctionne, il est important de spécifier le nombre exacte de ligne du fichier lu avec l'option '-l'.
cette option permet d'appliquer dynamiquement un format particulier à l'affichage de dzen2.
dzen2 accepte les formats suivants:
^ca(1,mpc toggle)^ca(3,mpc stop)[^ca(4,mpc prev)^ca(5,mpc next)mpd^ca()^ca()|^ca(4,mpc volume +3)^ca(5,mpc volume -3)vol^ca()^ca()]^ca()^ca()
voir la section “events & actions” pour une explication détaillée des commandes.
ces commandes peuvent être placées à n'importe quel endroit et avec toutes les combinaisons dans l'entrée soumise à dzen2.
les couleurs peuvent être spécifiées avec leur nom (red, green, darkorange…) ou leur valeur rrggbb (#ffffaa)
echo "^fg(red)I'm red text ^p(+20)^fg(blue)I am blue" | dzen2 -w 300 -p
echo "^bg(#ffaaaa)The ^fg(yellow)text to ^bg(blue)^fg(orange)colorize" | dzen2 -w 300 -p
echo "^fg(grey70)Some text containing ^^ characters" | dzen2 -w 300 -p
echo "^i(dzicons/mail.xbm) I am an envelope ^fg(yellow)and ^i(dzicons/bat_full_02.xbm) I'm a baterry." | dzen2 -w 300 -p
echo "6x4 rectangle ^r(6x4) ^fg(red)12x8 ^r(12x8) ^fg(yellow)and finally 100x15 ^r(100x15)" | dzen2 -w 300 -p
echo "^ib(1)^fg(red)^ro(100x15)^p(-98)^fg(blue)^r(20x10)^fg(orange)^p(3)^r(40x10)^p(4)^fg(darkgreen)^co(12)^p(2)^c(10)" | dzen2 -x 20 -y 20 -w 120 -p
(echo "This is a message"; sleep 10) | dzen2 -bg darkred -fg grey80
(echo Header; cal; sleep 20) | dzen2 -w 300 -l 8
(echo Header; while true; do echo test$((i++)); sleep 1; done) | dzen2 -w 300 -l 12
dzen2 -w 200 -l 4 -p -m < dzenmenu.txt
où dzenmenu.txt se présente comme suit(chaque entrée après “Menu” correspond à une commande)
Menu
urxvtc
rox-filer
firefox
geany
echo -e "xterm\nxclock\nxeyes\nxfontsel" | dzen2 -w 300 -l 4 -m h -p
amusez-vous bien avec dzen2 :)