¿Cómo puedo hacer capturas de pantalla de regiones de pantalla en Arch Linux con i3 WM?

Hace aproximadamente un mes cambié de Ubuntu 14.04 LTS a Arch y estoy bastante contento con esta decisión. Sin embargo, extraño algunas características con mi nueva distribución , especialmente Shift + printscr que en Unity permite capturar la selección de una región de pantalla.

Yo uso i3 WM. Entonces, mi pregunta es: ¿Cómo puedo configurar un comportamiento de captura de pantalla similar a Unity para poder ajustar regiones de pantalla o ventanas con un atajo de teclado o algo así (sin profundizar en la identificación de la ventana y las cosas de la consola)?

Respuesta

Puede usar import, parte de ImageMagick.

Capturar una región

Esto cambiará el cursor a una cruz y cuando haga clic y arrastre para formar un cuadro, ese cuadro se guardará como ss.png.

import ss.png 

Capturar pantalla completa

También puede reemplazar la palabra root con la identificación de la ventana para capturar una ventana específica.

Comentarios

  • También puede hacer clic en una ventana después de import ss.png para tomar una captura de pantalla de esa ventana.
  • Esto no ‘ no funciona desde la configuración i3, sin embargo. Ejemplo mínimo: agregue la línea bindsym $mod+shift+s exec import ~/screenshot.png a su configuración. No ‘ no hace nada por mí.
  • Vea la otra respuesta sobre Flameshot. Eso ‘ es lo que ‘ estoy usando estos días.

Respuesta

Ha pasado mucho tiempo desde que hice esta pregunta y parece que es útil para algunos de los usuarios. Así que proporciono mi propio script para hacer capturas de pantalla con paquetes xclip y imagemagick.

En primer lugar, instale las dependencias mencionadas anteriormente. Luego, puede hacer lo que quieras con el siguiente script. Admite hacer una captura de pantalla de una pantalla completa o una región de la pantalla y también copia automáticamente una captura de pantalla en un portapapeles para que puedas pegarla en cualquier lugar (navegador ei o mensajería Telegram).

Un par de trucos no tan difíciles de encontrar agregarían soporte para capturar ventanas específicas y alternar la parte de copia.

 #!/usr/bin/env bash # screenshots stuff # TODO: docs function help_and_exit { if [ -n "${1}" ]; then echo "${1}" fi cat <<-EOF Usage: scregcp [-h|-s] [<screenshots_base_folder>] Take screenshot of a whole screen or a specified region, save it to a specified folder (current folder is default) and copy it to a clipboard. -h - print help and exit -s - take a screenshot of a screen region EOF if [ -n "${1}" ]; then exit 1 fi exit 0 } if [ "${1}" == "-h" ]; then help_and_exit elif [ "${1:0:1}" == "-" ]; then if [ "${1}" != "-s" ]; then help_and_exit "error: unknown option ${1}" fi base_folder="${2}" else base_folder="${1}" params="-window root" fi file_path=${base_folder}$( date "+%Y-%m-%d_%H-%M-%S" )_screenshot.png import ${params} ${file_path} xclip -selection clipboard -target image/png -i < ${file_path}  

Y aquí están mis atajos de referencia para que un i3wm haga uso de este s cript:

# take a screenshot of a screen region and copy it to a clipboard bindsym --release Shift+Print exec "scregcp -s /home/ddnomad/pictures/screenshots/" # take a screenshot of a whole window and copy it to a clipboard bindsym --release Print exec "scregcp /home/ddnomad/pictures/screenshots/" 

Responder

Flameshot es una alternativa decente.

bindsym Print exec flameshot full bindsym Shift+Print exec flameshot gui 

Puede usar la opción -p /path/to/directory para omitir seleccionando el directorio para guardar.

Comentarios

  • buena herramienta Estaba buscando una herramienta de este tipo para hacer algo de documentación. Incluso puede agregar marcas a la captura de pantalla

Respuesta

¿Ha probado scrot a, utilidad de captura de pantalla de línea de comandos simple

ref.,: https://faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/

Comentarios

  • también puedes usar scrot -s para capturar una región específica. ejecute el comando, luego haga clic y mantenga presionado y luego haga clic en el segundo punto, ‘ creará un archivo con la fecha como nombre de archivo en su directorio actual.

Respuesta

¡Primero, instale xclip, imagemagick y jq!

pacman -S imagemagick jq xclip 

I tengo esta línea en mi configuración de i3:

bindsym $mod+Print exec \ import -window $( \ i3-msg -t get_tree | \ jq "recurse(.nodes[]) | select(.focused).window" \ ) png:- | \ xclip -selection clipboard -t image/png 

Esto pondrá una captura de pantalla de la ventana activa en su portapapeles cuando presione mod (Ventana / Alt) + Printscreen .

i3-msg -t get-tree obtiene todas las ventanas de i3 como json, luego usamos jq para obtener la identificación de la ventana enfocada. ¡Lo pasamos al comando de importación de imagemagicks y canalizamos el resultado a xclip, quien lo pondrá en el portapapeles!

