Script, usando o Obturador
Não acho que exista, mas, como qualquer coisa, pode ser feito.
Se você disponibilizar o script abaixo em uma combinação de teclas (explicação mais abaixo), uma janela será exibida, permitindo que você defina as margens da captura de tela à esquerda, direita, superior e inferior , separadas por um espaço:
resultado:
ou:
resultado:
etc.
Defino o padrão para 30 px, mas você pode definir qualquer valor padrão (veja abaixo).
Como usar
O script usa Shutter
e wmctrl
. Supondo que Shutter
já esteja no seu sistema (desde que você o mencionou), instale wmctrl
:
sudo apt-get install wmctrl
NB Se você usa o Kubuntu , Zenity
não está instalado por padrão:
sudo apt-get install zenity
Copie o script abaixo em um arquivo vazio. Se você quiser, pode alterar a marca "padrão" na linha do script:
`arg =`
salve-o como custom_screenshot.py
.
Adicione o script a uma combinação de atalhos de teclas: escolha: Configurações do sistema> "Teclado"> "Atalhos"> "Atalhos personalizados". Clique no "+" e adicione o comando:
python3 /path/to/custom_screenshot.py
Nota
O script usa wmctrl
para determinar a posição da janela. Em gerenciadores de janelas diferentes, no entanto, a saída do wmctrl -lG
comando mostra pequenas diferenças na posição y da janela. Essas diferenças são eliminadas pelo valor, definido na deviation=
linha do script. O valor atualmente definido (0) é apropriado para Unity e KDE.
O script também é testado e funciona bem no Xfce
e Gnome
, mas o valor precisa ser mudado, então, como explicado na seção principal do script.
O script
#!/usr/bin/env python3
import subprocess
import time
"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
pass
else:
time.sleep(0.5)
# frontmost window pos
frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
frontmost = frontmost[:2]+"0"+frontmost[2:]
f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
# extent
xt_data = get("xprop -id "+frontmost).split()
xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
# set data for screenshot command
x = str(int(f_data[0])-int(arg[0])-xt[0])
y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])
command = "shutter -s="+(",").join([x,y,w,h])+" -e"
subprocess.call(["/bin/bash", "-c", command])