Screenshot di sistemi Unix e GNU/Linux via command line

Postato da ROb | nella categoria Linux, Utilità | venerdì, 22 aprile 2011

2

Tutti noi conoscono almeno 3 o 4 modi differenti per catturare screenshot di finestre o schermo intero sia su sistemi Windows che in sistemi Linux o Unix.

Oggi voglio proporvi due piccoli script che ho scritto ispirandomi a un interessante articolo su IBM Developer Works.

Entrambi gli script sfruttano i comandi messi a disposizione dai sistemi X11 e tipicamente già installati nelle nostre distribuzioni. Tali comandi sono: xwd e xwininfo .

Per renderli un pò più comodi ho utilizzato anche il comando convert, della suite di ImageMagick, e notify-send per inviare delle notifiche all’utente al termine delle operazioni di salvataggio.

Il primo script, di nome capture_full.sh, può ricevere in ingresso 1 parametro che determina il numero di secondi di attesa prima di catturare il nostro desktop in un file nel nostro Desktop. Se tale parametro non viene passato il valore di attesa di default è 3 secondi.

#!/bin/bash

if [ "$1" != "" ]
   then
     seconds=$1;
   else
     seconds=3;
fi

now=`date "+%Y_%m_%d-%H_%M_%S"`
filepath="${HOME}/screen_full_${now}.png"

sleep ${seconds} ; xwd -root | convert - ${filepath}

notify-send -t 3000 -u low -i gtk-dialog-info "Screenshot" "file saved in ${filepath}";

Il secondo script, di nome capture_window.sh, ci permette invece di catturare una singola finestra (anche se non ci permette di interagire con il mouse nella finestra, per far apparire ad esempio un menu contestuale). Il funzionamento di questo script è il seguente: dopo che viene lanciato attende alcuni secondi (modificabili con il primo parametro opzionale) per permetterci di scegliere una finestra del desktop, quindi salva l’id della finestra e lo usa per memorizzare l’immagine della finestra nel desktop.

#!/bin/bash

if [ "$1" != "" ]
 then
 seconds=$1;
 else
 seconds=3;
fi

sleep ${seconds};
wid=`xwininfo | grep "Window id" | awk '{print $4}'`;

now=`date "+%Y_%m_%d-%H_%M_%S"`
filepath="${HOME}/Desktop/screen_window_${now}.png";

xwd -id ${wid} | convert - ${filepath}

notify-send -t 3000 -u low -i gtk-dialog-info "Screenshot" "file saved in ${filepath}";

Provateli, modificando anche la variabile $filepath se lo ritenete opportuno, e fatemi sapere.

Ecco L’articolo originale di William von Hagen in IBM.