Ubuntu: Screenshot only active monitor (gnome-screenshot)



Question:

Pressing printscreen or clickin the screenshot will capture both screens, what if I only want the active monitor display captured, is it feasible? Or should I use shutter or sth?

enter image description here

So not spaces of the same screen, but dual monitor system two screens.


Solution:1

To only shoot the current screen is not the default behaviour, nor is it an option in gnome-screenshot, nor any other screenshot application as far as I know.

Like practically anything however, it can be scripted.

An example

The script further below will:

  • take a screenshot
  • automatically create a (numbered) image in an arbitrary directory
  • automatically crop the image to the section of the screen you are currently on (retrieved from the mouse position), and create a cropped image named:

    cropped_<image>.png  

To prevent overwriting earlier screenshots, these cropped images are numbered like their oroginals.

screenshot

enter image description here

if I am on the left screen:

enter image description here

if I am on the right screen:

enter image description here

The script

#!/usr/bin/env python3  import os  from PIL import Image  import subprocess    # ---set the name of your (automatically numbered) screenshots (no extension)  imagename = "screenshot"  # ---set the path to where you (want to) save your screenshots  savepath = "/home/jacob/Bureaublad"    def get(cmd):      return subprocess.check_output(cmd).decode("utf-8")    n = 1   while True:      name = imagename+"_"+str(n)+".png"      path = os.path.join(savepath, name)      if os.path.exists(path):          n += 1      else:          break    # make the shot  subprocess.call(["gnome-screenshot", "-f", path])  # get the width of the left screen  screenborder = [int(n) for n in [s for s in get("xrandr").split()\                  if "+0+0" in s][0].split("+")[0].split("x")]  # read the screenshot  im = Image.open(path)  width, height = im.size  # get the mouse position  mousepos = int(get(["xdotool", "getmouselocation"]).split()[0].split(":")[1])  top = 0  bottom = height    if mousepos <= screenborder[0]:      left = 0      right = screenborder[0]  else:      left = screenborder[0]      right = width  # create the image  im.crop((left, top, right, bottom)).save(os.path.join(savepath, "cropped_"+name))  

How to use

  1. The script needs xdotool, to get the mouse position:

    sudo apt-get install xdotool  

    Furthermore, not sure if python3-pil is installed by default:

    sudo apt-get install python3-pil  
  2. Copy the script above into an empty file, save it as crop_screenshot.py
  3. In the head section of the script, set the desired name of the screenshot and the directory you use for your screenshots:

    # ---set the name of your (automatically numbered) screenshots (no extension)  imagename = "screenshot"  # ---set the path to where you (want to) save your screenshots  savepath = "/home/jacob/Bureaublad"  
  4. Test- run the script from a terminal:

    python3 /path/to/crop_screenshot.py  

    The result:

    enter image description here

  5. If all works fine, add it to a shortcut. Choose: System Settings > "Keyboard" > "Shortcuts" > "Custom Shortcuts". Click the "+" and add the command:

    python3 /path/to/crop_screenshot.py  

Note

The script, as it is, simply splits the image on the width of your left screen. This is sufficient, because your screens are of the same y-resolution and aligned.

The script can however very well be edited to work with any screen arrangement, with any number of screens, as long as the screens are arranged in a non-overlapping arrangement. The math is a bit more complicated in that case however.

If anyone is interested, I will add it later.


Solution:2

Not withstanding the elegant script above, on ubuntu 16.04 I found that alt-print-screen, as desribed in: Print Screen captures two Spaces not one works. Actually this just prints the current window. If the aim is to capture a background I don't think it will work.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »