Supprimer les biiiiips sous Linux

Si il y'a un truc insupportable sous Linux c'est bien le biiiiip si on a le malheur de se tromper de touche. Le pire est probablement celui du mode console (hors X11) mais celui sous X est pas mal non plus. Heureusement comme d'habitude tout cela est configurable.

Sous X11

En général avec un Desktop Manager (environnement de bureau ?) type KDE ou GNOME, il y a une petite case à cocher bien planquée quelque part. Sans environnement de bureau, une simple ligne de commande avec l'utilitaire xset suffit :

$ xset b off

Dans mon cas avec Openbox, je l'a met dans mon fichier .xsession qui lance ma session après le login dans GDM. Simple rapide et efficace :)

En mode console

En mode console deux solutions. il est possible d'utiliser setterm avec la ligne suivante :

$ setterm -blength 0

Cette ligne peut être insérée dans le .bashrc (si vous utiliser bash comme shell évidemment). Il existe cependant une méthode beaucoup plus radicale qui consiste à empêcher le chargement du module pcspkr du noyau qui gère ce fameux bip. Pour cela il suffit de créer un fichier dans /etc/modprob.d, par exemple blacklist-bip avec la ligne suivante à lancer avec sudo (ou en root) :

$ sudo echo "blacklist pcspkr" > /etc/modprobe.d/backlist-bip

Et pour ne pas attendre le prochain démarrage une dernière ligne de commande avec modprobe est possible pour supprimer le module directement :

$ sudo modprobe -r pcspkr

Maintenant, vos lignes de commande seront silencieuses à souhait, reposant et magique !

Tags : Openbox, shell, bash, Linux, KDE, X11, GNOME

Faire une capture d'écran en GIF animé (un screencast)

En écrivant mon précédent billet sur le logiciel Apwal, j'ai vainement cherché un logiciel permettant de faire une capture d'écran "animée" que ce soit en vidéo, en flash ou en GIF animé. J'avais bien trouvé Xvidcap mais il n'est pas dans les dépôts Ubuntu et le paquet non-officiel pour Debian ne fonctionne pas correctement...

Je me suis donc rabbattu sur deux captures d'écran consécutives réalisées avec mon script de capture basé sur import (de la suite ImageMagick) montées en GIF animé avec The GIMP... Mais depuis, au détour d'un commentaire d'un journal trollogène sur LinuxFr, j'ai découvert que plusieurs logiciels font cela et qu'ils portent tous le nom d'une ville turque :

 

 

J'ai retenu byzanz car il produit des GIF animés ce qui est quand même le plus pratique pour publier sur le web et en plus il est disponible dans les dépôts Universe d'Ubuntu ce qui simplifie grandement son installation avec la ligne de commande suivante (ou en cherchant dans synaptic ou équivalent) :

 

> tigrou@Lorien[192.168.0.243]:~$ sudo apt-get install byzanz

 

Une fois installé, ce logiciel se manipule soit via une applet dans un panneau GNOME soit via la ligne de commande en lui passant quelques paramètres détaillés dans sa courte page du manuel, comme je n'utilise pas GNOME, la ligne de commande ressemble à la suivante :

 

> tigrou@Lorien[192.168.0.243]:~$ byzanz-record -l -d 15 -x 249 -y 196 -w 460 -h 300 -c --delay=2 edition_dans_ez_publish.gif

 

Cette ligne va enregistrer deux secondes après son lancement un GIF animé nommé edition_dans_ez_publish.gif tournant en boucle de 460x300 pixels dont le point d'origine est 249x196 d'une durée de 15 secondes en incluant le curseur X11, ce qui donne l'animation suivante :

Comme c'est du GIF ça ne peut contenir que 256 couleurs mais c'est très léger (64Ko pour 15 secondes dans cet exemple) et donc tout à fait publiable sur le web ou envoyable par mail et peut permettre de facilement montrer une fonctionnalité voire de rapporter un bug difficile à expliquer.

Tags : GNOME, X11, Truc, Ubuntu, Blog, Debian

Apwal !

