i3 WM을 사용하여 Arch Linux에서 화면 영역의 스크린 샷을 쉽게 만드는 방법은 무엇입니까?


27

약 한 달 전에 우분투 14.04 LTS에서 아치로 전환했으며이 결정에 매우 만족합니다. 그러나, 나는 특히 나의 새로운 배포판과 일부 기능을 그리워 Shift+ printscr유니티의 화면 영역을 선택 캡처 할 수있다.

i3 WM을 사용합니다. 그래서 내 질문은 : 키보드 단축키 또는 무언가 (창 ID 및 콘솔 항목을 파지 않고)로 화면 영역이나 창을 스냅 할 수 있도록 Unity와 같은 스크린 샷 동작을 어떻게 구성 할 수 있습니까?

답변:


29

importImageMagick의 일부를 사용할 수 있습니다 .

지역 포착

커서가 십자형으로 바뀌고 클릭하고 드래그하여 상자를 만들면 해당 상자가로 저장됩니다 ss.png.

import ss.png

전체 디스플레이 캡처

import -window root ss.png

단어 root를 창 ID로 바꾸어 특정 창을 캡처 할 수도 있습니다.


1
간단하고 완벽하며 필요한 것만으로 다른 프로그램을 다운로드 할 필요가 없었습니다.
Darren Haynes

1
import ss.png해당 창의 스크린 샷을 생성하기 위해 창을 클릭 해도됩니다.
John Gowers

9

이 질문을 한 지 오랜 시간이 지났으며 일부 사용자에게 도움이되는 것처럼 보입니다. 그래서 스크린 샷 xclipimagemagick패키지 를 만들기위한 스크립트를 제공 합니다.

우선, 위에서 언급 한 종속성을 설치하십시오. 그런 다음 아래 스크립트를 사용하여 원하는 모든 것을 할 수 있습니다. 전체 화면 또는 화면 영역의 스크린 샷 생성을 지원하며 스크린 샷을 클립 보드에 자동으로 복사하여 어디에서나 붙여 넣을 수 있습니다 (브라우저 또는 텔레 그램 메신저).

해킹을하기가 쉽지 않은 경우에는 특정 창 캡처 및 복사 부분 토글 지원이 ​​추가됩니다.

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

i3wm이 스크립트를 사용하기 위한 참조 바로 가기 는 다음과 같습니다.

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

6

scrot a, 간단한 명령 행 화면 캡처 유틸리티 를 사용해 보셨습니까?

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


와우, 내가 인터넷 검색을 한 후, 그 scrot은 실제로 필요한 모든 것을 할 수 있습니다. 너무 이상해서 혼자서 찾지 못했습니다. 고마워 친구!
ddnomad

scrot -s를 사용하여 특정 지역을 캡처 할 수도 있습니다. 명령을 실행 한 다음 클릭 한 다음 두 번째 지점을 클릭하면 현재 디렉토리에 날짜가 파일 이름으로 파일이 생성됩니다.
vimdude

5

먼저 xclip, imagemagick 및 jq를 설치하십시오!

pacman -S imagemagick jq xclip

내 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

mod (Window / Alt) + Printscreen을 누르면 클립 보드에 활성 창의 스크린 샷이 표시됩니다.

i3-msg -t get-tree는 i3에서 json으로 모든 창을 가져온 다음 jq를 사용하여 초점을 맞춘 창의 창 ID를 얻습니다. 우리는 그것을 imagemagicks import 명령에 전달하고 결과를 클립 보드에 넣을 xclip으로 파이프합니다!


2

Flameshot 은 괜찮은 대안입니다.

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

옵션 -p /path/to/directory을 사용 하여 저장 디렉토리 선택을 건너 뛸 수 있습니다 .


1

xfce4-screenshooter를 사용 하고 있고 i3 구성을 설치하거나 설치하지 않아도되는 경우 매우 간단한 옵션 은 다음과 같습니다.

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

주의 사항 : 다른 xfce4 프로그램을 사용하지 않으면 상당히 가벼우지만 일부 종속성이 있습니다.


1

maim을 사용하십시오 . 그것은 더 적극적으로 개발되고 더 나은 경사에 달려 있습니다.

scrot을 사용하지 마십시오. 선택 창은 업데이트 창 위에 사용될 때 스크린 샷에 손상을 입히고 (크기를 조정할 때 상자가 변형 됨) 인상을 남깁니다 (예 : 정지).


(1)“기울기”란 무엇입니까? (2) 정확히 무엇보다 낫습니까? (3) 왜?
G-Man, 'Reinstate

1. 창 영역을 선택하는 데 사용되는 선택 작업 [ github.com/naelstrof/slop] 2. 선택 상자가 손상되지 않기 때문에 scrot보다 낫습니다 (crot over htop 시도). 3. idk.
Hritik

1

나는 후 처리 기능 (손으로 그린 ​​빨간 원!)과 포괄적 인 구성 옵션으로 셔터 를 좋아 합니다.

당신은 실행하여 화면 영역을 잡을 수 있습니다

shutter --select

다음 .config/i3/config과 같이 키 바인딩을 설정할 수 있습니다 .

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

로드하는 데 1 초가 걸리므로 백그라운드에서 자동 시작하는 것이 좋습니다.

exec shutter --min_at_startup

트레이 아이콘을 통해 셔터에 액세스 할 수 있으며, 위의 것 외에도 많은 유용한 옵션이 제공됩니다.


현재 시점에서 Ubuntu 18.04에 셔터를 쉽게 설치할 수 없습니다 (편집 도구는 사용할 수없는 라이브러리에 따라 다릅니다. 사용자 지정 PPA는 최신이 아닙니다). 슬퍼.
Raphael

1

이 perl6 스크립트는 가져 오기를 사용하여 루트, 영역, 창 또는 지연 ScreenShots를 가져와 $ file 및 클립 보드에 저장합니다.

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

다음은 스크립트를 실행하기위한 i3의 주요 바인딩입니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.