Dux, avec un D comme Dux

Post-installation automatisée sur une base Debian minimal avec mon environnement de bureau personnel codé (presque) entièrement en python.

Bonjour,

Cela fait longtemps que je n’avais pas rédigé de billet de blog, tout du moins sur mon sujet favori, les zordinateurs. Oh! Je ne vais pas vous le cacher… La raison de ce tarissement intellectuel était due à une consommation excessive d’alcool à un manque d’inspiration. Je n’avais plus d’idées. On peut toujours se persuader du contraire en se forçant chaque semaine à rédiger un article sur une obscure distribution dénichée dans les tréfonds de distrowatch et téléchargée par deux papous. On peut toujours se lancer dans la présentation de Venenux et dire que c’est une distribution dont le bureau offre à l’usager, une expérience unique alliant convivialité, simplicité d’utilisation, promouvance des logiciels libres et mon cul sur la commode. Le fait est que quand on n’a rien à écrire, il vaut mieux s’abstenir et attendre que ça passe! Car comme dit le proverbe inuit : « Pingouin qui fait le mariole mérite une bonne torgnole ».

J’ai donc profité de cette parenthèse digitale pour me plonger dans la lecture de Learning Python. Ça se lit comme un roman. J’en ai également profité pour revoir de fond en comble le menu des applications que j’avais codé en Python et qui n’était pas une réussite. L’usager devait lui-même rajouter ou supprimer les applications de son choix dans le menu, ce qui, il faut bien le reconnaître, n’avait aucun sens. Souvenez-vous…

Ce diaporama nécessite JavaScript.

Avec ma version bêta, les applications sont toutes présentes dans le menu sans exception! Et lorsque vous en installez une nouvelle, vous la retrouvez instantanément dans l’une des catégories du menu. En fait, le programme scanne le répertoire /usr/share/applications. Il ouvre chaque fichier *.desktop et récupère le nom de l’application, sa commande, la catégorie à laquelle elle est rattachée, et enfin l’icône qui lui est associée.

-guvcview.desktop (-usr-share-applications) - Pluma_006

Au bout du compte, j’obtiens un rendu esthétique, sobre mais élégant. À chaque fois que ce bureau se matérialise, j’en ai les larmes aux yeux… Tout comme la version alpha, la version bêta du menu s’ouvre et s’iconifie en cliquant sur le petit bouton en bas à gauche ou bien en faisant un clic droit sur le bureau. Un autre clic droit sur le bureau détruit le menu et le sous-menu. Le code est ici.

Desktop 1_010

En ce qui concerne les échecs que j’ai subis, il y a tout d’abord la barre de tâches. Je n’ai jamais réussi à obtenir autre chose qu’un code bancal. Je n’ai aucun problème à créer un bouton qui vient gentiment se placer dans la barre de tâches à chaque fois que j’ouvre la fenêtre d’une application. Je n’ai même aucune difficulté à faire en sorte qu’un clic sur ce bouton iconifie et désiconifie la fenêtre, tandis qu’un clic droit détruit le bouton et la fenêtre! Seulement, si j’ouvre firefox et que je décide de le fermer en cliquant sur la petite croix de la fenêtre en haut à droite, le bouton qui lui est associé, n’est pas détruit et reste dans la barre des tâches jusqu’à ce que je décide moi-même de faire un clic droit pour le détruire.

Si j’ouvre firefox dans un terminal, aucun bouton n’apparait dans la barre des tâches car je ne sais pas comment m’y prendre pour coder cela proprement. J’ai bien essayé avec des boucles qui exécutaient un wmctrl toutes les secondes mais tous mes efforts ont été vains et la barre noire que vous apercevez en haut de la capture d’écran est une barre tint2 qui me rappelle douloureusement que j’ai perdu cette bataille.

Autre échec, ou plutôt incongruité, c’est cette ligne de code qui exécute le menu et le fond d’écran au démarrage de la session :

xterm -e ‘nohup ~/.config/desktop-in-python/menu.py’ & exit

Elle se trouve dans le fichier ~/.config/openbox/autostart. Vous pouvez donc constater de visu, que je suis obligé d’exécuter cette ligne en passant par un terminal. Si je ne le fais pas, le clic sur le bouton d’une application dans le sous-menu ne donne rien. Tout apparait normalement : le bouton du menu et le fond d’écran. Je peux ouvrir les menus et les sous menus mais un clic sur le bouton d’une application reste sans effet.

En exécutant cette ligne de code dans un terminal, je n’ai aucun message d’erreur puisque ça fonctionne très bien. Mais si j’exécute cette ligne directement à partir du fichier caché autostart, ça ne fonctionne pas. Et je ne peux pas voir d’où vient l’erreur puisque je n’ouvre pas de terminal. Il faudrait que je redirige stderr dans un fichier quelconque pour analyser le problème mais je ne sais pas comment m’y prendre… Et ce terminal qui apparait brièvement à chaque ouverture de session, a le don de m’agacer prodigieusement.

Enfin, dernier problème moins méchant. J’utilise des sets ou plutôt des dictionnaires ordonnés pour optimiser la vitesse d’exécution du menu. En effet, une liste est un objet parcouru de manière séquentielle, ce qui n’est pas le cas d’un set ou d’un dictionnaire. Malgré cela, j’ai la désagréable impression que l’ordonnancement des applications dans les sous-menus change à chaque fois.

J’en appelle donc à votre pitié pour m’aider à venir à bout de ces trois épreuves car j’ai un grand projet, celui de pondre de créer une distribution dont le bureau offre à l’usager, une expérience unique alliant convivialité, simplicité d’utilisation, promouvance des logiciels libres et… C’est tout!

Pour ce faire, j’ai optimisé mon script de post-installation que je vous avais présenté dans cet article. J’ai rajouté dans mon dépôt framagit, les scripts d’installation de l’environnement de bureau en python. Au bout du compte, la procédure n’a pas changé et si vous la suivez scrupuleusement, vous devez au final vous retrouver avec ceci :

Desktop 1_011

J’ai baptisé le projet Dux avec un D comme Dux car j’ai fait mienne cette célèbre maxime :

Oublie qu’t’as aucune chance, vas-y, fonce! On sait jamais, sur un malentendu, ça peut marcher.

Prochain objectif

Lorsque le menu est icônifié, il ne subsiste que le petit bouton tout à gauche en bas de l’écran. Ça fait un peu misère. Mon prochain objectif est donc de coder un dock en python qui viendra joliment habiller le bas du bureau :

  • J’aimerais que les icônes s’agrandissent ou bien qu’une fenêtre miniature apparaisse au survol de la souris, avant de cliquer pour ouvrir la fenêtre dans ses dimensions normales.
  • J’aimerais que l’usager puisse rajouter lui-même ses applications favorites dans le dock.

Voilà donc mes projets pour Dux avec un D comme Dux. Je vous souhaite un bon weekend.

Benoît

7 commentaires sur “Dux, avec un D comme Dux

    1. Hello,
      Merci pour ta visite et pour ton commentaire. Je compte bien coder également un dock. Ça me prend du temps mais je trouve que c’est très intéressant. Quant à Dux, c’est en effet un hommage à Jean-Claude Dusse. J’ai simplement remplacer les dernières lettres par un « x » pour faire plus linuxien mais je pense que tu l’avais déjà compris. 😉

    1. Bonsoir,
      Eh bien non justement puisque je suis en train de coder en python, un menu en cascade du répertoire utilisateur et je compte bien reprendre les différents codes du projet Dux. J’ai essayé de créer un menu en cascade avec openbox mais ça ne me plait pas. Trop instable.
      J’ai presque terminé le menu cascade en python mais il me reste un dernier bug à régler.
      J’aimerais beaucoup que certain(e)s me rejoignent et participe à ce projet. Ils ou elles seront les bienvenu(e)s. 😉

Répondre à anat3000 Annuler la réponse.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.