Je ne pense pas que vous serez capable de faire cela avec screen
à moins que la sortie ne soit réellement rendue dans une fenêtre, ce qui va probablement à l'encontre de l'intérêt d'utiliser screen.Cependant, la fenêtre n'a pas besoin d'être au premier plan.
Le ImageMagick suite contient un utilitaire appelé import
vous pouvez utiliser pour cela. Si import --help
vous donne "commande introuvable", installez le package imagemagick, il sera disponible dans n'importe quelle distribution Linux.
import
a besoin du nom de la fenêtre. iftop
est une interface de terminal, donc pour vous assurer que vous utilisez le bon nom, vous devrez définir le titre du terminal GUI dans lequel il s'exécute. La façon dont vous procédez dépend du terminal GUI que vous utilisez. Par exemple, je préfère le terminal XFCE, qui serait :
Terminal -T Iftop -e iftop
Ouvre un nouveau terminal exécutant iftop
avec le titre "Iftop". Une capture d'écran peut être prise :
import -window Iftop ss.jpg
Si vous allez faire cela toutes les cinq secondes, vous voudrez probablement plutôt ouvrir la fenêtre exécutant un script afin de pouvoir réutiliser le même terminal :
count=0;
while ((1)); do
iftop &
pid=$!
sleep 1 # make sure iftop is up
count=$(($count+1))
import -window Iftop iftop_sshot$count.jpg
kill $pid
sleep 5
done
Si le script est "iftopSShot.sh", alors vous commencerez ce Terminal -T Iftop -e iftopSShot.sh
-- sauf que vous n'utilisez probablement pas Terminal
. La plupart des terminaux Linux GUI sont associés à des DE spécifiques, bien qu'il s'agisse d'applications autonomes pouvant être utilisées indépendamment. Je crois que le nom du terminal par défaut sur KDE est Konsole
et il suit le -T
et -e
conventions; pour GNOME, c'est probablement gnome-terminal
(cela peut avoir changé) et il semble utiliser -t
et non -T
.
Attention import
par défaut sonne la cloche, ce qui deviendra irritant, mais il y a un -silent
option.
Dans un X environnement :
Définissez dynamiquement le titre du terminal :
À partir de notre script, un moyen de changer le titre du terminal à l'aide de séquences ansi :
echo -e "\033]0;Term | myApp\007";
Capturer un png par titre de fenêtre :
Nous pouvons maintenant rechercher l'identifiant de la fenêtre par le titre exact en utilisant wmctrl
et passez l'identifiant au import
utilitaire :
import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') ~/Pictures/capture.png
Créer un gif :
Exemple pour peaufiner, prendre 5 captures toutes les secondes puis les convertir en gif en utilisant convert
, dans une boucle infinie de 2 secondes.
rm -f /tmp/*png && for i in {1..5}; do import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') /tmp/$i.png && sleep 1; done && convert -delay 200 -loop 0 /tmp/*.png animation.gif