Asi před měsícem jsem přešel z Ubuntu 14.04 LTS na Arch a jsem s tímto rozhodnutím celkem spokojen. Chybí mi však některé funkce mé nové distribuce , zejména Shift + printscr , který v Unity umožňuje výběr oblasti obrazovky, která má být zachycena.
Používám i3 WM. Takže moje otázka zní: Jak mohu nakonfigurovat chování obrazovky podobné Unity, aby bylo možné přichytit oblasti obrazovky nebo okna pomocí klávesové zkratky nebo tak něco (bez kopání do ID okna a věcí konzoly)?
Odpověď
Můžete použít import, část ImageMagick.
Zachyťte oblast
Tím se kurzor změní na nitkový kříž a kliknutím a tažením vytvoříte rámeček, toto pole se uloží jako ss.png.
import ss.png
Zachytit celou obrazovku
Slovo root můžete také nahradit id okna, abyste zachytili konkrétní okno.
Komentáře
Odpověď
Je to už dlouho, co jsem se zeptal na tuto otázku a vypadá to, že je užitečná pro některé uživatele. Poskytuji tedy svůj vlastní skript pro vytváření snímky obrazovky s balíčky xclip a imagemagick.
Nejprve nainstalujte výše uvedené závislosti. Pak můžete provést se skriptem níže, co chcete. Podporuje vytváření snímků obrazovky celé obrazovky nebo oblasti obrazovky a také automaticky zkopíruje snímek obrazovky do schránky, takže jej můžete vložit kamkoli (ei prohlížeč nebo Telegram messenger).
Pár nepříliš obtížných vymyslet hacky by přidalo podporu pro zachycení konkrétních oken a přepnutí kopírování části.
#!/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}
A zde jsou moje referenční zkratky pro i3wm, které mohou tuto 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/"
Odpověď
Flameshot je slušná alternativa.
bindsym Print exec flameshot full bindsym Shift+Print exec flameshot gui
Pomocí možnosti -p /path/to/directory můžete přeskočit výběr adresáře pro uložení.
Komentáře
- pěkný nástroj Hledal jsem takový nástroj pro vytvoření nějaké dokumentace. I vy můžete na snímek přidat označení
Odpovědět
zkusili jste scrot a, jednoduchý nástroj pro snímání obrazovky z příkazového řádku
ref.,: https://faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/
Komentáře
- můžete také použít scrot -s k zachycení konkrétní oblasti. spusťte příkaz, klepněte a podržte a poté klikněte na druhý bod, ‚ vytvoří ve vašem aktuálním adresáři soubor s datem jako názvem souboru.
Odpověď
Nejprve nainstalujte xclip, imagemagick a jq!
pacman -S imagemagick jq xclip
I mít tento řádek v mém i3 config:
bindsym $mod+Print exec \ import -window $( \ i3-msg -t get_tree | \ jq "recurse(.nodes[]) | select(.focused).window" \ ) png:- | \ xclip -selection clipboard -t image/png
Tím vložíte do schránky schránku aktivního okna, když stisknete mod (Window / Alt) + Printscreen .
i3-msg -t get-tree získá všechna okna z i3 jako json, pak použijeme jq k získání ID okna zaměřeného okna. Předáme jej příkazu importu imagemagicks a výsledek přepíšeme na xclip, který jej vloží do schránky!
Odpovědět
Použít maim . Je aktivněji vyvíjen a závisí na slopu , který je mnohem lepší.
Nepoužívejte scrot. Jeho výběrové pole se poškodí a zanechá dojem na snímku obrazovky (při změně velikosti se také pole deformuje) při použití přes aktualizační okno (řekněme htop).
Komentáře
- (1) Co je „slop“? (2) Co přesně je lepší než? (3) Proč?
- 1. Vyberte operaci, která se používá k výběru oblastí okna [ github.com/naelstrof/slop] 2. Je ‚ lepší než scrot, protože ‚ t nepoškodí výběrové pole (zkuste scrot přes htop). 3. idk.
Odpověď
Velmi jednoduchá volba, pokud ji máte nainstalovanou nebo vám nevadí její instalaci pomocí xfce4-screenshooter a konfigurace i3 by byly:
bindsym Print exec --no-startup-id xfce4-screenshooter
Upozornění: i když je poměrně lehký, existují určité závislosti, pokud nepoužíváte žádné jiné programy xfce4.
Odpovědět
Líbí se mi závěrka pro možnosti následného zpracování (ručně nakreslené červené kruhy!) a komplexní možnosti konfigurace.
Oblast obrazovky můžete uchopit spuštěním
shutter --select
Vazby kláves můžete nastavit v .config/i3/config takto:
bindsym Print exec shutter --full bindsym Shift+Print exec shutter --select
Načtení trvá vteřinu, takže jej možná budete chtít automaticky spustit na pozadí:
exec shutter --min_at_startup
Uzávěr bude přístupný prostřednictvím ikony na liště, která vám poskytne mnoho užitečných možností nad rámec výše uvedeného.
Com ment
- Shutter nelze ‚ v tomto okamžiku snadno plně nainstalovat na Ubuntu 18.04 (nástroj pro úpravy závisí na nedostupné knihovně ; vlastní PPA neaktuální). Smutné.
Odpověď
Tento skript perl6 trvá root, area, window, nebo zpoždění Snímky obrazovky pomocí importu a uloží je do souboru $ a do schránky.
#!/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"; }
Toto jsou klíčové vazby v i3 ke spuštění skript:
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
odpověď
Mírně upravil řešení pomocí @ddnomad výše, zde je bash verze skriptu s větší vysvětlitelností a dalším příznakem, který umožňuje ukládání pouze do schránky.
#! /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
Pak je to to, co přidáte do 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/"
Takže klíčová vazba je:
- = vytvořit snímek obrazovky
-
+Control= uložit pouze do schránky -
+Shift= zachytit pouze konkrétní oblast obrazovky
import ss.pnga pořídit snímek obrazovky tohoto okna.bindsym $mod+shift+s exec import ~/screenshot.png. Nedělá pro mě nic ‚.