Programmer une fenêtre de déconnexion en langage Python

Bonjour,

Il y a quelques semaines, j’avais récupéré sur internet une fenêtre de déconnexion fabriquée grâce à la bibliothèque Pygtk. Voici à quoi elle ressemblait :

Bitte ausw_007

Elle possédait toutes les fonctions (« Mise en veille », « Redémarrer », « Éteindre » etc…) mais son design triste comme un jour de pluie ne me satisfaisait point. L’honnêteté m’oblige même à vous dire que je trouvais ça vilain comme tout. Comme cela fait plusieurs mois que je n’ai pas programmé en Python, je me suis dit qu’instancier ma propre fenêtre de déconnexion serait peut-être un bon exercice. Ça me dégourdirait les neurones.

Ni une ni deux, j’ai ouvert mon éditeur de texte et hop! après plusieurs heures de labeur, j’ai obtenu quelque chose qui me contente :

Abmeldungsfenster_009

J’ai déposé le tout sur framagit : https://framagit.org/Ordinosor/logout-window

Le code est ici.

Le cahier des charges

Je m’étais donné trois objectifs :

  1. Détecter la langue du système, (la « locale » comme on dit) et afficher les textes en conséquence.
  2. Remplacer chaque icône par le texte correspondant à la fonction du bouton, à chaque fois que le curseur de la souris survole une des cinq icônes. Effectuer l’opération inverse à chaque fois que le curseur quitte une des cinq icônes.
  3. Centrer la fenêtre au milieu de l’écran.

Détecter la langue du système

  • Importation du module locale,
  • Lignes 62 à 96 :
self._locale = locale.setlocale(locale.LC_ALL, "")[0:2]
  • la variable self._locale stocke les deux premiers caractères de la langue détectée (‘en’, ‘fr’, ‘de’ etc…)
  • Ensuite, j’ai créé une liste de trois listes contenant les traductions des boutons en allemand, en anglais et en français. À l’aide d’une condition if-elif-else, c’est la langue détectée qui sera utilisée.
  • Si la variable self._locale stocke les initiales d’une autre langue (par exemple le patois vendéen), la fenêtre sera en anglais car c’est la langue que j’ai définie par défaut. Vous devez bien vous douter que je ne vais pas m’amuser à traduire cette application dans tous les idiômes de la Terre!

Remplacer chaque icône par le texte correspondant à la fonction du bouton au survol de la souris (et le contraire pour l’opération inverse)

  • Lignes 175 à 194 : J’ai lié les boutons aux événements <‘Enter’> et <‘Leave’>
  • Ligne 48 : J’ai reconfiguré le bouton survolé pour faire disparaitre l’image et la remplacer par le texte. C’est là que j’ai eu un petit problème:
event.widget.config(image="", text=self.button_name...)
  • Comme vous pouvez le constater, il a fallu d’abord que j’affecte une chaîne de caractères vide à l’option image avant de configurer l’option text sinon ça ne fonctionnait pas.

Centrer la fenêtre au milieu de l’écran

  • Lignes 105 à 116: Ça n’a pas été simple. J’ai déniché un bout de script qui fait le boulot mais j’avoue que j’ai du mal à comprendre la formule mathématique. On récupère les dimensions de l’écran  auxquelles on retranche les dimensions requises pour afficher le widget, le tout divisé par deux. J’ai traduit le commentaire en français pour celles et ceux que ça intéresse.

Conclusion

Je suis content de m’être replongé dans le langage Python. Il est clair que le code mérite d’être retravaillé pour le rendre plus concis mais malgré tout, le résultat me donne entière satisfaction, à tel point que depuis ce matin, je n’arrête pas d’éteindre et de rallumer mon ordinateur… Jour… Nuit… Jour… Nuit… Jour… Nuit…

 

Plank, un dock très léger et aisément configurable

Bonjour à toutes et à tous,

En ce dernier jour de l’an 2017, alors que le réveillon de la Saint-Sylvestre va bientôt croiser notre chemin spatio-temporel et que la perspective d’engloutir une douzaine d’huitres me réjouit, je me suis dit que je pourrais occuper ces dernières heures à rédiger un ultime article.

Je suis en vacances et j’ai apporté dans mon sac à dos, mon fidèle netbook que j’ai baptisé Hashbang. Il tourne sous Archlinux. Il n’a pas d’environnement de bureau mais un simple gestionnaire de fenêtres Openbox et jusqu’à hier soir, le fond d’écran nitrogen était embelli d’une barre de tâches tint2 que vous apercevez en bas de cette image.

fond_ecran_hashbang.jpg

Mais j’avais envie d’un gadget un peu moins statique. J’avais envie d’un dock très léger dont les icônes s’agrandissent au survol de la souris parce que je trouve que ça met un petit peu d’animation. J’ai donc jeté mon dévolu sur plank dont la simplissime configurabilité me comble de joie. Voici donc à quoi ressemble désormais le bureau de mon ami Hashbang.

Desktop 1_003

Pour l’installer sur une distribution Archlinux, rien de plus simple, il suffit d’entrer cette commande en root :

pacman -S plank

Pour accéder aux préférences du dock, il suffit de presser la touche ctrl et d’effectuer un clic droit sur le dock. Une fenêtre s’ouvre et vous donne la possibilité de modifier le positionnement du dock, de changer de thème, de modifier la taille des icônes et le zoom au survol de la souris. Bon… Là, c’est la version allemande mais elle existe aussi en français! Keine Panik!

plank_005

L’adjonction d’une nouvelle icône au dock se fait par un simple glisser-déposer (drag and drop) en provenance du répertoire /usr/share/applications. Pour supprimer une icône, il suffit de tirer cette dernière vers l’extérieur. Le relâchement du bouton de la souris déclenche la décomposition de l’icône dans une petite explosion ridicule.

Achtung! Openbox ne gère pas la transparence ce qui veut dire que votre dock sera d’un gris opaque… sauf si vous installez compton, un « compositeur » qui s’occupe de combler cette lacune.

Vous pouvez installer plusieurs docks. C’est ce que j’ai fait. J’en ai installé un en bas et un autre à gauche. Prenez garde cependant à ne pas surcharger votre bureau au risque de sombrer dans la kitschitude.

Pensez également à modifier le fichier ~/.config/openbox/autostart pour que le ou les dock(s) se lancent automatiquement au démarrage :

Auswahl_006

J’ai tout de même conservé tint2 mais je l’ai considérablement réduit et je l’ai positionné en haut à droite. Il me renseigne sur la date, l’heure, la qualité de la connexion et la charge de la batterie.

Auswahl_007

Voilà… Cet article un peu paresseux clôt l’année 2017 de Miamondo. Bon réveillon. Tous mes voeux de bonheur pour 2018! Moi, je vais ouvrir mes huitres. À l’année prochaine!

Addendum du 01/01/2018:

Pour créer un dock supplémentaire, c’est relativement simple! Dans le répertoire caché ~/.config/plank (accessible après avoir fait ctrl+H), vous trouverez un répertoire dock1 qui contient lui-même un répertoire nommé launchers. Faites un copier-coller de dock1 au même emplacement et nommez ce nouveau répertoire dock2. Par défaut, ce second dock va se placer en bas de l’écran. Il vous suffit de faire un ctrl + clic droit sur ce nouveau dock pour accéder à la fenêtre de configuration et le déplacer sur le côté gauche, comme je l’ai fait. Ensuite , grâce au glisser-déposer, vous rajoutez ou vous supprimez les icônes à votre guise.

Openbox : minimalisme et légèreté.

 

Bonjour

C’est en installant Vipper sur mon vieil ordinateur portable que j’ai véritablement découvert Openbox. Certes, j’en avais entendu parler mais sans m’y intéresser plus que ça. Contrairement à Xfce, MATE, GNOME et Consorts, Openbox n’est pas un environnement de bureau mais un simple gestionnaire de fenêtres ce qui explique son extrême légèreté. Sur les conseils d’un posteur, j’ai commencé à éditer le fichier ~/.config/openbox/menu.xml pour créer un menu principal à ma sauce (en bas à gauche). Continuer à lire … « Openbox : minimalisme et légèreté. »

J’ai été mordu par une Viperr.

Bonjour,

Je possède un vieil Acer Aspire 5611 de 2006 qui n’a pas une vie facile puisque je m’en sers pour tester les distributions les plus farfelues. J’ignore combien de fois j’ai pu formater son disque dur. Je pourrais très bien le faire dans une machine virtuelle me direz-vous, au lieu de m’acharner sur ce pauvre bougre qui ne demande qu’à partir à la casse mais je suis un sadique et tant que cet ordinateur possédera ne serait-ce qu’un bit de conscience-machine, je continuerai mes expériences. Continuer à lire … « J’ai été mordu par une Viperr. »

Comment je suis devenu un biffin du numérique grâce à Emmabuntüs

biffin (nom masculin) : 1. Chiffonnier, 2. Militaire de l’infanterie

Bonjour,

Il y a deux semaines, j’ai eu l’heureuse surprise de découvrir dans ma boite à courriels, une missive de Patrick d’Emmabuntüs me demandant si j’étais disposé à participer aux tests de la prochaine version de cette distribution solidaire permettant le reconditionnement d’ordinosaures abandonnés. Continuer à lire … « Comment je suis devenu un biffin du numérique grâce à Emmabuntüs »

On recrute! Formation dispensée en interne

Bonjour à toutes et à tous,

Je m’efforce de rédiger un article par semaine ce qui, croyez-le ou non, n’est pas toujours une mince affaire… Mais je suis récompensé par le fait que l’audience du site se porte bien. Les visites sont régulières et en augmentation constante. Continuer à lire … « On recrute! Formation dispensée en interne »