Outils personnels
Vous êtes ici : Accueil Linux Tests et installations: Debian, LMDE, Mageia, etc. 5 - Installation Debian - Openbox

5 - Installation Debian - Openbox

Par Freecrazy - Dernière modification 19/10/2016 21:36

Je pars de la version Squeeze de Debian afin de montrer également les mises à jour. Comme environnement de bureau j'installe OpenBox car c'est l'une des plus légères donc parfaite pour les micros anciens. Et l'installation sera complète puisque je partirai de l'installation minimale de Debian (accès console seule !) et j'ajouterai les briques nécessaires au fur à mesure.

ATTENTION: Cet article a débuté avec la version Squeeze (6.x) de Debian et s'est terminé fin 2014 avec la version Wheezy (7.x). Je l'ai souvent écrit en différé car la Debian Openbox est vite devenue mon environnement privilégié pour travailler sur mes sites web et mes programmes. Mais de fait en me relisant, je trouve cet article un peu brouillon et c'est peut-être comme tel qu'il faut le considérer. C'est vrai il appartient à la rubrique Test, mais je pense avoir trouvé mon bonheur avec cette Debian-Openbox y/c pour un ordinateur de bureau. Donc prochainement j'ouvrirai une rubrique spécifique Debian, avec la re écriture complète de cet article et ce sur une seule version de Debian.

 

Le micro est le HP-Compaq 6710b décrit précédemment.

Sur l'installation de base je vais aller assez vite, car cela se trouve partout et reste assez aisé (que ce soit en mode graphique ou texte). En voici, les grandes étapes

  1. Choix du pays de la langue et du clavier
  2. Demande de charger le microcode manquant: iwlwifi-3945-2.ucode, iwlwifi-3945-2.ucode. Vous trouverez facilement ce code sur Internet
  3. Initialisation des Identifiants/mot de passe de root (administrateur) et utilisateur
  4. Au partitionnement: Assisté - utiliser tout un disque avec LVM (cf. capture d'écran sous /var/log/)
  5. Partitions /home, /usr, /var et /tmp séparées
  6. Attention à partir de là tout votre disque dur va être effacé pour accueillir votre nouvelle installation (et n'oubliez pas d'enlever la clé USB que vous avez utilisée précédemment pour charger le micro code WiFi)
  7. Une question sur votre participation à une étude statistique sur l'utilisation des paquets (cf. http://popcon.debian.org/). Vous pourrez modifier ultérieurement votre réponse (oui/non) avec "dpkg-reconfigure popularity-contest"
  8. Logiciels à installer: je ne garde que 'Ordinateur portable' et 'Utilitaires standard du système' (je décoche donc Environnement graphique de bureau)
  9. Installation du programme de démarrage GRUB. Comme ici c'est le seul système installé sur le disque dur, on peut sans crainte répondre oui à l'installation de Grub sur le secteur d'amorçage.

Voilà, un redémarrage plus tard, je me retrouve devant mon écran en mode texte.

1 - La première chose que je voulais faire était de me connecter en Wi-Fi.

Oui, cela peut sembler curieux, mais je voulais tester cette possibilité d'établir une connexion WiFi purement en ligne de commande. Et c'est plus simple qu'il n'y paraît.

Nota 1: 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), et avec attribution d'adresse par DHCP (ce que fait aujourd'hui toutes 'box' ou point d'accès).

Nota 2: Pour en savoir plus rien de tel que la documentation Debian sur la configuration WiFi.

