Hoe kan ik gemakkelijk screenshots maken van schermregios op Arch Linux met i3 WM?

Ongeveer een maand geleden ben ik overgestapt van Ubuntu 14.04 LTS naar Arch en ik “ben best tevreden met deze beslissing. Ik mis echter enkele functies met mijn nieuwe distro , vooral Shift + printscr die het in Unity mogelijk maakt om een schermregio te selecteren om vast te leggen.

Ik gebruik i3 WM. Dus mijn vraag is: hoe kan ik Unity-achtig screenshot-gedrag configureren om schermgebieden of vensters vast te zetten met een sneltoets of zoiets (zonder in venster-id en console-dingen te graven)?

Antwoord

U kunt import gebruiken, onderdeel van ImageMagick.

Leg een gebied vast

Dit verandert uw cursor in een draadkruis en wanneer u klikt en sleept om een vak te vormen, wordt dat vak opgeslagen als ss.png.

import ss.png 

Leg het hele scherm vast

Je kunt ook het woord root vervangen door het venster-ID om een specifiek venster vast te leggen.

Opmerkingen

  • Je kunt ook op een venster klikken na import ss.png om een screenshot van dat venster te maken.
  • Dit doet niet ‘ werk echter niet vanuit i3 config. Minimaal voorbeeld: voeg regel bindsym $mod+shift+s exec import ~/screenshot.png toe aan uw configuratie. Doet ‘ niets voor mij.
  • Zie het andere antwoord over flameshot. Dat ‘ is wat ik ‘ gebruik deze dagen.

Antwoord

Het is lang geleden dat ik deze vraag heb gesteld en het lijkt erop dat het nuttig is voor sommige gebruikers. Dus geef ik mijn eigen script voor het maken van schermafbeeldingen met xclip en imagemagick pakketten.

Installeer allereerst de bovengenoemde afhankelijkheden. Daarna kunt u wat je maar wilt met het onderstaande script. Het ondersteunt het maken van een screenshot van een heel scherm of een schermgebied en het kopieert ook automatisch een screenshot naar een klembord zodat je het overal kunt plakken (ei browser of Telegram messenger).

Een paar niet zo moeilijk te verzinnen hacks zouden ondersteuning toevoegen voor het vastleggen van specifieke vensters en het kopiëren van een deel omschakelen.

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

En hier zijn mijn referentiesnelkoppelingen voor een i3wm om gebruik te maken van deze 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/" 

Antwoord

Flameshot is een goed alternatief.

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

Je kunt optie -p /path/to/directory gebruiken om over te slaan de opslagmap selecteren.

Opmerkingen

  • leuke tool Ik was op zoek naar zon tool om wat documentatie te maken. Zelfs jij kunt een markering aan de schermafbeelding toevoegen

Antwoord

heb je scrot een eenvoudig hulpprogramma voor schermopname via de opdrachtregel

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

Reacties

  • je kunt ook scrot -s gebruiken om een specifiek gebied vast te leggen. voer het commando uit, klik en houd vast en klik op het tweede punt, het ‘ zal een bestand maken met de datum als bestandsnaam in uw huidige map.

Answer

Installeer eerst xclip, imagemagick en jq!

pacman -S imagemagick jq xclip 

I heb deze regel in mijn i3-configuratie:

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

Dit zal een screenshot van het actieve venster op je klembord plaatsen als je op mod (Window / Alt) + Printscreen drukt .

i3-msg -t get-tree haalt alle vensters van i3 op als json, dan gebruiken we jq om de venster-id van het gefocuste venster op te halen. We geven het door aan het importcommando van imagemagicks en pipen het resultaat door naar xclip die het op het klembord zal plaatsen!

Answer

Gebruik verminken . Het is actiever ontwikkeld en is afhankelijk van slop , wat veel beter is.

Gebruik geen scrot. Het selectievak corrumpeert en laat een indruk achter in het screenshot (ook het vak vervormt bij het wijzigen van de grootte) wanneer het wordt gebruikt in een updatevenster (bijvoorbeeld htop).

Opmerkingen

  • (1) Wat is “slop”? (2) Wat is het precies beter dan? (3) Waarom?
  • 1. Selecteer een bewerking die wordt gebruikt om vensterregios te selecteren [ github.com/naelstrof/slop] 2. Het is ‘ s beter dan scrot omdat het ‘ t niet onderhevig is aan beschadiging van het selectievak (probeer scrot over htop). 3. idk.

Answer

Een heel eenvoudige optie als je het hebt geïnstalleerd of het niet erg vindt om het te installeren, is xfce4-screenshooter en i3 config zou zijn:

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

Waarschuwing: hoewel redelijk licht, zijn er enkele afhankelijkheden als je geen andere xfce4-programmas gebruikt

Antwoord

Ik vind shutter vanwege de mogelijkheden voor nabewerking (met de hand getekende rode cirkels!) en uitgebreide configuratie-opties.

Je kunt een schermgebied pakken door

shutter --select 

U kunt sneltoetsen instellen in .config/i3/config als volgt:

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

Het duurt een seconde om te laden, dus misschien wil je het automatisch op de achtergrond starten:

exec shutter --min_at_startup 

De sluiter is toegankelijk via een pictogram in het systeemvak, wat u veel nuttige opties geeft naast het bovenstaande.

Com ments

  • Shutter kan ‘ t eenvoudig volledig worden geïnstalleerd op Ubuntu 18.04 op dit moment (bewerkingstool is afhankelijk van niet-beschikbare bibliotheek ; aangepaste PPA niet up-to-date). Triest.

Antwoord

Dit perl6-script accepteert root, area, window, of vertraging Screenshots gebruiken import en slaat ze op in een $ bestand en op het klembord.

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

Dit zijn de belangrijkste bindingen in i3 om uit te voeren het 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 

Antwoord

De oplossing enigszins bewerkt door @ddnomad hierboven, hier “is de bash versie van het script met meer duidelijkheid en een andere vlag die alleen opslaan op het klembord toelaat.

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

Dan is dit wat je toevoegt aan 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/"  

Dus de sleutelbinding is:

  • = maak een screenshot
  • +Control = alleen opslaan op klembord
  • +Shift = leg alleen een specifiek deel van het scherm vast

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *