Para filmar apenas a tela atual não é o comportamento padrão, nem é uma opção em gnome-screenshot
, nem qualquer outro aplicativo de captura de tela, até onde eu sei.
Como praticamente qualquer coisa, no entanto, pode ser roteirizado.
Um exemplo
O script mais abaixo será:
- tire uma captura de tela
- cria automaticamente uma imagem (numerada) em um diretório arbitrário
-
recorte automaticamente a imagem para a seção da tela em que você está atualmente (recuperado da posição do mouse), e crie uma imagem recortada chamada:
cropped_<image>.png
Para evitar a substituição de capturas de tela anteriores, essas imagens recortadas são numeradas como seus oroginals.
screenshot
seeuestivernatelaesquerda:
seeuestivernateladadireita:
Oscript
#!/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))
Como usar
-
O script precisa de
xdotool
para obter a posição do mouse:sudo apt-get install xdotool
Além disso, não tenho certeza se
python3-pil
está instalado por padrão:sudo apt-get install python3-pil
- Copie o script acima em um arquivo vazio, salve-o como
crop_screenshot.py
-
Na seção principal do script, defina o nome desejado da captura de tela e o diretório que você usa para suas capturas de tela:
# ---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"
-
Teste- execute o script a partir de um terminal:
python3 /path/to/crop_screenshot.py
O resultado:
Setudofuncionarbem,adicione-oaumatalho.Escolha:Configuraçõesdosistema>"Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:
python3 /path/to/crop_screenshot.py
Nota
O script, como é, simplesmente divide a imagem na largura da tela esquerda. Isso é suficiente, porque suas telas são da mesma resolução y e alinhadas.
O script pode, no entanto, ser muito bem editado para trabalhar com qualquer arranjo de telas, com qualquer número de telas, desde que as telas estejam organizadas em um arranjo sem sobreposição. A matemática é um pouco mais complicada nesse caso, no entanto.
Se alguém estiver interessado, eu adicionarei mais tarde.