Отправить событие на глобальное нажатие - есть ли у слушателя в терминале реакция и запуск другой программы?

Хорошо, это моя проблема: у меня есть приложение, которое я хочу сделать снимок экрана; но поскольку gnome-screenshot и mate-screenshot скрывают панели инструментов или что-то еще каждый раз, когда они делают снимок экрана при запуске из окна интерактивного апплета, они портят окно приложения, которое я снимал со скриншота, которое затем вылетает. Единственное, что я могу сделать, - это запустить gnome-screenshot непосредственно с именем файла и задержкой, что делает этот процесс довольно утомительным.

Итак, это то, о чем я думаю - я могу настроить глобальный приемник нажатия клавиш с помощью сочетаний клавиш системы / клавиатуры ":

Screenshot-Keyboard%20Shortcuts.png

Это может вызвать запуск некоторой программы, которая при необходимости отправляет какой-то глобальный «сигнал» (возможно, пакет 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 основанное на сценариях решение для сценариев ...

0
задан 31 March 2016 в 12:30

1 ответ

Хорошо, сделанный этим с 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
0
ответ дан 31 March 2016 в 22:30
  • 1
    Еще раз спасибо за Ваш вход просто любопытство, какой браузер делает Вас, рекомендует для кого-то использующего Win 10 & Ubuntu? Мне понравился много FF, но это кажется it' s получение слишком тяжелого и медленного. – Michael 8 August 2017 в 23:34

Другие вопросы по тегам:

Похожие вопросы: