0

Ok, this is my problem: I have an application I want to screenshot; but because gnome-screenshot and mate-screenshot hide toolbars or whatnot each time they take a screenshot when started from the interactive applet window, they mess up the window of the application I'm screenshotting, which then crashes. The only thing I can do is start gnome-screenshot directly with a file name and a delay, which makes this process rather tedious.

So, this is what I'm thinking of doing - I can set up a global keypress listener via System/Keyboard Shortcuts":

Screenshot-Keyboard%20Shortcuts.png

This could trigger some program, which sends some sort of a global "signal" if you will (possibly a TCP/IP packet or something).

Then, I could have a "listener" script in an open terminal, which reacts to the signal (in a sense, netcat could be set up as a listening server, reacting to an incoming TCP/IP data, and then filter the reaction via grep or something), and in response, runs gnome-screenshot -d 10 -f ~/Desktop/test.png. As a simple example with netcat:

nc -l -p 1234 | while read l; do \
  if [ "$l" == "d" ]; then \
    echo "GOT IT"; \
  else \
    echo $l; \
  fi; \
done

The question is - are there any applications that I could use for sending this event globally, and listening and filtering for it in a terminal? I'd like to know if there is something like this avoiding network, before I try to develop my own custom netcat based scripting solution...

3
  • 1
    Why don't you just assign that command to the shortcut directly?
    – dadexix86
    Mar 31, 2016 at 9:32
  • Good point @dadexix86 - I guess now that I do this to avoid crashes, I'd like the extra logging to terminal this kind of a setup would provide...
    – sdaau
    Mar 31, 2016 at 9:34
  • 1
    Ok, so I do not know how to answer your question, but to the extent of my capabilities, I would not call for an external listener. I would create a script (sh, maybe?) that does directly all the logging that you want (maybe on a hidden log file in your home) and launches gnome-screenshot with those parameters.
    – dadexix86
    Mar 31, 2016 at 9:37

1 Answer 1

0

Ok, made this with netcat, but hoping someone will post a better solution:

#!/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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .