Script, usando o Obturador
Eu 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 na esquerda, direita, superior e bottom , separados por um espaço:
resultado:
ou:
resultado:
etc.
Eu defino o padrão para 30 px, mas você pode definir qualquer valor padrão (veja abaixo).
Como usar
-
O script usa
Shutter
ewmctrl
. Assumindo queShutter
já está em seu sistema (desde que você mencionou), instalewmctrl
:sudo apt-get install wmctrl
N.B. Se você usar o Kubuntu ,
Zenity
não será instalado por padrão:sudo apt-get install zenity
-
Copie o script abaixo em um arquivo vazio. Se você quiser, pode alterar a margem "padrão" na linha do script:
'arg ='
-
salve-o como
custom_screenshot.py
. -
Adicione o script a uma combinação de atalhos: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:
python3 /path/to/custom_screenshot.py
Nota
O script usa wmctrl
para determinar a posição da janela. Em diferentes gerenciadores de janelas, no entanto, a saída do comando wmctrl -lG
mostra pequenas diferenças na posição y da janela. Essas diferenças são eliminadas pelo valor definido na deviation=
-line do script. O valor atualmente definido (0) é apropriado para o Unity e o KDE.
O script também é testado e funciona bem em Xfce
e Gnome
, mas o valor precisa ser alterado, conforme 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])