Cum pot face cu ușurință capturi de ecran ale regiunilor de pe Arch Linux cu i3 WM?

Acum aproximativ o lună am trecut de la Ubuntu 14.04 LTS la Arch și sunt „destul de mulțumit de această decizie. Cu toate acestea, îmi lipsesc unele caracteristici cu noua mea distribuție , în special Shift + printscr care în Unity permite captarea selecției unei regiuni de ecran.

Folosesc i3 WM. Deci, întrebarea mea este: cum pot configura comportamentul capturilor de ecran de tipul Unity pentru a putea captura regiunile sau ferestrele ecranului cu o comandă rapidă de la tastatură sau ceva similar (fără să sapi în ID-ul ferestrei și în consolă)?

Răspuns

Puteți utiliza import, parte a ImageMagick.

Capturați o regiune

Acest lucru vă va schimba cursorul într-o cruce și atunci când faceți clic și trageți pentru a forma o casetă, acea casetă va fi salvată ca ss.png.

import ss.png 

Capturați întregul ecran

De asemenea, puteți înlocui cuvântul root cu ID-ul ferestrei pentru a captura o anumită fereastră.

Comentarii

  • De asemenea, puteți face clic pe o fereastră după import ss.png pentru a face o captură de ecran a acelei ferestre.
  • Cu toate acestea, ‘ nu funcționează din configurația i3. Exemplu minim: adăugați linia bindsym $mod+shift+s exec import ~/screenshot.png în config. ‘ nu face nimic pentru mine.
  • Vedeți celălalt răspuns despre flameshot. Asta ‘ este ceea ce ‘ folosesc în aceste zile.

Răspuns

A trecut mult timp de când nu am mai pus această întrebare și se pare că este util pentru unii dintre utilizatori. Așa că îmi ofer propriul meu script pentru realizare capturi de ecran cu xclip și imagemagick pachete.

În primul rând, instalați dependențele menționate mai sus. Apoi puteți face orice doriți cu scriptul de mai jos. Suportă realizarea unei capturi de ecran a unui ecran întreg sau a unei regiuni a ecranului și, de asemenea, copiază automat o captură de ecran într-un clipboard, astfel încât să o puteți lipi peste tot (ei browser sau Telegram messenger).

Câteva nu atât de greu de conceput hacks ar adăuga un suport pentru capturarea anumitor ferestre și comutarea părții de copiere.

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

Și aici sunt comenzile rapide de referință pentru un i3wm care să folosească acest 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/" 

Răspuns

Flameshot este o alternativă decentă.

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

Puteți utiliza opțiunea -p /path/to/directory pentru a sări selectând directorul de salvare.

Comentarii

  • instrument frumos căutam un astfel de instrument pentru a face niște documente. Chiar și dvs. puteți adăuga marcaje la captura de ecran

Răspuns

ați încercat scrot un utilitar simplu de captură a ecranului cu linie de comandă

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

Comentarii

  • puteți utiliza și scrot -s pentru a captura o anumită regiune. rulați comanda, apoi faceți clic și țineți apăsat apoi faceți clic pe al doilea punct, ‘ va crea un fișier cu data ca nume de fișier în directorul curent.

Răspuns

Mai întâi, instalați xclip, imagemagick și jq!

pacman -S imagemagick jq xclip 

I aveți această linie în configurația mea 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 

Aceasta va pune o captură de ecran a ferestrei active din clipboard când apăsați mod (Window / Alt) + Printscreen .

i3-msg -t get-tree primește toate ferestrele de la i3 ca json, apoi folosim jq pentru a obține id-ul ferestrei ferestrei focalizate. O transmitem comenzii de import imagemagicks și trimitem rezultatul la xclip cine îl va pune în clipboard!

Răspunde

Utilizează maim . Este mai activ dezvoltat și depinde de înclinare care este mult mai bună.

Nu utilizați scrot. Caseta de selecție a acestuia corupă și lasă o impresie în captura de ecran (de asemenea, caseta se deformează la redimensionare) atunci când este utilizată peste o fereastră de actualizare (să zicem htop).

Comentarii

  • (1) Ce este „slop”? (2) Ce, mai exact, este mai bun decât? (3) De ce?
  • 1. Selectați operațiunea, utilizată pentru a selecta regiunile ferestrei [ github.com/naelstrof/slop] 2. Este ‘ mai bine decât scrot, deoarece nu ‘ nu suferă corupție în caseta de selecție (Încercați scrot peste htop). 3. idk.

Răspuns

O opțiune foarte simplă dacă îl ai instalat sau nu te deranjează să-l instalezi utilizând xfce4-screenshooter și configurația i3 ar fi:

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

Avertisment: deși destul de ușor, există unele dependențe dacă nu utilizați alte programe xfce4

Răspuns

Îmi place obturator pentru capacitățile sale de post-procesare (cercuri roșii desenate manual) și opțiuni de configurare complete.

Puteți apuca o regiune a ecranului executând

shutter --select 

Puteți configura legături de chei în .config/i3/config astfel:

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

Este nevoie de o secundă pentru încărcare, deci poate doriți să o porniți automat în fundal:

exec shutter --min_at_startup 

Obturatorul va fi accesibil printr-o pictogramă de tavă, care vă oferă multe opțiuni utile dincolo de cele de mai sus.

Com mențiuni

  • Obturatorul nu poate ‘ să fie ușor instalat complet pe Ubuntu 18.04 în acest moment (instrumentul de editare depinde de biblioteca indisponibilă ; PPA personalizat nu este actualizat). Trist.

Răspuns

Acest script perl6 ia rădăcină, zonă, fereastră, sau întârziere Capturi de ecran folosind importul și le salvează într-un fișier $ și în clipboard.

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

Acestea sunt legăturile cheie din i3 pentru a rula scriptul:

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 

Răspuns

Editat ușor soluția prin @ddnomad de mai sus, aici este versiunea bash a scriptului cu mai multă explicitate și un alt semnalizator care permite salvarea numai în clipboard.

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

Atunci asta este ceea ce adăugați la 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/"  

Deci legarea tastelor este:

  • = faceți o captură de ecran
  • +Control = salvați numai în clipboard
  • +Shift = capturați doar o anumită regiune a ecranului

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *