0. Ligne de commande

Mis en avant

Suite à mon article sur la nécessité d’une autre informatique, beaucoup moins dépendante des interfaces graphiques et aux antipodes de la vidéo et suite aux nombreux autres articles que j’ai rédigés sur différents aspects d’une informatique en ligne de commande, voici un petit tour d’horizon de ce qu’il est possible de faire de cette manière :

  1. Pourquoi relever ses mails en ligne de commande
  2. Comment relever ses mails en ligne de commande 1
  3. Comment relever ses mails en ligne de commande 2
  4. Terminator pour la ligne de commande
  5. Gérer ses fichiers en ligne de commande
  6. Naviguer en ligne de comande
  7. Lynx, midnight commander et mutt transparents dans terminator
  8. Installer un shell particulier : zsh
  9. Gestion du temps et des tâches en ligne de commande
  10. Manipuler un pdf en ligne de commande
  11. Flux RSS en ligne de commande
  12. De la musique en ligne de commande
  13. GNUpg en ligne de commande
  14. Images en ligne de commande : planche de contact
  15. Carnet d’adresse en ligne de commande
  16. Mutt avancé en ligne de commande
  17. Covid eo 19
  18. Processus en avant/arrière plan
  19. Calendrier en ligne de commande
  20. Suivi de poids en ligne de commande
  21. Météo en ligne de commande
  22. Éditer du texte en ligne de commande
  23. Email, mon amour
  24. Vim et LaTeX
  25. Vit et taskwarrior
  26. Git introduction
  27. Git et les branches
  28. Code is Education
  29. Images en ligne de commande : imagemagick

Écrire n’est pas un métier, c’est une envie

Raspberrypi : mise-à-jour stretch-buster

Voici un petit memo pour réaliser la mise-à-jour d’un raspberrypi tournant sous Raspbian stretch vers Raspbian buster.

Tout d’abord, il faut savoir que le téléchargement des paquets nécessaires à la mise-à-jour ne peut se faire que si la place nécessaire pour les stocker est disponible. Pour un système complet, il faut prévoir 8Go. Ainsi, vérifiez avec la commande :

df -h

que celle-ci est bien disponible. Cette commande signifie « disk free -human », soit en français « quelle est la place libre sur le disque, dans un langage humain ». Vous verrez alors apparaître une colonne vous donnant la mémoire disponible directement en Go.

Il faut ensuite réaliser un audit des paquet permettant de savoir si ceux-ci sont dans un état correct pour la mise-à-jour :

sudo dpkg --audit

Puis, il faut voir si des paquet sont bloqués :

sudo dpkg --get-selections | grep hold

L’argument de dpkg permet de récupérer la liste des paquets installés dont on recherche avec grep le motif « hold ». Ce motif signifie que l’utilisateur ne veut pas modifier (mettre-à-jour) le paquet. Comme cela peut poser problème, il faut qu’aucun paquet ne soit dans cet état à moins d’une bonne raison.

Il faut ensuite mettre à jour le système à partir duquel on va faire la mise-à-jour :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

La première commande fait une mise-à-jour de la liste des paquets. La seconde mets à jour les paquets non vitaux et la troisième fait la mise-à-jour des paquets vitaux.

Il faut ensuite changer le nom des dépôts pour passer les faire pointer vers la nouvelle distribution Buster :

sudo sed -i /deb/s/stretch/buster/g /etc/apt/sources.list
sudo sed -i /deb/s/stretch/buster/g /etc/apt/sources.list.d/*.list

Ce deux lignes sont complexes. L’idée est de changer toutes les ocurences « strech » en « buster » dans plusieurs fichiers. Comme avec Debian, le fichier « source.list » du répertoire /etc/apt/ est touché. Mais en plus tous les fichiers .list du répertoire /etc/apt/source.list.d/, ce qui est propre à Raspbian.

L’utilitaire permettant ces modifications automatiquement est sed. Dans le cas présent, on utilise -i pour spécifier qu’on va écraser le fichier original. Puis, on spécifie que toutes les lignes (/g) commençant par deb se verront substituer (s) le motif stretch par buster.

Cela fait, on met à jour la liste des paquets de buster :

sudo apt-get update

Puis, on met à jour la distribution :

sudo apt-get upgrade
sudo apt-get dist-upgrade

Des questions vous seront posées auxquelles il faudra répondre Y dans la plupart des cas, à moins de savoir ce que vous faites.

Reste à effacer les paquets qui ne sont plus nécessaires :

sudo apt autoremove -y
sudo apt autoclean

Normalement tout devrait bien se passer. Mais, il arrive que ce ne soit pas le cas. Lisez bien alors les messages d’erreurs, car parfois ils permettent de forcer l’installation de quelques paquets récalcitrants qui peuvent bloquer la mise-à-jour.

La machine est ton seigneur et ton maître

Un ouvrage incroyable.

Les machines ne libéreront jamais l’Homme. Les machines ne seront jamais à la hauteur de ce que peut faire ou penser un être humain.

Par contre, elles sont déjà et seront certainement de plus en plus un outil d’asservissement au service de tous les pouvoir, quels qu’ils soient.

Ce livre retrace l’histoire des esclaves d’aujourd’hui qui sont opprimés pour donner l’illusion que les machines pourraient mener à un monde meilleur. Pour une infime minorité d’exploiteurs à la tête de multinationales voyous comme les GAFAM, elle permettrons certainement d’exprimer une cupidité sans aucune limite, mais sans aucun doute au détriment du reste du monde, au mépris de toute humanité.

Ce petit livre devrait être pour chacun le rappel que les machines tuent et que ceux qui tuent pour les vendre sont à la tête de nos sociétés.

Raspberrypi : bureaux virtuels

Le monde linux connaît bien les bureaux virtuels. Sur Raspberrypi, ils ne sont pas actifs par défaut. Pour les activer, il faut avoir recours à l’interface graphique de gestion du bureau « Open Box Configuration Manager » ou « Obconf » de son petit nom, qui n’est pas présente par défaut dans le menu framboise. Pour la faire apparaître, il faut se rendre dans le préférences de ce menu pour y sélectionner « Main Menu Editor ». Ensuite, dans cet éditeur de menu, il faut sélectionner les « Préférences » est cocher l’item « Open Box Configuration Manager ». Celui-ci apparaît alors dans les préférences du menu framboise.

En s’y rendant, sous l’onglet Bureau, on peut choisir le nombre de bureaux virtuels désirés et éventuellement les nommer.

Pour pouvoir les utiliser, il faut ensuite mettre un widget dans la barre de menus permettant de sélectionner celui sur lequel on veut se trouver. Pour cela, il faut cliquer-droit sur la barre de menus et choisir « Ajouter / Enlever des éléments au tableau de bord ». Ensuite, sous l’onglet « Appliquettes du tableau de bord », il faut choisir à gauche « Ajouter » et ajouter « Gestionnaire de bureaux virtuels ». On peut ensuite, en remontant l’appliquette dans la liste, la déplacer dans le tableau de bord pour une utilisation facilitée.

Reste que la sélection du bureau virtuel doit se faire avec la souris, ce qui n’est pas très agréable. Sous Debian, par exemple, choisir des équivalents claviers pour se déplacer d’un bureau virtuel à l’autre est facilité par un interface graphique. Sous Raspberry, il va falloir passer par l’édition d’un fichier de configuration d’Open Box. Il s’agit de :

~/.config/openbox/lxde-pi-rc.xml

Si ce fichier n’est pas présent, il faut créer dans le répertoire « .config » le répertoire « openbox » et y placer une copie du fichier :

/etc/xdg/openbox/lxde-pi-rc.xml

Ne travaillez pas directement dans le fichier sous etc, car il peut être mis-à-jour. Rendez-vous donc dans celui sous « .config ». Ce fichier contient énormément de choses. Notamment la liste des équivalents claviers. Cherchez-y donc la première ligne du code qui suit :

  <keyboard>
    <chainQuitKey>C-g</chainQuitKey>
    <!-- Keybindings for desktop switching -->
    <keybind key="C-A-Left">
      <action name="GoToDesktop"><to>previous</to><wrap>no</wrap></action>
 <!-- <action name="UnmaximizeFull"/>
      <action name="MaximizeVert"/>
      <action name="MoveResizeTo">
        <width>50%</width>
      </action>
      <action name="MoveToEdge">
        <direction>west</direction>
	    </action> -->
    </keybind>
    <keybind key="C-A-Right">
      <action name="GoToDesktop"><to>next</to><wrap>no</wrap></action>
<!--  <action name="UnmaximizeFull"/>
      <action name="MaximizeVert"/>
      <action name="MoveResizeTo">
        <width>50%</width>
      </action>
      <action name="MoveToEdge">
        <direction>east</direction>
            </action> -->
    </keybind>

Comme vous pouvez le voir, il s’agit de la partie consacrée au clavier. Oubliez les trois premières lignes. La quatrième définit l’équivalent clavier Ctrl-Alt-Left, c’est-à-dire ce qui va se passer quant on va presser simultanément sur Ctrl, Alt et la flèche gauche. En commentaire (<!– … –>) se trouve que que vous pouvez effacer, soit les actions prédéfinies pour cet équivalent clavier. À la place mettez la ligne :

<action name="GoToDesktop"><to>previous</to><wrap>no</wrap></action>

qui définit l’action du changement de bureau virtuel. Pour la flèche gauche, il s’agit de revenir sur le bureau précédent. C’est pourquoi l’action est « previous » et quelques lignes plus bas pour la flèche droite, l’action est « next ». Ainsi, au final, vous devriez avoir :

  <keyboard>
    <chainQuitKey>C-g</chainQuitKey>
    <!-- Keybindings for desktop switching -->
    <keybind key="C-A-Left">
      <action name="GoToDesktop"><to>previous</to><wrap>no</wrap</action>
    </keybind>
    <keybind key="C-A-Right">
      <action name="GoToDesktop"><to>next</to><wrap>no</wrap></action>
    </keybind>

En enregistrant ces modifications, vous pourrez alors changer de bureau directement au clavier, ce qui est très pratique.

Installation d’un scanner bearpaw 2400 CU sous Debian 10

La procédure n’est pas très compliquée, mais il faut tout d’abord savoir que ce scanner fonctionne sous Debian 10.

Ensuite, il faut savoir qu’il est nécessaire que ce scanner va utiliser le driver GT68xx avec un firmware adapté. Pour obtenir le firmware, rendez-vous sur la page :

http://www.meier-geinitz.de/sane/gt68xx-backend/

et trouvez-y dans la longue liste des scanner le Mustek bearpaw 2400 CU. Vous pouvez alors y télécharger le fimware ps2fw.usb. Ce firmware est à copier dans le répertoire gt68xx réalisé préalablement de la manière suivante :

su
  mkdir /usr/share/sane/gt68xx/
  cp ps2fw.usb /usr/share/sane/gt68xx/
  chmod a+r /usr/share/sane/gt68xx/ps2fw.usb

Cela fait, il est nécessaire de l’activer dans la configuration du driver qui se trouve à l’adresse :

/etc/sane.d/gt68xx.conf

Une ligne « Autodetect Mustek Bearpaw … » doit y figurer commentée et au-dessous de celle-ci doit être décommenté (sans #) : usb 0x05d8 0x4002. Vérifiez que cela soit le cas.

Recherchez-y ensuite la ligne commentée « Mustek Bearpaw 2400 CU » et décommentez la ligne qui suit :

override "mustek-berapaw-2500-cu"

Lancez enfin Xsane pour vérifier que tout fonctionne.

Gravelle, Zisly

et les anarchistes naturiens contre la civilisation industrielle

Comme d’habitude, François Jarrige nous livre un ouvrage extraordinaire. L’analyse préalable au recueil de textes est évidemment la bienvenue pour ne pas discréditer préalablement leur contenu comme il est aujourd’hui l’habitude de le faire pour tout opposant au dogmes du monde « moderne », mais c’est surtout la qualité de leur choix qui est remarquable.

La science, le progrès, la croissance sont fortement interpellés par ces textes de plus d’un siècle et qui résonnent pourtant aujourd’hui comme une prémonition de bon sens. Ces textes sont à la fois lumineux et tragiques de l’aveuglement de notre « civilisation actuelle ». À lire absolument.

29. Images en ligne de commande : imagemagick

Rentrons dans le vif du sujet :

Informations

Au préalable de toute opération, Image Magick (IM) va nous permettre d’obtenir des informations sur l’image. Celles-ci peuvent être basiques ou plus développées :

identify monimage.jpg
identify -verbose monimage.jpg

Le retour est dans le premier cas :

Neige.jpg JPEG 1211x2359 1211x2359+0+0 8-bit sRGB 1.60686MiB 0.000u 0:00.000

Après le nom du fichier vient son type, sa taille (avec d’éventuels décalages), sa profondeur de couleur, son type colorimétrique, son poids et le temps nécessaire pour la lire.

Les informations retournées dans le second cas (-verbose) étant très nombreuses, je vous laisse les découvrir.

Réduction à une taille donnée

Ici, le problème est de produire des images de fond d’écran.

Imaginons que l’écran ait une taille de 2048×1152 pour des dimension de 10.8×6.1 in, ou 27.5×15.5 cm. La résolution en pixel per inch, ou en points par pouce est alors de 189 ppp.

L’objectif est de produire des images de 2048×1152 en 189 dpi. Évidemment, celles-ci doivent conserver leur ratio. On sait d’autre part que l’écran sera toujours en mode paysage.

Cn commence par réduire la hauteur de toutes les images à 1152 pixels (avec une résolution de 189 dpi, sa taille sera donc celle de l’écran). Trois cas peuvent alors se présenter :

  • la largeur est alors plus petite que 2048, auquel cas, il faudra faire apparaître des bordures noires pour combler le vide,
  • la largeur est précisément de 2048 et il n’y a rien à faire et
  • la largeur est supérieure à 2048, auquel cas, il faudra la réduire et faire apparaître des bordures noires en haut et bas de celle-ci.

Avec IM, il faut savoir que par défaut, le ratio de l’image est préservé. De plus, l’option « – resize » de convert ou mogrify, les deux utilitaires d’IM permettant respectivement de modifier une image en en produisant une nouvelle et de modifier une image en l’écrasant, non seulement préserve le ratio, mais agit simplement en réduisant la taille de l’image pour la placer à l’intérieur du cadre imposé par les dimensions spécifiées, avec l’une ou l’autre des dimensions maximales.

Enfin, le choix de mogrify est intéressant, car il évite de devoir spécifier un nom d’image particulier pour chaque image créée par convert. Mais, évidemment, la prudence exige un backup préalable des images, réalisée avec :

cp *.jpg ../rep_back/

alors qu’on est dans le répertoire contenant les images et que le répertoire de backup se nomme « rep_back » et se situe au même niveau que le répertoire précédent.

Ensuite, c’est très simple. Il suffit de se trouver dans le répertoire contenant les images et de lancer :

mogrify -resize '2048x1152>' *.jpg

Deux précisions :

  • le signe > signifie que toutes les images dont l’une ou l’autre des dimensions est plus importante que celle demandée et
  • les ‘…’ sont présents pour éviter que le signe > ne soit interprété par le shell.

On se retrouve alors avec des images toutes plus petites que ou égale à la taille de l’image demandée.

Référence pour resize : https://legacy.imagemagick.org/Usage/resize/#resize.

Reste à remplir les vides. Malgré que les afficheurs de fond d’écran permettent d’afficher des images sans les déformer au dessus d’un fond noir, par exemple, il peut être intéressant de laisser l’afficheur adapter les images à l’écran parce que certaines le permettent. Alors, pour celles qui ne le permettent pas, il est nécessaire d’en faire des images à la bonne taille.

Conversion jpg vers pdf

Le problème est de convertir toutes les images jpg situées dans un unique répertoire en un seul pdf.

Deux étapes sont à réaliser :

ls *.jpg | xargs -I% convert % %.pdf 

où le ls crée une liste des fichiers, le « pipe » (|) envoie cette liste à la commande xargs. En effet, la commande convert ne dispose pas d’entrée standard et xargs utilise la commande passée sur son premier argument pour passer le fichier en entrée standard comme argument de la commande convert. Le drapeau -I de xarg, évite de passer tous les fichiers images en une fois à convert (comme de multiples arguments) pour faire le même fichier de sortie. Avec -I on récupère le nom de fichier dans % et on demande de réaliser la commande simple « convert fichier.jpg fichier.pdf » sur chaque fichier fournis par ls.

Puis, il faut créer l’unique pdf à partir des fichiers .jpg.pdf par :

pdftk *.pdf cat output merged.pdf && rm *.jpg.pdf

où, on récupère tous les fichiers d’extension .pdf et demande à pdftk de réaliser un « cat » (catenate), c’est-à-dire une concaténation, de ceux-ci dans le fichier donné en valeur d’argument de output, c’est-à-dire merged.pdf.

Finalement, si et seulement si (&&) le fichier merged.pdf est réalisé sans erreurs, on efface (rm : remove) les pdf de chaque page.


Mais il est apparu d’entrée un problème dont la solution se trouve dans un fichier de configuration d’Imagemagick. En effet, ce dernier refusait d’effectuer la conversion et renvoyait une erreur de « policy » peu compréhensible. Les recherches ont montré qu’il fallait autoriser Imagemagick à créer des pdf dans ce fichier :

/etc/ImageMagick-6/policy.xml

Les modifications se font évidemment en root. Se trouve dans ce fichier la ligne suivante :

<policy domain="coder" rights="none" pattern="PDF">

qu’il montre que le droit de faire des pdf n’est pas présent. Il faut donc la changer par :

<policy domain="coder" rights="read | write" pattern="PDF">

pour résoudre le problème.