Respuesta

Use mutilar . Está desarrollado de forma más activa y depende de slop , que es mucho mejor.

No use scrot. Su cuadro de selección se corrompe y deja una impresión en la captura de pantalla (también el cuadro se deforma al cambiar el tamaño) cuando se usa sobre una ventana de actualización (digamos htop).

Comentarios

  • (1) ¿Qué es la «pendiente»? (2) ¿Qué, exactamente, es mejor que? (3) ¿Por qué?
  • 1. Seleccionar operación, que se utiliza para seleccionar regiones de ventana [ github.com/naelstrof/slop] 2. Es ‘ mejor que scrot porque no ‘ t sufre daños en el cuadro de selección (intente scrot sobre htop). 3. idk.

Responder

Una opción muy simple si lo tiene instalado o no le importa instalarlo es usar xfce4-screenhooter y la configuración de i3 sería:

bindsym Print exec --no-startup-id xfce4-screenshooter 

Advertencia: aunque es bastante liviano, existen algunas dependencias si no está utilizando ningún otro programa xfce4

Respuesta

Me gusta obturador por sus capacidades de posprocesamiento (círculos rojos dibujados a mano) y amplias opciones de configuración.

Puede capturar una región de la pantalla ejecutando

shutter --select 

Puede configurar combinaciones de teclas en .config/i3/config así:

bindsym Print exec shutter --full bindsym Shift+Print exec shutter --select 

Se tarda un segundo en cargar, por lo que es posible que desee iniciarlo automáticamente en segundo plano:

exec shutter --min_at_startup 

Se podrá acceder al obturador a través de un icono de bandeja, que le ofrece muchas opciones útiles más allá de las anteriores.

Com ments

  • Shutter puede ‘ t instalarse fácilmente por completo en Ubuntu 18.04 en este momento (la herramienta de edición depende de la biblioteca no disponible ; PPA personalizado no actualizado). Triste.

Respuesta

Este script de perl6 toma raíz, área, ventana, o retraso Capturas de pantalla mediante la importación y las guarda en un archivo $ y en el portapapeles.

#!/usr/bin/env perl6 use v6; sub print_window(Str $file) { qx{xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"} ~~ /(0x\S*)/; run <import -window>, $0, $file; } sub MAIN( Str $option where $option ∈ <root area window delay> ) { my $today = DateTime.now( formatter => { sprintf "%04d_%02d_%02d_%02d-%02d-%02d", .year, .month, .day, .hour, .minute, .second } ); my $file = "$*HOME/Dades/Imatges/ScreenShots/$today.png"; given $option { when "root" { run <import -window root>, $file } when "area" { run "import", $file } when "window" { print_window($file) } when "delay" { sleep 10; print_window($file) } } run <xclip -selection clipboard -target image/png -i>, $file; run <xmessage -nearmouse -timeout 3>, "Screenshot in clipboard, and saved in $today.png"; } 

Estas son las combinaciones de teclas en i3 para ejecutar la secuencia de comandos:

bindsym $mod+Print exec Print_Screen root bindsym --release $mod+Shift+Print exec Print_Screen area bindsym $mod+Mod1+Print exec Print_Screen delay bindsym $mod+Control+Print exec Print_Screen window 

Responder

Editado ligeramente la solución por @ddnomad arriba, aquí está la bash versión del script con más explicidad y otra bandera que permite guardar solo en el portapapeles.

 #! /bin/bash - help_and_exit() { cat <<-EOF Usage: scregcp [-h|-s|-c] [<screenshots_base_folder>] Take screenshot of a whole screen or a specified region, save it to a specified folder (current folder is default) and copy it to a clipboard. -h - print help and exit -s - take a screenshot of a screen region -c - save only to clipboard EOF exit 0 } base_folder="./" savefile=true region=false params="-window root" while test $# -gt 0; do case "$1" in -h|--help*) help_and_exit ;; -r|--region*) params="" shift ;; -c|--clipboard-only*) savefile=false shift ;; *) if [[ $1 =~ ^\- ]] ; then echo "error: unknown flag "$1"" help_and_exit fi base_folder="${1}" shift ;; esac done file_path=${base_folder}$( date "+%Y-%m-%d_%H-%M-%S" )_screenshot.png import ${params} ${file_path} xclip -selection clipboard -target image/png -i < ${file_path} if [ "$savefile" = false ] ; then rm ${file_path} fi  

Entonces esto es lo que agrega a i3 config:

 bindsym --release Shift+Print exec "/dir/to/script.sh -r $HOME/Pictures/screenshots/" bindsym --release Control+Shift+Print exec "/dir/to/script.sh -r -c $HOME/Pictures/screenshots/" bindsym --release Print exec "/dir/to/script.sh $HOME/Pictures/screenshots/" bindsym --release Control+Print exec "/dir/to/script.sh -c $HOME/Pictures/screenshots/"  

Entonces, la combinación de teclas es:

  • = hacer una captura de pantalla
  • +Control = guardar solo en el portapapeles
  • +Shift = solo captura una región específica de la pantalla

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *