¿Cómo puedo tomar una captura de pantalla desde una ventana, con márgenes personalizables?

17

Necesito una herramienta que haga lo siguiente: al seleccionar una ventana, se realizará una captura de pantalla de esa ventana con un relleno x , como en la siguiente imagen:

Entonces, en la mayoría de los casos x será igual a y , pero a veces necesito diferentes distancias.

¿Cómo hacer esa captura de pantalla, automáticamente? Lo intenté con Shutter, pero no pude encontrar una configuración así. Sin embargo, es compatible con complementos. Entonces, un complemento podría ser recortar la ventana de esta manera.

    
pregunta Ionică Bizău 28.01.2015 - 08:03

3 respuestas

19

Script, usando el obturador

No creo que exista, pero como todo, se puede hacer.

Si hace que la secuencia de comandos a continuación esté disponible con una combinación de teclas (explicación más adelante), aparecerá una ventana emergente que le permitirá establecer los márgenes de su captura de pantalla en izquierda, derecha, arriba y abajo , separados por un espacio:

resultado:

o:

resultado:

etc.

Configuré el valor predeterminado a 30 px, pero puede establecer cualquier valor predeterminado (ver a continuación).

Cómo usar

  • El script usa Shutter y wmctrl . Suponiendo que Shutter ya está en su sistema (desde que lo mencionó), instale wmctrl :

    sudo apt-get install wmctrl
    

    N.B. Si usa Kubuntu , Zenity no está instalado de manera predeterminada:

    sudo apt-get install zenity
    
  • Copie la secuencia de comandos siguiente en un archivo vacío. Si lo desea, puede cambiar el marge "predeterminado" en la línea del script:

    'arg ='
    
  • guárdalo como custom_screenshot.py .

  • Agregue el script a una combinación de teclas de acceso directo: elija: Configuración del sistema & gt; "Teclado" & gt; "Accesos directos" & gt; "Accesos directos personalizados". Haga clic en "+" y agregue el comando:

    python3 /path/to/custom_screenshot.py
    

Nota

El script usa wmctrl para determinar la posición de la ventana. Sin embargo, en diferentes gestores de ventanas, el resultado del comando wmctrl -lG muestra pequeñas diferencias en la posición y de la ventana. Estas diferencias se eliminan por el valor, establecido en la línea deviation= del script. El valor establecido actualmente (0) es apropiado para Unity y KDE.

El script también se prueba y funciona bien en Xfce y Gnome , pero el valor debe cambiarse entonces, como se explica en la sección principal del script.

El 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])
    
respondido por el Jacob Vlijm 28.01.2015 - 10:43
2

También puede usar la combinación de los botones Shift y PrtScr para tomar una captura de pantalla de un área específica con dimensiones definidas por el usuario.

Simplemente presione la combinación y use el cursor modificado (se vuelve similar a un signo más) para elegir el área para captura de pantalla.

    
respondido por el manishraj2011 03.02.2015 - 14:35
2

Puede tomar capturas de pantalla con la utilidad de captura de pantalla de la línea de comando scrot :

scrot -s  

o

scrot -ub -d 5  

El segundo comando coloca un borde alrededor de la ventana seleccionada, que tiene un ancho agradable en relación con el tamaño de la ventana. La opción -d 5 significa retraso y le otorga un retraso de 5 segundos para seleccionar la ventana que se mostrará en la captura de pantalla.

Instalar con esto:

sudo apt-get install scrot

Referencia: Ubuntu Manual - scrot

    
respondido por el urosjarc 31.01.2015 - 13:54

Lea otras preguntas en las etiquetas