Miamondo

Billets de miamondo

  • Modifier le CSS de son site grâce aux outils de développement proposés par les navigateurs

    Bonjour,

    Il y a quelques années, je me suis initié au HTML5 et au CSS3 grâce à l'excellent livre de Mathieu Nebra, fondateur du site Openclassrooms. À l'époque où je l'ai acheté, ça s'appelait encore le Site du Zéro. Ce manuel très pédagogique m'a permis de créer et de mettre en ligne la toute première version de Miamondo. Certes, le site était rudimentaire mais il m'a donné le goût de l'écriture, et cette passion ne m'a plus quitté. 

     

    17208609

     

    En 2014, j'ai abandonné mon site "roulé à la main sous les aisselles" pour en recréer un nouveau sur Wordpress.com. J'en ai profité pour changer de nom de domaine. Mais en début d'année, suite à des problèmes d'extensions plus qu'énervants, j'ai décidé de changer de crèmerie et de migrer sur e-monsite.com, un système de gestion de contenu installé à Amiens, dans les Hauts-de-France. Ce n'est pas open-source mais c'est artisanal (au bon sens du terme) et ça me convient tout à fait. En plus, ils sont les champions du référencement, parait-il.

    e-monsite.com propose toute une palette de thèmes plus ou moins configurables. Malheureusement, il arrive que les options proposées ne suffisent pas à obtenir la personnalisation que l'on souhaite. Il faut alors modifier le CSS. Tout comme chez Wordpress.com, cette option est présente. Le problème, c'est qu'il est difficile de s'y retrouver dans la feuille de style CSS. À quoi correspond tel ou tel id, telle ou telle class? Mystère...

    C'est là qu'interviennent les outils de développement présents dans les navigateurs. Personnellement, j'utilise Brave. Pour accéder à cette fonctionnalité, il faut cliquer sur le menu hamburger, en haut à droite. Ensuite, il faut descendre et cliquer sur Plus d'outils et enfin sur Outils de développement. Une fenêtre latérale va s'ouvrir, qui dévoile le code HTML, c'est-à-dire le fond (contrairement au code CSS3 qui s'occupe de la mise en forme). Et ce qui est intéressant, c'est que lorsqu'on clique sur la petite flèche au début d'une ligne, la zone du site qui lui correspond est mise en surbrillance. Cela permet de localiser précisément l'endroit à modifier.

    Par exemple, le titre du site ne me plait pas. Il n'y a pas d'espace entre le texte Miamondo et la bordure blanche. De plus, la bordure blanche est collée au menu horizontal. C'est vilain comme tout! Le problème, c'est que les options de configuration standard ne me permettent pas de modifier cette partie précise. Je dois donc me coltiner la feuille de style CSS mais j'ignore parfaitement à quoi correspond la zone à modifier. 

     

    Tool5

     

    C'est cet outil de développement qui va me renseigner. Je précise tout de même qu'un minimum de connaissances en HTML5/CSS3 est requis. Il faut connaitre la signification des balises et savoir comment on fait le lien entre le code HTML5 et la feuille de style CSS3 (notamment avec les balises id et class). Cliquez sur l'image ci-dessous pour l'agrandir à sa taille originale. Le code HTML5 est muni de petites flèches que j'ouvre au fur et à mesure de ma progression. Les parties que je déplie sont mises en surbrillance, soit en bleu, soit en orange, soit en vert. Le code couleur n'est par là pour faire joli! J'y reviendrai plus tard. Au bout d'un moment, la zone que je veux modifier est mise en surbrillance. J'ai touché le but. Je sais qu'elle s'appelle .cover-img. Parfait! 

     

    Tool

     

    Quelles sont les modifications que je souhaite apporter à la feuille de style CSS?

    • Je veux un espace de 20px entre la bordure blanche et le titre Miamondo. Ça s'appelle le padding.
    • Je veux également un espace de 20px entre la bordure blanche et le contenant noir. Ça s'appelle le margin.

    Je rajoute ces informations dans la zone du thème qui gère les modifications CSS. Là encore, je vous invite à cliquer sur l'image pour l'agrandir. Les instructions que j'ai rajoutées sont celles qui se trouvent sous la ligne grisée.

     

    Tool6

     

    J'enregistre mes modifications. Un petit coup de F5 pour actualiser la page et le tour est joué! Isn't it marvelousse? Et ce n'est qu'un exemple parmi d'autres.

     

    Tool3

     

    Peut-être que pour vous, ça n'a rien d'extraordinaire. Mais pour moi, c'est une vraie découverte que j'avais envie de partager. Du coup, ça m'a donné envie de me replonger dans le HTML5/CSS3 pour creuser cette fonctionnalité. Dernière chose, dans un précédent paragraphe, je vous ai parlé du code couleurs, non pas celui qui colore le code HTML mais celui du schéma sur la capture d'écran ci-dessous. Eh bien, il permet de visualiser les zones qui correspondent au padding et celles qui correspondent au margin. Encore quelque chose de fort utile!

     

    Tool4

     

    Pour conclure, je dirais que je me suis longtemps posé la question de l'utilité d'un tel outil dans mon navigateur. Je me doutais bien que ça devait servir à quelque chose mais à quoi? Mystère... Maintenant, je sais que ce n'est pas seulement pour faire joli. Cela dit, le système a ses limites puisque sans accès en écriture au code HTML (ce qui est bien évidemment le cas), il n'est pas possible de rajouter des balises id ou class, condition sine qua non pour pouvoir modifier le CSS.

  • i3, un gestionnaire de fenêtres alternatif.

    Bonjour, 

    Aujourd'hui, grâce au logiciel i3, j'ai découvert un aspect de l'informatique de bureau que je ne connaissais pas. i3 est un gestionnaire de fenêtres en mosaïque. Très léger, il a la particularité de se "piloter" avec le clavier, même si l'utilisation de la souris reste toujours possible pour redimensionner les fenêtres par exemple, et bien sûr pour naviguer à l'intérieur de celles-ci. Je suis un adepte de la simplicité volontaire et j'ai vite été séduit par cet outil épuré mais très efficace.

    Cela dit, je ne vous cache pas qu'au début, j'ai trouvé i3 déroutant. On est bien loin d'un environnement de bureau traditionnel tel que KDE ou GNOME. Il y a bien une barre des tâches mais celle-ci se contente de délivrer des paramètres relatifs au système et au matériel. Quant aux fenêtres, il est inutile de chercher une croix, un trait ou un petit carré, pour fermer, réduire ou redimensionner ces dernières, puisque tout se fait au clavier. La configuration se résume, tenez-vous bien, à un seul fichier: ~/.config/i3/config

    J'ai toujours aimé le minimalisme synonyme, dans mon esprit, de liberté de choix. On peut dire qu'avec ce gestionnaire de fenêtres épuré à l'extrême, je suis comblé.

    Mais ça fonctionne! Je dirais même que le pavage est tout à fait adapté pour celles et ceux qui, comme moi, possède plusieurs écrans. Les fenêtres ne se chevauchent pas. Elles viennent se placer les unes à côté des autres comme des ardoises ou des tuiles sur une charpente. Grâces à des commandes au clavier, vous pouvez déplacer les fenêtres à votre guise ou bien les redimensionner. C'est une autre approche qui n'est peut-être pas conseillée aux personnes découvrant tout juste Linux. Cela demande tout de même un certain temps d'adaptation. Pour l'installer sur une distribution Archlinux, il faut entrer la commande sudo pacman -S i3-gaps et aussi la commande sudo pacman -S i3status. Cette dernière installe la barre des tâches. Veillez également à ce que votre locale soit correctement configurée. Si ce n'est pas le cas, ça ne fonctionnera pas. Je parle en connaissance de cause! Pour les autres distributions, vous trouverez les instructions d'installation ici.

     

    Se connecter à i3

    Ensuite, dans le fichier caché ~/.xinitrc, il ne faut pas oublier de rajouter la commande suivante: exec i3. Si vous aviez openbox auparavant, veuillez supprimer ou commenter la ligne exec openbox-session. Puis, enregistrez et fermez le fichier. Pour vous connecter et découvrir votre nouveau gestionnaire de fenêtres, rien de plus simple. Si, comme moi, vous n'avez pas de gestionnaire de connexion tel que lightdm ou sddm par exemple, il vous suffit d'entrer la commande startx après avoir renseigné votre identifiant de connexion et votre mot de passe. Donc pour résumer:

     

     login: miamondo

     password: _______

     miamondo@mws~ $ startx

     

     

    Et vous allez vous retrouver devant ce paysage...

    I3

     

    Au premier abord, c'est flippant. Seule touche de lumière dans cet océan de noirceur : la barre des tâches en bas à droite. À la première connexion, i3 va vous demander quelle touche dite "mod" vous souhaitez configurer. Il va vous proposer un choix par défaut. Contentez-vous de suivre ses conseils. Normalement, la touche mod par défaut correspond à la touche "windows". Pour ouvrir votre première fenêtre, en l'occurrence un terminal uxterm, pressez les touches mod + Entrée. J'ouvre deux fenêtres qui se dimensionnent automatiquement et se partagent tout l'espace qui leur est alloué. Ouf! Un peu de lumière!

     

    I3 2

     

    Si vous voulez ouvrir un autre terminal comme par exemple tilix, en lieu et place d'une console uxterm, il vous suffit de modifier le fichier de configuration ~/.config/i3/config et de remplacer à la ligne 49, i3-sensible-xterm par tilix. L'avantage du multiterminal tilix, c'est qu'il utilise aussi le pavage. Pour modifier le fichier de configuration, vous pouvez utiliser l'éditeur en ligne de commande nano ou bien entrer dans le terminal, le nom de votre éditeur de texte préféré, gedit par exemple.

     

    I3 3

     

    Le fond d'écran

    Vous souhaitez peut-être embellir votre nouveau gestionnaire par un joli fond d'écran? Rien de plus simple! Installez feh ou nitrogen et rajoutez une de ces lignes dans le fichier config

    • pour feh :      exec feh --bg-scale '/chemin/vers/image'
    • pour nitrogen : exec nitrogen --restore

     

    I3 4

     

    Voilà qui est mieux! Il existe d'autres possibilités de configuration que je ne détaillerai pas ici. Sachez en tout cas que vous pouvez facilement embellir i3 en utilisant toujours le même fichier de configuration. Voici quelques exemples. La documentation officielle est très bien faite. Personnellement, j'ai passé l'âge de m'amuser à repeindre ma mob en lui adjoignant des plaques chromées sur le réservoir. je me suis contenté de lancer automatiquement plusieurs applications au démarrage. Dans le fichier de configuration, j'ai créé un paragraphe intitulé personal config. Voici ce qu'il contient:

     

     

     ##PERSONAL CONFIG##
     exec nitrogen --restore
     exec xrandr --output HDMI-1 --mode 1920x1080 --right-of VGA-1
     exec setxkbmap fr
     exec gedit
     exec dolphin
     exec brave http://miamondo.org 
     exec tilix

     

    Lorsque je me connecte, quatre fenêtres se répartissent l'espace sur mes deux écrans.

    • l'éditeur de texte gedit,
    • le gestionaire de fichiers dolphin,
    • le navigateur brave,
    • un terminal tilix.

     

    I3 5

     

    Les principales commandes

     mod + Entrée  ouvre une nouvelle fenêtre
     mod + F

     redimensionne la fenêtre en mode plein écran

     redimensionne la fenêtre à sa taille originelle

     Mod + Maj + R  mise à jour du gestionnaire i3, à chaud.
     Mod + Maj + E  déconnexion
     Mod + Maj + Q  fermeture de la fenêtre
     Mod + Maj + flèches  déplace la fenêtre dans le sens de la flèche

     

    Il existe d'autres commandes que je rajouterai dans ce tableau au fur et à mesure de mes découvertes.

     

    Conclusion

    Je suis heureux d'avoir découvert cet outil informatique simple et épuré. Je pense qu'il me correspond bien. Je vous invite à l'essayer, voire même à l'adopter. i3 peut s'avérer déroutant au départ, mais après un petit temps d'adaptation, on se rend très vite compte que le clavier est beaucoup plus rapide que la souris.

  • J'ai adopté Z-Shell

    Bonjour,

    Il y a quelques semaines, j'ai fait l'acquisition d'un très beau grimoire édité par la maison d'édition allemande Rheinwerk et qui traite de la programmation Shell. C'est bien dommage qu'une telle collection n'existe pas dans notre belle langue française car dans une bibliothèque, ça en jette. Je possède deux ouvrages de cette collection estampillée deutsche Qualität. Lorsque je les ouvre avec le petit cordon orange qui sert de marque-page, j'ai toujours le sentiment de me plonger dans la Bible pour méditer sur je ne sais quel épître de Saint Torvalds aux Linuxiens.

    Z2

    Et aujourd'hui, mes biens chers frères, en ce jour où nous sommes rassemblés pour un moment de partage sous la nef de cette magnifique basilique Notre-Dame-de-l'Internet, je vous propose de cheminer avec moi sur les terres de Z-Shell. Quoi? Mais non! Abruti! Ce n'est pas le batteur d'un groupe de Death Metal islandais, c'est le nom d'un puissant interpréteur en ligne de commande. En fait, c'est du bash mais avec une bonne dose de créatine.

    1. Installation sous Debian et Archlinux

    Sous Debian

     sudo apt update && sudo apt install zsh

    Sous Archlinux

     sudo pacman -Syu && sud pacman -S zsh

    Les paquets zsh-common et zsh-doc seront également installés.

    2. Définir zsh comme shell par défaut

    C'est probablement bash qui est votre shell par défaut. Pour le remplacer par zsh, il vous suffit d'entrer la commande suivante:

     chsh -s /bin/zsh

    Puis, vous rebootez. À la prochaine ouverture de session, quatre choix s'offrent à vous. Cliquez sur l'image ci-dessous:

    Z3

    Nous allons nous intéresser au choix (0) qui se contente de créer le fichier de configuration ~/.zshrc et d'y entrer juste un commentaire pour empêcher que ce questionnaire à choix multiple n'apparaisse à la prochaine ouverture de session. À vous ensuite de configurer zsh à votre guise. C'est cette option que personnellement j'ai choisie.

    Vous pouvez également choisir de créer vous-même le fichier caché ~/.zshrc et d'y entrer juste un commentaire. Ça revient au même:

     echo #configure > ~/.zshrc

    Enfin, vous pouvez choisir l'option (2) qui va vous offrir une configuration standard par défaut avec le thème adam1, un historique des recherches et une complétion bien pratique (Nous allons voir ça un peu plus bas). Vous aurez déjà en mains un outil fonctionnel.

    3. Configuration standard par défaut

     

     # Set up the prompt

     autoload -Uz promptinit
     promptinit
     prompt adam1

     setopt histignorealldups sharehistory

     # Use emacs keybindings even if our EDITOR is set to vi
     bindkey -e

     # Keep 1000 lines of history within the shell and save it to   ~/.zsh_history:
     HISTSIZE=1000
     SAVEHIST=1000
     HISTFILE=~/.zsh_history

     # Use modern completion system
     autoload -Uz compinit
     compinit

     zstyle ':completion:*' auto-description 'specify: %d'
     zstyle ':completion:*' completer _expand _complete _correct _approximate
     zstyle ':completion:*' format 'Completing %d'
     zstyle ':completion:*' group-name ''
     zstyle ':completion:*' menu select=2
     eval "$(dircolors -b)"
     zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
     zstyle ':completion:*' list-colors ''
     zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
     zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
     zstyle ':completion:*' menu select=long
     zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
     zstyle ':completion:*' use-compctl false
     zstyle ':completion:*' verbose true

     zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
     zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'

    4. Configuration personnalisée

    Comme je l'ai déjà écrit, j'ai choisi de faire moi-même ma configuration:

     

     autoload -Uz compinit

     compinit

     HISTFILE=~/.histfile
     HISTSIZE=1000
     SAVEHIST=1000

     bindkey -e

     autoload -U colors && colors
     PS1="%{$fg[green]%}%n%{$reset_color%}@%{$fg[red]%}%m%{$reset_color%}%{$fg[yellow]%}%~ %{$reset_color%}% $ %"

     RPROMPT="%*"

     # autoload -U promptinit && promptinit
     # prompt fade

     setopt auto_cd correct rm_star_wait

     

    • Lignes n° 1 et 2 : Activation de la complétion avec la touche Tab. Hyper pratique!
      • Prenons un exemple. Vous souhaitez supprimer une application que vous n'êtes pas sûr de pouvoir correctement orthographier. Vous savez qu'elle commence par un k. Vous entrez la commande suivante avant de presser la touche Tab:
     sudo pacman -S k

    • zsh va vous dérouler une liste d'applications commençant par un k. Vous n'avez plus qu'a vous déplacer avec la touche Tab puis à sélectionner en pressant la touche Entrée et le tour est joué.

     sudo pacman -S keyboard-configuration

    • Lignes n° 3, 4 et 5 : Configuration de l'historique qui peut accepter 1000 entrées.
    • Ligne n° 6 : Utiliser les raccourcis clavier emacs, même si la valeur d'EDITOR est vi
    • Lignes n° 7 et 8 : choix des couleurs pour l'invite de commande, c'est-à-dire le prompt. la ligne n° 11 peut vous paraître particulièrement ardue. En fait, c'est beaucoup plu simple qu'il n'y paraît :
      • fg[green] colore en vert %n (qui correspond à l'utilisateur). fg veut dire foreground (avant-plan).
      • reset_color réinitialise la couleur par défaut. @ est donc blanc.
      • fg[red] colore en rouge %m,qui correspond au nom d'hôte. (chez moi, c'est mws)
      • fg[yellow] colore en jaune le répertoire courant.
      • Cela nous donne:
     miamondo@mws ~ $

    • Ligne n° 9 : Configuration d'un second prompt à droite avec affichage de l'heure en format 24 heures et avec les secondes.
    • Lignes n° 10 et 11 : Possibilité de choisir un thème, par exemple fade. J'ai commenté les deux lignes pour empêcher leur exécution et conserver les couleurs que j'ai moi-même sélectionnées en lignes 10 et 11.
    • Lignes n° 12 : Cette commande setopt effectue trois opérations :
      • auto_cd : Complétion de la commande cd. Par exemple, vous entrez /e/a et vous pressez la touche TAB.
        • /etc/a va s'afficher.
        • Pressez la touche TAB encore une fois et sélectionner le répertoire souhaité (toujours avec la touche TAB), par exemple /etc/apt.
        • Pressez la touche Entrée. Vous vous retrouvez dans le répertoire /etc/apt. Très pratique!
      • correct : correction automatique d'une erreur de commande. Par exemple, vous entrez sl, une commande qui n'existe pas. zsh va vous demander si ce ne serait pas plutôt ls. Cette fonctionnalité est moins utile que la précédente et ne marche pas à tous les coups. J'ai, par exemple, entré la commande sodo pour obtenir les droits de super-administrateur. Je n'ai pas obtenu la correction souhaitée...
      • rm_star_wait : Demande de confirmation de destruction de répertoires. Si vous faites un rm-rf*, le Z-Shell va vous demander une confirmation au bout de dix secondes. C'est une sécurité que je n'ai pas osé tester... Mais je ne doute pas qu'elle fonctionne!

    Voilà le résultat avec un choix de couleurs personnalisées (à bâbord) ou bien avec le thème fade (à tribord).

    Z5 1      Z4

    Conclusion

    Sachez qu'il existe un site qui propose tout un tas de configurations, des modules mais également de la documentation :http://ohmyz.sh

    Nous voici parvenus au terme de cette modeste présentation de zsh, un shell qui m'a convaincu et que j'ai immédiatement adopté. Pour une découverte plus approfondie, vous pouvez entrer la commande man zsh. Vous pouvez même éditer directement un fichier pdf de ce manuel zsh en rajoutant les lignes suivantes à la fin du fichier de configuration ~/.zshrc:

    man()
    {
    /usr/bin/man $* > ~/temp.md
    if [ -s ~/temp.md ]
    then 
       pandoc -s temp.md -f markdown -t latex -o temp.pdf
       evince ~/temp.pdf & exit
    fi
    }

    Après avoir entré la commande man zsh dans un terminal, vous obtenez automatiquement ce document pdf : Zshzsh.pdf (83.35 Ko).

  • Python: La programmation parallèle avec le module threading

    Bonjour, 

    Aujourd'hui, j'ai envie de vous parler du module threading. Ce dernier gère la programmation parallèle dans le langage Python et il est fort utile. Je l'ai utilisé pour créer un bouton dont la finalité est d'afficher l'heure à la seconde près, et d'ouvrir un calendrier. Ce bouton a donc deux fonctions et pour remplir sa mission, il a besoin de deux boucles:

     

     Clockbutton2

             

    • une boucle qui surveille les événements de l'utilisateur. C'est la boucle mainloop() de l'environnement graphique tkinter. Par exemple, Si le pointeur de la souris survole le widget Button, la couleur de ce dernier change.
    • une boucle infinie de type while, qui tourne toutes les secondes et qui permet d'afficher l'heure exacte sur le bouton.

    Si nous ne lançons pas ces deux boucles en parallèle, alors soit le code affichera le défilement des secondes mais le bouton sera inactif, soit le bouton sera actif mais les secondes seront figées dans l'éternité... Enfin, jusqu'à l'arrêt forcé du programme.

    Voici un exemple de code qui ne fonctionne pas. Il y a dans ce code deux boucles : while 1 qui est une boucle infinie et mainloop() réceptionnaire d'événements du GUI tkinter. Lorsque le programme pénètre dans la boucle infinie, il n'a plus aucun moyen d'en sortir. Certes, il affichera le défilement des secondes jusqu'à la fin des temps, mais comme la boucle mainloop() se trouve en dehors, nous n'avons plus accès aux événements du bouton. Celui-ci est complètement pétrifié. Comme je l'explique plus bas dans la vidéo en lien avec ce billet, il n'est même pas possible de cliquer sur la croix pour fermer le programme.

    Si nous déplaçons la toute dernière instruction (button.mainloop) à l'intérieur de la boucle while, une seule seconde va défiler puis le programme va "sauter" dans la boucle mainloop() et quitter la boucle infinie. Nous aurons accès aux fonctionnalités du bouton mais l'heure restera figée.

    La solution

    Elle est fort simple. Voici le code qui fonctionne. Il suffit de créer deux objets de la classe threading et de les démarrer en parallèle presque simultanément grâce à la méthode start(). Celle-ci va ensuite passer le relais à la méthode self.run(). Les noms de ces deux méthodes sont génériques. Ils ne peuvent pas être remplacés par d'autres termes. Les deux processus ne démarrent pas exactement au même moment. Il y a une différence de 200 millièmes de secondes. Dans ce cas précis, cet intervalle est nécessaire si on ne veut pas que le programme se crashe lamentablement juste après le décollage.

    Une fois lancé, chaque "thread" vit sa vie. Ils ont toutefois la possibilité d'accéder à des instructions communes comme par exemple les variables de classe. C'est le cas dans mon programme. La boucle infinie a besoin de la variable qui stocke l'objet fenêtre principale. Mais pour éviter qu'ils se mélangent les pinceaux et qu'ils modifient au même moment des données vitales pour la stabilité du programme, nous importons la classe Lock() du module threading.

    Lock() signifie verrou. Je déclare donc une variable (lock = Lock()) en tout début de programme, et je verrouille le premier thread grâce à l'instruction with lock. Avec cet outil, le second thread ne ne démarrera que lorsque le premier aura terminé son travail et lui aura passé la main. En clair, le premier thread fait ce qu'il a à faire, tandis que le second qui n'est pas verrouillé, reste sur le seuil de la porte. Lorsque le premier est prêt, il ouvre la porte et laisse entrer le second thread. Si le premier doit reprendre son travail pour modifier je ne sais quel bouton, il prie le second de bien vouloir sortir de la pièce. C'est très pratique! Bien évidemment, comme le second thread est une boucle infinie, il n'est pas possible de le verrouiller. Il ne passerait jamais la main à son collègue. Voilà donc pour le module threading que je vous invite à découvrir. Si vous avez des remarques ou des interrogations, n'hésitez pas. Ma porte est ouverte.

     

  • Un environnement de bureau codé en Python

    1ère partie : la barre des tâches

     

    Taskbar3

    Bonjour,

    Il y a un peu plus d'un an, je m'étais lancé dans un projet ambitieux, en l'occurrence la programmation d'un environnement de bureau en langage Python. Le résultat n'avait pas été à la hauteur de mes espérances. Si j'ai réussi à coder le menu des applications, je n'ai jamais réussi à coder proprement la barre des tâches et le fond d'écran.

    Les boutons de la barre des tâches tremblotaient ou disparaissaient inopinément ce qui n'était pas un signe de stabilité. Mais ça, c'était avant. Aujourd'hui, je peux annoncer que j'ai réussi à coder une barre des tâches stable et fonctionnelle. Voici une petite vidéo pour illustrer mes propos:

     

     

    Vous trouverez le code sur mon dépôt git, à cette adresse.Le fichier qui lance l'application, se nomme miamondo.py. Il est mis à jour quotidiennement.

    Points à corriger ou à améliorer

    • Le placement des fenêtres. Lorsque l'une d'entre elles est maximisée et couvre les autres, je dois iconifier et désiconifier ces dernières pour les faire apparaitre au-dessus. Ce n'est pas satisfaisant.
    • Les icônes des boutons. J'ai prévu une icône par défaut, pour éviter de faire planter l'application. Mais cette icône apparait bien trop souvent à mon goût. Elle signifie que je n'ai pas réussi à automatiser mon système d'icônes de manière satisfaisante. La raison en est que je ne maîtrise pas suffisamment les expressions régulières (regex). Je dois donc travailler ce point en priorité. Les icônes sont toutes présentes dans mon système de fichiers Archlinux, soit sous /usr/share/icons ou bien sous /usr/share/pixmaps. Les applications sont toutes répertoriées sous /usr/share/applications. J'ai tout ce qu'il faut pour bien faire. Le problème vient donc de mes lacunes en regex.

    Points de satisfaction

    • Stabilité du code. Dans la barre des tâches, les boutons des applications ouvertes ne scintillent pas ou pire encore, ne disparaissent pas de manière inopinée. À l'ouverture d'une fenêtre, le bouton se matérialise immédiatement. À la fermeture de cette même fenêtre, le bouton qui lui est lié, disparait immédiatement de la barre des tâches. Cela prouve que les boucles fonctionnent. 
    • Découverte de la programmation parallèle avec le module threading.
    • Découverte et prise en compte de l'importance du module regex.
    • Le nombre de processus zombies ne dépasse pas 2, ce qui est le signe que le programme est plutôt bien codé, me semble-t-il.

    À bientôt pour la deuxième partie qui vous présentera le menu principal.