Ich habe ein kleines Skript für kreisförmige Screenshots zusammengestellt. Sie benötigen die folgenden Pakete (obwohl es auch für andere Screenshot-Programme und Terminalemulatoren anpassbar ist):
sudo apt install xdotool gnome-screenshot imagemagick xterm
Das Skript
#!/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"
Speichern Sie es als zB ~/circular_screenshot.bash
und machen Sie es ausführbar mit chmod +x ~/circular_screenshot.bash
. Wenn Sie es ausführen, werden Sie vom Skript zuerst aufgefordert, den Mauszeiger an die Mittelposition Enterzu bewegen und zu drücken und dann an eine Kantenposition zu bewegen (egal welche, das Skript berechnet den Radius aus der Entfernung) und erneut zu drücken Enter. Der Bildschirm flackert dann, während der Screenshot aufgenommen wird (ich empfehle scrot $temp_screenshot
stattdessen die Verwendung , er zeigt dieses seltsame Verhalten nicht.) Und ImageMagicks convert
1 wird zum Zuschneiden des Bildes verwendet. Die Ausgabe wird mit einem Zeitstempel als Dateiname in Ihrem Ausgangsverzeichnis gespeichert. Sie können dieses Verhalten ändern, indem Sie die output
Variable des Skripts bearbeiten .
Beispielausgabe
Anruf ohne (oder besser: mit unsichtbarem) Terminalfenster
Ich nehme an, Sie möchten nicht, dass ein Terminal Ihren Bildschirm jedes Mal blockiert, wenn Sie einen solchen Screenshot erstellen. Hier ist eine Lösung dafür. Rufen Sie das Skript wie folgt auf (vorausgesetzt, das Skript wurde gespeichert als ~/circular_screenshot.bash
):
xterm -geometry 0x0-1-1 -e ~/circular_screenshot.bash
Dadurch wird das Skript in einem unsichtbaren Terminalfenster ausgeführt (Symbol mit einem roten „X“ und einem blauen „T“). Sie müssen lediglich sicherstellen, dass es beim Tippen fokussiert ist Enter. Sie können diesen Befehl mithilfe der Einstellungen Ihrer Desktop-Umgebung einer Tastenkombination zuweisen.
Da ImageMagick unglaublich leistungsfähig ist, können Sie dieses Skript auch für die Ausgabe anderer Formen anpassen. Ich habe ellipse
den Kreis oben in x- und y-Richtung mit demselben Radius gezeichnet. Ändern Sie diesen in z. B. $radius,$(bc <<<"$radius*0.5")
, um stattdessen eine Ellipse mit einer Exzentrizität über 0 zu erhalten.
1: Ich habe den Ansatz aus diesem Thread auf imagemagick.org übernommen .