Screenshot en command-line
Par Cédric Tabin le jeudi 22.01.2009, 08:00 - Général - Lien permanent
Sous linux, j'utilise l'environnement graphique Enlightenment (E17) qui est minimal (et rapide !). Evidemment, cela implique de devoir configurer pas mal de choses soi-même. Mon but était de pouvoir faire un screenshot de la fenêtre active.
Faire un screenshot en command-line, ce n'est pas compliqué. Il suffit d'installer l'utilitaire ImageMagick, de lire un peu la doc et on trouve très facilement la ligne de commande permettant d'avoir la 'photo' de son écran :
import -window root myscreen.png
En jouant avec les paramètres de la commande import, il est assez simple de personnaliser son image pour avoir une partie de l'écran, une teinte, un redimentionnement, etc. Mais comment faire pour avoir la fenêtre active ?
C'est un peu plus compliqué car il est uniquement possible de passer un identifiant (via le paramètre -window) à la commande. Reste à le trouver... Finalement, après quelques recherches, je suis parvenu à mes fins :
xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW): window id #" | grep -E -o 0x.*
La commande xprop (disponible normalement par défaut) fourni toutes les informations sur une fenêtre quelconque. En lui précisant '-root', c'est la fenêtre active qui est prise en compte. Et ensuite via grep, l'identifiant est extrait puis affiché.
Au final, voici un petit script shell qui va créer un dossier 'screenshots' dans le répertoire de l'utilisateur courant et y mettre les images. Il suffit juste de mapper une combinaison de touches qui va exécuter la commande
#!/bin/sh window_id=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW): window id #" | grep -E -o 0x.*` picture_date=`date +%d.%m.%y-%H:%M:%S` picture_name="screenshot-$picture_date.png" picture_folder=~/screenshots/ if [ ! -d $picture_folder ]; then mkdir $picture_folder fi import -window $window_id -frame $picture_folder$picture_name
Commentaires
Un autre outil très utile pour les screenshot: xsnap !!!