~/$ cat Environnement_virtuel.md

Les outils consituants mon environnement virtuel quotidien.

Mon environnement virtuel est en constante évolution, et cette page risque donc de subir beaucoup de changements. Malgré les termes techniques, j'ai fait de mon mieux afin que cette page soit compréhensible par des personnes n'étant pas nécessairement familières avec l'univers de l'informatique.


Linux

La base de tout mon environnement virtuel est le système d'exploitation, qui est évidemment Linux, plus particulièrement la distribution EndeavourOS.

Pourquoi Linux ? En restant réaliste, les deux seules autres options sont Windows et MacOS. Je n'ai aucune expérience avec MacOS, mais le fait qu'il ne fonctionne que sur une marque d'ordinateur n'en fait pas un bon choix pour moi. Windows est très fermé, rempli de programmes inutiles qui mangent des ressources, collectent des données personnelles, et l'expérience de développement sur cette plateforme n'est pas très bonne pour pas mal de raisons.

Linux est un système d'exploitation Open Source, extrêmement rapide et portable (presque tous les serveurs du monde tournent dessus, et Android en est un dérivé). Il existe des dizaines de "distributions", basées sur Linux, parmi les plus populaires chez les utilisateurs : Ubuntu, Mint et Arch. J'utilise EndeavourOS, qui est basé sur Arch, dont le but principal est de simplifier l'installation de ce dernier. Cette distribution possède un des meilleurs gestionnaires de logiciels, permettant, de manière extrêmement aisée (en une commande), l'installation, la désinstallation et la mise à jour de n'importe quel programme de son immense librairie.


Hyprland

Hyprland est un gestionnaire de fenêtre en mosaïque (tiling window manager). Cela signifie que l'espace de travail est divisé en bureaux (prenant chacun tout l'écran), et dans lesquels sont affichées les fenêtres des applications, dont la taille est gérée automatiquement, de manière à minimiser l'intervention de l'utilisateur là-dessus. Ce gestionnaire est extrêmement customisable, très bien documenté et possédant une communauté relativement large.

Tiling Window Manager Example
Screenshot provenant de Mikyu__ sur Reddit

Waybar

Waybar est un remplaçant à la barre des tâches traditionnelle des systèmes d'exploitation. C'est simple, il n'y a rien que vous ne puissiez pas customiser :

Pour ma configuration, j'ai tenté de recréer l'interface de la Tablette Sheikah, provenant du jeu vidéo Zelda : BOTW, et de configurer les modules de manière à ce qu'ils soient adaptés à mon workflow. De gauche à droite (voir images) cela donne :

Image 1 : My Waybar 1 Image 2 : My Waybar 2

Rofi

Rofi est selon moi le meilleur lanceur d'applications, toute plateforme confondue. Il est extrêmement rapide, très customisable avec du style CSS et le support d'extensions. L'utilisation que j'en fais est assez simple et je ne l'ai pas encore trop configuré : je l'ouvre avec le raccourci Windows+D, et je peux chercher parmi chacune des applications installées, son algorithme de recherche étant extrêmement rapide et optimisé, je trouve généralement n'importe quelle application en 3 lettres.


VS Code

IDE : Integrated Development Environment. Plus simplement : éditeur de code.

L'édition de code est très différente de l'édition de texte standard et nécessite donc des éditeurs spécialisés. Hautement spécialisés. En dehors des éditeurs modaux tournant dans un terminal, les seules options réellement viables sont les IDE JetBrains et VS Code. J'ai choisi VS Code comme éditeur principal, car :

Information additionnelle : J'utilise l'extension Vim pour VS Code , qui intègre l'édition modale et les racourcis claviers de Vim à cet éditeur. Je trouve l'experience très fluide et reposante une fois que l'on s'y est habitué. Par exemple, la simple suite de touches dd permet de supprimer la ligne sur laquelle l'on se trouve, et 5yw copie les 5 mots à la droite du curseur, nul besoin d'autres touches comme Alt ou Ctrl, car pour insérer du texte sans que les lettres ne soient interprétées comme des commandes, il y a un mode séparé pour l'insertion (i pour rentrer dans ce mode, et Esc pour en sortir).

VS Code on this project

Obsidian

Obsidian est un éditeur de texte tirant avantage du format Markdown, généralement utilisé pour la prise de notes. L'expérience utilisateur est optimale, la syntaxe minimale du Markdown donne une plus grande concentration sur son texte et la gestion des projets est faite de la meilleure des manières possibles. Je l'utilise pour prendre des notes et pour rédiger n'importe quelle sorte de texte n'étant pas du code. J'écris d'ailleurs toute cette page dans Obsidian, avant de la transcrire en HTML pour mon site.

Obsidian on this project

Terminal

Voici une liste de tout ce qui est lié à une utilisation dans le terminal :

kitty :

Kitty est un émulateur de terminal. Ce terme décrit un programme permettant d'interagir avec le terminal (ou shell) du système d'exploitation. Il est très rapide dû à son utilisation intelligente des ressources de l'ordinateur, permet l'affichage d'images et d'émojis, et (je pense que vous commencez à voir le paterne, ) est extrêmement customisable (exemple moyennement representatif : le fond d'écran de Terminal sur l'image ci-dessous). Je trouve aussi très agréable son interface minimale, n'ayant rien d'autre que le terminal.

Obsidian on this project

yazi :

Yazi est un explorateur de fichiers utilisable uniquement dans un terminal et uniquement avec le clavier. En utilisant les raccourcis claviers de Vim (comme HJKL pour se déplacer, avec des dizaines plus avancées), naviguer et effectuer des opérations sur des fichiers devient beaucoup plus rapide qu'en utilisant un explorateur de fichier standard. Comme toujours, cet outil est d'une vitesse fulgurante (développé en Rust), très customisable et supporte même la prévisualisation de documents textes, images, PDF et plus.

Obsidian on this project

Git

Git est l'outil de versioning de code utilisé par chaque développeur sur Terre. Il permet de stocker chaque version d'un projet de manière économe, de naviguer facilement entre ces versions, de séparer un projet en plusieurs branches que l'on peut ensuite rassembler ... et mille autres choses que je n'ai pas le temps d'expliquer ici.

En dehors des conflits lors d'un merge (ce n'est pas important à comprendre), j'utilise git exclusivement depuis le Terminal, car je trouve les intégrations de gits des IDE comme étant assez limitantes, et c'est un niveau d'abstraction que je ne trouve pas souhaitable personnellement.

ffmpeg

Ffmpeg est l'outil derrière chaque éditeur et convertiseur d'image et vidéo sur Terre. C'est un simple ensemble de commandes qui peuvent convertir presque n'importe quel format d'image/vidéo, et effectuer des opérations comme le changement de taille et de qualité. Je l'utilise de plus en plus car il est installé sur presque chaque distribution Linux, et je trouve son utilisation très simple (par exemple, la commande ffmpeg -i video.mp4 audio.mp3 crée un nouveau fichier nommé "audio.mp3", contenant l'audio du fichier "video.mp4", au format mp3)

Credits where it's due :

Une part importante de mon environnement provient des scripts d'installation de Jakoolit, qui fait un travail formidable en tant que membre de la communauté Desktop Linux. Si Linux vous intéresse, je ne peux que vous conseiller sa communauté ainsi que ses nombreux scripts d'installations.