Я собрал небольшой скрипт для круговых снимков экрана, вам нужны следующие пакеты (хотя он также адаптируется для других программ снимков экрана и эмуляторов терминала):
sudo apt install xdotool gnome-screenshot imagemagick xterm
Сценарий
#!/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"
Сохраните его как например ~/circular_screenshot.bash
и сделайте его исполняемым с chmod +x ~/circular_screenshot.bash
. Когда вы запустите его, скрипт сначала попросит вас переместить курсор мыши в центральное положение и нажать, Enterа затем переместить его в крайнее положение (неважно, какой скрипт рассчитывает радиус от расстояния) и снова нажать Enter. Затем экран мерцает, пока делается снимок экрана (я рекомендую использовать scrot $temp_screenshot
вместо этого, это не показывает это странное поведение.) И ImageMagick convert
1 используется, чтобы обрезать изображение. Вывод сохраняется с отметкой времени в качестве имени файла в вашем домашнем каталоге, вы можете изменить это поведение, отредактировав output
переменную скрипта.
Пример вывода
Звоните без (или лучше: с невидимым) терминального окна
Я полагаю, вы не хотите, чтобы терминал блокировал ваш экран каждый раз, когда вы делаете такой снимок экрана, так что вот решение для этого; Вызовите скрипт следующим образом (при условии, что скрипт был сохранен как ~/circular_screenshot.bash
):
xterm -geometry 0x0-1-1 -e ~/circular_screenshot.bash
При этом скрипт запускается в невидимом окне терминала (значок с красным «X» и синим «T»), вам просто нужно убедиться, что он сфокусирован при вводе Enter. Вы можете назначить эту команду для сочетания клавиш, используя настройки вашего рабочего стола.
Поскольку ImageMagick невероятно мощен, вы можете адаптировать этот скрипт и для вывода других фигур, я использовал один ellipse
и тот же радиус в направлениях x и y, чтобы нарисовать кружок выше - измените его, например, $radius,$(bc <<<"$radius*0.5")
чтобы получить эллипс с эксцентриситетом выше 0.
1: я взял подход из этой темы на imagemagick.org .