다음을 수행하는 도구가 필요합니다. 창을 선택 하면 다음 이미지와 같이 x 패딩 으로 해당 창의 스크린 샷을 만듭니다 .
따라서 대부분의 경우 x 는 y 와 같지만 때로는 다른 거리가 필요합니다.
스크린 샷을 자동으로 만드는 방법은 무엇입니까? 셔터로 시도했지만 거기에서 그러한 설정을 찾을 수 없었습니다. 그러나 플러그인을 지원합니다. 플러그인은 창을 이런 식으로자를 수 있습니다.
답변
셔터를 사용한 스크립트
나는 그것이 존재한다고 생각하지 않지만 다른 것과 마찬가지로 만들 수 있습니다.
아래의 스크립트를 키 조합 (아래에 추가 설명)으로 제공하면 왼쪽, 오른쪽, 위쪽 및 아래쪽 에 스크린 샷의 여백을 설정할 수있는 창이 나타납니다. 공백으로 구분 .
결과:
또는:
결과:
기타
기본값을 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에 적합합니다.
스크립트도 테스트되어 Xfce
and 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])
답변
Shift 및 PrtScr 버튼을 조합 하여 사용자 정의 치수가있는 특정 영역의 스크린 샷을 찍을 수도 있습니다.
조합을 누르고 수정 된 커서 (더하기 부호와 유사하게 됨)를 사용하여 스크린 샷 영역을 선택하십시오.
답변
scrot
명령 행 화면 캡처 유틸리티를 사용하여 스크린 샷을 작성할 수 있습니다 .
scrot -s
또는
scrot -ub -d 5
두 번째 명령은 선택한 창 주위에 테두리를 표시하며 창의 크기와 관련하여 너비가 좋습니다. 이 -d 5
옵션은 지연을 나타내며 스크린 샷에 표시 할 창을 선택하기 위해 5 초 지연됩니다.
이것으로 설치하십시오 :
sudo apt-get install scrot
참조 : 우분투 매뉴얼-scrot