여백을 사용자 정의하여 창에서 스크린 샷을 찍는 방법


17

다음을 수행하는 도구가 필요합니다. 창을 선택 하면 다음 이미지와 같이 x 패딩 으로 해당 창의 스크린 샷을 만듭니다 .

따라서 대부분의 경우 xy 와 같지만 때로는 다른 거리가 필요합니다.

스크린 샷을 자동으로 만드는 방법은 무엇입니까? 셔터로 시도했지만 거기에서 그러한 설정을 찾을 수 없었습니다. 그러나 플러그인을 지원합니다. 플러그인은 창을 이런 식으로자를 수 있습니다.


해당 모형을 만드는 데 사용한 도구를 물어볼 수 있습니까? 그것은 꽤 좋아 보인다 :)
세스

1
@Seth InkScape 규칙! 나는 전문가가 아니지만 프로젝트를 위해 이와 같은 것을 만드는 것을 좋아합니다. 눈에 좋습니다. :-) 여기에 PNG 버전SVG 버전이 있습니다. 이 리포지토리 에는 InkScape로 만든 다른 항목 포함되어 있습니다.
Ionică Bizău

답변:


19

셔터를 사용한 스크립트

나는 그것이 존재한다고 생각하지 않지만 다른 것과 마찬가지로 만들 수 있습니다.

아래의 스크립트를 키 조합 (아래에 추가 설명)으로 제공하면 왼쪽, 오른쪽, 위쪽아래쪽 에 스크린 샷의 여백을 설정할 수있는 창이 나타납니다. 공백으로 구분 .

여기에 이미지 설명을 입력하십시오

결과:

여기에 이미지 설명을 입력하십시오

또는:

여기에 이미지 설명을 입력하십시오

결과:

여기에 이미지 설명을 입력하십시오

기타

기본값을 30px로 설정했지만 기본값을 설정할 수 있습니다 (아래 참조).

사용하는 방법

  • 스크립트는 Shutter및을 사용합니다 wmctrl. Shutter이미 언급 한 이후 시스템에 있다고 가정 하고 설치하십시오 wmctrl.

    sudo apt-get install wmctrl
    

    NB 당신이 사용하는 경우 쿠분투를 , Zenity기본적으로 설치되지 않습니다 :

    sudo apt-get install zenity
    
  • 아래 스크립트를 빈 파일로 복사하십시오. 원하는 경우 스크립트 줄에서 "기본"마지를 변경할 수 있습니다.

    `arg =`
    
  • 로 저장하십시오 custom_screenshot.py.

  • 키 바로 가기 조합에 스크립트를 추가하십시오. 시스템 설정> "키보드"> "바로 가기"> "사용자 정의 바로 가기"를 선택하십시오. "+"를 클릭하고 다음 명령을 추가하십시오.

    python3 /path/to/custom_screenshot.py
    

노트

스크립트는 wmctrl창의 위치를 ​​결정하는 데 사용 합니다. 그러나 다른 창 관리자에서 wmctrl -lG명령 의 출력은 창의 y 위치에서 약간의 차이를 보여줍니다. 이러한 차이는 deviation=스크립트 의 온라인 행에 설정된 값으로 제거됩니다 . 현재 설정된 값 (0)은 Unity 및 KDE에 적합합니다.

스크립트도 테스트되어 Xfceand Gnome에서 잘 작동 하지만 스크립트의 헤드 섹션에 설명 된대로 값을 변경해야합니다.

스크립트

#!/usr/bin/env python3
import subprocess
import time

"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
    arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
    pass
else:
    time.sleep(0.5)
    # frontmost window pos
    frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
    frontmost = frontmost[:2]+"0"+frontmost[2:]
    f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
    # extent
    xt_data = get("xprop -id "+frontmost).split()
    xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
    xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
    # set data for screenshot command
    x = str(int(f_data[0])-int(arg[0])-xt[0])
    y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
    w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
    h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])

    command = "shutter -s="+(",").join([x,y,w,h])+" -e"
    subprocess.call(["/bin/bash", "-c", command])

3
나는 그것이 존재한다고 생각하지 않습니다 -이제 존재합니다! 정말 고마워!
Ionică Bizău

1
@ IonicăBizău 환영합니다! 질문 주셔서 감사합니다, 그것은 재미있었습니다. 기본 설정 설명을 약간 수정했습니다.
Jacob Vlijm

1
@ IonicăBizău는 지오메트리에서 버그를 발견하고 수정했습니다.
Jacob Vlijm

2
좋아, 좋아! ASUS 노트북의 특수 버튼을 누를 때 실행되는 명령으로 설정했습니다. :-)
Ionică Bizău

2

ShiftPrtScr 버튼을 조합 하여 사용자 정의 치수가있는 특정 영역의 스크린 샷을 찍을 수도 있습니다.

조합을 누르고 수정 된 커서 (더하기 부호와 유사하게 됨)를 사용하여 스크린 샷 영역을 선택하십시오.


일반적으로이 여백을 정확하게 설정하기 위해 손을 제어 할 수 없습니다. :-) 그러나이 단축키에 대해 +1인데, 나는 그것을 몰랐습니다.
Ionică Bizău

2

scrot명령 행 화면 캡처 유틸리티를 사용하여 스크린 샷을 작성할 수 있습니다 .

scrot -s  

또는

scrot -ub -d 5  

두 번째 명령은 선택한 창 주위에 테두리를 표시하며 창의 크기와 관련하여 너비가 좋습니다. 이 -d 5옵션은 지연을 나타내며 스크린 샷에 표시 할 창을 선택하기 위해 5 초 지연됩니다.

이것으로 설치하십시오 :

sudo apt-get install scrot

참조 : 우분투 매뉴얼-scrot

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