Endeavour OS

Bonjour,

Aujourd’hui, je publie un article plus long qu’à l’accoutumée. Le sujet me plaît et l’inspiration était au rendez-vous. Il y a une semaine, j’ai installé Almalinux sur mon ordinateur et les premiers moments d’enthousiasme ont laissé place à une grande déception. Almalinux s’est révélée lourde, obscure au niveau de l’installation des paquets, pas adaptée pour les débutants ou pour ceux qui, comme moi, possède une ordinateur qui n’est pas un foudre de guerre. Je me suis donc mis en quête d’une distribution plus légère et j’ai jeté mon dévolu sur EndeavourOS. Basée sur Archlinux, la distribution la plus propédeutique de la galaxie Linux, EndeavourOS est cependant bien plus facile à mettre en oeuvre car à l’instar d’Ubuntu et de Linux Mint par exemple, elle est dotée d’un installateur qui ne vous demandera rien d’autre que votre fuseau horaire, la langue du système, la langue du clavier, votre nom d’utilisateur et votre mot de passe. Pour le reste, vous pouvez patienter en buvant un thé.

L’installation prend une bonne heure mais nul besoin de mettre en oeuvre une telle procédure. C’est le gros avantage! Vous serez toutefois invités à choisir un environnement de bureau : Cinnamon, Plasma ou XFCE. J’ai testé les trois et je dois dire que sur ce point, je n’ai pas trouvé mon bonheur. Mon ordinateur manque un peu de vigueur. J’ai donc décidé d’installer Openbox et de configurer mon système à la main. Openbox n’est pas un environnement de bureau. C’est un simple gestionnaire de fenêtres, mais vous allez voir qu’en lui adjoignant quelques outils, on obtient quelque chose de léger et d’aussi avenant que bien des distributions Linux.

Lorsque vous installez Openbox, le résultat est un simple fond de bureau tout gris avec un minuscule menu que l’on peut faire apparaître en cliquant droit. Dans ce menu, vous allez trouver un terminal. Et si vous n’en trouvez point, vous pouvez tout à fait basculer sur une console tty (Ctrl + alt + F2) . Ça fera l’affaire. Le but est d’obtenir le résultat suivant :

Mise à jour des paquets

N’oubliez jamais ceci. EndeavourOS est une distribution à publication roulante (rolling release). Cela signifie que contrairement à Ubuntu et consorts, elle est mise à jour quotidiennement. Vous ne trouverez donc pas une EndeavourOS 21.04 Glaviot Gluant par exemple. Vous devez faire en sorte que votre distribution soit toujours à la page. Nous allons tout de suite vérifier :

sudo pacman -Syu

Plus tard, nous verrons comment automatiser ce processus. Sachez aussi que la configuration Openbox qui s’applique à tout le système se trouve dans /etc/xdg/openbox. Si vous listez ce répertoire, voici ce que vous obtenez :

ls /etc/xdg/openbox
autostart  menu.xml  rc.xml  environment

