Screenshots Workspaces: i3wm
Alguna vez habrán visto en unixporn (reddit) o en algún lado una captura como una cinta de imágenes en la cual cada una es un espacio de trabajo (workspace), en formato vertical u horizontal.

Estimo que en los DE (kde, gnome, xfce, etc) existirá algo que lo haga, pero en los WM (i3w, dwm, bspwm, etc) hasta donde sé no los hay y si los hay no importa, podemos hacer el nuestro propio!
En mi caso, para el wm que utilizo, que es i3wm. El código es el siguiente, solo necesitarán imagemagick y scrot instalado:
#!/bin/bash
outputfile=$1
command="i3-msg -t get_workspaces"
fileprefix="/tmp/screen-"
json=$(eval "$command")
decoded=$(echo "$json" | jq -r '.')
while IFS= read -r workspace; do
current=$(echo "$workspace" | jq -r '.name')
first=$(echo "$workspace" | jq -r '.name')
i3-msg workspace "$current"
sleep 0.2
scrot "${fileprefix}${current}.png"
done < <(echo "$decoded" | jq -c '.[]')
montage ${fileprefix}*.png -geometry +0+0 -tile x1 "$outputfile"
rm /tmp/*.png
Y se llama de la siguiente forma:
capture.sh ~/Pictures/screenshots/capture-$(date +%d-%m-%Y-%H%M).png
Y se podría utilizar el atajo de teclado que les guste, yo en este caso tengo esto en mi .config de i3wm:
bindsym $mod+Print exec --no-startup-id ~/donde/esta/capture.sh ~/donde/guardo/capture-$(date +%d-%m-%Y-%H%M).png
Resumiento este script lo que hace es tomar capturas de pantalla de todos los espacios de trabajo (workspaces) y luego combina dichas capturas en una sola imagen.
Primero, obtiene el nombre del archivo de salida a partir del primer argumento del script, el cual sería el nombre del archivo de la captura:
outputfile=$1
Luego, define un comando para obtener información sobre los espacios de trabajo de i3:
command="i3-msg -t get_workspaces"
y una ubicación/prefijo de archivo para las capturas de pantalla temporales
fileprefix="/tmp/screen-"
El script ejecuta el comando para obtener los datos JSON de los espacios de trabajo
json=$(eval "$command")
y decodifica este JSON
decoded=$(echo "$json" | jq -r '.')
A continuación, recorre cada espacio de trabajo en el JSON
while IFS= read -r workspace; do.
Para cada espacio de trabajo, extrae su nombre, cambia a dicho espacio, espera un breve momento para asegurar que el cambio se haya completado, y toma una captura de pantalla guardándola con un nombre basado en el prefijo y el nombre del espacio de trabajo.
current=$(echo "$workspace" | jq -r '.name')
first=$(echo "$workspace" | jq -r '.name')
i3-msg workspace "$current"
sleep 0.2
scrot "${fileprefix}${current}.png"
Después de recorrer todos los espacios de trabajo y tomar las capturas de pantalla, el script utiliza la herramienta montage de ImageMagick para combinar todas las capturas en una sola imagen dispuesta en una fila horizontal (x1) o vertical (1x).
montage ${fileprefix}*.png -geometry +0+0 -tile x1 "$outputfile"
Al final, elimina todas las capturas de pantalla temporales de la carpeta /tmp para que si, hay otra nueva nueva captura, no utilice los ya generados y haga una imagen interminable.
rm /tmp/*.png
Como verán, luego de leer la explicación de cada línea no se ve tan complicado una vez que comprenden que hace cada cosa.
Seguramente haya formas más fáciles y efectivas de hacer lo mismo, pero como siempre en estas cosas, si funciona …