Outils personnels
Vous êtes ici : Accueil Linux Tests et installations: Debian, LMDE, Mageia, etc. 6 - Installation Ubuntu 18.04 LTS Bionic - Openbox

6 - Installation Ubuntu 18.04 LTS Bionic - Openbox

Par Freecrazy - Dernière modification 30/03/2020 08:10

J'avais déjà évoqué l'installation d'un Desktop Openbox sur base Debian qui m'avait complétement satisfait. Aujourd'hui je me retrouve avec un HP Pavilion DV6 qui a été acheté avec W7, qui a passé dans la douleur sous W10 (problème de surchauffe) et qui dernièrement n'arrivait plus à passer sous la version 1709 de W10 (toujours ces problèmes de surchauffe tellement la mise à jour est importante). Par ailleurs il faut reconnaître que les versions Ubuntu ont l'avantage, outre d'être basées sur Debian, d'avoir des logiciels mis à jour plus rapidement et une communauté très importante. Donc j'ai voulu tester cette dernière version LTS d'Ubuntu à savoir la 18.04 Bionic en installant toujours mon Desktop préféré: Openbox.

00a - Voici 2 liens qui m'ont servi de fil conducteur pour ce qui suit:

 

00b - Évitons les malentendus

Soyons bien d'accord, ici je vais couvrir une installation Ubuntu avec Openbox seul (c.a.d non associé à un Gnome ou autre) sur un micro dédié (pas de Windows, pas de dual boot).

Le micro est un HP-Pavilion dv6 que j'ai équipé d'un SSD de 500G et d'une RAM de 8Go. Pour mémoire ce PC est motorisé par un processeur I7 Q720, ce n'est pas le plus performant mais au moins il à 4 cœurs.
Et pour information: sa RAM de 4Go d'origine n'était reconnue que pour moitié je l'ai donc changée; Ayant beaucoup surchauffé du temps où ce micro était sous W10 j'ai refait les joints thermiques du processeur et du processeur graphique.
Ces données ne sont pas très importantes car normalement l'installation décrite ici a de fortes chances d'aboutir sur n'importe quel PC pas trop 'exotique' (car même avec Ubuntu il est possible d'avoir un matériel non reconnu)

Openbox est devenu mon environnement Desktop préféré (cf. '5 - Installation Debian - Openbox'). Openbox est un gestionnaire de fenêtres puissant, hautement configurable et ... ultra-léger. Cette dernière caractéristique ne plaît/convient pas à tout le monde car le bureau est sobre et ne bénéficie donc pas de jolis effets visuels (qui souvent d'ailleurs ne servent à rien) que peuvent offrir d'autres bureaux plus lourds comme les plus connus KDE/Gnome. Ici le but recherché est d'avoir un PC portable dont les ressources sont consacrées aux applications que je veux y faire tourner. Donc:

  1. Si vous voulez un bureau avec plein de gadgets pour vous distraire mais qui consomme ressources processeur et pompe votre batterie, ce n'est pas ici.
  2. Le hautement configurable implique aussi de bien vouloir mettre les mains dans le cambouis. Aussi si configurer à minima votre machine ne vous intéresse pas ... comme précédemment il vous faudra aller voir ailleurs (et vous orienter vers un système clef en main). 
  3. Si vous voulez une configuration autre qu'Openbox seul vous aurez certainement avantage à aller voir le lien d'Ubuntu.fr cité précédemment..
  4. Si vous rencontrez d'autres problèmes que ceux auxquels j'ai été confrontés vous aurez à chercher par vous-même car vous comprendrez que je ne peux être exhaustif. Mais la documentation et les forums d'Ubuntu sont suffisamment fournis (y/c en français) pour que vous y trouviez réponse(s) à votre(vos) question(s) éventuelle(s)

Bien évidemment je ne vous dédouane pas d'un peu de bon sens et d'esprit critique. Donc je ne vais pas répéter les sempiternels avertissements:

  • sauvegardez vos données du disque dur s'il n'est pas neuf;
  • toutes les interventions sur votre PC (matérielles comme logicielles) se font sous votre entière responsabilité;
  • ce qui a marché ici peut ne pas fonctionner chez vous pour x ou y raisons ne me tenez pas alors pour responsable.

 

01 - L'installation

L'installation complète partira d'une installation minimale (avec un 'CD Minimal' de 64M:  mini.iso alias netboot que vous trouverez sous la doc  Installation/MinimalCD ou sous les archives de Ubuntu sous netboot) donc un accès à la console seule. Les briques nécessaires seront ajoutées au fur à mesure.

Si la gravure sur CD de l'image de 64M est tout à fait possible, j'ai plutôt opté pour l'installation via une clé USB car :

  • de nos jours les PC portables disposent de moins en moins de lecteur de CD;
  • et c'est plus simple et plus rapide.

 La copie de l'iso sur la clef se fait comme expliqué ici sur ma page 'Comment rendre une clé USB bootable ?' ou pour d'autres possibilités la page 'Installation/FromUSBStick'  de la documentation Ubuntu (mais en anglais)

Sur l'installation de base je vais aller assez vite, car Ubuntu bénéficie de très bons tutoriels (cf. celui-ci par exemple) et cela reste assez aisé (que ce soit en mode graphique ou texte). En voici, les grandes étapes

  1. Choix de la langue, du pays et du clavier
  2. Configuration de la connexion Internet (A ce stade je vous conseille fortement de configurer le filaire mais si vous voulez configurer le WiFi ayez sous la main le mot de passe de votre connexion)
  3. Nommer la machine
  4. Choisir son miroir de dépôt (là où se trouve stocké l'archive de votre distribution)
  5. Définir un proxy (si vous en avez un bien sûr)
  6. Définir identifiant/mot de passe de l'utilisateur (à noter on ne définit pas de mot de passe pour root/administrateur sous Ubuntu tout se passe avec sudo - je n'aime pas, il va me falloir changer cela une fois l'installation terminée, mais pour toute cette page je garderai cette commande sudo pour les commandes administrateur)
  7. Configurer l'horloge
  8. Et on passe au partitionnement: là cela se complique un peu car comme je veux une configuration spéciale (500M de partition primaire en ext4 pour /boot, tout le reste du SSD en partition étendue sur laquelle, sous LVM, je mets un VG lui-même réparti en 2 LV: un de 15G en ext4 pour /, et le reste disponible toujours en ext4 pour /home) j'ai fait cela en manuel et la navigation dans les différents tableaux n'est pas très intuitive. Sinon le mode Assisté avec utilisation de tout un disque avec LVM marche nickel (je recommande les LVM car cela permet de modifier si besoin par la suite les tailles allouées aux différentes partitions)
  9. Le temps de télécharger le système de base et de l'installer, on passe au :
  10. Choix de la mise à jour du système. Je n'ai pas pris Landscape car j'ai vu 'cloud' et je n'aime pas. Par contre j'ai gardé la mise à jour automatique pour la sécurité
  11. Sélectionner les logiciels: moi je n'ai rien pris sauf open-ssh car j'aime bien avoir un accès externe à ma machine (mais pour un Desktop cela ne sert pas à grand chose)
  12. Et enfin on arrive à la configuration de Grub. Attention au choix du disque de démarrage surtout si comme moi vous installez à partir d'une clé USB)

Voilà, un redémarrage plus tard, je me retrouve devant mon écran en mode texte (texte en bleu sur fond noir, sympa). Pour accéder à votre session il faut bien évidemment entrer votre login et votre mot de passe. Pour sortir et éteindre l'ordinateur, il faut lancer la commande:

$ sudo poweroff

 

02 - Mon premier souci: Corrupted low memory

 Après être logué au bout de quelques secondes j'ai un message de type:

Corrupted low memory at 000000002e040379 (6598 phys) = ff0000000000
Memory corruption detected in low memory  

Vous oubliez les valeurs numériques car elles peuvent être variables.

Cela m'a inquiété, j'ai vérifié la mise en place de ma RAM et j'ai regardé ce que me donnait les informations systèmes du Boot. C'est là que je me suis rendu compte de la défaillance de ma RAM d'origine qui s'affichait à 2Go alors qu'elle est de 4Go. Cependant en ne lui laissant que la nouvelle RAM de 8Go le problème demeurait. Après recherche sur le net j'ai fini par trouver ce post "Corrupted low memory" message at boot(en anglais) qui explique très bien le pourquoi. Mais pour la solution c'était moins précis.

Le pourquoi du problème réside en un BIOS mal foutu qui se permet d'utiliser de la RAM alors qu'il ne devrait pas. Bien sûr le noyau Linux le détecte et s'en accommode (en fait il ignorera cette zone mémoire) tout en nous envoyant ce message  "Corrupted low memory" (ceci grâce a 2 options par défaut: memory_corruption_check=1, memory_corruption_check_size=64k). Donc cela n'empêchera pas votre système de démarrer et de très bien fonctionner.

Vous je ne sais pas, mais moi je n'aime pas des systèmes qui démarrent avec des messages d'erreurs ou d'alerte. Donc pour éviter ce message il faut soit:

  • corriger le BIOS. Non je ne vous demande pas de trifouiller le code du BIOS (qui est sur ROM), mais d'effectuer éventuellement une mise à jour s'il en existe une. Bien sûr à ce stade c'est compliqué car les mises à jour de BIOS se font normalement sous Windows ... Pour ma part j'ai eu la flemme de remettre le disque dur avec Windows et je suis passé à la 2ième option ...
  • dire au noyau Linux d'ignorer les premiers 64Ko de mémoire (car c'est cette zone mémoire que les BIOS prenant leur aise s'octroient). Pour cela il y a 2 options à passer au boot loader (Grub2): memmap et memory_corruption_check. Le noyau ne vérifiera alors plus cette zone mémoire.

Dit comme cela cela paraît simple, mais où doit-on passer ces options ? D'ailleurs d'où peut-on les connaître ces options ?
Commençons par répondre à la 2ième question !

  • Pour connaître les options et leurs actions, un document intitulé 'kernel-parameters.txt' existe sous le compte GitHub de Linus Torvalds ! Il me semble exhaustif et se concentre sur l'essentiel (un peu la commande 'man' des options du noyau Linux). Bon il faut admettre qu'on peut aussi le trouver ici sur kernel.org.
  • Pour un peu plus descriptif (mais toujours en anglais), on peut lire le 'Ch09 - Kernel Boot Command-Line Parameter Reference' qui est un extrait ...
  • ... du livre, libre d'accès, de Greg Kroah-Hartman' intitulé 'Linux Kernel in a Nutshell'  dont la lecture ravira les plus curieux.

Maintenant revenons à la première question: la réponse se réduit à "modifier la ligne de commande du boot (de lancement)". On peut bien sûr modifier la ligne de menu qui s'affiche à la mise en route du PC, mais pas de bol ici Ubuntu a décidé de passer ce menu sous silence (c.a.d qu'on ne le voit pas). Il reste la modification en 'dur' du fichier de configuration de Grub qui se trouve sous /etc/default/grub. (attention ce n'est pas le 'vrai' fichier de configuration qui est sous /boot/grub/grub.cfg mais ce dernier est mis à jour par la commande update-grub qui vient lire le fichier que l'on a modifié: /etc/default/grub. Aujourd'hui le lanceur est Grub2 et pour y voir un peu plus clair dans son fonctionnement, voici quelques liens qui peuvent être utiles:

 Bon, on y va ? 

Oui, on y va ... jetons un oeil sur ce que raconte Linus Torvalds sur memmap et memory_corruption_check :

memory_corruption_check=0/1 [X86]
	Some BIOSes seem to corrupt the first 64k of memory when doing things like suspend/resume.
	Setting this option will scan the memory looking for corruption.  Enabling this will both detect corruption and 
        prevent the kernel from using the memory being corrupted.
	However, its intended as a diagnostic tool; if repeatable BIOS-originated corruption always affects the same 
        memory, you can use memmap= to prevent the kernel from using that memory.

Face à notre problème de plage mémoire corrompu par le BIOS on serait tenté d'utiliser cette option (même si pour un PC en 64bits le X86 est un peu perturbant) et il s'avère que 'memory_corruption_check=0' élimine l'apparition du message 'Corrupted low memory'.

Mais maître Torvalds indique que si c'est toujours la même zone mémoire qui est concernée il vaut mieux utiliser memmap et (il ne le dit pas) celui sous cette forme:

memmap=nn[KMG]$ss[KMG]
	[KNL,ACPI] Mark specific memory as reserved.
	Region of memory to be reserved is from ss to ss+nn.
	Example: Exclude memory from 0x18690000-0x1869ffff
	    memmap=64K$0x18690000
	        or
	    memmap=0x10000$0x18690000
	Some bootloaders may need an escape character before '$',
	like Grub2, otherwise '$' and the following number
	will be eaten. 

Comme nous sommes sous Grub2 il nous faut le caractère d'échappement et donc écrire: memmap=64k\$0. Sauf que dans ce cas j'obtiens un bel écran noir ! Avec le double échappement aussi (memmap=64k\\$0 devient memmap=64k\/usr/sbin/grub-mkconfig !?).

En fait il faut tripler le caractère d'échappement et écrire (ce que confirme ce post):

memmap=64k\\\$0

et là cela fonctionne nickel.

Pour l'utilisation de l'option Bad Ram voir ce post et ses liens

Mais où écrit-on ces p@!%n d'options ?

Il est temps effectivement d'être un peu plus précis sur ce point. Pour rappel, vous venez d'installer la version minimale d'Ubuntu, le démarrage s'est fait de manière 'cachée' (c.a.d sans affichage du menu) et vous aboutissez assez vite à un écran de login en mode terminal. Vous vous loguez, ça y est vous pouvez maintenant passer des commandes.

Pour mémoire Ubuntu par défaut ne configure pas de compte administrateur/root. C'est le premier utilisateur enregistré qui est de fait administrateur du système et la seule façon d'exécuter des commandes administrateur est de passer par la commande $ sudo <votre commande>. Ce fonctionnement ne me convient pas (quelqu'un qui a votre mot de passe utilisateur peut administrer votre système, ce n'est pas top !) et je le changerai plus tard. Pour les pressés ce lien "Activer le compte système (root)" peut être utile, et si l'avertissement vous effraie lisez le paragraphe de cette page qui est beaucoup moins radicale et plus factuelle. Maintenant c'est vous qui voyez ...

Revenons à la modification de notre boot loader Grub. Lancez l'éditeur nano sur le fichier configurable de Grub:

$ sudo nano /etc/default/grub

Vous obtenez (du moins c'est ce que j'obtiens):

    # If you change this file, run 'update-grub' afterwards to update
    # /boot/grub/grub.cfg.
    # For full documentation of the options in this file, see:
    #   info -f grub -n 'Simple configuration' 
 
    GRUB_DEFAULT=0
    GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    GRUB_CMDLINE_LINUX=""
    
    # Uncomment to enable BadRAM filtering, modify to suit your needs
    # This works with Linux (no patch required) and with any kernel that obtains
    # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console

    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo'
    #GRUB_GFXMODE=640x480

    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true

    # Uncomment to disable generation of recovery mode menu entrys
    #GRUB_DISABLE_LINUX_RECOVERY="true"

    # Uncomment to get a beep at grub start
    #GRUB_INIT_TUNE="480 440 1"

Pour les modifications, la lecture d'au moins 1 des 3 documents sur Grub cités précédemment serait souhaitable.

La première modification que j'ai apportée est de faire réapparaître le menu (je sais il n'y a qu'un système d'installé mais dans cette phase où je modifie plein de choses j'aime bien avoir cette visibilité soit pour éditer directement la ligne de boot et modifier les options qui plantent le système (attention on est alors en qwerty), soit pour pouvoir bénéficier du mode recovery en cas de 'gros' plantage.

Pour afficher le menu, j'ai commenté 2 lignes comme suit:

    # GRUB_HIDDEN_TIMEOUT=0
    #GRUB_HIDDEN_TIMEOUT_QUIET=true

 Ensuite pour passer l'option memmap cela se fait comme suit:

GRUB_CMDLINE_LINUX="memmap=64k\\\$0"

Je n'ai pas pris GRUB_CMDLINE_LINUX_DEFAULT car elle ne s'applique qu'au système lancé par défaut, et je préfère l'appliquer pour toutes entrées que l'on pourrait lancer.

Comme indiqué en début de fichier ne pas oublier, après enregistrement de vos modifications, de lancer:

$ sudo update-grub

Il n'y a plus qu'à redémarrer:

$ sudo reboot  # ou sudo poweroff pour une extinction

et à l'affichage du menu vous pourrez éditer la ligne surlignée par défaut et constater que votre option apparaît bien sur l'avant dernière ligne juste avant 'splash quiet ...' et sous la forme 'memmap=64k\$0' avec le $ échappé 1 fois ! (donc si vous faites des essais comme j'ai pu le faire, pensez-y: dans l'éditeur du menu '\$' dans le fichier de configuration '\\\$')

Premier souci résolu. J'ai encore un petit bug: un à deux '^@' apparaissent dans le champ d'entrée du login selon le temps d'attente. Là je n'ai pas trouvé, peut-être un problème matériel, mais pas sûr car cela s'arrête à 2 max et je ne l'ai plus ensuite lorsque je suis connecté à ma session.

Passons à la suite.


03 - Second souci: se connecter en Wi-Fi.

Si vous avez établi une connexion filaire lors de l'installation (comme conseillé), pas de souci elle fonctionne toujours et elle sera bien utile pour la suite

Si vous avez établi une connexion WiFi lors de l'installation et bien ... cela peut ne pas fonctionner comme cela fût le cas chez moi: le WiFi s'active par une touche sauf qu'ici la touche est inopérante; par ailleurs c'est un HP avec des blocages soft possibles que l'on détecte avec rfkill qui n'est pas installé ...

Et pour couronner le tout, les outils de connexions par défaut ont changé nous avons maintenant: netplan et systemd-networkd. Du coup beaucoup de tutoriels sont obsolètes comme ces liens sur le WiFi (mais reste intéressant - et d'actualité - notamment sur la recherche des caractéristiques de la carte WiFi) et sur sa configuration en ligne de commandes. 

Et pour les anciens, n'oubliez pas que:

  • ifconfig devient ip addr (et vous retrouverez le nom de vos interfaces de connexion)
  • iwconfig <nom de la connexion> devient iw <nom de la connexion> info (et vous retrouverez entre autres l'info sur la réalité de la connexion)

Bien sûr ces commandes sont plus puissantes que ce que je viens d'indiquer, n'hésitez pas à lire le man ou de chercher sur le net "ifconfig vs ip" ou "iwconfig vs iw".

    03.1 - Essayons quand même d'y voir plus clair !

    03.2 - Etat des lieux !

Je suppose que lors de l'installation vous avez, comme conseillé, paramétré la connexion filaire. (Si tel n'est pas le cas hé bien il vous faudra faire une petite gymnastique intellectuelle en lisant wifi lorsque je parle filaire et vice-versa).

Chez moi une touche du clavier est censée activer le Wifi, la led rouge passe alors au blanc. Pour l'instant elle est inopérante et la led reste obstinément rouge. Et pour avoir testé l'installation avec WiFi, cela ne marchait pas non plus une fois dans ma session. Le seul moyen sûr de débloquer les choses est d'utiliser rfkill qui n'est à ce stade pas installé. Et enfin si vous voulez savoir si vous êtes connecté lancer un:

$ ping www.google.fr  # ou tout autre site dont vous connaissez l'url exacte

En effet la commande bien connue 'iwconfig' n'est pas installée.

Avant j'allais chercher la configuration des connexions internet via le fichier /etc/network/interfaces. Mais aujourd'hui ce fichier renvoie:

# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

En effet depuis la version 17.10 c'est via /etc/netplan/*.yaml que s'effectue la configuration des connexions internet.

De ce que j'ai compris: le fichier /etc/netplan/*.yaml est lu très tôt lors du boot via netplan "network renderer" ce qui configure/lance automatiquement et de manière transparente les connexions:

  • WiFi et WWAN par NetworkManager. networkd est également possible comme je le découvrirai en lisant le man netplani:
    Note that systemd-networkd does not natively support wifi, so you need wpasupplicant installed if you let the networkd 
    renderer handle wifi.
  • tous les autres dispositifs de connexion sont gérés par networkd sauf si un autre gestionnaire de connexion est spécifié.
  • bien sûr tout autre équipement est ignoré.

Pour l'instant je n'ai qu'un fichier .yaml: /etc/netplan/01-netcfg.yaml, en voici son contenu:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: yes
      dhcp6: yes

 Nota: fini les appellations de type ethx, maintenant nous avons droit à des noms ésotériques comme ici 'enp3s0' dont je n'ai toujours pas trouvé la logique.

Bon si nous voulons une connexion WiFi fonctionnelle il nous faut, on l'a vu: rfkill et wpasupplicant. Aussi profitons de la connexion filaire pour lancer:

$ sudo apt install rfkill
$ sudo apt install wpasupplicant

Nous sommes prêts pour la suite.

    03.3 - Configurer la connexion WiFi.

Nota: Je vais décrire la connexion WiFi cryptée en WPA PSK, ou encore appelée WPA personnel (j'espère que vous avez abandonné depuis longtemps les connexions ouvertes et le cryptage WEP de toute façon avec wpasupplicant le WPA est obligatoire), et avec attribution d'adresse par DHCP (ce que fait aujourd'hui toutes 'box' ou point d'accès)

Pour cela il nous faut créer un fichier /etc/netplan/02-wifi.yaml (le nom est à votre discrétion):

network:
  version: 2
  renderer: networkd
  wifis:
    wlo1:
      dhcp4: yes
      dhcp6: yes
      access-points:
        "Ici le ssid de votre box":
          password: "le mot de passe"

 Nota: Ici aussi vous noterez le nom logique 'wlo1' qui change des 'wlanx' que nous connaissions. Si vous n'avez pas noté ce nom lors de l'installation allez voir cette page Identifier sa carte réseau WIFI qui même en étant un peu datée, vous apprendra plein de choses y/c sur rfkill. Sinon une commande que vous pouvez utiliser ici est:

$ lshw | grep -i 'nom logique'

qui retourne (chez moi toujours) et sans tenir compte des 'warning' sur la possible incomplétude la liste:

    nom logique: wlo1
    nom logique: enp3s0
    nom logique: scsi1
    nom logique: /dev/cdrom
    ...

(la commande '$ ip a' vous donne aussi l'info)

 

Nous avons notre fichier .yaml, nous pouvons demander à netplan de l'utiliser:

$ sudo netplan apply 02-wifi.yaml

Normalement cela devrait suffire pour rendre le WiFi opérationnel, mais chez moi non ! Il est temps d'utiliser rfkill:

$ rfkill list
0: hp-wifi: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes
1: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: yes

Il est clair que ma touche n'est pas dans la bonne position (Hard blocked). Pour les 'Soft blocked' (blocage logiciel) je ne suis plus sûr. Mais un déblocage plus tard (et peut-être un redémarrage aussi):

$ sudo rfkill unblock all

... et le wifi fonctionne.

Nous avons:

$ rfkill list
0: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no

On voit apparaître une nouvelle connexion: Bluetooth. Cependant celle-ci me renvoie une erreur (même avant d'entrer en session):

Bluetooth: hci0: hardware error 0x37

Je n'ai pas trouvé à quoi cela correspondait mais d'après le peu que j'ai pu lire:

  • le Bluetooth serait fonctionnel (mais je ne l'ai pas testé)
  • l'erreur viendrait du BIOS (ce qui ne me surprendrait pas car l'info du BIOS me donne 2 'ID FCC' (ne me demandez pas ce que cela signifie je n'en sais rien) identiques pour le WiFi et le Bluetooth: VQF-RT3090BC4

J'ai longtemps cherché pour supprimer cela, mais le net ne m'a pas donné de solution. Cependant j'ai fini par trouvé quelque chose ...

 

04 - Troisième souci: Comment supprimer le message "Bluetooth: hci0: hardware error 0x37"

Vous commencez à me connaître, je n'aime pas les messages d'erreur même si ils sont 'inoffensifs'.

Comme indiqué précédemment ma recherche sur le net a fait chou blanc: très peu de post sont sur ce sujet et beaucoup tournent autour d'une situation 'Soft blocked' donc résolu par l'utilisation de rfkill, d'autres recommandent de vérifier le firmware mais une recherche de type $ sudo apt-get -s install firmware-* ne me renvoie pas de firmware relatif au bluetooth, l'installation d'un gestionnaire de connexion Bluetooth comme 'bluez' ne change rien, ...

ET je me suis souvenu d'un problème non pas similaire mais de configuration semblable que j'ai eu sur un autre HP (mais sous Debian). Pour faire court: le hp_wifi et le phy0 entraient en conflit. Pour résoudre ce problème, il suffit de blacklister hp_wmi et ici, c.a.d dans cette configuration Ubuntu, il faut l'ajouter tout à la fin du fichier /etc/modprobe.d/blacklist.conf comme ceci

$ sudo nano /etc/modprobe.d/blacklist.conf
.
.
.
# Ajout du dd/mm/2018 pour supprimer au boot le message "Bluetooth: hci0: hardware error 0x37"
blacklist hp_wmi

 Un redémarrage plus tard, le message n'apparaît plus, le wifi fonctionne (vérifié avec ping) et nous avons:

$ rfkill list
0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

Notez toutefois que si vous appuyez sur la touche d'(des)activation du WiFi le message revient, ce qui ne me semble pas incongru.

Nous sommes presque prêts à l'installation de notre environnement. Je dis presque parce que je tiens à ce stade à procéder à une ...

 

05 - Mise à jour

Oui avant toute chose, je préfère travailler avec une version à jour. Si Ubuntu est basé sur Debian, les dépôts sont cependant différents. Pour une explication sur les dépôts je vous renvoie sur la page en français du Wiki Ubuntu.

Si vous voulez voir sur quoi pointent vos dépôts (adresses Internet où sont stockés tous les paquets de la distribution):

$ sudo nano /etc/apt/sources.list

En principe il n'y a rien à modifier.

La commande pour tout ce qui concerne les paquets (les logiciels téléchargés pour installation sont "empaquetés") est apt-get. Pour la mise à jour nous allons utiliser cette commande puisque l'application graphique Synaptic (très performante et très facile d'utilisation et basée sur apt-get) ne nous est pas accessible pour le moment.

Voilà il ne nous reste à mettre à jour l'index (liste des paquets installables):

$ sudo apt-get update

puis à mettre à jour les applications qui doivent l'être:

$ sudo apt-get upgrade

Et voila notre système est à jour.

Nota: Avec la mise à jour j'ai perdu la belle couleur bleu sur fond noir du texte de login. Je n'ai pas trouvé comment la remettre, mais j'ai ajouté un peu de couleur au prompt et au texte en m'inspirant de ce post

 

06 - Installons Openbox

Je vous passe les détails du pourquoi, c'est un des gestionnaire de fenêtres le plus léger et hautement configurable, etc.

Pour plus de détails voir le site d'Openbox (en anglais :-( ou celui-ci en français et pour Ubuntu mais en cours d'actualisation au moment où j'écris ces lignes)

Ici, je le répète, on n'installe que Openbox, si vous voulez une autre configuration (Openbox peut être couplé avec Gnome, Kde, Xfce, ...) et bien il vous faudra chercher ailleurs.

Bon c'est parti:

$ sudo apt-get install openbox obconf obmenu

Les 2 derniers paquets seront bien utiles pour configurer l'apparence et le menu (respectivement). Cela m'installe 127 paquets !

Et un paquet pour démarrer le serveur X (serveur graphique)

$ sudo apt-get install xinit

Là 71 nouveaux paquets seront installés dont des utilitaires comme x11-xkb-utils et des appli propres au matériel comme xserver-xorg-video-*.

Il nous faut créer aussi le .xinitrc ainsi:

$ nano ~/.xinitrc
#!/bin/bash
exec openbox-session

Tout est prêt pour lancer Openbox, ce que l'on fait sans tarder:

$ startx

Bon nous obtenons un bel écran noir, et nous obtenons un menu que par un clic droit (d'une souris car le touchpad ne fonctionne pas à ce stade). Pour être dépouillé, c'est dépouillé, et aucune application n'est installée pas même un terminal (et c'est normal, puisque c'est ce que nous avons voulu). Mais pas de panique nous allons agrémenter tout cela, mais il nous faut d'abord sortir (clic sur exit) pour installer d'autres paquets en mode console.

 

07 - Les logiciels

Oui, c'est pas banal, mais vous l'avez vu en mode graphique nous n'avons accès à rien, il nous faut donc installer en mode console quelques logiciels indispensables. Outre le fait que nous serons à peu près fonctionnels cela donnera plus de corps au menu, ainsi lors de la configuration de notre Openbox nous aurons de la matière (par exemple pour l'édition du menu et de ses catégories).

    07.01 - Commençons par le terminal, l'indispensable N°1.

Le classique est xterm, il est disponible sur toutes les distributions, mais pour ma part je lui préfère nettement xfce4-terminal (léger, autorise les onglets, ...). Pour une comparaison des différents terminaux disponibles vous avez cette page "What are the best Linux terminal emulators ?" (Ai-je besoin de traduire ?):

$ sudo apt-get install xfce4-terminal

Ce qui installe 21 nouveaux paquets

 

    07.02 - Ensuite un gestionnaire de fichiers,

Sur une autre installation j'avais hésité entre pcmanfm et thunar, tous 2 sont réputés léger. J'avais donc testé les 2 et j'ai gardé pcmanfm. Pour d'autres avis et comparaisons vous avez cette page: What are the best GUI Linux file managers ?.

$ sudo apt-get install pcmanfm

Il viendra en 169 nouveaux paquets.

 

    07.03 - Maintenant un navigateur web ...

... serait utile, si ce n'est indispensable. J'ai toujours ce dilemme Firefox ou Chromium de Google ? J'ai les 2 installés sur un portable sous Debian-Openbox: au cours du temps Firefox a eu des faiblesses (lent, plantages), Chromium a alors pris le dessus. Mais aujourd'hui c'est l'inverse Chromium est très consommateur de RAM et n'accepte pas trop d'onglets ouverts alors je suis revenu sur Firefox même si je n'ai pas la possibilité de dicter mes recherches comme dans Chromium. Pour d'autres avis et comparaisons vous avez cette page: What are the best web browsers for Linux ?. Donc:

$ sudo apt-get install firefox

Cette fois seuls 4 paquets seront installés.

Ce sera bien aussi de l'avoir en français, pour cela il faut (je crois car là j'ai tâtonné):

$ sudo apt-get install language-pack-fr firefox-locale-fr

 Un coup d'oeil sur cette page wiki d'Ubuntu sur la francisation de Firefox sera certainement utile.

 

    07.04 - Une application qui gère les archives compressées ...

...  est souvent utile. 'file-roller' est un candidat mais dépend de librairies Gnome et surtout demande 2 fois plus d'espace disque que 'xarchiver' (42,6Mo vs 97,9Mo), donc:

$ sudo apt-get install xarchiver

Cela amène 50 nouveaux paquets.

 

    07.05 - Et pour un éditeur de texte ?

Nous avons déjà 'nano' (très appréciable pour des modifications simple de texte) et 'vi / vim-tiny' (qui demandent un apprentissage des commandes) comme éditeurs de texte, mais cela reste très rudimentaire. Je me suis habitué à 'leafpad' surtout après avoir installé Geany un éditeur de texte également mais aux fonctions d'environnement de développement intégré (IDE) que j'utilise pour écrire mes programmes. J'appréciais 'gedit', mais ce dernier demande des librairies de Gnome et reste lourd (102Mo d'espace disque nécessaire pour 61 nouveaux paquets contre respectivement 461ko et 1 seul paquet) par rapport à leafpad. Donc:

$ sudo apt-get install leafpad

 

    07.06 - Un lecteur  pdf ? 

Avec leafpad j'avais un paquet suggéré: 'evince' un lecteur de pdf et il est vrai que c'est mon lecteur pdf préféré: il fait ce qu'on lui demande sans fioriture et reste très léger.

$ sudo apt-get install evince

Et voici 30 nouveaux paquets pour 64,6Mo d'espace disque supplémentaires.

Bon cela suffit pour le moment, voyons ce que cela donne en mode graphique, lançons startx.

PS: J'ai aussi ajouté pour les captures d'écran gnome-screenshot (1 seul fichier d'installé). Curieusement les raccourcis clavier [IMPR] et [Alt]+[IMPR], respectivement pour la capture d'écran et la capture de la fenêtre active, ne fonctionnent pas.

 

08 - Configurer le bureau

On retrouve notre écran noir, mais cette fois les applis installées sont accessibles du menu obtenu après un clic droit sur l'écran, par exemple: un clic sur Web browser lance Firefox (ou le navigateur que vous avez installé), de même Terminal emulator lance xfce-terminal. Cependant tout n'est pas parfait:

  • des entrées du menu pointent dans le vide (j'ai un 'Mail reader' par exemple);
  • des entrées sont manquantes comme 'obmenu'
  • de plus si on a le malheur de réduire les fenêtres, elles disparaissent du paysage. Certes un alt-Tab vous permettra de les retrouver, mais ce n'est pas des plus pratiques.
  • L'ensemble reste, il faut l'avouer un peu tristounet.

Bref il y encore un peu de boulot !

    08.1 - Le fond d'écran

Ce n'est pas le plus important, mais c'est le plus simple.

Pour gérer son fond d'écran nous disposons de plusieurs possibilités comme 'nitrogen' par exemple. Mais ici au lieu d'installer un paquet supplémentaire nous allons utiliser PCManFm qui possède cette fonctionnalité de gestion de fond d'écran ce qui est inhabituel pour un gestionnaire de fichiers.

Pas besoin d'installation donc puisque pcmanfm est déjà installé. Pour le lancer au démarrage il va falloir écrire dans le fichier ~/.config/openbox/autostart la commande de lancement de la gestion du fond d'écran par pcmanfm. On peut le faire de cette façon:

$ echo 'pcmanfm --desktop &' >> ~/.config/openbox/autostart

Quelques explications peut-être utiles:

  • Les 2 '>' vont écrire ce que renvoie echo à la fin du fichier ~/.config/openbox/autostart (Attention si vous ne mettez qu'un seul '>' vous allez écraser le fichier s'il existe (mais à ce stade le fichier 'autostart' n'existe pas encore)
  • le '&' en fin de ligne indique que la commande 'pcmanfm --desktop' sera exécutée en tâche de fond, cela permettra aux commandes suivantes (et il y en aura ...) de s'exécuter.
  • le '~' du chemin menant au fichier autostart indique votre répertoire utilisateur
  • une structure du fichier 'autostart' existe sous '/etc/xdg/openbox/autostart' mais elle ne nous est d'aucune utilité ici.
  • si vous avez fait un autre choix de gestionnaire de fichiers, essayez 'nitrogen' !

 

Il y a quelques ajustements de configuration à effectuer que l'on effectue:

  • soit via le menu (clic droit sur le bureau): Applications > Settings > Desktop Preferences
  • ou soit en ligne de commande: $ pcmanfm --desktop-pref (attention la fenêtre n'apparaît pas en premier plan, elle peut donc être cachée par d'autres fenêtre comme celle du terminal d'où vous avez lancé la commande)

Dans l'onglet 'Apparence' vous pourrez ajouter votre fond d'écran (et gérer la police du texte -taille et couleur)

Dans l'onglet 'Avancé' il vous faut absolument cocher 'Afficher le menu fourni par le gestionnaire de fenêtres lors d'un clic sur le bureau' sinon vous perdez l'un des intérêts majeur (à mes yeux) d'openbox: l'accès au menu par un simple clic (droit) sur le bureau. Pour ce qui est de l'utilisation du bureau comme un répertoire, à vous de voir, moi je n'en veux pas.

Voici 2 liens qui peuvent être utiles pour fignoler la configuration de PCManFm:

Edit:

Lorsque j'ai voulu installer conky je n'arrivai pas à obtenir ce que je voulais, à savoir une fenêtre Conky avec transparence. En fait j'avais:

  • soit une fenêtre Conky transparente mais qui disparaissait lors d'un clic droit pour obtenir le menu,
  • soit ma fenêtre Conky persistait à l'appel du menu mais il me fallait la mettre dans le dock d'Openbox et là je perdais la transparence. 

 Du coup j'ai installé nitrogen ($ sudo apt-get install nitrogen) et dans le fichier '~/.config/openbox/autostart' j'ai remplacé la ligne 'pcmanfm --desktop &' par 'nitrogen --restore &'.

    08.2 - Une barre des tâches

Une petite barre des tâches peut quand même être utile (mais c'est vous qui voyez). Des barres de tâches, il en existe plusieurs, mais il y en une qui a été créée spécifiquement pour Openbox: tint2, donc pourquoi s'en priver:

$ sudo apt-get install tint2

Pour voir son fonctionnement il suffit de lancer dans un terminal:

$ sudo tint2

Mais pour lancer cette barre des tâches automatiquement au démarrage d'Openbox il nous faut l'indiquer dans le fichier appelé ~/.config/openbox/autostart (ou autostart.sh). Si vous avez tout suivi jusqu'ici, vous avez déjà créé ce fichier pour lancer pcmanfm --desktop. Comme pour PCManFm,  la commande suivante fonctionnera que le fichier existe ou pas :

$ echo 'tint2 &' >> ~/.config/openbox/autostart

Il peut-être utile aussi de personnaliser sa barre de tâche tint2. Cela se passe sous ~/.config/tint2/tint2rc si ce répertoire/fichier n'existe pas il faut le créer et copier un fichier modèle:

$ mkdir -p ~/.config/tint2/
$ cp /etc/xdg/tint2/tint2rc ~/.config/tint2/ 

Mais ici le répertoire et le fichier existe, le seul petit point à régler reste la question des droits d'accès qui sont à ce stade seulement autorisés à root ce qui fait que la commande tint2 de l'autostart ne sait pas le lire. Donc changement de propriétaire (owner en anglais) par la commande:

$ sudo chown -R <nom utilisateur>:<nom utilisateur> ~/.config/tint2

Il ne reste plus qu'à vous amuser à peaufiner cette barre de tâche. Une interface graphique existe accessible par le menu ou plus simplement par un clic sur l'icône à gauche de la dite barre des tâches.

Pour ma part, voici mes principaux changements:

  • dans Arrières-plans: 'Arrière plan' à Panel et 'Rayon d'angle' à 7 pour adoucir un peu cette barre trop rectangulaire sinon.
  • dans Panel: 'Longueur' à 85%, 'Masquage automatique' à cocher
  • dans Éléments du panel: j'ai enlevé la zone 'Lanceur' car je ne lance jamais mes applications via le panel, et j'ai ajouté la 'Batterie'
  • dans Barre des tâches: 'Affiche une barre des tâches pour chaque bureau' à cocher, 'Répartit la place entre les barres des tâches' à cocher, 'Affiche le nom du bureau' à décocher
  • dans Lanceur: je ne mets aucune application dans ma barre de tâches. Ceci étant, si comme moi vous avez enlevé la zone 'Lanceur' du Panel, intervenir ici ne change rien.
  • dans Batterie: je fixe la limite de 'Cache si la charge est au-dessus de 98%'

     08.3 - Le menu

L'ajout manuel de programme dans le menu donne ce que l'on appelle un menu statique dont la configuration est stockée dans un fichier XML sous ~/.config/openbox/menu.xml. On peut bien sûr modifier à la main ce fichier, mais sinon c'est le boulot de obmenu ... qui n'apparaît pas dans le menu ! Il nous faut le lancer en ligne de commande.

$ obmenu

Et nous allons ajouter de suite obmenu dans le menu via l'interface graphique obmenu (Vous pouvez aussi créer votre menu en éditant le fichier ~/.config/openbox/menu.xml, utile à garder en tête, car pour une nouvelle installation ou une mémorisation, un copier/coller peut faire gagner du temps.). Pour cela:

  • Dans la fenêtre d'obmenu, déroulez la ligne "Openbox 3", et cliquez sur la ligne où vous voulez placer votre entrée de menu (en dessous de obconf pour obmenu ?).
  • Cliquez sur "New item"
  • Dans le bas de la fenêtre dans le champ de saisie 'Label' vous indiquez le nom qui apparaîtra dans le Menu. Pour ma part j'ai été très original et mis "ObMenu" pour obmenu.
  • Toujours au bas de la fenêtre, mais dans le champ de saisie 'Execute' cette fois, vous mettez la commande à lancer. Ici obmenu.

Une fois terminé, n'oubliez pas de sauvegarder: un clic sur l'icône représentant une disquette.

Maintenant obmenu est directement accessible du menu. Il ne vous reste plus qu'à faire de même pour toutes les applications que vous avez/allez installées/er ... en fait ce n'est pas tout à fait juste.

En effet vous avez certainement constaté la présence de la ligne

Applications menu Pipemenu /usr/bin/obamenu

Cette ligne permet en fait d'avoir un menu dynamique en lançant le script (Python) obamenu. Un menu dynamique se met à jour tout seul car le script va lire les applications disponibles, les associer à leur icône si elle existe et les afficher par catégorie. Ce script se met en place avec l'installation de openbox-menu (il me semble que l'installation a été faite automatiquement).

Ce script obamenu mérite quelques explications. Pour tout savoir on peut lire son 'man':

$ man obamenu

Malheureusement c'est en anglais. Je ne vais pas le traduire ici, mais essayer d'expliquer son fonctionnement en 'bref'.

obamenu est un script éctrit en Python (il est ainsi multiplateformes Unixlike), tout tient en 1 seul fichier y/c sa configuration qui consiste en quelques lignes au début du fichier (volonté des auteurs de faire quelque chose de simple). Voici les lignes de configuration (par défaut):

  • applications_dirs = ("/usr/share/applications", ) c'est là que toutes les applications installées sont stockées sous forme de fichier descriptif *.desktopIl n'y a rien à faire normalement.
  • image_dir_base = "/usr/share" Pour les images c'est plus compliqué car s'il existe un endroit standard pour déposer les icônes: '/usr/share/pixmaps' tous les OS ne le respectent pas et les emplacements peuvent être multiples comme 'usr/share/icons'. La préconisation des auteurs lorsque l'icône dans votre menu n'apparaît pas, est de créer un lien dans '/usr/share/pixmaps' que obamenu utilise vers l'icône que vous voulez voir. Pour chercher l'icône un $ find /usr/share/icons -name 'foo.*' devrait suffire. (cf. ci-après quelques exemples)
  • icon_Theme = "Humanity" juste pour info car ne sert que pour aller chercher les icônes des catégories sous '/usr/share/icons/Humanity/categories/24'.
  •  image_cat_prefix = "applications-"  là aussi juste pour info. Les noms des icônes des catégories commencent toutes par 'applications-'. A noter que si vous mettez image_cat_prefix = "" cela aura pour effet de supprimer toutes les icones de votre menu, certains préférent ce type de menu simplement textuel.
  • application_groups = ("Office",  "Development",  "Graphics", "Internet",  "Games", "System",  "Multimedia",  "Utilities",  "Settings") Il s'agit là de la définition de vos catégories (groupes d'applications). Ayez en tête que ces catégories apparaîtront dans l'ordre de cette 'liste' donc n'en mettez pas de trop. De plus si cette catégorisation convient au plus grand nombre, on peut comprendre que nous n'ayons pas tous le même profil d'utilisation ce qui nous amène à la ligne suivante:
  •  group_aliases = {"Audio":"Multimedia","AudioVideo":"Multimedia","Network":"Internet","Game":"Games", "Utility":"Utilities", "GTK":"",  "GNOME":""} Nous avons là un dictionnaire qui va nous permettre beaucoup de choses. Chaque paire est l'association d'une clé  qui est la catégorie telle qu'indiquée dans le fichier .desktop et une valeur qui définit la catégorie de destination. En d'autres termes c'est là que vous pourrez définir d'autres associations et/ou de traduire les intitulés (cf. ci-après quelques exemples). A noter les valeurs vides des clés "GTK" et "GNOME" indiquent simplement que l'on ne veut pas voir ce type d'application dans le menu.
  • ignoreList = ("evince-previewer", "Ted",  "wingide3.2", "python3.4", "feh","xfce4-power-manager-settings" ) pas de surprise, ici on énumère les applications (dont le nom complet est suivi de .desktop) que l'on ne veut pas voir pour x ou y raisons dans notre menu.
  • terminal_string = "evte -e" indique à obamenu d'appeler votre émulateur de terminal favori pour les applications qui fonctionne dans une console comme "htop" par exemple.
  • simpleOBheader = False indique que l'on génére un menu.xml complet. Ce menu automatique s'insère directement dans obmenu mais on peut aussi l'envoyer dans un fichier pour traitement personnalisé avant de le renvoyer dans obmenu.

 Voici quelques exemples de modifications:

  1. A ce stade l'application Xarchiver apparaît dans la catégorie 'Utlities' mais sans icône. Si l'on fait une recherche comme indiqué précédemment $ find /usr/share/icons -name 'xarchiver.*' me renvoie 4 réponses sous /usr/share/icons/hicolor/ et rien sous /usr/share/pixmaps. Nous allons donc ajouter un lien de pixmaps vers icons/hicolor comme préconisé:
    $ cd /usr/share/pixmaps/
    $ sudo ln -s /usr/share/icons/hicolor/scalable/apps/xarchiver.svg xarchiver.svg
    Il ne reste plus qu'à renouveler l'opération pour toutes les icônes manquantes.
  2. Mettre un menu en français m'a tenté. J'ai testé la francisation des catégories avec par exemple Development -> Programmation. Pour cela on ajoute dans 'group_aliases' la paire 'Development:Programmation'  et bien sûr il faut remplacer dans 'application_groups' 'Development' par Programmation. Cela fonctionne mais on perd l'icône du groupe car la recherche de l'icône s'effectue sous '/usr/share/icons/Humanity/categories/24/' qui ne comprend que des icônes nommées en ... anglais! Donc pour avoir l'icône il faut comme précédemment créer un lien comme ceci (pour la catégorie 'Programmation'):
    $ cd /usr/share/icons/Humanity/categories/24/
    $ sudo ln -s ./applications-development.svg applications-programmation.svg
    Bien sûr il faut faire de même pour toutes les catégories que vous souhaitez franciser mais comme en principe vous ne modifiez pas les catégories tous les jours cela peut être un bon investissement temps. Attention à mettre les bons noms (les accents sont acceptés) et à ne pas laisser des doublons comme par exemple: "Utility":"Utilitaires" avec "Utility":"Utilities". Une dernière précision si vous créez une catégorie comme "Outils Système" il vous faudra échapper l'espace dans l'intitulé de l'icône comme ceci: 
    $ sudo ln -s ./applications-system.svg applications-outils\ système.svg
    
  3. Toujours à propos de la francisation du nom des applications cette fois, j'avais espéré qu'une simple modification du script de type 'Name' -> 'Name[fr]' dans la fonction 'process_dtfile' marcherait. Mais non, pas pour toutes les applications car certaines (comme 'tint2') ne sont décrite que par 'Name', 'Name[fr] n'existe pas. Même si ce n'est pas recommandé du tout, je n'ai pu m'empêcher d'aller modifier directement le 'Name' indiqué dans le *.desktop de certaines applications comme: PCManFM ('File Manager PCManFM' devient 'PCManFM'), Evince ('Document Viewer' devient 'Evince'), Firefox ('Firefox Web Browser' devient 'Firefox') cela me paraît plus parlant et surtout plus court.
  4. Encore une chose, dans le menu j'ai par exemple un 'File Manager PCManFM' fonctionnel et un 'File Manager' qui génère une erreur. De même j'ai un 'Firefox Web Browser' et un 'Web Browser' et en lien non fonctionnel j'ai un 'Mail Reader', un 'Terminal Emulator' et un 'Preferred Applications'. Pour éviter de voir ces fichiers, le mieux est de passer par la 'ignoreList'. Un '$ ll /usr/share/applications/' montre que ces 5 fichiers commencent tous par 'exo-'. Il nous suffit donc d'ajouter 'exo-' dans la 'ignoreList' pour ne plus voir apparaître ces 5 fichiers.

Il y a encore plein de choses à faire sur le menu comme:

  • l'ajout d'une entrée pour éteindre l'ordi;
  • l'ajout d'applications qui demandent des privilèges administrateur (Gparted, Synaptic). 

mais nous verrons cela dans '10 - Quelques ajustements' car là on a déjà bien customisé. 

    08.4 - Des raccourcis clavier

Pour la personnalisation des raccourcis clavier, cela se passe dans la section "keyboard" du ~/.config/openbox/rc.xml.

Mais on ne va pas s'y pencher tout de suite, car par défaut cela me convient assez, même si sur ce micro j'ai des touches spéciales (je n'aime pas, mais bon je fais avec ce que j'ai). La configuration par défaut permet (je ne cite que ce qui m'a 'surpris' au début) :

  • le basculement d'un programme à un autre par la alt+tab (et pourtant un linuxien vous dira que c'est un classique !)
  • la fermeture d'une fenêtre par clic droit de la souris (sur l'icône apparaissant dans le panel).
  • l'affichage des applis lancées dans chaque bureau par clic milieu

L'écriture (format xml) n'est pas complexe. Sinon un programme Python obkey permet de faire cela graphiquement (mais je n'ai pas essayé).

Pour plus de détails, voir '10 - Quelques ajustements'.

    08.5 Affichage des paramètres système avec Conky

J'aime bien avoir une visibilité sur ce que fait mon ordinateur: charge des processeurs, charge de la RAM, les applis qui tournent, etc. La raison de cette curiosité est que de temps en temps mon micro 'rame', voire 'plante' lorsque je teste mes programmes et avec cette visibilité cela me permet d'agir en toute connaissance de cause.

Vous pourriez être intéressé par des applications comme 'Gnome-system-monitor', 'Xfce4-taskmanager' ou mieux 'LXtask' qui est indépendante de toute plateforme et vient donc toute seule. Mais j'ai mieux, enfin de mon point de vue, 'Conky'. En effet conky est hautement configurable et vous pouvez vraiment afficher tout et n'importe quoi et ce en permanence sur votre bureau (si vous le souhaitez bien sûr).

Sur le net vous trouverez une multitude d'exemples de fichiers de configuration, l'infini des réponses est à l'image de l'infini des configurations. Pour les liens voir ma ma page '5 - Installation Debian - Openbox' même si depuis 2015 des liens ont disparus (à l'image de ceux de la distribution Crunchbang basée sur OpenBox dont le porteur a arrêté le développement fin 2015, mais repris depuis par la communauté sous le nom de Busenlabs). Aujourd'hui sur ce sujet, une bonne page de référence en français pourrait être celle d'Ubuntu-fr : elle couvre bon nombre de points et elle donne de nombreux liens.

Pour ma part je vais aller à l'essentiel :

  1. Si vous aussi vous voulez un Conky et bien passons à l'installation:
     $ sudo apt-get install conky
  2. Créer le dossier /home/<user>/.config/conky avec la commande $ mkdir ~/.config/conky; puis y copier le /etc/conky/conky.conf (ou/et le /etc/conky/conky_no_X11.conf) $ cp /etc/conky/conky.conf ~/.config/conky et voir ce que cela donne en lançant la commande $ conky -c ~/.config/conky/conky.conf. Bon à ce stade il faut reconnaître que cela ne donne pas envie. 
  3. Une lecture du man vous donnera un bon aperçu des commandes/paramètrages possibles, mais en anglais
  4. Il sera alors temps de regarder ce que d'autres ont fait (sur le site officiel de conky par exemple) et d'y puiser ce qui vous plaît.
  5. Et lorsque votre_conky.conf sera au point il ne vous restera plus qu'à ajouter cette ligne conky -c ~/.config/conky/<votre_conky.conf> & dans le fichier ~/.config/openbox/autostart afin qu'il se lance au démarrage de votre machine
Voici ce que donne mon Conky.

my conky

L'IP publique a été volontairement enlevée sur cette image, mais le my_conky.conf (ancienne écriture car permet l'ajout de nombreux commentaires) l'affiche bien.

Je suis arrivé à cette configuration en copiant toutes les petits bouts de code sympa que j'ai trouvés. Je l'ai abondamment commenté afin d'expliquer le pourquoi des choses.

Comme vous pouvez le voir, moi je m'en sers surtout pour avoir une visibilité sur l'état global de mon système (identité, charge CPU, occupation RAM et HD, infos de connexion Internet, process en cours et ports ouverts), mais d'autres vont afficher la météo, le titre de la chanson qu'ils sont en train d'écouter etc, etc.

J'attire cependant votre attention sur:

  • la possibilité de faire des affichages conditionnels, bien utiles pour un portable (connexion Wifi ou filaire par ex.);
  • les couleurs peuvent être définies comme variables et affectées par leur code hexadécimal ou par par leur nom. (cf la page Wikipédia ou celle-ci plus complète à mon sens);
  • la possibilité d'avoir des graphes avec un dégradé de couleur;
  • la possibilité d'éxécuter des scripts avec 'exec <script>' ou 'execi délai <script>' ou mieux 'texec <script>' ou 'texeci délai <script>' ce qui permet d'avoir un affichage de conky sans attendre la fin d'éxecution du (des) script(s);
  • l'instruction goto{nb_pixels} qui permet de positionner précisèment les données affichées. Pour ma part je ne l'ai pas utilisée, laissant conky se dimensionner automatiquement.

Cela dit je suis loin d'avoir exploré toute les possibilités surtout lorsqu'on voit certaines réalisations qui utilisent directement le langage de programmation lua.

Attention, commencer à peaufiner son Conky devient vite addictif ...


09 - Ouvrir sa session en mode graphique

Lancer sa session graphique avec la commande startx cela a son charme, mais un démarrage de session par identification sous mode graphique c'est sympa aussi, surtout si on le modèle comme on le souhaite.

Voici mon écran d'identification:

Mon écran de connexion sous Ubuntu-XDM

On aime ou pas mais c'est original non ?

Pour cela, il faut configurer ce qui s'appelle un Display Manager (ou Session Manager). Des DM, il en existe plusieurs, souvent liés à l'environnement de bureau:

  • GDM pour GNOME Display Manager et donc dépendant de l'environnement Gnome;
  • KDM pour KDE Display Manager et donc dépendant de l'environnement KDE;
  • LXDM pour LXDE Display Manager (mais indépendant de LXDE);
  • MDM pour Mint Display Manager (qui n'est qu'un fork de GDM2);
  • et d'autres complètement indépendants de l'environnement de bureau (DE) installé: LightDM, Qingy, SDDM, SLiM, XDM,  et certainement plein d'autres. Pour vous faire une idée des avantages et inconvénients des uns et des autres vous pouvez jeter un oeil sur "What is the best Linux Display Manager ?"

Pour cette fois j'avais été tenté par lightDM car il offrait à priori une grande customisation (cf. LightDM, l'écran de connexion d'Ubuntu). Mais le nombre de paquets nécessaires (268 alors que GDM3 n'en demande 'que' 264) m'a fait revenir au bon vieux XDM  (X Display Manager) que j'avais déjà installé sous Debian et qui ne demande qu'un seul paquet !

    09.01 - Attention à l'obfuscation des fichiers de configuration de xdm

Je vous épargne la commande d'installation, mais j'attire votre attention sur un point qui m'a surpris. Une fois xdm installé, une fenêtre (énorme et moche) de login s'affiche mais je ne vois pas où elle est paramétrée. En effet les fichiers de configuration habituels (sous /etc/X11/xdm/) existent mais sont vides !.

En fait non ! les fichiers (dont le principal Xresources) ne sont pas vides ils sont simplement précédés de nombreuses lignes vides.

Pourquoi ? je n'en sais rien, cela ressemble à de l'obfuscation de code mais bien sûr ce n'est pas cela (ce serait vraiment très simple). De ce que j'ai compris de ce post (en anglais) gcc (le compilateur) serait en cause ??? Le post date de 2013 donc lors de mon installation de xdm sous Debian, que j'ai commencée en 2013, j'ai eu la chance de passer juste avant la mise à jour car je n'ai pas eu ce genre de souci. Mais bon je ne vais pas perdre mon temps à cela, j'efface les lignes vides et le tour est joué (même si la prochaine mise à jour les remettra très certainement)

    09.02 - Configuration de xdm

Pour la configuration...:

  • ... j'ai continué de suivre ce pdf de Jérôme Desmoulins  (que vous trouverez aussi en local ici) même s'il date de 2000. Il a le gros avantage d'être en français.
  • Sinon il y aussi 'Configuration et utilisation d'XDM' à peine plus ancien (1999) et qui donne une autre lecture.
  • Et pour ceux que l'anglais ne rebute pas il y a XDM Customization (2008) qui donne un écran d'acceuil très complet (avec des boutons de type Marche/Arrêt, avec possibilité de choisir son DE et avec une console de visualisation de message de log).
  • Comme souvent le man est aussi une excellente source d'inspiration mais en anglais (le man en ligne et plus précisément le man xdm d'Ubuntu).
  • Et enfin tous ces posts sont anciens et datent d'avant l'arrivée de Systemd donc lisez-les avec prudence car tout n'est pas d'actualité. J'ai trouvé sur le wiki d'Archlinux un article sur XDM, il est succint et en anglais, se base sur le man, et bien sûr il est typé Archlinux mais il parle de XDM dans un contexte Systemd.

Je n'ai modifié que 2 fichiers: le /etc/X11/xdm/Xsetup, et le /etc/X11/xdm/Xresources. Si vous voulez éviter tout drame vous pouvez faire une copie de ces fichiers (ex. cp /etc/X11/xdm/Xresources /etc/X11/xdm/Xresources.old) avant de les modifier.

Pour info, voici mes 2 fichiers de configuration:

  •  /etc/X11/xdm/Xsetup

Comme indiqué dans le commentaire de ce fichier/script, Xsetup est exécuté juste avant l'affichage de la fenêtre de connexion. C'est l'endroit idéal pour mettre la commande d'insertion d'un fond d'écran.

#!/bin/sh
# This script is run as root before showing login widget.
xloadimage -onroot -quiet -fullscreen -border black /home/freecrazy/Images/Wallpaper/1920x1200_px_Evil_Dead_movies-632720.jpeg

# Pour une capture d'écran qui s'enregistrera sous file=
gnome-screenshot --delay=15 --file=/capture_login_screen.png &

Notes:

  • J'ai du installer 'xloadimage' ($ sudo apt-get install xloadimage) car il n'est pas présent dans les paquets de base. D'autres utilisent 'qiv' plus léger.
  • Bien sûr le chemin du wallpaper vous est propre, il pointe sur l'image que vous voulez avoir en fond d'écran à l'affichage de votre DM. Pour moi, je suis le seul utilisateur et je puise donc dans un dossier Wallpaper que j'ai créé sous mon dossier Images. Pour un PC multi-utilisateurs il serait plus judicieux de créer un répertoire spécifique comme ceci '/root/backgrounds' ou mieux '/usr/local/share/backgrounds'
  • Vous pouvez/devez commenter la ligne relative à gnome-screenshot (sauf si vous voulez enregistrer votre écran de login afin de le partager :-)
  •  /etc/X11/xdm/XResources

C'est le fichier principal de configuration: on y met tous les paramètres modifiables (et ils sont nombreux). J'ai modifié les paramètres qui m'intéréssaient (et que je comprenais). Il y a des parties entières que je n'ai pas touchées car je ne sais pas à quoi elle servent (pour cerner leur utilité il faudrait se lancer dans une lecture assidue du man). Les parties laissées intactes sont en italiques.

xlogin*login.translations: #override \
	Ctrl<Key>R: abort-display()\n\
	<Key>F1: set-session-argument(failsafe) finish-field()\n\
	<Key>Delete: delete-character()\n\
	<Key>Left: move-backward-character()\n\
	<Key>Right: move-forward-character()\n\
	<Key>Home: move-to-begining()\n\
	<Key>End: move-to-end()\n\
	Ctrl<Key>KP_Enter: set-session-argument(failsafe) finish-field()\n\
	<Key>KP_Enter: set-session-argument() finish-field()\n\
	Ctrl<Key>Return: set-session-argument(failsafe) finish-field()\n\
	<Key>Return: set-session-argument() finish-field()

! Dimension et position du widget de connexion (p.m. ma résolution est de 1366x768)
xlogin*geometry:540x250+760+66

! Voici la partie des textes
xlogin*greeting: Bienvenue sur CLIENTHOST
! Par défaut le prompt de l'username est "Login ", on peut préférer celui-ci
xlogin*namePrompt: Utilisateur: 
! Curieusement la ligne suivante ne fonctionne pas (je l'ai donc commentée)
!xlogin*passwdPrompt: MdP:
!xlogin*fail: Login incorrect or forbidden by policy
xlogin*fail: Saisie incorrecte

!! Et maintenant la police (font) des différents textes:
! - la fonte du message de Bienvenue
xlogin*greetFont: -adobe-helvetica-bold-o-normal--17-*-100-100-p-*-iso8859-1
! - la fonte des prompts (Login, Password)
xlogin*promptFont: -adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1
! - la fonte de la saisie utilisateur
xlogin*font: -adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1
! - la fonte du message Login incorrect
xlogin*failFont: -adobe-helvetica-bold-o-normal--12-120-75-75-p-*-iso8859-1

! Pour avoir un affichage de '*' (defaut) lors de la saisie du mdp
xlogin*echoPasswd: true
! Pour un caractère différent de '*', voici la commande pour '@'
!xlogin*echoPasswdChar: @

!! Dessinons notre widget/fenêtre de connexion (qui ne peut être que rectangulaire)
! - définition des bordures
!xlogin*borderWidth: 1
xlogin*frameWidth: 5
xlogin*innerFramesWidth: 2
! - voici les couleurs de la bordure 8d... marron jaune clair, 8b... marron jaune foncé
xlogin*shdColor: #8d7247
xlogin*hiColor: #8b5a17
! - les couleurs du fond
xlogin*background: AntiqueWhite3
! - la couleur des 'prompt' c.a.d Login et password
!xlogin*promptColor: #230102
! Autre possibilité (couleurs extraites des zones sombres de l'image)
xlogin*promptColor: #130302
! - la couleur de la saisie utilisateur
xlogin*foreground: #8b5a17
! - la couleur du message de Bienvenue = marron des yeux de l'image
xlogin*greetColor: #3f0200
! - et efin la couleur du message d'erreur
xlogin*failColor: red

! A noter que l'on peut définir un groupe de couleurs (pour tout ce qui n'a pas été défini par ex.)
!*Foreground: black
!*Background: #fffff0


!#if PLANES >= 8
!xlogin*logoFileName: /usr/share/X11/xdm/pixmaps/ubuntu.xpm
!#else
!xlogin*logoFileName: /usr/share/X11/xdm/pixmaps/ubuntu.xpm
!#endif
!xlogin*useShape: true
!xlogin*logoPadding: 10

! Je ne sais pas trop à quoi cela sert 
xlogin*greetFace:	Serif-18:bold:italic
xlogin*face:		Helvetica-12
xlogin*promptFace:	Helvetica-12:bold
xlogin*failFace:	Helvetica-14:bold

! idem ici
XConsole.text.geometry:	480x130
XConsole.verbose:	true
XConsole*iconic:	true
XConsole*font:		fixed

! et idem ici
Chooser*geometry:		700x500+300+200
Chooser*allowShellResize:	false
Chooser*viewport.forceBars:	true
Chooser*label.font:		*-new century schoolbook-bold-i-normal-*-240-*
Chooser*label.label:		XDMCP Host Menu from CLIENTHOST
Chooser*list.font:		-*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
Chooser*Command.font:		*-new century schoolbook-bold-r-normal-*-180-*

     09.03 - Commentaires sur la configuration de xdm

Ce n'était pas forcément utile, mais bon, comme j'ai galéré sur certains points j'ai préféré apporter quelques précisions.
 
  1. A propos de xlogin*geometry:540x250+760+66 540x250 représente la dimension du widget et 750+66 la distance du coin haut-gauche du widget par rapport au côté gauche et haut. Cette ligne est facultative, d'ailleurs elle n'existe pas par défaut, la géométrie est alors calculée automatiquement. Les dimensions se déterminent selon vos besoins/envies et vos goûts, idem pour la position avec une différence tout de même: autant un positionnement dans le coin haut/gauche de l'écran est simple (10+10 par exemple) autant les autres positionnements sont plus difficiles. Pour cela il vous faut connaître les dimensions de votre écran grâce à soit xrandr ou xdpyinfo (pour en savoir plus: le man, ou ces post1, post2)  comme ceci:
    Connaître les dimensions de son écran
    J'ai donc une résolution de 1366x768. Pour un placement 'centré' en haut/droit, le calcul de l'espace entre le bord droit du widget et le bord droit de l'écran donne: 1366 - 540 - 760 = 66 ce qui sera mon espace entre le haut de mon widget et le haut de l'écran. (Nota: la perception cependant donne l'illusion d'un espace plus petit à droite, c'est pourquoi j'ai modifié mon positionnement horizontal à 750)  
  2. Sur la partie des textes: on peut modifier les textes qui apparaissent dans la fenêtre de connexion: le message de bienvenue (xlogin*greeting), les textes avant la saisie utilisateur  (xlogin*namePrompt et xlogin*passwdPrompt, mais cette dernière ne fonctionne pas - certainement du au mécanisme d'authentification) et enfin le texte en cas de saisie incorrecte (xlogin*fail). Bien sûr on pourra définir leur police ainsi que leur couleur.
  3. Le paramétrage des bordures est à priori simple à comprendre: 'xlogin*frameWidth' et 'xlogin*innerFramesWidth' sont respectivement les largeurs de la bordure de la fenêtre de connexion et celle de la saisie utilisateur. Par défaut elles sont à 1, donc si vous n'en voulez pas il faut les mettre à 0. 'xlogin*borderWidth' est par contre plus enigmatique ! Il n'est pas décrit dans le man mais apparaît dans un exemple. J'ai essayé différentes valeurs et combinaisons mais cela n'a rien modifié, je l'ai donc enlevé (ici commenté).
  4. A propos des couleurs: il est possible de les nommer (ex: 'red') et la correspondance entre la palette de couleur RGB et nom se trouve dans  un  fichier  nommé  rgb.txt, vous le trouverez sous '/etc/X11/rgb.txt' et sous '/usr/share/X11/rgb.txt'. Pour ma part j'aime utiliser des couleurs rappelant l'image. Pour cela j'utilise la pipette de l'application Gimp sur l'image afin d'obtenir "l'identifiant HTML" d'une couleur, ce qui est noté sous forme hexadécimal à 6 chiffres précédée du #. 

10 - Quelques ajustements

    10.1 - Peaufiner son menu

        10.1.1 - Eteindre son ordinateur

Bon je suppose que vous êtes fatigué de taper '$ sudo poweroff' pour éteindre l'ordinateur. Je comprends, cela me fatigue aussi. Pourtant il est très simple d'ajouter une entrée pour éteindre l'ordinateur il est possible par exemple (inspiration ce lien d'ArchLinux) d'écrire dans le fichier '~/.config/openbox/menu.xml' (ou via obmenu ce qui est nettement plus simple) :

<item label="Redémarrer">
    <action name="Execute">
        <execute>systemctl reboot</execute>
    </action>
</item>
<item label="Eteindre">
    <action name="Execute">
        <execute>systemctl poweroff</execute>
    </action>
</item>

Moi cela me suffit amplement. Cependant d'autres voudront aussi la suspension, l'hibernation, ... bref la totale. Et bien le paquet 'obsession' est fait pour eux. Normalement il est déjà installé, et si ce n'est pas le cas vous savez ce qu'il vous reste à faire. 'obsession' s'utilise de 2 manières:

  • une graphique grâce à 'obsession-logout' qui vous donne ceci: 
    obsession-logout
  • et une en version ligne de commande: 'obsession-exit'. Avec cette dernière le fichier '~/.config/openbox/menu.xml' peut devenir:
    <item label="Suspendre">
        <action name="Execute">
            <execute>obsession-exit --suspend</execute>
        </action>
    </item>
    <item label="Redémarrer">
        <action name="Execute">
            <execute>obsession-exit --reboot</execute>
        </action>
    </item>
    <item label="Eteindre">
        <action name="Execute">
            <execute>obsession-exit --poweroff</execute>
        </action>
    </item>
Cette dernière configuration me convient bien, elle ne prend que 3 lignes dans le menu qui sont ainsi directement accessibles. Maintenant si vous voulez aussi les autres options, l'utilisation d'obession-logout me semble plus judicieux car cela ne prendra qu'une ligne dans votre menu.
 

        10.1.2 - Ajout d'applications qui demandent des privilèges administrateur

Si vous avez essayé d'ajouter des applications qui demandent des privilèges administrateur comme Gparted ou Synaptic, vous avez certainement connu quelques contrariétés: ordinateur qui plante, application qui ne se lance pas, ...

On ne peut effectivement pas mettre ces applications dans le menu dynamique, je les mets donc sous un menu via 'obmenu' que j'ai appelé 'Système (admin)'.

Il n'y a pas si longtemps, on lançait ces applications via 'gksu' qui nous ouvrait une fenêtre de demande de mot de passe. Mais maintenant, pour une raison que je n'ai pas encore bien comprise, 'gksu' est supprimé des packages Ubuntu et Debian, car jugé 'non secure'. Très bien, SAUF ... qu'on a rien pour le remplacer ! (du moins je n'ai pas trouvé)

Voici quelques liens qui tentent d'expliquer (mais en anglais):

Bon je n'arrive pas à utiliser 'pkexec' (et à la lecture des posts cités précédemment ce ne serait pas étonnant).

Du coup j'ai trouvé une solution de contournement (autre que ré installer 'gksu' à partir d'un ancien dépôt): dans le menu j'utilise la commande la commande "x-terminal-emulator -e "sudo gparted" ou mieux "xfce4-terminal --hide-scrollbar --hide-menubar --geometry 60x5 -e "sudo gparted". Ne pas oublier alors de mettre "gparted" dans la ignore-list de /usr/bin/obamenu.

J'ai fait de même pour 'synaptic' un gestionnaire graphique de paquets. Je sais, certains ne jurent que par apt-get, mais pour ma part j'en ai un peu marre de lancer des recherches à grands renforts de apt-cache search <mots clefs> ou de visualiser le descriptif avec apt-cache show <paquet> alors qu'avec synaptic on a tout sous la main ... enfin sous les yeux, donc:

$ sudo apt-get install synaptic

Comme précédemment ne pas oublier de l'enlever du menu dynamique en ajoutant 'synaptic' dans la ignore-list de /usr/bin/obamenu.

    10.2 - Obtenir un touchpad pleinement fonctionnel avec libinput

Mon HP (un Pavilion dv6) possède un touchpad sans touche physique visible (mais en appuyant un 'peu fortement' sur les touches dessinées du touchpad on déclenche un clic). Pour un fonctionnement optimal il va falloir régler le touchpad aux petits oignons.

Pour fignoler le touchpad (driver synaptics en général) il est de bon ton de s'instruire un peu et de se coltiner un peu de lecture:

  • La page touchpad de la doc-ubuntu aidera un peu: elle est en français, explique les paramètres principaux du driver synaptics, mais elle est parfois en contradiction avec d'autres documents: par exemple elle préconise d'initialiser l'option "SHMConfig" à True alors que cette option est dorénavant retirée; le driver synaptics serait dorénavant non plus dans le paquet xserver-xorg-input-synaptics mais dans xserver-xorg-input-libinput installé par défaut sous Ubuntu 18.04 Bionic, alors que la documentation Debian indique qu'il faut aussi accompagner xserver-xorg-input-libinput des paquets xserver-xorg-input-evdev et xserver-xorg-input-mouse. Qui croire ?
  • La page de Debian se lit bien aussi, elle est cependant plus succinte mais elle donne un (tout petit) exemple de configuration pour libinput ! qui comme je m'en rendrai vite compte est assez obscur dans sa compréhension.

Ces 2 pages vous donneront les indications pour connaître votre matériel (l'installation du paquet xinput sera des plus utiles).

Maintenant voyons comment configurer tout cela, si besoin.

Comme dit plus haut, pour cette version Bionic d'Ubuntu le pilote touchpad Synaptics est installé via le paquet xserver-xorg-input-libinput et non par le paquet xserver-xorg-input-synaptics. Est-ce que cela suffit ? Pour mon micro, apparemment non ! Le curseur suit bien le déplacement du doigt mais pour ce qui est des clics ... et bien rien ne se passe. En fait comme l'indique la page de Debian il faut activer l'option Tapping qui ne l'est pas par défaut pour éviter de perturber l'utilisateur qui ne saurez pas ce que c'est un 'tap' (à lire ici en anglais) ...

Pour utiliser libinput, le paquet libinput-tools sera utile (mais pas indispensable) au moins pour voir quels sont les équipements couverts et leurs options associées avec la commande:

$ sudo libinput list-devices

commande qui retourne pour la partie TouchPad:

Device:           SynPS/2 Synaptics TouchPad
Kernel:           /dev/input/event5
Group:            9
Seat:             seat0, default
Size:             91x52mm
Capabilities:     pointer 
Tap-to-click:     disabled
Tap-and-drag:     enabled
Tap drag lock:    disabled
Left-handed:      disabled
Nat.scrolling:    disabled
Middle emulation: disabled
Calibration:      n/a
Scroll methods:   *two-finger edge 
Click methods:    *button-areas 
Disable-w-typing: enabled
Accel profiles:   none
Rotation:         n/a

Bon c'est certain, il y a moins d'options qu'avec l'ancien driver synaptics mais c'est voulu par souci de simplification, pour éviter toute incohérence et faciliter le travail du mainteneur (cf. ce lien en anglais pour les explications).

Attention:

  • comme l'indique le man, la configuration retournée par cette comande 'libinput list-devices' est celle par défaut et absolument pas celle qui est en cours (sauf si vous n'avez rien modifié évidemment). Elle sert donc essentiellement au début pour vous montrer les options possibles et celles activées par défaut (les 'enabled' et les * comme ici la méthode de défilement -Scroll methods- par un glissé de 2 doigts)
  • remarquez que par défaut le 'Tap-to-click' (ou 'Tapping') est désactivé et de ce fait les autres options activées sont inopérantes.

En documentation je n'ai trouvé que celle-ci en anglais, et de mon point de vue mal foutue: je n'ai pas trouvé, par exemple, comment décrire les options. Mais en fait c'est assez simple. Il faut commencer par créer son fichier de configuration sous /etc/X11/xorg.conf.d/ pour cela le plus simple est de copier celui présent sous /usr/share/X11/xorg.conf.d/40-libinput.conf, comme ceci;

$ sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-my_libinput.conf

Ce fichier contient:

# Match on all types of devices but joysticks
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput tablet catchall"
        MatchIsTablet "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Pour l'instant seule la section touchpad nous intéresse. Et nous allons tout de suite activer le 'Tap-to-click' (appelé aussi 'Tapping') qui, comme nous l'avons vu n'est pas activé par défaut. Pour cela il suffit d'ajouter dans la section du touchpad:

Option "Tapping" "on"

Et une relance plus tard (avec par ex. $ systemctl restart xdm), le 'Tap-to-click' est effectif ainsi que le 'Tap-and-drag' et le 'Scroll methods' à 2 doigts qui sont activés par défaut. On a donc l'équivalent du clic gauche de la souris et on peut surligner du texte, déplacer une fenêtre ou un curseur.

Maintenant j'aimerai bien avoir le scrolling (défilement) effectif sur les bords: vertical droit et horizontal bas. Comment fait-on cela ? La page de configuration est diserte sur les possibilités mais sur le 'comment' elle n'est pas très explicite (et c'est un euphémisme). Pour trouver les options il faut lire le man de libinput(4) alors qu'un 'man libinput' donne le man de libinput(1). Cela se fait avec la commande:

$ man 4 libinput 

Et là on trouve notre bonheur mais en anglais. Le 'man xorg.conf' pourra être aussi d'une lecture utile. Bon là on sait (enfin presque) quoi mettre dans le fichier de configuration. Par exemple pour revenir au scrolling, le 'man 4 libinput' indique:

Option "ScrollMethod" "string"
              Enables  a  scroll method. Permitted values are none, twofinger,
              edge, button.  Not all devices support all options, if an option
              is  unsupported,  the  default  scroll option for this device is
              used.
et plus loin:
libinput Scroll Methods Available
              3 boolean values (8 bit, 0 or 1), in order "two-finger", "edge",
              "button".  Indicates which scroll methods are available on  this
              device.
En clair on autorise le défilement selon une méthode 2 doigts, sur le bord (edge) ou via un bouton. Donc ajouter une ligne
Option "ScrollMethod" "edge" # ou 0 1 0 à la place de "edge"
au fichier de configuration activerait le scrolling vertical par glissé du doigt sur le bord droit.

Mais si on veut tester les commandes (comme on peut le faire avec synclient qui venait avec le paquet xserver-xorg-input-synaptics) on peut/doit utiliser xinput comme ceci (cf.ce point de la FAQ):

$ xinput set-prop "the device name" "the property name" value [value2] [value3]

Cette fois c'est la lecture du manuel 'man xinput' qui nous sera utile. Elle nous apprend entre autres que:

  • "device can be the device name as a string or the XID of the device". et que "property can be the property as a string or the Atom value" donc si on veut raccourcir la ligne de commande avec un chiffre -XID- ou des valeurs au lieu de longues chaînes de caractères. Par ex. chez moi "the device name" = "SynPS/2 Synaptics TouchPad" peut être remplacé par ... 12. Comment trouver ces XID ? ...
  • ... c'est là qu'intervient une autre option (facultative d'ailleurs) de la commande xinput: --list:
xinput
Le TouchPad a donc pour identification id=12 (cela peut être différent chez vous et même variable: ici par ex. une souris est installée, si vous l'enlevez l' id du touchpad devient 11). On peut aller plus loin en 'chargeant' la commande xinput --list (cette fois --list est obligatoire) avec l'option --long. Essayez ... mais ce n'est pas ce qui sera utile par la suite.
  •  Par contre l'option --list-props nous permettra de découvrir les paramètres activés comme ceci:
xinput --list-props ToucPad
On remarque que:
  1. on a 2 lignes par paramètre: ce qui est activé et ce qui devrait l'être par défaut. Ainsi dans les premières lignes on retrouve "libinput Tapping Enabled (298):    1" pour signifier que le tapping est actuellement activé et "libinput Tapping Enabled Default (299):    0" pour nous dire que par défaut il ne l'est pas.
  2. chaque ligne comprend un chiffre entre parenthèses, ce dernier peut remplacer "the property name" dans la commande 'xinput  set-prop'. Essayer par exemple de désactiver le tapping avec:
$ xinput set-prop 12 298 0

C'est moins parlant que:

$ xinput --set-prop "SynPS/2 Synaptics TouchPad" "Tapping" "off"

(qui ne marche pas d'ailleurs) mais c'est plus court !

Bon là je pense qu'avec le "man 4 libinput" et le "man xinput" je suis paré pour configurer ce que je souhaite.

Je reviens à mon défilement vertical et horizontal sur les bords:

$ xinput set-prop 12 283 0 1 0  # active le défilement par glissé sur les bords;
                                # nous avons le vertical ET l'horizontal puisque ce dernier est activé par défaut
$ xinput set-prop 12 280 1      # pour activer le défilement naturel (un glissé vers le bas fait défiler le texte vers le bas)

Maintenant j'aimerai qu'un tap sur la zone du bouton droit active un clic droit: mais je n'y arriverai pas (est-ce possible ?)

Donc actuellement je fonctionne avec un tap à 2 doigts qui équivaut à un clic droit. Cela reste assez aléatoire, mais j'ai remarqué que si les 2 doigts sont sur les zones 'droite' et 'gauche' j'obtiens un fonctionnement correct.

Faut-il rester avec ce driver libinput ou (re)passer sous synaptics ?

La question se pose car si les fonctionnalités principales sont là certains voudront retourner au fonctionnement plus modulable de l'ancien driver synaptics. Pour cela il faut installer le paquet xserver-xorg-input-synaptics.

Nota:

  • Il vaut mieux laisser le paquet libinput en place car sous Ubuntu il vient avec le paquet xserver-xorg-input-all qui une fois supprimé vous prive de clavier dès que vous passez en mode graphique ...
  • Dans une page de la doc Debian on peut lire ceci: "Vous pouvez faire en sorte que le pilote synpatics ait la priorité sur libinput en copiant /usr/share/X11/xorg.conf.d/50-synaptics.conf dans /etc/X11/xorg.conf.d, ce qui lui donnera la priorité sur le fichier de configuration de libinput qui se trouve à /usr/share/X11/xorg.conf.d/90-libinput.conf.". Certes, mais comme j'ai mis une config 40-my_libinput.conf sous /etc/X11/xorg.conf.d cela ne fonctionnera que si vous supprimez ce fichier.
  • Ce paquet vient avec la commande synclient qui permet de modifier en live les options de fonctionnement du touchpad (attention pour les rendre persistante il faudra les écrire en dur dans votre fichier de configuration à créer: sous /etc/X11/xorg.conf.d comme nous le verrons cela plus loin).

Juste après l'installation du paquet synaptics et sans rien configurer cela ne marche pas trop mal, j'ai le défilement vertical sur le bord droit, le clic gauche avec un 'tap' sur le touchpad, le clic droit avec un 'tap' sur le coin inférieur gauche. Mais ce n'est pas ma configuration idéale.

Pour rappel à ce stade le système cherche un fichier de configuration personnalisé sous /etc/X11/xorg.conf.d mais s'il n'existe pas il va lire le fichier /usr/share/X11/xorg.conf.d/70-synaptics.conf. Chez moi ce fichier contient ceci:

# Example xorg.conf.d snippet that assigns the touchpad driver
# to all touchpads. See xorg.conf.d(5) for more information on
# InputClass.
# DO NOT EDIT THIS FILE, your distribution will likely overwrite
# it when updating. Copy (and rename) this file into
# /etc/X11/xorg.conf.d first.
# Additional options may be added in the form of
#   Option "OptionName" "value"
#
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
# This option is recommend on all Linux systems using evdev, but cannot be
# enabled by default. See the following link for details:
# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
      MatchDevicePath "/dev/input/event*"
EndSection

Section "InputClass"
        Identifier "touchpad ignore duplicates"
        MatchIsTouchpad "on"
        MatchOS "Linux"
        MatchDevicePath "/dev/input/mouse*"
        Option "Ignore" "on"
EndSection

# This option enables the bottom right corner to be a right button on clickpads
# and the right and middle top areas to be right / middle buttons on clickpads
# with a top button area.
# This option is only interpreted by clickpads.
Section "InputClass"
        Identifier "Default clickpad buttons"
        MatchDriver "synaptics"
        Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
        Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%"
EndSection

# This option disables software buttons on Apple touchpads.
# This option is only interpreted by clickpads.
Section "InputClass"
        Identifier "Disable clickpad buttons on Apple touchpads"
        MatchProduct "Apple|bcm5974"
        MatchDriver "synaptics"
        Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
EndSection

Comme je ne suis pas sur un Apple, je peux supprimer sans problème la dernière section.

Voici maintenant ce que me retourne la commande synclient (sur votre micro les valeurs peuvent être différentes mais globalement vous avez cette structure)

Parameter settings:
    LeftEdge                = 1766
    RightEdge               = 5378
    TopEdge                 = 1627
    BottomEdge              = 4331
    FingerLow               = 25
    FingerHigh              = 30
    MaxTapTime              = 180
    MaxTapMove              = 230
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 282
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = 104
    HorizScrollDelta        = 104
    VertEdgeScroll          = 1
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 0
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.0381316
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 2
    RBCornerButton          = 3
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 0
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 0
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 0
    PalmMinWidth            = 10
    PalmMinZ                = 200
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect        = 1
    GrabEventDevice         = 0
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 8
    VertHysteresis          = 8
    ClickPad                = 1
    RightButtonAreaLeft     = 3572
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 3984
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0

En comparant les 2 fichiers on arrive à deviner l'impact de quelques options mais c'est loin d'être super limpide (du moins pour moi).

Lire le 'man' est un bon début pour y comprendre quelque chose, mais c'est en anglais (même lorsqu'on installe la version française du manpages-fr).

Ci-après je vais détailler ma configuration pas à pas. Cela ne correspondra certainement pas à ce que vous voulez vous, mais au moins cela vous permettra de comprendre l'impact de certaines options. Je passerai de manière temporaire les actions via synclient afin de constater l'effet mais n'oubliez pas si rien ne se passe c'est certainement que votre touchpad ne le permet pas (je pense notamment aux options multitouches c.a.d les options nécessitant le 'tap' avec 2 ou 3 doigts)

Tout d'abord, pour créer votre propre fichier de configuration, le plus simple est de copier /usr/share/X11/xorg.conf.d/70-synaptics.conf dans le dossier que vous avez créé /etc/X11/xorg.conf.d (vous pouvez bien sûr le renommer, moi je l'ai nommé 70-my_synaptics.conf).

Une remarque préalable: vous aurez remarqué que le fichier de configuration défini peu d'options alors que synclient en liste beaucoup cela signifie tout simplement que les options ont leur valeur par défaut. Mais ce n'est pas tout, car vous découvrirez aussi d'autres paramètres dans le man qui n'apparaissent pas dans le retour de synclient, c'est là que l'on mesure la richesse de configuration. Je ne vais pas ici passer en revue toutes les options, seulement celles qui me paraissent intéressantes, cela éliminera bon nombre de paramètres à valeur entière qui sont 'user' dépendants (elles définissent des dimensions, des temps, ...).

  • VertEdgeScroll à 1 définit le défilement vertical par un glissé sur le côté droit du touchpad. Cela me convient. Mais le sens ne me convient pas car moi quand je glisse mon doigt vers le haut je m'attends à ce que le texte défile vers le haut et non vers le bas (par contre qu'il faille descendre "l'ascenseur" pour aller vers le bas d'un texte ne me perturbe pas !!). Pour cela il faut modifier ...
  •  VertScrollDelta et lui attribuer une valeur négative, donc ici remplacer sa valeur 104 par -104. Pour tester, lancer la commande $ synclient VertScrollDelta=-104
  • Quand est-il du défilement horizontal / HorizEdgeScroll ? Par défaut il n'est pas activé, pour tester lancer la commande $ synclient HorizEdgeScroll= 1. Maintenant en glissant le doigt sur le bas du touchpad nous avons notre défilement. Mais comme précédemment un glissé vers la droite envoie le texte vers la gauche (et le curseur vers la droite). Pour inverser ce fonctionnement il faut procéder comme précédemment: $ synclient HorizScrollDelta=-104 
  • On arrive à l'option désactivée CornerCoasting. Cette option permet de prolonger le défilement si votre doigt, en fin de glissade, reste dans le coin. A essayer, vous savez comment faire maintenant ... Note: pour un effet plus marqué vous aurez certainement à augmenter la valeur de CoastingSpeed. Pour ma part le fonctionnement conventionnel (par défaut) me convient, à savoir un coasting activé avec l'option CoastingSpeed différente de 0 et l'option CornerCoasting désactivée; ainsi le défilement continue après relève du doigt selon la vitesse du 'glissé'. (Ce que libinput ne permet pas, ou alors j'ai pas trouvé)
  • VertTwoFingerScroll et HorizTwoFingerScroll sont assez compréhensibles; c'est l'occasion de voir si le touchpad est multitouch. Le défilement à 2 doigts ne m'intéresse pas, je lui préfère le défilement précédent sur les côtés. Donc je désactive.
  • TouchpadOff est à 0 ce qui indique un touchpad actif ce qui est normal sinon on ne s'embêterait pas à essayer de le paramètrer. Notez que cette  option prend 3 valeurs: 0 = touchpad actif, 1 = touchpad inactif (sauf les boutons physiques éventuels), 2 = seuls les 'tap' et les défilements sont inactifs (pour plus de précisions cf. le man)
  • RTCornerButton, RBCornerButton, LTCornerButton, LBCornerButton définissent le comportement des coins: droit (Right) ou gauche (Left), haut (Top) ou bas (Bottom) reprenant les évènements de la souris: 0= désactivé, 1 = clic gauche, 2 = clic milieu, 3 = clic droit. J'avoue ne jamais me servir du clic milieu, il a des actions trop dépendantes de l'application en cours. Donc je désactive RTCornerButton. Par contre je laisse RBCornerButton à 3 pour simuler le clic droit et LBCornerButton peut rester à 0 car un tap n'importe où sur le touchpad simule le clic gauche. (Cela aussi libinput ne le permet pas)
  • TapButton1, TapButton2, TapButton3 définissent respectivement le comportement d'un tap avec 1 doigt, 2 doigts, 3 doigts. Donc ici, un tap avec 1 doigt équivaut à un clic gauche de souris, et un tap avec 2 doigts équivaut à un clic droit de souris, le tap avec 3 doigts est désactivé. Je laisse comme cela. (Et cette fois le tap à 2 doigts est plus efficace que celui avec libinput)
  •  ClickFinger1, ClickFinger2, ClickFinger3 là je ne sais pas. Je ne comprends pas ce que dit le man "Which mouse button is reported when left-clicking with one/two/three finger." du coup j'ai désactivé.
  • CircularScrolling, permet un défiment par un glissé rotatif (comme lorsqu'on tourne un bouton) ce n'est pas l'option indispensable, je laisse désactivée.
  • PalmDetect est plus intéressant car activée (et si le matériel le permet) cette option permet de ne pas prendre en compte des touchers 'hors normes" comme votre paume lorsque vous tapez au clavier. J'active mais j'ai l'impression que cela ne fonctionne pas (ceci dit je ne suis pas super rapide au clavier)
  • L'option TapAndDragGesture, activée par défaut permet de surligner du texte, de déplacer une fenêtre, etc. en bougeant le doigt au 2ième tap consécutif. Ca me va.
  • AreaLeftEdge, AreaRightEdge, AreaTopEdge, AreaBottomEdge sont à 0, et c'est très bien ainsi car ces options permettent de délimiter un touchpad plus petit que le touchpad physique.
  • ClickPad est activé et les zones des boutons virtuels: RightButtonAreaLeft, RightButtonAreaRight, RightButtonAreaTop, RightButtonAreaBottom, ..., correctement définies, mais cela ne fonctionne pas.

 Malgré ce dernier point je commence à avoir un fonctionnement qui ressemble à ce que je souhaite, il est temps de l'écrire en 'dur' dans mon fichier de configuration /etc/X11/xorg.conf.d/70-my_synaptics.conf. J'y ajoute donc ces lignes dans  la section avec pour Identifier "touchpad catchall"

    Option "VertScrollDelta" "-104"  # Change le sens du défilement vertical
    Option "HorizEdgeScroll" "1"  # Active le défilement horizontal
    Option "HorizScrollDelta" "-104"
    Option "VertTwoFingerScroll" "0"  # Ne m'intéresse pas => je désactive
    Option "RTCornerButton" "0"  # Je désactive l'émulation par défaut du bouton du milieu 
    Option "PalmDetect" "1"  # Comme son nom l'indique

    10.3 - Peaufiner ses raccourcis clavier

À écrire.

    10.4 - Peaufiner sa gestion des connexions Wi-Fi

Ou comment ne pas configurer sa connexion WiFi manuellement avec Wicd.
À écrire.

    10.5 - Se constituer sa bibliothèque de logiciels

  À écrire.

Actions sur le document