2018-11-10

Mes outils

#presentation

Je tapote sur les touches d'ordinateurs depuis plus de 30 ans, et j'en ai fait mon métier depuis une quinzaine d'années. Un métier-passion. J'ai pris des bonnes et des mauvaise habitudes, j'ai des préférences guidées par un pragmatisme légendaire. Ce qui est exposé ci-dessous est une simple liste de choix : ce que j'utilise, que j'ai choisi d'utiliser et ce que je n'utilise pas. Pourquoi celui ci et pas celui là. Ce ne sera pas plus intéressant, mais cela en dira déjà un peu de moi, peut être... J'ai commencé l'informatique en utilisant le DOS, et je suis passé sous Linux (oui, c'est bien souvent sous Linux que l'on passe et non sur Linux, aller savoir...) avant que Microsoft n'use mes nerfs avec Windows Vista. Entre les deux, j'ai appris à utiliser un ordinateur en maximisant l'utilisation des raccourcis clavier. C'est quand même foutrement pratique -- tout le monde devraient s'y mettre!. Avec Linux, j'aurais voulu être un full-cli man, autrement dit un développeur qui n'utilise que le terminal, simplement parce que c'est classe, et aussi très pratique. Dans la plupart des cas, pour la plupart des utilisations, ce que je préfère et ce que j'utilise ce sont des applications avec une interface simple, discrète, légère pourvue de raccourcis clavier si possible configurables.

! Vit'fait...

Dis moi ce que tu utilises, je te dirais... ce que tu utilises

  • MX/Linux (sans systemd)
  • WMaker
  • Konsole
  • NotMuch & Alot pour le mail
  • Kate
  • Fira Code
  • Solarized Light

Ma machineTop

Le premier choix à faire quand on travaille sur un ordinateur, c'est l'ordinateur. Bien que la marque n'ait pas grand intérêt, je la cite quand même : mon PC est un ACER Aspire One de 11''. À l'époque où j'ai acheté ma machine, ACER avait mauvaise presse (dans mon esprit en tout cas), ce modèle présentait le meilleur rapport qualité/prix et surtout remplissait tous les critères. Le plus important : la taille. Le PC doit se glisser dans mon sac aussi facilement qu'un cahier A4. Solide et avec un processeur qui ne soit pas un Atom machin bidule à basse consommation mais un vrai truc. Et voilà, ça fait bien 6 ans que je l'ai et que je trimballe dans mon sac, comme un cahier A4. Il est doté d'un petit processeur i3, à l'achat il devait y avoir 4Go de RAM (ou peut être même que 2 Go de RAM), et un disque dur dont je ne connais pas la taille vu que je ne l'ai jamais utilisé. À peine déballer, que je le remplaçais par un SSD de 128Go. C'est peu, mais cela a été suffisant pendant un bout de temps. Récemment, il a été lui même remplacé par un autre SSD de 500Go qui devrait m'accompagner plus loin que la vie du PC lui-même. Côté mémoire, l'utilisation fréquente de deux navigateurs gourmands avec plusieurs d'onglets ouverts en même temps vont vite sentir 4Go un peu petit, et même avec 8Go, on est juste à l'aise. C'est fou cette "maladie des onglets par milliers". Je dois me trouver une façons de travailler ou un navigateur qui permet de mieux travailler avec les onglets, de pouvoir créer, sauvegarder et ouvrir des sessions thématiques sur un sujet particulier. J'irais voir ce que uzbl peut faire pour moi.

La distrib GNU/LinuxTop

Des distributions GNU/Linux, j'en ai testé des vertes et des pas mûres, mais aussi des très mûres. Et j'ai arrếté un choix : MX/Linux. Pour faire court, j'ai débuté avec Ubuntu, je l'ai utilisé un petit bout de temps. et j'y ai pris mes marques ainsi que de nombreux reflexes. Profitant de la richesse du monde Linux et de ses nombreuses initiatives, j'ai testé de nombreuses distributions. Les plus main-stream Fedora et Debian que j'ai du utiliser chacune au moins plus d'un an (et plus annecdotiquement Mandriva). Je crois les avoir toutes les 2 cassées en essayant de faire des mises à jour hasardeuses certainement de trucs que j'avais besoins pour développer un machin. Elles sont toute les deux très bien comme il faut. J'étais plus à l'aise à Debian, proche cousine d'Ubuntu. Et j'en ai testé toute une floppé souvent par curiosité, notamment de découvrir un nouvel environnement de bureau ou un nouveau gestionnaire de fenêtre. Ça a pu durer 2 jours comme quelques mois, et je suis incapable de les citer. Et au final, je suis toujours revenu vers XUbuntu. Et puis, un beau matin, j'ai commencé à trouver que le système me mettait plus de baton dans les roues qu'avant pour réaliser certaine tâche d'admin, je trouvais ça moins souple. Et aussi, un peu moins robuste. Et j'ai découvert l'existence de systemd. J'ai décidé de m'en passer, et tout va beaucoup mieux. MX/Linux, une distrib toute proche de Debian, avec des jolies amélioration, mais surtout sans systemd. Et voilà!

Commencé par une grande distrib' c'est bien et c'est ce que je conseillerai au débutant non geek, et aussi pour les plus geek et plus curieux. Certes, on aurait envie de foncer vers des contrées exotiques de pouvoir briller en société avec notre distrib' inconnue, oui mais commencé avec un système qui marche c'est pas mal aussi. Et par exemple, pour Ubuntu ou Debian, avoir de la doc francophone avec une communauté à qui on peut aisément demander de l'aide c'est bien pratique.

Le gestionnaire de fenêtres et environnement de bureauTop

Environnement de bureau (DE:Desktop Environnement)
Un environnement de bureau est un ensemble de logiciel de base pour l'utilisation d'un ordinateur. On y trouve généralement une suite bureautique, un lecteur de mail, un navigateur internet, une gestionnaire de fenêtre, une gestionnaire de paramètres, un gestionnaire de menu (un truc qui affiche un menu en fonction des applications installés sur votre ordinateur), un logiciel de visualisation d'image, un éditeur de texte simple, un gestionnaire de fichier, un lecteur multimédia, un gestionnaire de connexion, un gestionnaire d'utilisateur, un gestionnaire de paquet (logiciel) et bien d'autres encore. Toutes ces briques sont pour la plupart remplaçables et non-indispensables. Elles forment souvent un tout cohérent qui permet à l'utilisateur de reconnaître son environnement qui garde souvent les même logiciel au fil des années. Les logiciels peuvent soit être développés spécialement par l'équipe qui gère cet environnement, comme l'équipe de KDE qui fait de très bon logiciel, tout en étant utilisables dans d'autres environnements de bureau; soit issue du monde...euh du monde de... des logiciels disponibles. Les plus connus des environnement de bureau sont KDE, Xfce, Gnome, LXDE,... On les trouves sur toutes les distributions GNU/Linux. Ce que je viens d'écrire n'est totalement vrai car il peut y avoir des chevauchement entre ce qu'offre une distribution et une environnement de bureau, m'enfin bon...
Gestionnaire de fenêtre (WM:Window Manager)
Un gestionnaire de fenêtre un le logiciel responsable pour l'affichage et l'organisation des fenêtres des applications que vous ouvrez ou que vous avez ouvert. Il ouvre, ferme, agrandit, organise en tags/Bureau virtuel ou autres, réduit, notifie parfois, etc... Il est souvent configurer avec des icônes, des couleurs, des actions de souris et de raccourcis clavier. Ce qui est surprenant, ce que pour cette simple tâche, GNU/Linux propose des dizaines, et peut être même une centaine d'alternatives différentes plus ou moins simples, obscures, utiles, pratiques...

