Хорошо, это моя проблема: у меня есть приложение, которое я хочу сделать снимок экрана; но поскольку gnome-screenshot
и mate-screenshot
скрывают панели инструментов или что-то еще каждый раз, когда они делают снимок экрана при запуске из окна интерактивного апплета, они портят окно приложения, которое я снимал со скриншота, которое затем вылетает. Единственное, что я могу сделать, - это запустить gnome-screenshot непосредственно с именем файла и задержкой, что делает этот процесс довольно утомительным.
Итак, это то, о чем я думаю - я могу настроить глобальный приемник нажатия клавиш с помощью сочетаний клавиш системы / клавиатуры ":
Это может вызвать запуск некоторой программы, которая при необходимости отправляет какой-то глобальный «сигнал» (возможно, пакет TCP / IP или что-то в этом роде).
Тогда у меня может быть сценарий «слушателя» в открытом терминале, который реагирует на сигнал (в некотором смысле, netcat
может быть настроен как прослушивающий сервер, реагирующий на входящие данные TCP / IP, а затем фильтрующий реакцию с помощью grep или чего-то еще), и в ответ , запускает gnome-screenshot -d 10 -f ~/Desktop/test.png
. В качестве простого примера с netcat:
nc -l -p 1234 | while read l; do \
if [ "$l" == "d" ]; then \
echo "GOT IT"; \
else \
echo $l; \
fi; \
done
Вопрос в том, есть ли какие-либо приложения, которые я мог бы использовать для отправки этого события глобально, а также прослушивания и фильтрации его в терминале? Я хотел бы знать, есть ли что-то вроде этой избегающей сети, прежде чем я попытаюсь разработать свое собственное netcat
основанное на сценариях решение для сценариев ...
Хорошо, сделанный этим с netcat
, но надежда кого-то отправит лучшее решение:
#!/usr/bin/env bash
# let the signal be the letter "d"
# set up a netcat listener, and run gnome-screenshot without prompt on incoming signal
# in System/Keyboard shortcuts:
# Name: trignetshot
# Cmd: bash -c "echo d | nc localhost 1234"
# Shortcut: whatever...
# then run this script in a terminal - and then press the shortcut key
while [ 1 ]; do # else it exits at each received line with TCP
echo "Starting listener...";
nc -l -p 1234 | while read l; do
if [ "$l" == "d" ]; then
echo "GOT IT";
# calculate screenshot name
maxnum=0;
for ix in ~/Desktop/Screenshot*.png; do
tnum=$(echo $ix | egrep -o '[[:digit:]]*');
#echo $tnum ;
if [ -z "$tnum" ]; then
tnum=0;
fi;
if (($tnum>$maxnum)); then
maxnum=$tnum;
fi;
done;
#echo $maxnum # have it here
newnum=$((maxnum+1))
set -x
gnome-screenshot -d 1 -f ~/Desktop/Screenshot-${newnum}.png
set +x
fi;
done;
done