Hvordan kan jeg nemt lave skærmbilleder af skærmregioner på Arch Linux med i3 WM?

For ca. en måned siden skiftede jeg fra Ubuntu 14.04 LTS til Arch, og jeg er meget tilfreds med denne beslutning. Jeg savner dog nogle funktioner med min nye distro , især Shift + printscr som i Unity tillader valg af en skærmregion, der skal fanges.

Jeg bruger i3 WM. Så mit spørgsmål er: hvordan kan jeg konfigurere Unity-lignende skærmbilleder, så jeg kan snappe skærmregioner eller vinduer med en tastaturgenvej eller noget (uden at grave i vindues-id og konsol-ting)?

Svar

Du kan bruge import, en del af ImageMagick.

Optag en region

Dette ændrer markøren til et trådkors, og når du klikker og trækker for at danne en boks, gemmes dette felt som ss.png.

import ss.png 

Optag hele skærmen

Du kan også erstatte ordet root med vindue-idet for at fange et specifikt vindue.

Kommentarer

  • Du kan også klikke på et vindue efter import ss.png for at tage et skærmbillede af vinduet.
  • Dette gør ikke ‘ fungerer dog ikke fra i3-konfiguration. Minimalt eksempel: tilføj linje bindsym $mod+shift+s exec import ~/screenshot.png til din konfiguration. Gør ‘ ikke noget for mig.
  • Se det andet svar om flameshot. At ‘ er det, jeg ‘ bruger disse dage.

Svar

Det er længe siden jeg stillede dette spørgsmål, og det ser ud til at det er nyttigt for nogle af brugerne. Så jeg leverer mit eget script til at lave skærmbilleder med xclip og imagemagick pakker.

Først og fremmest skal du installere de ovennævnte afhængigheder. Så kan du gøre hvad du vil med nedenstående script. Det understøtter at lave et skærmbillede af en hel skærm eller en skærmregion, og det kopierer også automatisk et screenshot til et udklipsholder, så du kan indsætte det overalt (ei browser eller Telegram messenger).

Et par ikke så vanskelige at komme med hacks ville tilføje en understøttelse til at fange bestemte vinduer og skifte kopieringsdel.

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

Og her er mine referencegenveje til en i3wm for at gøre brug af denne 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/" 

Svar

Flameshot er et anstændigt alternativ.

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

Du kan bruge mulighed -p /path/to/directory til at springe over ved at vælge gemmappen.

Kommentarer

  • dejligt værktøj jeg ledte efter et sådant værktøj til at lave noget dokumentation. Selv du kan tilføje markering til skærmbilledet

Svar

har du prøvet scrot en, enkel kommandolinjeværktøj til skærmoptagelse

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

Kommentarer

  • du kan også bruge scrot -s til at fange en bestemt region. kør kommandoen, og hold den nede, og klik derefter på det andet punkt, det ‘ Opret en fil med datoen som filnavn i din nuværende bibliotek.

Svar

Installer først xclip, imagemagick og jq!

pacman -S imagemagick jq xclip 

I har denne linje i min i3-konfiguration:

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

Dette sætter et skærmbillede af det aktive vindue på dit udklipsholder, når du trykker på mod (Window / Alt) + Printscreen .

i3-msg -t get-tree får alle vinduer fra i3 som json, så bruger vi jq til at få vindue-id for det fokuserede vindue. Vi videregiver det til imagemagicks importkommando og sender resultatet til xclip, der sætter det på udklipsholderen!

Svar

Brug beskadiget . Det er mere aktivt udviklet og afhænger af slop , hvilket er meget bedre.

Brug ikke scrot. Dens valgfelt korrumperer og efterlader et indtryk i skærmbilledet (også boksen deformeres, når størrelsen ændres), når den bruges over et opdateringsvindue (sig htop).

Kommentarer

  • (1) Hvad er “slop”? (2) Hvad er det nøjagtigt bedre end? (3) Hvorfor?
  • 1. Vælg handling, der bruges til at vælge vinduesregioner [ github.com/naelstrof/slop] 2. Det ‘ er bedre end scrot, fordi den ikke ‘ t gennemgår korruption i markeringsfeltet (prøv scrot over htop). 3. idk.

Svar

En meget enkel mulighed, hvis du har det installeret eller ikke har noget imod at installere det bruger xfce4-screenshooter og i3-konfiguration ville være:

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

Advarsel: selvom det er ret let, er der nogle afhængigheder, hvis du ikke bruger andre xfce4-programmer

Svar

Jeg kan godt lide lukker for dets efterbehandlingsfunktioner (håndtegnede røde cirkler!) og omfattende konfigurationsmuligheder.

Du kan få fat i et skærmområde ved at køre

shutter --select 

Du kan indstille tastebindinger i .config/i3/config sådan:

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

Det tager et sekund at indlæse, så det kan være en god ide at starte den automatisk i baggrunden:

exec shutter --min_at_startup 

Lukkeren er tilgængelig via et bakkeikon derefter, hvilket giver dig mange nyttige muligheder ud over ovenstående.

Com ments

  • Shutter kan ‘ let installeres fuldt ud på Ubuntu 18.04 på dette tidspunkt (redigeringsværktøjet afhænger af utilgængeligt bibliotek ; brugerdefineret PPA ikke opdateret). Trist.

Svar

Dette perl6-script tager rod, område, vindue, eller forsinkelse ScreenShots ved hjælp af import og gemmer dem i en $ -fil og i udklipsholderen.

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

Dette er nøglebindingerne i i3, der skal køres scriptet:

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 

Svar

Lidt redigeret løsningen med @ddnomad ovenfor, her er bash versionen af scriptet med mere eksplicitet og et andet flag, der kun tillader lagring på udklipsholderen.

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

Så er dette, hvad du tilføjer til 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/"  

Så tastebindingen er:

  • = lav et screenshot
  • +Control = gem kun i udklipsholderen
  • +Shift = fang kun en bestemt region på skærmen

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *