Creé un pequeño script para capturas de pantalla circulares, necesita los siguientes paquetes (aunque también es adaptable para otros programas de captura de pantalla y emuladores de terminal):
sudo apt install xdotool gnome-screenshot imagemagick xterm
La secuencia de comandos
#!/bin/bash
output=~/$(date +%F_%H%M%S).png
temp_screenshot=$(mktemp).png
read -p "Move cursor to center and press Enter"
eval $(xdotool getmouselocation --shell)
x_center=$X
y_center=$Y
read -p "Move cursor to edge and press Enter"
eval $(xdotool getmouselocation --shell)
gnome-screenshot -f $temp_screenshot
radius=$(bc <<<"sqrt(($X-$x_center)^2+($Y-$y_center)^2)")
convert $temp_screenshot -alpha on \( +clone -channel a -evaluate multiply 0 -draw "ellipse $x_center,$y_center $radius,$radius 0,360" \) -compose DstIn -composite -trim "$output"
Guárdelo como, por ejemplo, ~/circular_screenshot.bash
y hágalo ejecutable con chmod +x ~/circular_screenshot.bash
. Cuando lo ejecuta, el script primero le pide que mueva el cursor del mouse a la posición central y presione Entery luego lo mueva a una posición de borde (no importa cuál, el script calcula el radio desde la distancia) y presione nuevamente Enter. La pantalla parpadea mientras se toma la captura de pantalla (recomiendo usar en su scrot $temp_screenshot
lugar, no muestra este comportamiento extraño) y el convert
1 de ImageMagick se usa para recortar la imagen. La salida se guarda con una marca de tiempo como el nombre del archivo en su directorio de inicio, puede cambiar este comportamiento editando la output
variable de la secuencia de comandos.
Salida de ejemplo
Llamar sin (o mejor: con una ventana de terminal invisible)
Supongo que no quieres tener un terminal bloqueando tu pantalla cada vez que haces una captura de pantalla como esa, así que aquí hay una solución para eso; Llame al script de la siguiente manera (suponiendo que el script se haya guardado como ~/circular_screenshot.bash
):
xterm -geometry 0x0-1-1 -e ~/circular_screenshot.bash
Esto ejecuta el script en una ventana de terminal invisible (icono con una "X" roja y una "T" azul), solo necesita asegurarse de que esté enfocado cuando escribe Enter. Puede asignar este comando a un atajo de teclado utilizando la configuración de su entorno de escritorio.
Como ImageMagick es increíblemente poderoso, también puede adaptar este script para generar otras formas, utilicé ellipse
con el mismo radio en ambas direcciones x e y para dibujar el círculo de arriba; cámbielo a, por ejemplo, $radius,$(bc <<<"$radius*0.5")
para obtener una elipse con excentricidad por encima de 0.
1: Tomé el enfoque de este hilo en imagemagick.org .