Script, usando Shutter
No creo que exista, pero como todo, se puede hacer.
Si hace que el script a continuación esté disponible bajo una combinación de teclas (explicación más abajo), aparecerá una ventana que le permitirá establecer los márgenes de su captura de pantalla a la izquierda, derecha, arriba y abajo , separados por un espacio:
resultado:
o:
resultado:
etc.
Establecí el valor predeterminado en 30 px, pero puedes establecer cualquier valor predeterminado (ver más abajo).
Cómo utilizar
El script usa Shutter
y wmctrl
. Suponiendo Shutter
que ya está en su sistema (ya que lo mencionó), instale wmctrl
:
sudo apt-get install wmctrl
Nota: si usa Kubuntu , Zenity
no está instalado por defecto:
sudo apt-get install zenity
Copie el script a continuación en un archivo vacío. Si lo desea, puede cambiar el margen "predeterminado" en la línea del script:
`arg =`
guárdelo como custom_screenshot.py
.
Agregue el script a una combinación de teclas de acceso directo: elija: Configuración del sistema> "Teclado"> "Accesos directos"> "Accesos directos personalizados". Haga clic en "+" y agregue el comando:
python3 /path/to/custom_screenshot.py
Nota
La secuencia de comandos se utiliza wmctrl
para determinar la posición de la ventana. Sin embargo, en diferentes administradores de ventanas, la salida del wmctrl -lG
comando muestra pequeñas diferencias en la posición y de la ventana. Estas diferencias se eliminan mediante el valor, establecido en la línea deviation=
del script. El valor establecido actualmente (0) es apropiado para Unity y KDE.
El guión también es probado, y funciona bien en Xfce
y Gnome
, pero el valor que hay que cambiar entonces, como se explica en la sección de cabecera de la secuencia de comandos.
La secuencia de comandos
#!/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])