Steve Frécinaux

Réhabilitons xclock

Pour avoir l’heure sur son ordinateur, il existe plusieurs solutions. La plus commune, la plus pratique aussi, est l’applet dans le panel1. Il a l’avantage d’être toujours visible, suffisamment discret mais toujours à portée de click pour accéder au calendrier. Ceci dit, il a un inconvénient, relatif à ma façon d’utiliser les panels : il est trop large. En effet, j’utilise un panel vertical, car je dispose de deux écrans (l’un de 1024x768, l’autre de 800x600) et donc de plus de place qu’il n’en faut horizontalement, tandis que je reste limité verticalement. Bref, pour l’instant, ce n’est pas la panacée, même si des efforts sont en cours pour adapter tous les applets aux panels verticaux. Bref, en un mot comme en cent, il dépasse, ce qui le rend illisible en plus d’être très moche.

Avoir l’heure est quand même plutôt important, il me fallait donc trouver une autre solution. La première met en œuvre les gDesklets. Ceux-ci permettent de placer des applets directement sur le fond du bureaux, sans nécessiter de panel. Plusieurs types d’horloges de styles différents sont disponibles, mais souffrent toutes du même défaut : on ne les voit plus dès qu’on place une application dessus. Mes écrans n’étant quand même pas très grands, je maximise la plupart du temps les applications que j’utilise, et je vois tellement souvent mon fond d’écran que je n’ai même pas pris la peine d’y mettre une jolie illustration. Autant dire que la solution n’est guère satisfaisante.

Capture d'écran. xclock

Troisième solution, apparemment la plus saugrenue : xclock. Mais si, souvenez-vous, il s’agit de cette horrible horloge géante qui apparaissait à côté du terminal, lorsque vous lanciez X et twm, back in 1998. Pour ceux qui n’ont pas connu cette époque, il s’agit donc d’une application toute bête, qui affiche une horloge dans une fenêtre classique. Cette fenêtre est redimensionnable (l’horloge se redessine afin d’occuper toute la surface affichable) mais souffre d’un défaut inhérent à toute fenêtre. Elle se masque dès que vous cliquez sur la fenêtre qui est derrière. Seulement on est sous linux, pas sous Windows. Et sous linux, tous les gestionnaires de fenêtre, même metacity, proposent au minimum quelques fonctionnalités de base, parmi lesquelles la possibilité de placer une fenêtre en permanence au premier plan. Un clic droit sur la barre de titre, cochons l’option ad-hoc, et voilà le travail.

Reste que lancer xclock, la redimensionner et la placer là où elle ne gênera pas, et ce à chaque fois qu’on allume son ordinateur, ce n’est pas génial. Automatisons-le. En langage linuxien cela se traduit par « écrivons un script ». Pour cela, nous aurons besoin de wmctrl. Il s’agit d’un utiltaire qui permet de manipuler les fenêtres de tous les gestionnaires de fenêtres modernes, en se basant sur une norme de freedesktop.org.

Un petit tour par le man nous renseigne sur les paramètres à fournir à l’utilitaire, sachant que l’on veut déplacer la fenêtre, la redimensionner et la placer au premier plan, puis, tant qu’à faire, enlever son icône de la barre des tâches (oui, tout cela est possible). La position idéale est à droite, pas tout à fait à l’extrême mais presque (oui, un peu comme Sarkozy), en laissant juste assez de place sur la droite que pour pouvoir accéder aux trois boutons d’une fenêtre maximisée. La taille idéale, celle qui permettra de ne recouvrir que la barre de menu et la barre d’outil, qui sont le plus souvent vides à cet endroit. En bash, cela se traduit comme ça :

#!/bin/sh
xclock &
sleep .5
wmctrl -r "xclock" -e 0,1680,0,54,54
wmctrl -r "xclock" -b "add,above,skip_taskbar"

Le temps mort d’une demi seconde est là pour permettre à xclock de se charger et d’afficher sa fenêtre, sans quoi le gestionnaire de fenêtres ne pourra pas la redimensionner, la déplacer et changer ses attributs. En effet, celui-ci n’a de pouvoir que sur les fenêtres, pas sur les applications. Je place la fenêtre à la position (1680, 0), ce qui correspond, pour mon système bi-écran, à une distance de 90 pixels du bord droit de la zone affichable. La taille de 54x54 permet d’avoir une horloge carrée, lisible, qui ne dépasse pas de la zone prévue.

Je n’ai par contre pas trouvé comment faire pour que la fenêtre s’affiche sur tous les bureaux, à l’instar du panel. Il semblerait que metacity renseigne pour cela un numéro de bureau égal à -1 dans les propriétés de la fenêtre, mais wmctrl ne permet pas de donner une telle valeur. À ce titre, si vous avez une solution, je ne dis pas non. Je pourrais bien exécuter une instance de xclock par bureau et ensuite les répartir, mais je ne trouve pas cette solution très propre…

Pour lancer ce script à chaque démarrage de session, sous gnome il suffit de lancer gnome-session-properties (Bureau > Préférences > Sessions) et d’ajouter le script (que vous aurez préalablement rendu exécutable via chmod +x) dans le panneau intitulé « Programmes au démarrage ».

Notes —– [1][e] Je déteste ce mélange de français et d’anglais mais je ne connais pas d’équivalents pour ces mots plutôt techniques…