Dans un premier réflexe j'ai voulu installer network-manager car souvent (pour ne pas dire toujours) utilisé dans les distributions Linux que j'ai eu l'occasion de tester. Cependant après lecture de plusieurs post et articles je me suis rendu compte que ce n'est pas la façon la plus simple de démarrer En effet NetworkManager "ne sert qu'à" gérer les connections nomades, et si la connexion sur un nouveau réseau se fait facilement par son applet graphique (nm-applet que pour l'instant je ne peux avoir), c'est plus complexe en ligne de commande.

Donc, pour l'instant, le mieux est d'oublier ces gestionnaires de réseau que sont NetworkManager, Wicd, ou autre ifplugd, et de se contenter d'établir "en dur" une liaison WiFi. Comme nous sommes en WPA, nous utiliserons wpa_supplicant qui est le client permettant de traiter les connexions cryptées en WPA,  mais ce de manière transparente. En effet le paquet wpasupplicant fournit les options qui vont bien pour lancer une connexion WiFi décrite dans /etc/network/interfaces.

Il suffit donc d'ajouter au fichier /etc/network/interfaces:
# nano /etc/network/interfaces
auto wlan0  # wlan0 est en principe le nom de votre interface wifi (iwconfig),
            # auto permet le lancement au démarrage
iface wlan0 inet dhcp
    wpa-ssid <nom de votre réseau>    # Avec ou sans guillemets
    wpa-psk <votre mot de passe>      # Idem

Et pour démarrer votre interface et ainsi lancer wpa-supplicant en tâche de fond:

# ifup wlan0

Remarques:

  1. Bien évidemment assurez vous que le paquet wpasupplicant est bien installé, essayez par exemple
    # wpa_supplicant -v
    qui avec installation minimale de Debian Squeeze, vous retourne, wpa_supplicant v0.6.10
  2.  Assurez vous aussi que si vous avez installé NetworkManager ce dernier est bien désactivé, c'est à dire que sous /etc/NetworkManager/NetworkManager.conf vous avez bien la ligne managed=false

2 - Mise à jour

Oui avant toute chose, je préfère travailler avec une version à jour. Par contre je vais rester pour l'instant sous Squeeze (6.0), car je veux tester le changement de version avec un système déjà bien 'chargé'.

Donc pour la mise à jour, il nous faut définir les dépôts (adresse Internet où sont stockés tous les paquets de la distribution). Si l'application graphique Synaptic est très performante et très facile d'utilisation, elle ne nous est pas accessible pour le moment, donc nous allons procéder en ligne de commande.

Avant toute chose, un petit rappel des catégories des dépôts Debian:

  • main est la section principale qui regroupe tous les paquets libres de la distribution
  • non-free contient comme son nom l'indique tous les paquets non libres ou qui ne respectent pas les principes du logiciel libre selon Debian
  • contrib enfin est un peu particulière car elle regroupe des paquets libres mais dont certaines dépendances appartiennent à la section non-free

A minima il vous faudra garder 'main', l'ajout des 2 autres est à votre convenance.

Maintenant un petit tour sur les dépôts officiels de Debian, ceux-ci vous garantissent une stabilité et la sécurité de votre système. En voici la liste:

  • deb http://ftp2.fr.debian.org/debian/  squeeze main non-free contrib
  • deb-src http://ftp2.fr.debian.org/debian/  squeeze main non-free contrib
  • deb http://security.debian.org/  squeeze/updates main non-free contrib
  • deb-src http://security.debian.org/  squeeze/updates main non-free contrib
  • deb http://ftp2.fr.debian.org/debian/  squeeze-updates main non-free contrib
  • deb-src http://ftp2.fr.debian.org/debian/  squeeze-updates main non-free contrib

Une fois que vous serez plus à l'aise avec cette distribution, vous découvrirez d'autres dépôts plus ou moins "exotiques". Vous serez tenté de les ajouter, encore et encore, mais attention, la multiplication des dépôts et notamment les non-officiels augmente le risque d'instabilité, donc refrénez-vous et n'ajoutez des dépôts que si vous en avez vraiment besoin.

Mais signalons tout de suite, 2 dépôts que vous trouverez certainement utiles, voire indispensables:

  • deb http://www.deb.multimedia.org/  squeeze main non-free
  • deb http://backports.debian.org/debian-backports/  squeeze-backports main

L'intitulé du premier est assez explicite, mais le second mérite un peu d'explications. Le dépôt backports permet d'obtenir des versions de logiciel plus récentes que celles proposées dans les dépôts courants.

Bon, on la fait cette mise à jour ?

La commande pour tout ce qui concerne les paquets (les logiciels téléchargés pour installation sont "empaquetés") est apt-get (1). Il nous faut d'abord lui indiquer  où se trouve des dépôts, pour cela il nous faut éditer le fichier sources.list

# nano /etc/apt/sources.list

On y commente (mettre un # en début de ligne) la ligne "deb cdrom: ..." et on ajoute en fin de fichier les 6 lignes des dépôts officiels cités précédemment.

Ensuite on met à jour l'index (liste des paquets installables):

# apt-get update

Puis on met à jour les applications qui doivent l'être:

# apt-get upgrade

Et voila notre système est à jour.

1 - En fait il existe en mode console une autre commande, 'aptitude' et elle est plus performante que apt-get. Pourquoi privilégier apt-get, tout simplement parce que la lecture de différents posts sur Internet indique une gestion des logs/historiques différentes selon que l'on utilise apt-get ou aptitude. Ce n'est pas catastrophique en soi, mais du coup il est préférable de n'utiliser en permanence soit l'un soit l'autre. D'autre part, aptitude a un 'frontend' utilisant ncurses donc utilisable en console, c'est bien pour les serveurs, mais pour un PC on utilisera de préférence synaptic qui lui est le frontend entièrement graphique de apt-get. Donc, comme ici, une fois le serveur X installé (le serveur graphique et non pas ce que vous avez pensé) nous utiliserons synaptic ...

3 - 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 éventuellement celui-ci en français mais pour Ubuntu)

Ici, vous avez compris, 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:

# apt-get install openbox obconf obmenu

Les 2 derniers paquets seront bien utiles pour configurer l'apparence et le menu.

Quelques outils graphiques propres au matériel (j'ai une carte graphique Intel GMA X3100)

# apt-get install xfonts-base xserver-xorg-video-* x11-utils x11-xserver-utils xorg

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

# apt-get install xinit

On crée aussi le .xinitrc ainsi:

$ nano ~/.xinitrc
#!/bin/bash
exec open-box-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. 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.

Avant d'aborder les chapitres suivants, essayez de jeter un œil sur les programmes cools qui tournent avec Openbox, cela pourra éventuellement guider vos choix.

4 - Les logiciels

Oui, c'est pas banal, mais je commence par quelques logiciels indispensables, 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).

Commençons par le terminal, un classique:

# apt-get install xterm

Ensuite un gestionnaire de fichiers, ici j'ai hésité entre pcmanfm et thunar. Les 2 sont réputés légers, et sur les forums il n'y a pas vraiment de position tranchée en faveur de l'un ou l'autre (Pour Thunar il manque les onglets, pour PCmanFM le chemin cliquable et pour les deux : une sélection par simple clic avec outil de sélection sur l'icone du fichier, un manque les miniatures de LibreOffice alors que j'ai installé le paquet). Donc il faut essayer. Comme j'ai Thunar sur une Crunchbang, j'installe ici pcmanfm:

# apt-get install pcmanfm

Maintenant un navigateur web serait utile, si ce n'est indispensable. Là aussi j'ai hésité entre chromium-browser le navigateur libre en pointe sur lequel est fondé Google Chrome et réputé léger, ou celui que j'utilise sur tous mes micros, à savoir Firefox appelé ici iceweasel. Bon il fallait bien que je le teste un jour, et puis ces derniers temps Firefox à tendance à crasher (trop d'onglets ouverts, ou propre à l'environnement Linux je ne sais pas), donc:

# apt-get install chromium-browser

Nota: Chromium est sympa, mais j'ai du mal à me passer de Firefox. J'ai installé les 2 !

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 (14Mo), donc:

# apt-get install xarchiver

Nous avons nano et vi comme éditeur de texte, mais cela reste très rudimentaire. Certains installent leafpad, mais je n'aime pas (car il ne gère pas bien les écritures de programmes), je lui préfère gedit, mais gedit demande des librairies de Gnome et reste lourd (63Mo contre 463ko d'espace disque nécessaire) par rapport à leafpad. Donc pour l'instant:

# apt-get install leafpad

Nota: je suis resté avec leafpad, car ensuite pour mes programmes j'ai installé Geany un éditeur de texte aux fonctionx d'environnement de développement intégré -(IDE)

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

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

5 - Configurer le bureau

On retrouve notre écran noir, mais cette fois un clic droit puis un clic sur Web browser lance chromium (ou le navigateur que vous avez installé), de même Terminal emulator lance xterm. Cependant on ne voit pas les autres applications et 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. Par ailleurs le bureau ne prend pas toute la largeur de mon écran. Bref il y encore un peu de boulot !

    5.1 - Le menu

Commençons par ajouter les programmes installés dans le menu, 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. 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 mis "Config Menu" 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.

Nota 1: 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.

Nota 2: Pour un menu dynamique cf. le point 5.4 de cette page.

Nota 3: J'ai mis également dans le menu des entrées 'Déconnexion', 'Redémarrer', 'Eteindre'  avec pour écriture dans le fichier .config/openbox/menu.xml :

<item label="Déconnexion">
    <action name="Exit"/>
</item>
<item label="Redémarrer">
    <action name="Execute">
        <execute>sudo shutdown -h now</execute>
    </action>
</item>
<item label="Eteindre">
    <action name="Execute">
        <execute>gksu -S 'shutdown -h now'</execute>
    </action>
</item>

Malheureusement cette configuration met longtemps pour s'arrêter lorsque mon micro est connecté sur mon serveur de fichiers, car il attend le démontage des partages smb. Pour éviter cela j'ai céé 2 scripts redemarrer.sh et arreter.sh qui ajoutent au shutdown un appel à my_smbumount (cf. ma page Installer les clients Samba).

    5.2 - Des raccourcis clavier

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

J'avoue ne pas m'y être penché tout de suite, car par défaut cela me convient assez et je n'ai pas de touches spéciales sur ce micro. 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.

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

    5.3 - 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:

# apt-get install tint2

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

# tint2&    #'&' sert à lancer la commande en tâche de fond

 Mais pour lancer cette barre des tâches automatiquement au démarrage d'Openbox il nous faut l'indiquer dans un fichier appelé ~/.config/openbox/autostart.sh (ou autostart). S'il n'existe pas encore, il faut copier celui par défaut et l'éditer afin d'y insérer la commande tint2&.

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:

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

Il ne reste plus qu'à vous amuser à peaufiner cette barre de tâche.

    5.4 Un menu dynamique à la LXDE

Pour les menus dynamiques rangés proprement avec des icônes j'ai suivi le thread de Fabrice Thiroux. Il permet d'avoir un menu bien organisé et plus visuel puisque les icônes des applis sont affichées. Malheureusement l'installation doit se faire 'à la main', mais cela vaut le coup et ce n'est pas si difficile. L'arrivée du package debian est attendue pour une version prochaine de Debian (la Wheezy ?)

Nota: J'ai découvert dans ce guide sur OpenBox que menumaker gérait également les menus dynamiques. Et sur un forum j'ai vu au moins un utilisateur content. Pour ma part je ne l'ai pas essayé mais je le ferai un de ces jours (même si je ne suis pas sûr d'avoir droit aux icônes, mais c'est du pur Python donc cela doit pouvoir s'adapter à ce que je veux ...).

    5.5 Affichage des paramètres système avec Conky

Avec conky vous pouvez vraiment afficher tout et n'importe quoi. En voici un exemple:

Conky: un exemple

Comme vous pouvez le voir sur cette première ébauche, 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. 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. Vous avez bien sûr le site officiel de conky, mais aussi des threads insondables sur les forums de distributions: celui de Ubuntu version anglaise fait état en ce début d'année 2015 de 22999 posts !!!. La version française en est au 5ième thread sur le sujet avec quand même un cumul de 9683 posts !! . Quant à Crunchbang qui je le rappelle est une distri basée sur Openbox, son site a un excellent wiki sur le sujet et en français (dommage que je ne l'ai pas trouvé de suite, cela m'aurait évité quelques tatonnements), dans lequel vous trouverez entre autres un lien sur un thread en anglais qui renvoie également sur un thread en français ... le 4ième d'Ubuntu (celui qui m'a servi d'inspiration).

En résumé: Vous pouvez commencer par:

  1. copier sous votre /home/<user> le /etc/conky/conky.conf (ou/et le /etc/conky/conky_no_X11.conf) et voir ce que cela donne en lançant la commande $ conky -c ~/conky.conf
  2. une lecture du man vous donnera un bon aperçu des commandes/paramètrages possibles, mais en anglais
  3. Il sera alors temps de lire le wiki de crunchbang.fr puis de regarder ce que d'autres ont fait et d'y puiser ce qui vous plaît.
  4. Et lorsque votre_conky.conf sera au point il ne vous restera plus qu'à ajouter cette ligne conky -c <votre_conky.conf> & dans le fichier ~/.config/openbox/autostart afin qu'il se lance au démarrage de votre machine

Voici le conky.conf auquel je suis arrivé 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 (attention cependant il n'affiche pas tout à fait ce qui est réprésenté plus haut).
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 ...

6 - 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:

Ecran d'identification

 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 installé: LightDM, Qingy, SDDM, SLiM, XDM,  et certainement plein d'autres.

Ici, j'ai installé XDM (X Display Manager) car parmi les DM 'indépendants', c'était (de mémoire) celui qui n'avait pas de défaut/manque de fonctionnalité (comme l'accès à distance), et qui était hautement configurable.  L'installation ne pose pas de problème, vous le trouverez facilement avec Synaptic.

Pour la configuration, j'ai suivi ce pdf de Jérôme Desmoulins  (que vous trouverez aussi en local ici). Pour info, voici mes fichiers de configuration:

  •  /etc/X11/xdm/Xsetup
#!/bin/sh
# This script is run as root before showing login widget.
xloadimage -onroot -quiet -fullscreen /home/freecrazy/Images/Wallpaper/1280_R$

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

Bien sûr le wallpaper est l'image que vous voulez avoir en fond d'écran à l'affichage de votre DM.

  •  /etc/X11/xdm/XResources
Xcursor.theme: whiteglass
!Xcursor.theme: redglass

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()

! position
xlogin*geometry: 440x220+10+10

xlogin*greeting: Bienvenue sur CLIENTHOST (lune de Xena)
xlogin*namePrompt: \040\040\040\040Login:
xlogin*fail: Login incorrect

! la fonte du message de Bienvenue
xlogin*greetFont: -adobe-helvetica-bold-o-normal--14-*-100-100-p-*-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 prompt (username password)
xlogin*promptFont: -adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1
! la fonte du message Login failed
xlogin*failFont: -adobe-helvetica-bold-o-normal--12-120-75-75-p-*-iso8859-1

xlogin*greetFace:    Serif-14:bold:italic
xlogin*face:        Helvetica-10
xlogin*promptFace:    Helvetica-10:bold
xlogin*failFace:    Helvetica-12:bold

! Bordures
xlogin*borderWidth: 1
xlogin*frameWidth: 5
xlogin*innerFramesWidth: 2

! Couleurs bleue de la bordure
xlogin*shdColor: #0066CC
xlogin*hiColor: #0000CC

! Couleurs du fond et des caractères
xlogin*background: white
!xlogin*foreground: darkgreen
xlogin*greetColor: Blue3
xlogin*failColor: red
*Foreground: darkgreen
!*Background: #fffff0

! Je ne sais pas trop à quoi cela sert 
XConsole.text.geometry:    480x130
XConsole.verbose:    true
XConsole*iconic:    true
XConsole*font:        fixed

! 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-*

Nota: Comme souvent le man peut être aussi une bonne source d'inspiration (le man en ligne - en anglais )

7 - Les petits soucis

    7.1 - Lors du upgrade à Wheezy le montage automatique des clés USB ou autre SD card ne fonctionne plus.

Je ne suis pas le seul dans ce cas, et à priori ne concerne pas que PCManFM (cf. ce thread sur le forum Debian) ni même la distribution, il n'est qu'à voir le nombre de discussions relatives à ce sujet sur le bbs d'ArchLinux par exemple. Plusieurs solutions plus ou moins semblables y sont proposées, mais la seule qui ait fonctionné dans ma configuration est d'ajouter le fichier /etc/polkit-1/localauthority/50-local.d/50-mount.pkla comprenant:

[Mount external device]
Identity=*
Action=org.freedesktop.udisks.*
ResultAny=yes
ResultActive=yes
ResultInactive=yes

A noter (si l'ajout de ce fichier fonctionne):

  • Il est plus secure de mettre Identity=unix-user=<username> avec bien sûr <username> votre identifiant de connexion de session.
  • "Action=org.freedesktop.udisks.*" et non "Action=org.freedesktop.udisks2.*" car en jetant un oeil sur le package installé (via la commande dpkg --get-selections | grep udisk ou via synaptic) je n'avais pas udisks2. Mais si vous avez udisks2 d'installé et bien ... il faut ajouter le 2.
  • "Action=org.freedesktop.udisks.*"  avec l' * ce qui permet d'éviter l'éciture d'une longue liste. Mais ici aussi il est plus prudent d'écrire exactement les actions concernées ( comme celles listées ici par exemple). Cela évite d'avoir org.freedesktop.udisks2.modify-device-system par exemple qui est utilisé pour supprimer une partition. J'ai donc ici: Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.inhibit-polling;org.freedesktop.udisks.drive-set-spindown;org.freedesktop.udisks.filesystem-mount-system-internal
  • Enfin ResultActive=yes et ResultInactive=yes sont inutiles si vous avez ResultAny=yes

 7.2 - Partition racine saturée (ou comment libérer de l'espace disque)

J'ai voulu télécharger SPIP, mais impossible. Un coup d’œil à $ df -hl (ou $ xdiskusage que je préfère à une alternative toute aussi légère, utilisant ncurses: $ ncdu), il est clair que ma partition racine est pleine (100%).

Pour faire le ménage, j'ai bien sur ce site cette page, mais très spécifique Gentoo (sauf les points 3 et 5 relatifs au nettoyage de /usr/src et des fichiers temporaires sous /tmp/ et /var/tmp.

Pour une Debian, il y a:

# apt-get clean
# apt-get autoclean

Cela me fait déjà gagner plus de 3 Go!

Quelques autres idées sur ce thread (forum de l'hébergeur OVH).

Du coup j'ai aussi déplacé mon serveur Spip (unjourbleu) sous mon home, et j'ai créé un lien de /var/www/unjourbleu --> /home/freecrazy/www/unjourbleu afin que cette saturation ne se reproduise plus. (Pour la petite histoire, c'est le proto du site sur l'IA que j'avais annoncé pour ... l'année dernière 2013 !!! J'ai du retard, mais je ne désespère pas.)

    7.3 - Comment ajouter une entrée à un menu dynamique ?

Cette question est apparue lorsque j'ai installé une application en manuel, en l’occurrence Anaconda ('distribution' Python spécialisée calcul scientifique). L'IDE (Integrated Development Environment) fourni est Spyder, et pour le lancer je passais par la ligne de commande car il n'apparaissait pas dans le menu dynamique. Comment faire pour qu'une entrée Spyder apparaisse dans le menu dynamique, sous le sous-menu 'Programmation' ? 

Une solution simple aurait été de l'ajouter en statique avec Obmenu, mais dans ce cas je ne pouvais le mettre dans le menu dynamique !

Une autre solution aurait été de peut-être (car je n'ai pas essayé) installer Spyder via Synaptic. J'aurai bien eu son entrée dans le menu dynamique mais dans ce cas la version de Spyder aurait été une version antérieure à celle fournie avec Anaconda (on est sous Debian ne l'oublions pas) et il aurait certainement été nécessaire de bidouiller pour faire en sorte que Spyder se lance avec la version Python d'Anaconda. Rien d'insurmontable je pense mais je ne trouve pas cela très propre et les mises à jour auraient certainement été problématiques.

J'ai cherché une autre solution répondant strictement à ce que je recherchais, à savoir une entrée Spyder d'Anaconda dans mon menu dynamique sous le sous-menu 'Programmation'. Pour cela regardons comment se fait le lancement d'une appli à partir du menu:

L'affichage du menu s'effectue en allant lire ~/.config/openbox/menu.xml qui ressemble à :

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:schemaLocation="http://openbox.org/  file:///usr/share/openbox/menu.xsd">
	<menu id="root-menu" label="Openbox 3">
		<item label="Web browser">
			<action name="Execute">
				<execute>
					x-www-browser
				</execute>
			</action>
		</item>
                ....
		<separator/>
		<menu execute="cat ~/.cache/openbox-menu.xml" id="desktop-app-menu" 
                               label="Applications"/>
	</menu>
</openbox_menu>

 On voit que ce dernier exécute "cat ~/.cache/openbox-menu.xml" afin d'afficher toutes les applis du menu dynamique. openbox-menu.xml ressemble à ceci (ce qui est important c'est la structure et non les applis présentes qui elles ne dépendent que de vous):

<openbox_pipe_menu xmlns="http://openbox.org/"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://openbox.org/   file:///usr/share/openbox/menu.xsd">
...
<menu id="openbox-Development" label="Programmation" icon="/usr/share/....png">
<item label="Arduino IDE" icon="..."><action name="Execute"><command><![CDATA[arduino]]></command>
</action></item>
<item label="Eclipse" icon="..."><action name="Execute"><command><![CDATA[eclipse]]></command>
</action></item>
<item label="Eeschema" icon="..."><action name="Execute"><command><![CDATA[eeschema]]></command>
</action></item>
<item label="Geany" icon="..."><action name="Execute"><command><![CDATA[geany]]></command>
</action></item>
<item label="GNU Octave" icon="..."><action name="Execute"><command><![CDATA[xterm -e /usr/bin/octave]]></command>
</action></item>
<item label="ipython" icon="/..."><action name="Execute"><command><![CDATA[xterm -e ipython]]></command>
</action></item>
<item label="KiCad" icon="..."><action name="Execute"><command><![CDATA[kicad]]></command>
</action></item>
<item label="QtOctave" icon="..."><action name="Execute"><command><![CDATA[qtoctave]]></command>
</action></item>
</menu>
....
</openbox_pipe_menu>

 Bien sûr je n'ai pas tout mis. La structure globale est donc: <menu id="..." ...> pour appeler un sous-menu et <item label="..." ...> pour appeler une appli. Voici l'affichage correspondant ( 'openbox-Development' = Programmation):

Menu Openbox- partie Programmation

A partir de là, la solution semble assez simple, il suffit de modifier le fichier ~/.cache/openbox-menu.xml. Certes, mais c'est un fichier dynamique qui est chargé à chaque redémarrage, et je ne compte pas m'amuser à écrire à chaque fois une ligne à rallonge dans openbox-menu.xml.  Aie ! cela se complique.

Et si au lieu de lancer "cat ~/.cache/openbox-menu.xml" dans le fichier ~/.config/openbox/menu.xml  on lançait une autre commande bash qui ajoute une ligne Spyder avant ... disons la ligne Geany. J'ai la commande pour trouver le numéro de la ligne contenant "Geany":

 NLIGNE=$(grep -n "Geany" openbox-menu.xml | mawk -F ':' '{print $1}')

J'ai aussi la commande pour insérer la ligne d'entrée de Spyder au bon endroit (79 ici, ce que me renvoie NLIGNE)

sed -i 79i'<item label="Spyder" icon="./anaconda3/share/pixmaps/spyder3.png"><action name="Execute">
          <command><![CDATA[./anaconda3/bin/spyder]]></command>\n</action></item>' openbox-menu.xml

Mais je n'ai pas réussi à mettre tout cela ensemble pour en faire une ligne de commande valide dans le fichier  ~/.config/openbox/menu.xml . Bouh, cela devient vraiment rasoir ! Je ne suis vraiment pas bon en programmation moi.

Au bord de la déprime (oui je suis comme cela quand cela ne marche pas comme je veux), je change de stratégie: si je n'arrive pas à écrire un script en Bash, je vais bien réussir à l'écrire en Python. C'est parti ! Quelques instants après, j'ai un script Python:

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 15 16:55:32 2014
@author: freecrazy
"""
def ajout_ligne(filename, ligne, tag):
    """
    Cette fonction ajoute au fichier 'filename', une 'ligne' avant la ligne
    caractérisée par la présence de 'tag'. On vérifie bien sûr que 'ligne' 
    n'est pas déjà présente.
    - filename: chemin absolu du fichier
    - ligne: text (chaîne de caractères) à ajouter (les fins de ligne sont \n)
    - tag: text (chaîne de caractères) caractérisant la ligne du fichier avant
    laquelle on veut insérer notre ligne
    """
    with open(filename, 'r+') as file:
        text = file.read()
        if (text.find(ligne) != -1):
            pass
        else:
            try:
                i = text.index(tag) #on aurait pu prendre find avec un if else
                file.seek(0)
                file.write(text[:i] + ligne + text[i:])
            except:
                pass
        
if __name__=="__main__":
    '''
    Ce programme ajoute une entrée 'Spyder' avant l'entrée 'Geany' du menu
    dynamique d'openbox.
    Le print(text) final tient lieu du cat ~/.cache/openbox-menu.xml qui se
    trouve dans ~/.config/openbox/menu.xml.
    Ce dernier doit d'ailleurs être modifié en conséquence en appelant ce 
    programme en lieu et place du 'cat ...'
    '''
    filename='/home/freecrazy/.cache/openbox-menu.xml'
    ligne='<item label="Spyder" icon="./anaconda3/share/pixmaps/spyder3.png"><action name="Execute">
           <command><![CDATA[./anaconda3/bin/spyder]]></command>\n</action></item>\n'
    tag='<item label="Geany" '
    ajout_ligne(filename, ligne, tag)
    
    with open(filename,'r') as file:
        text = file.read()
        print(text)

Sur le code pas grand chose à dire, si ce n'est:

  • la fonction ajout_ligne utilise une copie du fichier, donc elle n'est pas adaptée à des fichiers volumineux (cela tombe bien, notre fichier est tout petit)
  • le print final est nécessaire pour obtenir l'équivalent du cat ...
  • comme tout script Python ne pas oublier de le rendre exécutable

Voilà il ne reste plus qu'à placer ce fichier que j'ai intitulé "insert_ligne_OBmenu.py" dans ~/.cache/, et de modifier l'appel "cat ~/.cache/openbox-menu.xml" dans le fichier ~/.config/openbox/menu.xml  par "~/.cache/insert_ligne_OBmenu.py", et au prochain redémarrage (ou mieux après un 'Reconfigure' du menu Openbox), j'obtiens:

Menu Openbox- partie Programmation avec Spyder

 

7.4 - Conky: can't open /proc/acpi/battery/ No such file or directory

Pour mesurer la batterie, Conky intègre des commandes qui vont lire les données délivrées par acpi ou apm (ce dernier étant le prédécesseur d'acpi): $battery, $battery_bar, $batterry_percent ...

Seulement voilà sur ma configuration cela ne fonctionne pas, j'ai un message d'erreur de type: "can't open /proc/acpi/battery/ No such file or directory". Pourtant acpi est installé (dans le doute j'ai même installé acpitool). Mais Conky cherche désespérément des infos dans un dossier /proc/acpi/battery/  qui n'existe pas !. Les quelques threads marqués comme résolus que j'ai lus sur le sujet donnent comme solution ... le non affichage de la donnée. Un peu léger !

Pour ma part, ce n'est pas que je voulais absolument l'info (je l'ai dans la barre tint2 et dans le menu grâce à un pipe), mais je me suis dit qu'il doit quand même bien être possible d'afficher dans Conky cette info disponible par ailleurs. Je n'ai pas cherché longtemps, j'ai pris la ligne de commande du pipe de mon menu à base d'acpi, de grep et de sed et je l'ai fait exécuter par Conky. Pour voir à quoi cela ressemble voici mon conky.conf . Il y a certainement plus élégant mais cela marche.

8 - Sources et liens

  • La source initiale est une revue Linux Identity avec la Debian 6.0.7 sortie le 23/02/2013
  • Un tuto intéressant une installation de Debian avec Openbox sur un Samsung NC10
  • Un guide sur OpenBox qui peut être instructif, ainsi qu'une documentation illustrée de nombreux exemples de configuration d'Openbox sur le site d'Ubuntu, mais le mieux reste le site d'Openbox mais en anglais (pour la configuration cf. le dernier lien)
  • Pour les menus dynamiques rangés proprement avec des icônes j'ai suivi le thread de Fabrice Thiroux. Installation 'à la main' avec la Squeeze. Une intégration dans les packages de la Wheezy était attendue/espérée mais ... ce sera peut-être pour la prochaine version (Jessie), car pour l'instant le package openbox-menu est toujours dans la Sid c.a.d la version non stable.
  • Pour la configuration du Display Manager XDM, j'ai suivi ce pdf de Jérôme Desmoulins  (que vous trouverez aussi en local ici)

9 - To Do liste

  • Ajouter l'apparition d'un menu par la touche Windows ou/et Menu - Fait le 29/12/2014. J'ai ajouté des lignes dans le fichier ~/.config/openbox/rc.xml afin d'afficher le menu par appui des 2 touches Windows+Alt :
        <keybind key="W-Alt_L">
            <action name="ShowMenu">
              <menu>root-menu</menu>
            </action>
        </keybind>
    Notez que key="W-A" ne fonctionne pas !?
  • Faire en sorte que la barre tint2 apparaisse lors d'un survol de souris - Fait
  • Montage automatique des cles USB ou autre SD card - Fait
  • Installer une appli de capture d'écran/fenêtre - Fait avec Gnome-screenshot mais j'aime moyennement car l'appli se ferme après la prise du screenshot. Mais j'ai remarqué ensuite que des raccourcis clavier existent.
  • Installer un visionneur de photos -Fait avec Mirage et après lecture de ce thread (Mirage est léger - 1 fichier et répond à mes besoins en ce domaine)
  • Ajouter la synchro à un serveur temps - Fait avec l'installation de ntp, de sa configuration éventuelle en /etc/ntp.conf avec des serveurs français.
  • Ajouter une entrée dans le menu qui pointe sur une appli installée manuellement (Dans mon cas il s'agissait de l'IDE Spyder que j'ai avec le package Anaconda. Fait (20/12/2014).
  • Rendre le touchpad sensible au 'tap' et au 'glissé'.Fait le 01/01/2015. Vérifier que le pilote touchpad Synaptics est bien installé (paquet xserver-xorg-input-synaptics), et ensuite il suffit de paramétrer au mieux le fichier de configuration qui est à créer: /etc/X11/xorg.conf.d/50-my-synaptics.conf (En réalité vous copier /usr/share/X11/xorg.conf.d/50-synaptics.conf dans le dossier que vous avez créer /etc/X11/xorg.conf.d). Ensuite à part des paramétrages assez évidents, il vous faudra peut-être jouer plus finement sur d'autres afin d'obtenir le résultat attendu, si tant est que cela soit possible avec votre touchpad. Bref, j'ai suivi cette page très complète sur Archilinux (mais en anglais) ou celle plus épurée de la version française du même site.  J'ai réussi à obtenir le scroll vertical, le scroll horizontal, le clic gauche avec un tap, mais je n'ai pas réussi à avoir le clic droit avec 2 taps. Comme j'ai des boutons physiques ce n'est pas gênant, mais bon si un jour j'ai du temps à perdre j'y retravaillerai (Une piste serait peut-être d'essayer xSwipe). En attendant voici mon fichier de configuration et les paramètres résultant (liste obtenue avec la commande synclient -l)
  • Ajouter Conky: moniteur système capable d'afficher à peu près n'importe quoi sur le bureau. Fait (07/01/2014) Le paragraphe '5.5 Affichage des paramètres système avec Conky' y est consacré.
  • Afficher les raccourcis par une commande du menu. Fait (29/12/2014). Pour cela j'ai été prendre un pipe tout prêt sur la page Pipemenus d'Openbox il s'appelle show_ob_keybinding.py . Oui, .py car c'est un script Python (2.7). J'ai écrit une traduction française des actions des raccourcis par défaut de OB, vous la trouverez ici en .pdf. Et voici pour le résultat:
    Menu Openbox-showkeybindings
  • Ajouter quelques raccourcis clavier: pour un screenshot d'une zone, pour le lancement de quelques applications (pcmanfm, firefox). Fait le 29/12/2014
  • Installer fortunes-fr (qui vient avec fortune-mod et librecode0). Ce logiciel écrit en Python permet à l'ouverture d'un terminal d'afficher des citations prises aléatoirement dans une base de données. Pour cela après avoir installé le paquet, ajouter dans .bashrc cette simple ligne fortune sciences (ou tout autre thème que vous voulez, cf. /usr/share/games/fortunes/fr). L'affichage dans Conky est également possible, ainsi que la mise en oeuvre de son propre fichier de citations cf. cette doc Ubuntu). Fait le 28/12/2014
  • Installer un lanceur d'application (un run dans une fenêtre). Fait le 29/12/2014 avec l'installation de gmrun et de son ajout statique dans le menu (via Obmenu ou écriture directe dans .config/openbox/menu.xml). Notez que vous pouvez aussi sous OB installer bbrun (111kb) qui bien qu'il soit destiné à Blackbox fonctionne très bien ici, ou encore grun(233kb).
  • Installer un programme pour connaître son matériel. Lors de la mise en place de Conky j'ai eu des interrogations sur mon matériel (batterie notamment). Du coup j'ai installé lshw (pour la ligne de commande) et lshw-gtk afin d'accéder à un front-end graphique depuis le menu (entrée sous Préférences: Hardware Lister, plus une entrée que j'ai ajoutée manuellement sous Système(admin)). Fait le 05/01/2014

 

Actions sur le document