Scrot — небольшая программка, которая делает одну вещь — снимок экрана (хотя можно и отдельного окна) и сохраняет его в файл. Мне нравится такой подход — ничего не весит постоянно в памяти и всё достаточно просто.
Однако часто после скриншота требуется его отредактировать — что-то выделить, подчеркнуть, обрезать и так далее. Создать диалоговые окна в shell-скриптах можно с помощью небольшой программки zenity — быстро и удобно. Собственно, сам скрипт, который делает снимок экрана, сохраняет его в папку и затем даёт пользователю выбор — редактировать его или нет:
#!/bin/sh
folder=~/screenshots #папка для сохранения
img_extension=png #расширения файла изображения
img_name=$(date +%y_%m_%d_%X | sed -e 's/\ //g') #имя файла в виде год_месяц_день_время
#и удаление лишних пробелов sed'ом
img_file=$folder/$img_name.$img_extension #полный путь к файлу
msg="Редактировать скриншот?" #строка, задающая заголовок и вопрос для zenity
editor=gimp #графический редактор
scrot $img_file #делаем снимок экрана
if zenity --title "$msg" --text "$msg" --question --default-cancel
then #если пользователь ответил да
$editor $img_file #то редактируем скриншот
fi
После этого осталось скрипт повесить на какую-нибудь клавишу (к примеру PrintScreen 😉 ). В итоге получаем (у меня в качестве оконного менеджера стоит ratpoison, поэтому нет оформления окна):