Sunday, May 19, 2024
4
rated 0 times [  4] [ 0]  / answers: 1 / hits: 3746  / 1 Year ago, fri, january 13, 2023, 6:16:41

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.


More From » multiple-monitors

 Answers
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.


[#15073] Saturday, January 14, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
darpose

Total Points: 424
Total Questions: 99
Total Answers: 121

Location: Jersey
Member since Fri, Oct 1, 2021
3 Years ago
;