Come posso creare facilmente screenshot delle regioni dello schermo su Arch Linux con i3 WM?

Circa un mese fa sono passato da Ubuntu 14.04 LTS ad Arch e sono abbastanza contento di questa decisione. Tuttavia, mi mancano alcune funzionalità della mia nuova distribuzione , in particolare Shift + Printscr che in Unity consente di catturare la selezione di una regione dello schermo.

Uso i3 WM. Quindi, la mia domanda è: come posso configurare il comportamento dello screenshot simile a Unity per essere in grado di catturare aree dello schermo o finestre con una scorciatoia da tastiera o qualcosa del genere (senza scavare nellID della finestra e nelle cose della console)?

Risposta

Puoi utilizzare import, parte di ImageMagick.

Cattura una regione

Questo cambierà il tuo cursore in un mirino e quando fai clic e trascini per formare una casella, quella casella verrà salvata come ss.png.

import ss.png 

Cattura tutto il display

Puoi anche sostituire la parola root con lid della finestra per catturare una finestra specifica.

Commenti

  • Puoi anche fare clic su una finestra dopo import ss.png per acquisire uno screenshot di quella finestra.
  • Questo non Tuttavia, ‘ non funziona da i3 config. Esempio minimo: aggiungi la riga bindsym $mod+shift+s exec import ~/screenshot.png alla tua configurazione. ‘ non fa niente per me.
  • Vedi laltra risposta su Flameshot. Questo ‘ è quello che ‘ uso in questi giorni.

Risposta

È passato molto tempo da quando “ho” posto questa domanda e sembra che sia utile per alcuni utenti. Quindi fornisco il mio script per creare screenshot con i pacchetti xclip e imagemagick.

Prima di tutto, installa le dipendenze sopra menzionate. Quindi puoi fare qualunque cosa tu voglia con lo script qui sotto. Supporta la creazione di uno screenshot di un intero schermo o di una regione dello schermo e inoltre copia automaticamente uno screenshot negli appunti in modo da poterlo incollare ovunque (browser o Telegram Messenger).

Un paio di hack non così difficili da trovare aggiungerebbero un supporto per lacquisizione di finestre specifiche e attivare / disattivare la copia di parti.

 #!/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}  

Ed ecco le mie scorciatoie di riferimento per un i3wm per fare uso di questo 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/" 

Risposta

Flameshot è unalternativa decente.

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

Puoi utilizzare lopzione -p /path/to/directory per saltare selezionando la directory di salvataggio.

Commenti

  • simpatico strumento che stavo cercando per fare un po di documentazione. Anche tu puoi aggiungere un contrassegno allo screenshot

Risposta

hai provato scrot una, semplice utility di cattura dello schermo da riga di comando

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

Commenti

  • puoi anche usare scrot -s per catturare una regione specifica. esegui il comando quindi fai clic e tieni premuto, quindi fai clic sul secondo punto, ‘ creerà un file con la data come nome file nella directory corrente.

Risposta

Innanzitutto, installa xclip, imagemagick e jq!

pacman -S imagemagick jq xclip 

I avere questa riga nella mia configurazione 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 

Questo inserirà uno screenshot della finestra attiva negli appunti quando premi mod (Window / Alt) + Printscreen .

i3-msg -t get-tree ottiene tutte le finestre da i3 come json, quindi usiamo jq per ottenere lid della finestra focalizzata. Lo passiamo al comando di importazione di imagemagicks e inviamo il risultato a xclip che lo metterà negli appunti!

Risposta

Usa mutilare . È sviluppato più attivamente e dipende da slop , che è decisamente migliore.

Non usare scrot. La sua casella di selezione si corrompe e lascia unimpressione nello screenshot (anche la casella si deforma durante il ridimensionamento) quando viene utilizzata su una finestra di aggiornamento (ad esempio htop).

Commenti

  • (1) Che cosè “slop”? (2) Che cosa è, esattamente, meglio di? (3) Perché?
  • 1. Seleziona operazione, utilizzata per selezionare le aree della finestra [ github.com/naelstrof/slop] 2. ‘ è migliore rispetto a scrot perché ‘ non subisce la corruzione della casella di selezione (Prova scrot su htop). 3. idk.

Risposta

Unopzione molto semplice se lhai installata o se non ti dispiace installarla sta usando xfce4-screenshooter e i3 config sarebbero:

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

Avvertenza: sebbene sia abbastanza leggero ci sono alcune dipendenze se non stai usando nessun altro programma xfce4

Risposta

Mi piace otturatore per le sue capacità di post-elaborazione (cerchi rossi disegnati a mano!) e le opzioni di configurazione complete.

Puoi prendere una regione dello schermo eseguendo

shutter --select 

Puoi configurare le associazioni di tasti in .config/i3/config in questo modo:

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

Il caricamento richiede un secondo, quindi potresti volerlo avviare automaticamente in background:

exec shutter --min_at_startup 

Lotturatore sarà accessibile tramite unicona nella barra delle applicazioni quindi, che offre molte opzioni utili oltre a quanto sopra.

Com menti

  • Shutter non può ‘ essere facilmente installato completamente su Ubuntu 18.04 in questo momento (lo strumento di modifica dipende dalla libreria non disponibile ; PPA personalizzato non aggiornato). Triste.

Risposta

Questo script perl6 accetta radice, area, finestra, o ritardo Schermate utilizzando limportazione e le salva in un $ file e negli appunti.

#!/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"; } 

Queste sono le associazioni di tasti da eseguire in i3 lo script:

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 

Answer

Modificato leggermente la soluzione da @ddnomad sopra, ecco la bash versione dello script con più esplicita e un altro flag che consente il salvataggio solo negli appunti.

 #! /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  

Quindi questo è ciò che aggiungi 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/"  

Quindi la combinazione di tasti è:

  • = crea uno screenshot
  • +Control = salva solo negli appunti
  • +Shift = cattura solo una regione specifica dello schermo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *