Le royaume de Eric Buist >> Informatique >> Quelques-unes de mes recherches personnelles >> Trucs et astuces >> Astuces spécifiques au DIRO | ||
Me contacter | Plan du site | |
<< Établir le profil d'une machine Linux | Ajouter une touche personnelle | Faire cohabiter KDE 2 et KDE 3 harmonieusement >> |
Il existe de multiples façons de personnaliser son environnement Linux et il serait impossible d'en faire la liste exhaustive. Ici, je me concentrerai sur des manipulations peu usuelles, s'effectuant sous le shell. Personnaliser KDE est assez intuitif, comme toute interface graphique bien conçue. Il suffit d'activer le panneau de contrôle et d'aller changer ce que l'on souhaite. Sous le shell, c'est une autre histoire, car il faut connaître les commandes et variables exactes, sinon on ne peut pas aller bien loin.
Lors de votre premier branchement, vous avez vu apparaître le nom de la machine sur l'invite de commande, ce qui n'est pas très intéressant. Si vous naviguez dans le Système de Fichiers et que vous vous y perdez, vous ne pourrez pas vous retrouver d'un simple coup d'oeil. Il vous faudra utiliser la commande pwd et la nécessité de la mémoriser ajoutera un obstacle dissuasif de plus à votre exploration. Il existe deux solutions: se limiter à son répertoire principal lors de nos périples sur le shell ou changer cettte invite. Pour ce faire, il faudra modifier une variable du C-shell. Il ne faut pas confondre ces variables avec les variables d'environnement. Une variable du shell, configurée par set, n'affecte que le shell, tandis qu'une variable d'environnement, définie par setenv, peut affecter d'autres applications qui décident de s'en servir.
Pour modifier l'invite à même le shell, on tapera set prompt="invite : ", par exemple. Pour retrouver cette information, consultez la page man tcsh. Toutefois, cela ne solutionne pas notre problème, bien que pouvant rendre l'invite plus attrayante. Le C-Shell prévoit heureusement des séquences de caractères pour de tels cas de figure. La séquence %c retourne le nom du répertoire courant. Pour obtenir plusieurs niveaux de répertoires, on peut utiliser %cN où N>=1. La commande %/ retourne le chemin absolu complet du répertoire courant. Ainsi, la commande set prompt="[%/]$ " solutionnera le problème et créera une invite compatible avec le shell sous Emacs.
Le C-shell contient quelques aspects tannants que l'on peut modifier. Tout d'abord, la touche TAB, responsable de la complétion des noms de fichiers, n'affiche pas tous les fichiers possibles lorsqu'il y en a plusieurs. Elle se contente de faire bipper la machine et il faut, si on ne connaît pas le nom d'un fichier, effacer notre ligne et entrer un ls afin de le retrouver. Pour remédier à ce désagrément, pour une fois, il ne faudra pas une astuce digne de Albert Einstein! Il suffit d'ajouter la ligne set autolist à votre fichier .cshrc et c'est fait!
Un autre problème peut surgir lorsque vous tentez de supprimer des fichiers. La commande rm va parfois vous demander confirmation et cela peut devenir irritant. À moins que vous ne préfériez cela ainsi, ajouter la ligne alias rm 'rm -f' à votre fichier .cshrc pour ne pas recevoir ces messages de confirmation. Sachez toutefois que rm fera son travail dans tous les cas si on l'appelle et qu'il est impossible de récupérer un fichier supprimé! On peut aussi le faire pour cp, le paramètre -f inhibant les demandes de confirmation.
Finalement, la commande ls cause problème. Elle ne permet pas d'opérer une distinction entre un fichier, un répertoire et un lien symbolique! Outre deviner, quand l'ambiguité se produit, il faudra utiliser le paramètre -F qui affiche des indicateurs pour les fichiers, les répertoires et les liens symboliques. Il suffirait de mettre la ligne alias ls 'ls -F' dans .cshrc pour exorciser le démon une fois pour toutes!
Connaissez-vous la commande finger, peut-être pas? Elle s'avère d'une grande utilité, car elle permet d'obtenir le login d'un utilisateur dont on connaît le nom usuel. On peut aussi retrouver le nom usuel de quelqu'un en utilisant le login. Si vous entrez finger buisteri, vous obtiendrez
Login: buisteri Name: Eric Buist Directory: /u/buisteri Shell: /bin/psh On since Sun Nov 26 13:59 (EST) on pts/8 from modemcable148.213-202-24.nowhere.mc.videotron.ca No mail. Project: Bacc. Spécialisé en informatique Objectif personnel: Découvrir les secrets les plus impénétrables de l'informatique, éliminer Windows et faire triompher Linux! :) Plan: Présentement connecté sur phobos.IRO.UMontreal.CA Je vous invite à venir faire une petite visite sur mon site Web. L'adresse est http://www-etud.iro.umontreal.ca/~buisteri Vous y trouverez des informations sur moi-même, mes bogues les plus épineux rencontrés avec mon ordinateur, ma vision de Windows et Linux, le CD DevIFTBacc (une de mes créations) ainsi qu'un tutoriel sur la manière de se servir d'un graveur de CD.
Si vous utilisez finger sur un autre usager, vous obtiendrez les mêmes résultats s'il existe, à une différence près. En tant que Project:, il n'y aura que etud et No plan dans la section Plan:. Comment changer cela, direz-vous, et surtout à quoi cela sert de le changer? À la deuxième question, je ne peux pas répondre. C'est comme lancer une bouteille à la mer, il est possible que personne ne voit ce message...
Mais effectuer le changement est on ne peut plus simple. Il suffit d'éditer le fichier .project se trouvant dans votre répertoire principal. Il faut que ce fichier soit accessible par tous, ie qu'il soit accessible en lecture pour le groupe et les autres et que le répertoire principal qui le contient soit accessible en exécution. Les mêmes règles s'appliquent pour le fichier .plan.
Il peut s'avérer d'un grand intérêt de pouvoir modifier dynamiquement un de ces fichiers, surtout le .plan. Il suffit de mettre, dans .cshrc, les lignes qu'il faut pour le générer. On peut alors inclure des variables qui pourraient, par exemple, indiquer sur quelle machine on est branché en ce moment. Dans ce cas, il faudra indiquer lorsque nous sommes débranché, en incluant du code de génération dans .logout. Pour un exemple d'une telle structure, regardez mes fichiers .cshrc, .logout et plan.common. Si vous voulez une référence absolue, ce sera ~buisteri/.cshrc et similaire pour les autres.
Dans le cas où vous voudriez copier ces fichiers, n'oubliez pas d'enlever la ligne de .cshrc traitant de Emacs. C'est une spécificité dans le but d'apporter un palliatif au bugX et il pourrait vous nuire en rétrécissant inutilement votre fenêtre Emacs sous X.
Malheureusement, cette petite astuce comporte quelques lacunes. Comme on me l'a fait remarquer, KDE, l'environnement graphique par défaut du DIRO, n'appelle pas .logout lorsqu'on le quitte. Ce qui signifie que le fichier n'est pas modifié pour refléter la déconnexion. De plus, il faut ouvrir une fenêtre de terminal (Konsole, XTerm, ...) pour appeler .cshrc, ce qui n'est pas nécessairement un acquis dans tous les cas.
De plus, une solution de ce genre ne gère pas les appels multiples. Par exemple, si un utilisateur X se connecte sur une machine Y, laisse sa session ouverte puis va se connecter sur la machine Z à côté, son .plan affichera sa connexion à la machine Z. Lorsqu'il se déconnectera de la machine Z, son .plan indiquera qu'il n'est pas branché du tout, pourtant il l'est encore sur la machine Y!
Pour pallier à ces limitations, la rédaction d'un programme plus évolué en langage C++ sera de rigueur! Toutefois, je ne pourrai pas travailler sur ce programme avant de pouvoir installer Linux (et avoir la paix avec l'espace disque!) chez moi.
Même si la machine est dotée d'une carte son (Les machines du DIRO en ont une, mais le module n'est pas installé, donc elle ne peut être utilisée.), Linux utilise parfois encore ce vieux mode de production de sons qu'est le haut-parleur interne du PC. Source de stress, ces beeps ne font que fatiguer. Avant le jour où cette antiquité ne sera plus intégrée aux cartes mères, il existe une façon de le désactiver. Tout d'abord, créez ou modifiez le fichier ~/.Xresources et ajoutez-lui la ligne *visualBell: True. Redémarrez la session ou tapez xrdb ~/.Xresources pour activer le changement. Les beeps ne se feront plus jamais entendre dans XTerm ainsi que dans à peu près toutes les applications X.
Malheureusement, Emacs s'entêtera toujours à émettre des beeps, et cela trop souvent! Vous devrez pour le faire taire créer ou éditer le fichier ~/.emacs et y ajouter un petit peu de code Lisp, soit la ligne
(setq visible-bell t)
Les beeps seront remplacés par un clignotement des barres supérieures et inférieures de GNU Emacs. Si cela devient énervant, il faudra choisir entre les sons ou utiliser XEmacs. Sous XEmacs, les lignes suivantes résolvent complètement le problème.
(setq visible-bell nil) (setq bell-volume 0)
Ce n'est pas fini! Il reste encore quelque chose à faire pour exorciser le démon! KDE aussi émet ses propres beeps! Pour le faire taire, activez le menu K, puis Control Center. Sous la branche Sound, activez System notification et abaissez le volume au minimum. Sous System bell, désactivez la case à cocher afin que le PC Speaker ne soit pas utilisé pour les notifications système.