Jak mogę łatwo zrobić zrzuty ekranu regionów ekranu w Arch Linux za pomocą i3 WM?

Mniej więcej miesiąc temu zmieniłem Ubuntu 14.04 LTS na Arch i jestem bardzo zadowolony z tej decyzji. Jednak brakuje mi niektórych funkcji w mojej nowej dystrybucji , zwłaszcza Shift + printcr , który w Unity umożliwia wybór obszaru ekranu do przechwycenia.

Używam i3 WM. Moje pytanie brzmi: jak mogę skonfigurować zachowanie zrzutów ekranu podobne do Unity, aby móc przyciągać regiony ekranu lub okna za pomocą skrótu klawiaturowego lub czegoś podobnego (bez zagłębiania się w identyfikator okna i elementy konsoli)?

Odpowiedź

Możesz użyć import, części ImageMagick.

Przechwyć region

Spowoduje to zmianę kursora w celownik, a kiedy klikniesz i przeciągniesz w celu utworzenia ramki, zostanie ono zapisane jako ss.png.

import ss.png 

Przechwyć cały ekran

Możesz także zastąpić słowo root identyfikatorem okna, aby przechwycić określone okno.

Komentarze

  • Możesz także kliknąć okno po import ss.png, aby zrobić zrzut ekranu tego okna.
  • Nie ' nie działa jednak z konfiguracją i3. Minimalny przykład: dodaj linię bindsym $mod+shift+s exec import ~/screenshot.png do swojej konfiguracji. Nie ' nic dla mnie nie robi.
  • Zobacz inną odpowiedź na temat flameshot. To ' to jest to, czego ' używam w tych dniach.

Odpowiedź

Minęło dużo czasu, odkąd zadałem to pytanie i wygląda na to, że jest ono pomocne dla niektórych użytkowników. Dlatego udostępniam własny skrypt do tworzenia zrzuty ekranu z pakietami xclip i imagemagick.

Przede wszystkim zainstaluj powyższe zależności. Następnie możesz zrobić cokolwiek chcesz za pomocą poniższego skryptu. Obsługuje zrzut ekranu całego ekranu lub regionu ekranu, a także automatycznie kopiuje zrzut ekranu do schowka, dzięki czemu można go wkleić wszędzie (przeglądarka ei lub komunikator Telegram).

Kilka niezbyt trudnych do wymyślenia hacków dodałoby obsługę przechwytywania określonych okien i przełączania kopiowania części.

 #!/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 oto moje skróty referencyjne dla i3wm, aby skorzystać z tego 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/" 

Odpowiedź

Flameshot to przyzwoita alternatywa.

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

Możesz użyć opcji -p /path/to/directory, aby pominąć wybór katalogu zapisu.

Komentarze

  • fajne narzędzie szukałem takiego narzędzia do zrobienia jakiejś dokumentacji. Nawet możesz dodać oznaczenie do zrzutu ekranu

Odpowiedź

czy próbowałeś scrot a, proste narzędzie do przechwytywania ekranu z wiersza poleceń

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

Komentarze

  • możesz także użyć moszny -s, aby uchwycić określony region. uruchom polecenie, a następnie kliknij i przytrzymaj, a następnie kliknij drugi punkt, to ' utworzy plik z datą jako nazwą pliku w bieżącym katalogu.

Odpowiedź

Najpierw zainstaluj xclip, imagemagick i jq!

pacman -S imagemagick jq xclip 

I mieć tę linię w mojej konfiguracji 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 

Spowoduje to umieszczenie zrzutu ekranu aktywnego okna w schowku po naciśnięciu mod (Window / Alt) + Printscreen .

i3-msg -t get-tree pobiera wszystkie okna z i3 jako json, a następnie używamy jq do pobrania identyfikatora okna zogniskowanego. Przekazujemy go do polecenia imagemagicks importu i wyprowadzamy wynik do xclip, który umieści go w schowku!

Odpowiedź

Użyj okaleczyć . Jest bardziej aktywnie rozwijany i zależy od slopu , co jest o wiele lepsze.

Nie używaj moszny. Jego pole wyboru psuje się i pozostawia wrażenie na zrzucie ekranu (również pole deformuje się przy zmianie rozmiaru), gdy jest używane w oknie aktualizacji (powiedzmy htop).

Komentarze

  • (1) Co to jest „slop”? (2) Co dokładnie jest lepsze niż? (3) Dlaczego?
  • 1. Wybierz operację, używaną do wybierania regionów okna [ github.com/naelstrof/slop] 2. Lepiej jest ' niż moszna, ponieważ nie ' nie ulega uszkodzeniu w polu wyboru (spróbuj moszny zamiast htop). 3. idk.

Odpowiedź

Bardzo prosta opcja, jeśli masz ją zainstalowaną lub nie masz nic przeciwko instalacji, polega na użyciu xfce4-screenshooter , a konfiguracja i3 wyglądałaby następująco:

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

Uwaga: mimo że jest dość lekki, istnieją pewne zależności, jeśli nie używasz innych programów xfce4

Odpowiedź

Podoba mi się Shutter ze względu na możliwości przetwarzania końcowego (ręcznie rysowane czerwone kółka!) i wszechstronne opcje konfiguracji.

Możesz pobrać obszar ekranu, uruchamiając

shutter --select 

Możesz skonfigurować przypisania klawiszy w .config/i3/config w następujący sposób:

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

Ładowanie trwa sekundę, więc możesz chcieć uruchomić go automatycznie w tle:

exec shutter --min_at_startup 

Migawka będzie dostępna za pomocą ikony w zasobniku, co daje wiele przydatnych opcji poza powyższymi.

Com ments

  • Shutter można ' łatwo zainstalować w tym momencie w systemie Ubuntu 18.04 (narzędzie do edycji zależy od niedostępnej biblioteki ; niestandardowe PPA nieaktualne). Smutne.

Odpowiedź

Ten skrypt Perl6 wymaga root, area, window, lub opóźnienie Zrzuty ekranu za pomocą importu i zapisuje je w pliku $ oraz w schowku.

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

To są klawisze przypisania w i3 do uruchomienia skrypt:

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 

Odpowiedź

Nieznacznie zmodyfikowano rozwiązanie o @ddnomad powyżej, oto bash wersja skryptu z większą wyrazistością i inną flagą, która pozwala na zapisywanie tylko do schowka.

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

W takim razie to właśnie dodajesz 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 więc przypisanie klawiszy jest następujące:

  • = zrób zrzut ekranu
  • +Control = zapisuj tylko do schowka
  • +Shift = przechwytywanie tylko określonego regionu ekranu

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *