lundi, 6 juin 2011

Gnome et scrot : Capture de zones d'écran

Nous allons voir ici comment ajouter une fonction de capture d'une zone spécifique de l'écran. Pour rappel il est par défaut possible de faire deux type de captures:

  • La touche PrintScreen capture l'intégralité de l'écran
  • la combinaison Alt + PrintScreen capture l'intégralité de la fenêtre présente sous le curseur.

Nous allons ajouter une troisième combinaison de touche, qui nous permettra de sélectionner une zone, à l'aide du curseur de la sourie, délimitant la zone à capturer.

pré-requis

scrot doit être installé. la procédure est pour un environnement gnome. elle est donc à adapter pour d'autres environnements.

Mise en œuvre

Nous allons créer un script contenant les informations suivantes :

~/script$ cat screenshot.sh 
#!/bin/sh 
SCREEN_PATH="$HOME/Screenshot"
DATE=$(date +%Y-%m-%d-%H:%M:%S) 
sleep 1 && scrot -s -b $SCREEN_PATH/screenshot_$DATE.png 
On prend soin de rendre le script executable
~/script$ chmod u+x screenshot.sh

Nous allons ensuite créer un raccourci clavier afin d'utiliser simplement cette fonctionnalité : Système > Préférences > Raccourcis Clavier. On clique sur ajouter scrot_1.png on renseigne ensuite les informations suivantes (à adapter selon votre configuration) scrot_2.png Il ne reste plus qu'à sélectionner la combinaison de touches de votre choix. Pour ma part j'ai choisi la combinaison Ctrl + PrintScreen Je dois dire que je suis assez satisfait du résultat. Il me suffit à présent de taper la combinaison Ctrl + PrintScreen pour sélectionner une zone de l'écran à capturer.
Enjoy !

jeudi, 2 juin 2011

find : optimisation de traitements

On ne fini jamais d'en apprendre sur la merveilleuse commande qu'est find. Aujourd'hui grâce au remarques de jsz', voici ce que j'ai pu constater :

$ time find Bureau/ -type f -exec ls {} >/dev/null \;
real    0m13.386s
user    0m21.149s
sys     0m8.297s
$ time find Bureau/ -type f -exec ls {} >/dev/null +
real    0m0.205s
user    0m0.116s
sys     0m0.088s

la subtilité réside ici dans la façon dont sont traités les occurrences retournées par find. Dans le premier cas les occurrences sont traitées de façon unitaire; ainsi pour n occurrences nous lancerons n fois la commande ls.
Dans le second cas, nous utilisons la capacité de ls à traiter simultanément plusieurs chemins. Ainsi pour n occurrences la commande ls ne sera exécutée qu'une unique fois. il y a concaténation des occurrences pour ne former qu'une unique ligne.
Pour la partie optimisation, et bien les temps de traitement parlent d'eux-même.