Peut-être préférez-vous que cette configuration ne s’applique qu’à votre profil. Si c’est le cas, créez un répertoire openbox dans ~/.config et copiez-collez-y le contenu du répertoire /etc/xdg/openbox.

 mkdir -p ~/.config/openbox && cp /etc/xdg/openbox/* ~/.config/openbox

La barre de tâches tint2

Nous allons commencer par installer une barre de tâches, en l’occurrence tint2. Voici la commande :

sudo pacman -S tint2

Cette barre de tâches est personnalisable en entrant la commande suivante :

tint2conf

Vous pouvez faire ce que vous voulez! Vous pouvez la rendre transparente, agrandir les icônes, rajouter des lanceurs, y incorporer la date et l’heure. Vous pouvez même en rajouter une deuxième si le coeur vous en dit. Pour cela, vous n’êtes pas obligés d’utiliser l’interface graphique. Vous pouvez le faire à la main en modifiant le fichier ~/.config/tint2/tint2rc.

Le menu

Ensuite, il va falloir configurer un menu digne de ce nom. Ici, pas d’interface graphique, il faut éditer le fichier ~/.config/openbox/menu.xml à la main. Mais ce n’est pas bien compliqué à comprendre. C’est même très intuitif. Voici comment ça se présente.

menu.xml

Prenons par exemple l’onglet Multimédia. Il s’agit d’un menu qui contient un sous-menu (capture vidéo) et deux applications (Capture d’écran et contrôle du volume). Ci-dessous le code. Cliquez sur l’image pour l’agrandir. Vous avez des balises <menu>, <item>, <icon>, <action>, <command> et <separator/>. Elles sont toutes ouvrantes et fermantes sauf la dernière. Pour ce qui est des icônes, vous en avez tout un stock ici : /usr/share/icons.

Code xml

Dans le menu graphique, vous remarquez que la deuxième ligne est afficher toutes les applications installées. Cela vous conduira au répertoire /usr/share/applications qui stockent, pour être précis, non pas toutes les applications installées mais tous les lanceurs d’applications.

Ça, c’est pour le fond. Pour ce qui est de la forme, vous pouvez utiliser l’outil obconf. Vous l’installez et vous entrez la commande obconf. Elle ouvre une interface graphique qui correspond exactement eu fichier ~/.config/openbox/rc.xml.

sudo pacman -S obconf 
obconf

Donc, vous pouvez utiliser cette interface ou directement éditer le fichier source pour :

  • sélectionner un thème (Celui que j’ai choisi est Natura),
  • réserver une marge pour la barre de tâches,
  • changer de police de caractères,
  • etc…

Veuillez noter que vous pouvez visualiser vos changements immédiatement en entrant la commande ci-dessous. Nul besoin de vous déconnecter.

openbox --reconfigure

Le fichier ~/.config/openbox/autostart

Ce fichier est très utile car il permet d’exécuter des commandes à chaque démarrage de l’ordinateur. Vous pouvez y mettre des commandes ou des fichiers qui exécutent des commandes. Chaque ligne doit être suivie d’une esperluette pour que la commande soit exécutée en tâche de fond. Nous pouvons donc d’ores et déjà faire en sorte que la barre de tâches se déploie à chaque démarrage, que le pavé numérique soit automatiquement activé, que la lumière de notre écran se tamise à partir d’une certaine heure (fluxgui doit être installé) et que le compositeur xcompmgr donne un peu d’effet aux fenêtres. Cela nous donne ceci :

tint2 &
numlockx &
fluxgui &
xcompmgr -c -f &

On peut même en profiter pour entrer la commande ci-dessous. Elle va ouvrir le lxterminal et vous demander votre mot de passe pour mettre à jour les paquets.

lxterminal -e "sudo pacman -Syu" &

xrandr

Maintenant, si comme moi, vous avez plusieurs écrans, il va falloir les configurer avec xrandr. Si par exemple le deuxième écran est à gauche de l’écran principal dit « primaire », entrez ces deux commandes dans le fichier ~/.config/openbox/autostart.

xrandr --output HDMI-A-0 --mode 1920x1080 --primary &
xrandr --output DisplayPort-0 --mode 1920x1080 --left-of HDMI-A-0 &

Évidemment, ces informations sont miennes. Vos écrans portent sans doute des noms différents et les résolutions ne sont pas les mêmes. Pour le savoir, entrez la commande suivante. Installez-la au préalable si ce n’est pas déjà fait.

xrandr

Vous aurez également compris que si le second écran est à droite, il faut remplacer –left-of par –right-of.

Le fond d’écran

Passons maintenant à l’habillage du bureau. Vous pouvez utiliser nitrogen ou feh. J’ai personnellement un petit faible pour nitrogen qui est pourvu d’une interface graphique permettant de sélectionner un répertoire d’images dans lequel vous pourrez choisir un fond d’écran. Notez que nitrogen est multiécrans. Par contre, avec l’interface graphique, je n’ai pas trouvé comment faire pour changer de fond d’écrans toutes les minutes par exemple. Qu’à cela ne tienne, pour venir à bout de ce problème, je me suis penché plus avant sur les fichiers de configuration de nitrogen. Il y en a deux, dont un qui est généré automatiquement, lorsque vous sélectionnez votre configuration avec l’interface graphique. Il s’agit du fichier ~/.config/nitrogen/bg-saved.cfg.

[xin_0]
file=/home/miamondo/miamondo/Afbeeldingen/Wallpapers_2/music.png
mode=3
bgcolor=#000000
[xin_1]
file=/home/miamondo/miamondo/Afbeeldingen/Wallpapers_2/ISS.png
mode=3
bgcolor=#000000

Je vais l’ai déjà dit me semble-t-il, j’ai deux écrans. On les retrouve dans le fichier. Il y a bien deux blocs. Alors, j’ai rédigé deux scripts, un python et un bash qui me permettent d’arriver à mes fins.

nitrogen.py

#!/usr/bin/env python3
import os
import sys
import time
import subprocess
path = sys.argv[1] # Chemin du répertoire parent
frequency = int(sys.argv[2]) # Fréquence de rafraichissement en secondes
cwd = os.path.abspath(os.path.dirname(sys.argv[0]))
while 1:
    wallpapers = list()
    wallpapers2 = list()
    for img in os.listdir(path):
        wallpapers.append(os.path.join(path,img))
        wallpapers2.append(os.path.join(path,img))
    wallpapers2.reverse()
    for wallpaper, wallpaper2 in zip(wallpapers, wallpapers2):
        subprocess.run([os.path.join(cwd, "nitrogen.sh"), wallpaper, wallpaper2])
        time.sleep(frequency)

Ce script prend deux paramètre qui sont le répertoire d’images où vous allez puiser vos fonds d’écran et la fréquence de rafraichissement exprimées en secondes. Alors, si vous décidez de piocher dans le répertoire Vacances_en_Creuse et de rafraîchir vos fonds d’écrans toutes les deux minutes, voici la commande que vous allez entrer :

./nitrogen.py /home/$USER/Images/Vacances_en_Creuse 120

Elle va lancer un script qui va exécuter deux boucles sur toutes les images du répertoire. La première boucle commence par la première image et va jusqu’à la dernière, tandis que la seconde boucle fait le contraire. Ces deux boucles se trouvent dans une une boucle while qui s’exécute toutes les deux minutes jusqu’à l’extinction de l’ordinateur. Les boucles for lancent un script bash : nitrogen.sh. Ce script modifie la configuration de nitrogen et la met à jour à chaud (nitrogen –restore &).

nitrogen.sh

#!/bin/bash
echo [xin_0] > ~/.config/nitrogen/bg-saved.cfg
{
    echo file=$1
    echo mode=3
    echo bgcolor=#000000
    echo
    echo [xin_1]
    echo file=$2
    echo mode=3
    echo bgcolor=#000000
} >> ~/.config/nitrogen/bg-saved.cfg
 
nitrogen --restore &

Voilà… Donc, au final, vous vous retrouvez avec quelque chose de plutôt sympa. Voici une courte vidéo qui vous montre ce que ça donne.

Embellir le gestionnaire de fichiers

Notre distribution a déjà fière allure mais nous pouvons encore l’embellir en nous attaquant au gestionnaire de fichiers. Je vous conseille d’installer Nemo qui est plus facile à personnaliser que Thunar, même si personnellement, c’est ce dernier que j’utilise. Je ne sais pas si vous avez remarqué mais Linux aime beaucoup les icônes marron délavé. Il est venu le temps d’installer lxappearance et la capitaine-icon-theme.

sudo pacman -S lxappearance
yay -S la-capitaine-icon-theme 

La deuxième commande utilise yay. Elle ne s’exécute pas en root! Contrairement à pacman qui installe des paquets officiels labellisés Archlinux, yay installe des paquets proposés par les utilisateurs. Les icônes de la capitaine s’inspirent de ce qui se fait chez MacOS et il faut reconnaitre que ça a une autre allure. Pour changer les icônes, nous allons utiliser lxappearance. Ouvrez-le et cliquez sur l’onglet thèmes d’icônes. Faites votre choix.

Avant (à gauche) et après (à droite)… Non, ce ne sont pas les icônes de Windows 3.1. C’est du Linux pur jus! Si on les associe aux fond d’écran psychédéliques de Lubuntu par exemple, Microsoft et Apple n’ont pas trop de souci à se faire! Ils vont régner sur les ordinateurs de bureau pour un bon moment encore.

Redémarrage, déconnexion et extinction de l’ordinateur

Il nous manque quand-même quelque chose d’important. Nous n’avons pas de menu de déconnexion. C’est l’occasion de vous montrer comment créer des lanceurs. J’ai moi-même instancié les quatre boutons gris que vous voyez à gauche de la barre de tâches. Le premier met en veille, le second déconnecte, le troisième redémarre et le dernier éteint.

Créer un lanceur n’est pas compliqué. Ils sont tous stockés dans le répertoire /usr/share/applications et leur structure est identique. À l’aide de l’éditeur de texte, ouvrons le lanceur poweroff.desktop. Notez que tous les lanceurs se terminent par desktop. Veuillez noter également que pour modifier un lanceur, il faut passer en root. Voici donc à quoi ressemble un lanceur desktop, en l’occurrence poweroff.desktop qui éteint l’ordinateur.

[Desktop Entry]
Type=Application
Name=Extinction
Comment=Extinction
Icon=system-shutdown
Exec=lxterminal -e "~/.config/openbox/disconnect.sh poweroff"

Name correspond au nom qui sera affiché dans une barre de tâches par exemple. Donc, si je survole le bouton, une minuscule fenêtre pop-up va apparaître avec le nom Extinction.

À la ligne Comment, vous pouvez entrer des explications succinctes.

À la ligne Icon, il ne faut pas rentrer un chemin absolu. Il faut se contenter de ce qu’on appelle le basename. Il faut même supprimer l’extension! Ainsi, le système pourra lui-même choisir une icône en fonction du thème installé. Le mien est la-capitaine. Il va donc fouiller le répertoire /usr/share/icons/la-capitaine et s’il ne trouve pas d’icône system-shutdown, il va élargir son cercle de recherche. Donc, je le répète, pas de chemin absolu pour l’icône!

Enfin, comme son nom l’indique, l’instruction exec exécute la commande ou le script. Les quatre boutons ont tous la même structure. J’aurais pu rentrer directement la commande systemctl poweroff mais il faut savoir que par mégarde, un simple clic de souris sur le bouton lancerait immédiatement le processus d’extinction. Si vous n’avez pas sauvegardé votre travail, ça peut se transformer en catastrophe. Par conséquent, j’ai préféré écrire un script bash valable pour les trois boutons Extinction, Redémarrage et Déconnexion. Ce script demande une confirmation avant d’exécuter la commande. Le bouton de mise en veille n’est pas concerné. Il ne présente aucun danger.

Le script s’appelle disconnect.sh. Je l’ai placé dans le répertoire ~/.config/openbox. Il prend un paramètre qui est poweroff, reboot ou « openbox –exit » (entre guillemets pour ce dernier afin que l’ordinateur ne s’imagine pas être en présence de deux paramètres : openbox et –exit). Il faut installer au préalable xdotool et dialog. Ce dernier ouvre une fenêtre interactive bleue, un peu vintage. J’aurais pu inclure une interface graphique en Python. J’en ai déjà une en réserve. Mais je n’aurais pas pu vous montrer comment créer un lanceur.

disconnect.sh

#!/bin/bash
if [[ "$1" = "poweroff" ]]
then
    action="éteindre l'ordinateur"
elif [[ "$1" = "reboot" ]]
then
    action="redémarrer l'ordinateur"
elif [[ "$1" = "openbox --exit" ]]
then    
    action="vous déconnecter"
fi
dialog --yesno "Voulez-vous vraiment\n$action ?" 10 30
if [[ "$?" = "0" ]]
then
    if [[ "$action" != "vous déconnecter" ]]
    then
        systemctl $1
    else $1
    fi
else active=`xdotool getactivewindow` && kill $( printf "0x0%x" $active )
fi

Voici le résultat. C’est une boite de dialogue de type « yesno ». Un clic sur Oui lance le processsus de déconnexion, tandis qu’un clic sur Non détruit la fenêtre du terminal. En fait, un clic sur Oui stocke le chiffre « 0 » dans la variable $? et un clic sur Non stocke le chiffre 1.

Conclusion

En conclusion, je vous invite à tester cette distribution basée sur Archlinux. Elle me semble fiable et promise à un bel avenir. Une fois que vous l’aurez installée, n’hésitez pas à visiter le site archlinux.org, clair et bien structuré, notamment au niveau des dépôts officiels et utilisateurs (AUR) qui sont soigneusement classés par ordre alphabétique. Quant au wiki, je le consulte presque tous les jours. C’est une véritable mine d’informations.

Et puis, si le coeur vous en dit, vous pourrez vous lancer dans l’installation d’Archlinux, sans conteste la distribution la plus propédeutique du monde Linux.