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
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
import ss.png
para tomar una captura de pantalla de esa ventana.bindsym $mod+shift+s exec import ~/screenshot.png
a su configuración. No ‘ no hace nada por mí.