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