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
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
import ss.png
om een screenshot van dat venster te maken.bindsym $mod+shift+s exec import ~/screenshot.png
toe aan uw configuratie. Doet ‘ niets voor mij.