Apwal est un petit logiciel écrit dans le but de permettre le lancement de ses applications favorites en ayant le moins de mouvements de souris à faire. En effet, le plus souvent lorsque vous voulez lancer une application, il faut diriger le pointeur jusqu'à une barre d'icônes située généralement sur un bord de l'écran et ce même si le pointeur de la souris se trouve à l'opposé. Apwal permet de faire apparaître une barre d'icônes à proximité du pointeur de la souris où qu'il soit.

Par exemple avec le window manager Openbox, j'ai configuré le clic gauche sur le fond d'écran et la combinaison Shift+Tab pour lancer apwal faisant ainsi apparaître ce menu à l'aide de la configuration suivante dans le fichier ~/.config/openbox/rc.xml :

 

<!-- extrait de ~/.config/openbox/rc.xml -->
<context name="Desktop">
  <!-- [...] -->
  <mousebind button="Left" action="Press">
    <action name="Execute"><execute>apwal</execute></action>
  </mousebind>
</context>
<keyboard>
  <!-- [...] -->
  <keybind key="S-Tab">
    <action name="Execute"><execute>apwal</execute></action>
  </keybind>
</keyboard>

 

Comme une image vaut toujours mieux qu'un long discours :

Comme on peut le voir sur ce GIF animé, Apwal fait apparaître chez moi une barre au dessus de toutes les applications en cours me permettant de lancer facilement et rapidement, un xterm, nautilus, Firefox, Thunderbird, ViM ou encore de contrôler mon lecteur audio préféré (Listen en ce moment).

Apwal est disponible sous Ubuntu dans le dépôt Universe et s'installe avec le paquet du même nom :

 

> tigrou@Lorien[192.168.0.243]:~$ sudo apt-get install apwal

 

Apwal se configure simplement à l'aide d'une interface graphique (générant un simple fichier XML) en le lançant avec l'option --edit. Quelques captures d'écran de cette étape sont disponibles dans la courte documentation en anglais sur le site officiel.

Tags : Geek, X11, Truc, Openbox, Ubuntu

Mettre au premier plan une fenêtre avec un script

Les bureaux virtuels disponibles sur la plupart (tous ?) des gestionnaires de fenêtres modernes permettent d'organiser facilement ses différentes applications par thème ou actaction. J'ai par exemple l'habitude de mettre tout ce qui concerne le web sur le premier bureau (Firefox et Liferea principalement), les emails, l'irc sur le deuxième et les deux dderniers ne sont pas dédiés à une tâche précise. Malgré cette organisation, il m'arrive fréquemment de lancer des programmes en doubles simplement par oubli. Si pour certains cela ne pose pas de problème particulier (firefox ou les xterm par exemple), pour d'autres ça n'a pas vraiment de sens (thunderbird ou irssi) et pour certains autres ça n'est tout simplement pas possible ou c'est même dangereux.

J'ai donc écrit le petit script ci-dessous qui peut remplacer avantageusement un lanceur pour une application donnée. À l'origine je l'ai écrit car sous Breezy Badger, Thunderbird m'affichait le gestionnaire de profil si j'avais le malheur de le lancer deux fois ce qui est assez agaçant à la longue, depuis il semble que ce bug soit résolu.

 

#! /bin/sh
# Script donnant le focus à un programme sous X en recherchant
# dans le titre le motif passé en paramètre,
# sinon lance la commande passée en second paramètre
 
if [ $# -lt 1 ] ; then
    echo "Usage : $0 motif [commande]"
    exit 1
fi
APP=`wmctrl -l | grep "$1" | head -1 `
# identifiant X du programme
CODE=`echo "$APP" | cut -d ' ' -f 1`
if [ "$CODE" != "" ] ; then
    wmctrl -i -a $CODE
    exit 0
fi
# lancement de la commande si spécifiée
if [ ! -z "$2" ] ; then
    exec $2 &
    exit 0
fi
exit 2

 

Pour fonctionner, ce script nécessite l'utilisation du programme wmctrl qui s'installe avec le paquet du même nom :

 

sudo apt-get install wmctrl

 

L'utilisation est très simple, avec un argument, le script recherche une fenêtre dont le titre comporte cet argument et la met au premier plan si il la trouve. Si celle-ci se trouve sur un autre bureau, le script change automatiquement de bureau. Si un deuxième argument est fourni et si le script ne trouve pas de fenêtre, il essaie d'éxécuter cet argument comme une commande.

wmctrl permet de faire beaucoup d'autres choses dans la manipulation des fenêtres sous X (la page du manuel de wmctrl est très instructive) pourvu que votre gestionnaire de fenêtre suive les spécifications EWMH ce qui est le cas de beaucoup de gestionnaires de fenêtres. En tout cas testé et approuvé sous Openbox !

Edit : correction dans le script s/head 1/head -1/g

Être à l'aise avec bash #1

Bien que la plupart des distributions Linux et Ubuntu en particulier tendent à minimiser voire à rendre complètement inutile l'utilisation de la ligne de commande, il peut être intéressant de rendre cet outil un peu plus accueillant et facile d'utilisation. Pourquoi ? Si Xorg plante, c'est tout ce qui reste et puis pour certaines tâches, il n'y a pas plus rapide... Ce billet ouvre donc une série consacrée à la configuration et l'utilisation de bash.

Le prompt

Laurent - CyberSDF a publié un court billet présentant un outils en ligne permettant de créer un prompt plus fantaisiste que celui par défaut. Au delà de l'aspect purement esthétique, le prompt est la première chose que l'on voit lors de l'utilisation du shell, il peut donc mettre en valeur des informations importantes. Au travail ou à la maison, j'ai potentiellement accès en SSH à 13 machines différentes (3 Ubuntu, 9 Debian et une Solaris pour les curieux), et je suis fréquemment connecté à 3 ou 4 machines en même temps, le prompt doit donc m'indiquer sur quelle machine je suis et surtout avec quel login, pour cela j'utilise la configuration suivante soit dans le fichier /etc/bash.bashrc soit dans mon ~/.bashrc :

 

# couleurs
C_RED="\[\e[1;31m\]"
C_BLUE="\[\e[1;34m\]"
C_GRAY="\[\e[1;30m\]"
C_WHITE="\[\e[1;37m\]"
C_YELLOW="\[\e[1;33m\]"
C_DEF="\[\033[0m\]"
 
mUID=`id -u`
MACHINE="Lorien"
IP="192.168.0.243"
 
if [ "$mUID" = "0" ] ; then
   PS1="${C_YELLOW}>${C_DEF} ${C_RED}\u${C_DEF}@${MACHINE}${C_YELLOW}[${C_DEF}$IP${C_YELLOW}]${C_DEF}:\w${C_RED}#${C_DEF} "
   PS2="${C_RED}>${C_DEF}  "
else
   PS1="${C_YELLOW}>${C_DEF} ${C_BLUE}\u${C_DEF}@${MACHINE}${C_YELLOW}[${C_DEF}$IP${C_YELLOW}]${C_DEF}:\w${C_BLUE}\$ ${C_DEF}"
   PS2="${C_BLUE}>${C_DEF}  "
fi
 
export PS2
export PS1

 

Cette configuration fait en sorte d'avoir un prompt bleu, jaune et blanc pour un utilisateur normal et rouge, jaune et blanc pour l'utilisateur root attirant ainsi mon attention sur le fait qu'en root, on ne tape par n'importe quoi... Il m'indique aussi le nom de la machine ainsi que son adresse IP. Ce qui donne :

Le titre des terminaux graphiques

De la même manière que le prompt, le titre des terminaux est très utile pour se repèrer lorsqu'on utilise Xorg. Dans un terminal, il est possible de changer ce titre de manière dynamique avec un simple echo, il suffit alors d'utiliser la variable PROMPT_COMMAND pour stocker une commande que le shell éxécutera à chaque affichage du prompt.

 

case $TERM in
xterm*)
  PROMPT_COMMAND='echo -ne "\033]0;${USER}@${MACHINE}[$IP]: ${PWD}\007"'
  echo -ne "\033]0;${USER}@${MACHINE}[$IP]: ${PWD}\007"
   ;;
 *)
  setterm -blength 0
  ;;
esac

 

Avec ces quelques lignes, les terminaux affiche la même chose que le prompt dans leur titre (sans les couleurs) lorsque le type de terminal commence par "xterm" (ce qui est le cas avec xterm mais aussi gnome-terminal).

À noter que la seconde partie du case permet de supprimer le beep très énervant beep lorsqu'on est en console sans Xorg.

Tags : Geek, SSH, X11, Truc, bash, Ubuntu, Debian, shell

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.