Dans tout ce fatra, après avoir évidement essayé des tonnes de combinaison possibles, je reviens toujours vers Xfce, et c'est ce que j'installe quand on me demande de passer à Linux (Xfce + Ubuntu = XUbuntu). C'est simple, léger, il y a des bureaux virtuels, et c'est facilement configurable afin d'être utiliser au maximum au clavier. Tout ce qui me suffit. Si on y ajoute devilspie qui permet de lancer directement un logiciel dans un bureau virtuel donné. On est tout bon!

Bureaux Virtuels
Je m'addresse à toi utilisateur d'ordinateur au quotidien dans ton travail. Tu n'utilises pas ou ne connais pas les joies des bureaux virtuels et c'est bien dommage. Tu as un écran et un bureau (dans ton ordinateur, pas celui sur lequel est posé ton ordinateur, mais celui où sont possé tes icônes par exemple), et bien tu peux en avoir plusieurs. L'idée est de dédié chaque bureau avec une tâche précise, de le configurer au mieux pour cela et d'y accéder rapidement avec un raccourci clavier. Par exemple, j'ai un bureau pour le mail, un bureau pour FireFox, un autre pour tel projet, un autre pour un autre projet. Dans chaque bureau j'ai une ou plusieurs applications d'ouvertes, et c'est très pratique.

Encore une fois lecteur, je t'ai mentis. Depuis que j'ai pris le temps de configurer le gestionnaire de fenêtre window maker, je ne veux pas faire machine arrière. C'est un vieux trucs, qui après installation a un look assez moche, très rétro, mais qui s'avére diablement simple et efficace. Je l'avais survolé plus d'une fois, sans prendre le temps de le configurer. Quand j'ai décidé de m'y mettre, la configuration s'est faite assez rapidement (à part quelques menus détails) et simplement - click -- click -- click -- click Pas de fichier de conf tarabiscoté! Et j'ai tout ce que je veux, des bureaux virtuels, des applications qui se lancent automatiquement dans chaque bureau au démarage ou en cours de session, des sessions qui se sauvegarde automatiquement avec la configuration des fameux bureaux quand j'arrête ma machine, des raccourcis clavier, pas de décoration de fenêtre, et tout ça sans chichi.

Et si je n'ai pas d'environnement de bureau, c'est simplement qu'avec le temps, à chaque fois que j'installais mon xfce (car j'aurais pu très bien faire tourner window maker à la place du gestion de de fenêtre d'xfce), j'installais à la place (ou pire à côté,et je finissait avec trop d'applications en doublons) des applications d'xfce mes applications favorites. Je n'avais ainsi dire plus besoin d'environnement de bureau même s'il peut à l'occasion être utile notamment pour des histoires de paramètres et de configuration.

Pour en finir avec les gestionnaire de fenêtre, j'aimerais dire un petit mot sur les gestionnaire dit "tiling". Ils sont très "à la mode" et je comprends bien pourquoi. Ils souvent très léger, on peut faire un vrai environnement de travail à la fois classe, rudimentaire mais très joli, tout en étant assez austère pour flatter notre côté geek. Ils peuvent être aussi très pratique pour celui qui se donne un peu (beaucoup) de mal, notamment car ils se dirigent principalement/exclusivement au clavier pour la plupart d'entre eux. J'en ai testé une petite tripoté (i3wm, awesome, xmonad mais pas dwm). Ils ont été conçu pour faciliter la séparation horizontale ou verticale de votre écran afin d'y placer des applications. Travaillant exclusivement sur un petit écran avec l'application en cours en plein écran, je n'ai pas besoin de ces fonctionnalité qui viennent pertuber l'utilisation du bordel. Mais surtout leurs configuration se fait dans des fichiers de configuration qu'il faut dompter petit à petit, ce qui peut être très long pour obtenir le résultat souhaité. Pour ce deux raisons, je n'ai pas poussé l'expérience, ... même si j'en ai testé une tripoté, certains d'entre eux pendant plusieurs mois.

Explorer des fichiersTop

Afin d'améliorer mon quotidien de mon travail sur mon PC, je devais me pencher sur l'outils de gestionnaire de fichier. Encore une fois afin de choisir le meilleur outils parmis l'offre exubérante proposée sous linux, je dois savoir exactement ce que je veux : des onglets, des marque-page et des raccourcis pour accéder à tout ça. C'est simple, non ?! S'il peut gérer facilement SSHFS (c'est extrément pratique pour accéder aux fichiers sur une machine distante exactement comme si ces fichiers étaient sur notre PC), c'est un gros plus. À priori, j'aurais une préférence pour un gestionnaire de fichier avec une GUI et des raccourcis configurables. Mais je jetterai un oeil sur ce qui est disponible avec un TUI (Text-based User Interface).

Beaucoup de gestionnaire de fichier ont des onglets et des marque-pages, mais le seul, parmis la dizaine de logiciels testés, qui possède des raccourcis pour naviguer au clavier entre les différents parties de son interface (onglets, liste des fichiers, marque-page, barre d'adresse) est pcmanfm. Voilà, y'en a qu'un. Malheuresement, on ne peut pas modifier les raccourcis clavier, il faut les apprendre. Pour ce qui est d'un gestionnaire de fichier dans le terminal, on ira regarder du côté de ranger,même s'il ne supporte pas sshfs simplement.

TerminalTop

Encore une fois si on veut bien choisir un outils, c'est bien mieux de savoir ce que l'on veut en faire. Le terminal est indispensable à l'utilisation d'une machine sous Linux quand on fait du développement. Et s'il y a bien un outils pour lequel il y a énormément de choix, c'est bien le terminal. Et je crois bien qu'ils font tous correctement le boulot! Alors pourquoi choisir, alors que tout les environnements de bureau fournissent un terminal, et comment choisir. Ce dont j'ai besoin ce sont des onglets, un historique infini, une recherche dans l'historique c'est top et enfin de pouvoir lancer un ensemble de fenêtre avec des commandes pré-établies. Dans un premier temps, j'ai essayé des terminaux les plus légers possibles et exotiques.

Le première solution éprouvée est un binôme tmux + st. St (aka simple terminal pour son côté hyper léger et la philosophie suckless, associé à tmux pour son côté archi-hyper-configurable. Le premier est comme annoncé un simple terminal, qui ne fait que terminal sans aucune option. Toutes les options supplémentaires et recherchées sont gérées par le second. Une solution qui marche bien et qui assez élégante, mais la configuration avancée de tmux est tout même une plaie, et m'a pris un temps de dingue, pour ne pas toujours réussir à atteindre le résultat souhaité, notamment pour pré-configuré des environnements de développement. La solution plus simple et efficace de remplacement est terminator. Ça se configure simplement - click -- click -- click -- click Pas de fichier de conf tarabiscoté! (sauf pour la couleur des onglets...). Encore une fois, ça fait bien le taff, c'est assez léger, alors pourquoi changer ? Simplement parce que le projet n'est plus maintenu, que l'on ait pas à l'abris d'une faille de sécurité qui ne serait pas corrigée, et qu'on le peut pas profiter de nous développement, de nouvelles fonctionnalité que d'autres terminaux pourrait inventé. Je crois que j'ai enfin arrếté mon choix et c'est Konsole, le terminal de l'environnement de bureau de KDE. Je ne regarde plus la dépense de ressource, de toute façon, un terminal restera toujours une application assez légère, et une application lancer TUI sera bien plus légère que l'application équivalente avec une GUI (le coût en ressource du terminal restera marginal). En plus, il possède quelques fonctionnalité sympathique que je n'ai jamais vu ailleurs : un thème random light, c'est à dire un fond d'une couleur dite "light" piochée au hasard, ce qui me plait bien vu que je suis plutôt adepte des themes light; et un truc tout bête comme les marques-pages pour les répertoire.

De toutes façons, afin d'avoir mes environnements de dev pré-configurés, je vais me sortir les doigts, prendre une heure par ci, une heure par là, et faire ça simplement en bash - en plus j'apprendrai certainement des trucs au passage.

Lire & envoyer des mailsTop

Mais comment lire tout les mails de ses différents comptes mails dans une même interface unifiée ? Un seul liste avec tout ses mails, on répond, ça part avec la bonne adresse, et c'est rangé dans le bon dossier ? Il y a 2 solutions utilisant des GUI : la dernière version de Kmail qui n'est pas encore présentes dans mes repos logiciels, et Evolution qui n'est pas très stable et un peu buggué mais qui est largement utilisable. Pour ceux qui ne sont pas réfractaire au terminal, il existe une très bonne solution basé sur un ensemble de petite brique logiciel isync (pour synchroniser ses comptes IMAP et son PC -- il existe d'autre solution), msmtp afin d'envoyer les mails, mais surtout notmuch qui index l'ensemble de vos mail, permet d'y ajouter des tags et fourni un système de recherche très performant, et enfin alot un front-end simple, élégant et efficace pour tout ça. J'en parle en détail ici.

Éditer du texteTop

Une fois n'est pas coutume pour éditer du texte, il y a presque une infinité de solution sous Linux. Ce que je veux faire c'est coder, principalement, sur plusieurs projets "en même temps". J'ai testé tout ce qui faisait de simple et léger (gedit, geany, leafpad, ...) comme éditeur tant je veux éviter les gros IDE, et ma préférence va grandement à Kate. Les autres ne sont pas mauvais, mais voilà encore un bon logiciel de chez KDE! Des onglets, de la complétion automatique, une configuration simple et complète, la possibilité d'enregister l'état actuelle de son éditeur dans une session que l'on peut réouvrir à l'identique, lancer un terminal ou même effectuer quelques tâches de compilation directement, et enfin des fonctions rechercher/remplacer bien faites. J'utilise également FeatherPad comme petit éditeur ponctuel (encore KDE!). J'ai bien essayé d'utiliser vim comme éditeur unique, mais je n'ai jamais réussi à réellement franchir le pas, jamais pris le temps de m'y mettre serieusement pour m'y sentir pleinement à l'aise (encore moins emacs). Je l'utilise bien à l'occasion... quoique, maintenant, et depuis peu, je lui préfère nano pour les "petites éditions".

SurferTop

Surfer, rien d'exceptionnel : FireFox. L'obligation étant d'avoir un navigateur issue du monde du logiciel libre afin de s'assurer d'un maximum de sécurité et de respect des données personnelles. Mon problème est que j'ai une facheuse salle habitude d'accumuler les onglets (une centaine !!) et parfois même sur plusieurs fenêtre, une catastrophe. Et en plus, les navigateurs avec une centaine d'onglets ouvert, ça prends énormément de mémoire. Pour remédier a ces deux problèmes concomitants, je cherche un navigateur plus léger et qui me permette facilement de travailler avec des sessions (Ouvrir, Enregistrer, Rechercher un ensemble d'onglets), en utilisant des raccourcis clavier bien sentis. Si je peux surfer de liens en liens en utilisant le clavier c'est pas plus mal. Il y a le projet uzbl qui est fort prometteur mais qui semble à l'arrêt. Un logiciel respectant la philosophie UNIX ("Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface."), qui offre de nombreuses extensions simples, le rendant complétement fonctionnel, et qui peut être facilement étendu pour développer l'extension qu'il nous manque (en faisant un peu de Python, ce qui est une bonne excuse pour s'y mettre). Le prochain candidat testé sera qutebrowser. Je n'ai pas encore pris le temps de regarder cela de prêt, et j'utilise toujours FireFox.

Du styleTop

Si on essayait de rendre celà un peu plus joli ou du moins agréable à utiliser. Qu'est ce qu'on peut faire pour ajouter un peu de confort pour nos yeux, si on passe au moins huit heures par jour derrière notre écran.

De la couleurTop

Les thèmes sombres sont très à la mode, c'est vrai que "ça en jette!" Oui, mais ça me fatigue, j'ai l'impression que cela me fatigue plus les yeux. Pour toute mes applications, le plus que je peux, j'utilise le thème Solarized light. C'est un thème light, oui, mais le fond n'est pas blanc,et toc! Pour la console, et avoir un peu plus de couleur, j'utilise solarized ls en plus. Après, il y a un truc marrant c'est les random light themes de Konsole, soit une couleur de fond dite light pour chaque nouvel onglet du terminal Konsole.

Police!Top

Pour la police, c'est bien de choisir quelque chose qui nous facilite la vie, et surtout ne fatigue pas les yeux. Je privilégie, une police avec empattement (serif), à chasse fixe (monospace). Généralement, j'utilise Terminus. Et pour le code, j'ai découvert Fira code depuis peu, c'est rigolo. Une police avec des ligatures de programmation. Par exemple quand vous ecrivez "!=", cela affiche un symbole différent. Joli!

ConclusionTop

Y'a pas à dire, les gens de chez KDE, ils font quand même des logiciels qui rocks! Peut être que ma prochaine geekerie, ce sera d'installer un KDE sans KDE, avec un Window Maker ou un autre gestionnaire de fenêtre pour avoir quelque chose d'hyper-réactif et simple comme je l'aime.

C'est bien on a tout bien configuré, passé des jours, des soirées, des nuits même à bidouiller ces satanés fichiers de configuration pour avoir ce que l'on veut. Bref, c'était du taff! Il y a des fichiers de config dans tout les sens. Ces fichiers sous Linux sont appelés DotFile, simplement car leur nom commencent généralement par un point (dot en anglais), ce qui en fait des fichiers cachés. Il y a encore une fois un tripoté de solution pour gérer ses dotfiles sous Linux. Gérer, c'est sauvegarder, archiver, versionner, être capable de les installer sur une autre machine, dans un autre environnement, etc. J'ai opté pour Yet Another Dotfiles Manager. J'ai besoin d'archiver/sauvegarder mes fichiers de conf et sur github, c'est très bien (/!\ Attention aux mots de passe en clair!). Je veux pouvoir ajouter facilement des nouveaux fichiers de conf à mon ensemble de fichiers, pis c'est tout. Et ce logiciel le fait très bien.

Une dernière appli cool que j'utilise c'est cmus. C'est un lecteur de musique, en mode console, et oui! En fait, j'utilise pas trop, car j'écoute jamais de la musique quand je bosse sur mon PC, mais à l'époque où je tenais une boutique, j'avais un petit eeepc qui me servait de lecteur de musique et qui faisait tourner CMUS; et ce qui est vraiment cool, c'est que CMUS peut être contrôlé par une appli androïd (peut-être existante sous IOS, je ne sais pas) CMUS Remote. Pour le terminal, on peut aussi trouvé un lecteur de radio simple, léger et efficace, pyradio que cela doit s'appeler de mémoire...Bref, je suis toujours à la recherche d'appli dite CLI ou TUI, bref tournant dans un terminal, et faisant assez bien le taff pour remplacer une appli GUI. Notamment pour remplacer des applis comme Slack, Discord qui ont de grosses applis pour juste faire du chat, pour lire le flux de sites comme Facebook ou Reddit. Sinon, il existe des awesome list, comme celle là qui regroupe tout un tas de logiciel CLI augmentée d'un petit commentaire. Le concept d'awesome list est une bonne façons de perdre son temps sur github, taper, dans la barre de recherche, awesome et un sujet : JAVA, js, CLI, C++, etc...et vous aurez perdu sans vous en rendre compte, une 1/2 journée!

Write a comment

0 comments