Le monde enchanté de la customisation (ricing) sous Linux

Je suis un partisan que l'outil informatique doit être un espace pour les créatifs qui veulent faire de l'art numérique ou coder leur propre outils. Des systèmes d'exploitations comme Windows ou MacOS ne sont pas customisable, par leur nature fermé de prendre l'utilisateur pour des arriérés et voler leur travail, l'environnement est prédéfini par les ingénieurs et ne laisse aucune possibilité d'accès au code source par leur nature propriétaire. Ce qui fait que le pecnot moyen n'a pas son mot à dire s'il trouve une fonction débile et voudrait l'améliorer.

De ce fait on aurait besoin d'accès aux fichiers de configuration de l'environnement utilisateur, ce que l'on appel .dotfiles et l'utilisateur pourrait les modifier en trackant les changements via du control de version avec Git et les partager avec la communauté.

Il faut donc un contrôle sur sa machine et comprendre comment est assembler les différents composants du système d'exploitation, que cela soit dans des buts de customisation tels qu'en cyberdefense et blue team, optimisation de la productivité et art numérique.

Par sa nature GNU/Linux est le choix principal mais une distribution sort du lot pour fabriquer un système sur mesure: Arch Linux. La communauté à largement dépasser Gentoo dans les distributions minimal et simpliste.

Le temple de la customisation auparavant dans les années 2000-10 était le site de deviant-art. Puis est arrivé Reddit et r/unixporn qui permet de suivre l'état de l'art des "ricing" ou +50% des utilisateurs sont sous Arch Linux.

Généralement la communauté est des programmeurs et codeurs en optimisant leur utilisation du terminal pour la productivité, réduire l'utilisation de la souris et utiliser des raccourcis clavier pour gérer leur environnement avec des Tiling Windows Manager. Ils finissent à poster egalement des memes sur r/linuxmasterrace et crier sur les toits "I Use Arch BTW".

Dans cette optique je vais vous présenter ma configuration nommé "broutage de chaton" pour p0wn à tout les coups et humilier votre entourage par votre maîtrise de l'informatique en invoquant "Pedobear" en mode fanatique.

mineur

Prérequis

Il faudra faire l'installation d'Arch Linux en manuel sans l'utilisation du script archinstall en intégrant:

  • Chiffrement: dm-crypt / LUKS

  • Système de fichier pour les snapshots du système: BTRFS

  • UEFI Secure Boot (signé)

  • swap zram

Je conseil l'utilisation du combo arch-secure-boot + snap-pac dans les bonnes pratiques de sécurité du système et de restauration. Si vous n'utilisez pas le secure boot, autant utiliser un bootloader léger tel que systemd-boot.

Affichage Server

il est nécessaire pour démarrer une interface utilisateur graphique GUI. L'ancien se nomme X.org et commence à être dépasser dans l'optique nous allons utiliser son successeur: Wayland qui se veut plus facile à développer et extensif avec une facilité à maintenir et plus sur.

Affichage Driver

Normalement vous n'aurez pas besoin d'intégrer des drivers spécifiques avec Intel et AMD car ceci est pris en charge par Kernel Mode Setting KMS. Seulement NVIDIA qui reste propriétaire nécessite la configuration en manuel. NVIDIA et Linux toujours un peu en guerre.

nvidia

Compositor

Le compositor est un élément essentiel qui permet l'affichage de fenêtre mais également la transparence et les animations, pour Wayland nous utilisons un Tiling Windows Manager: hyprland. Il faudra utiliser une barre d'état tel que Waybar et ces extensions comme Eww pour les Widgets.

Gestionnaire d'affichage

Nous allons utiliser une configuration minimaliste qui gère Wayland. Pour cela on utilise un TUI (Terminal UI) en utilisant Ly. Celui-ci gère votre authentification sur le système et lancement de l'environnement. Vous pouvez également utiliser Lemurs.

Terminal Emulateur

La tendance est à l'utilisation de Kitty qui est léger et rapide propulsé par le GPU. Il intègre en natif un gestionnaire de fenêtre ou l'on peut créer des tabs et splitter le terminal ce qui fait que l'on peut ce passer de tmux comme multiplexer. Vous pouvez le customiser avec le gestionnaire de plugins Kittens.

> Shell

L'utilisation du shell fish est conseillé car il intègre en natif des fonctions tels que

  • autosuggestions en ligne basées sur l'historique ;
  • complément de tabulation utilisant les données des pages de manuel ;

  • mise en évidence de la syntaxe ;

  • support intuitif des caractères génériques ;
  • configuration basée sur le Web ;
  • une saine écriture de scripts.

  • Un gestionnaire de plugins: fisher

> Prompt

L'invité de commande du shell peut-être customisé pour intégrer des informations tels que les branches sur Git, version logiciel, runtime, icones et symboles, etc. Nous allons utiliser starship.rs et vous pouvez explorer les presets.

> Autres outils en ligne de commande

  • duf Free disque usage

  • ripgrep Recherche récursive de pattern de Regex dans un dossier

  • bat cat clone avec coloration syntaxique et Git intégration

  • tldr Terminal companion améliorant les man pages avec example de ligne de commande

  • cmus CLI audio player

  • yt-dlp Outil de téléchargement de video sur Youtube, etc.

  • chatGPT-shell-cli Utiliser chatGPT via l'API d'OpenAi

  • ufw Uncomplicated Firewall

  • ssh Secure Shell est un protocole réseau chiffré pour ce connecter à distance sur un serveur. Voir scp et sftp

NOTA: pour partager un fichier / Pastebin utilisez la commande:

$ cat FILE | curl -F 'sprunge=<-' http://sprunge.us`

Apps Launcher

Nous faisons tout dans un terminal sans utiliser un menu pour lancer des applications. Pour cela nous allons utiliser un outil de recherche de fichier et de binaire "fuzzy finder" tel que fzf comme extension du shell.

Information système

Pour gérer les processus et visualiser l'utilisation des ressources htop reste un outil simple en CLI. Pour visualiser la configuration de l'environnement: neofetch

Gestionnaire de fichier

Pour gérer ces fichiers et dossiers en CLI on utilise une extension de l'outil tree qui ce nomme broot.

Editeur de fichier

On optimise l'utilisation du terminal pour éditer du texte et du code en particulier pour du travail à distance sur un serveur en administrateur mais également en utilisant peu de ressource système sur la charge CPU / RAM. La tendance est l'utilisation du successeur de Vim nommé Neovim parmi les développeurs. On peut transformer Neovim en EDI en intégrant des plugins tels que:

  • CoC

  • Telescope

  • Barbar

  • Vim-fugitive

  • NerdTree

  • Vim-surround

  • Tagbar

  • Delimitmate

  • Vim-airline

  • Vim-devicons

  • Vim-ai

Fonts

On note l'utilisation de:

  • adobe-source-han-sans-otc-fonts (sinogramme asiatique et l'utilisation de fcitx)

  • noto-fonts

  • noto-fonts-emoji

  • Nerd-fonts

IRC

Client IRC pour tchater en CLI: weechat. D'autres se tournerons vers Matrix et Discord considéré comme plus moderne même si la communauté FOSS et les hackers sont toujours sur IRC.

Themes et Icones

Il existe des classiques tels que Catppuccin, Gruvbox ou encore Neon aux effets cyberpunk. Un repo de la communauté sur hyprland est disponible sur Github: theme-repo

AUR Helper

Pour l'utilisation de AUR, les paquets logiciels de la communauté, j'ai ma préférence pour yay qui a remplacé le projet obsolète de yaourt en complément de pacman.

Cloud distant et sauvegarde

Vous pouvez utiliser l'outil rclone en CLI qui permet d'accéder à un cloud distant (AWS S3, GDrive, NAS, etc) et de faire des sauvegardes chiffrés. Même si vous faites des snapshots du système, ayez une sauvegarde locale et à distance en particulier vos documents /home. D'autres options sont possible tel que le traditionnel Rsync mais aussi Borg ou Duplicity.

References: