셔터를 사용한 스크립트
나는 그것이 존재한다고 생각하지 않지만 다른 것과 마찬가지로 만들 수 있습니다.
아래의 스크립트를 키 조합 (아래에 추가 설명)으로 제공하면 왼쪽, 오른쪽, 위쪽 및 아래쪽 에 스크린 샷의 여백을 설정할 수있는 창이 나타납니다. 공백으로 구분 .
결과:
또는:
결과:
기타
기본값을 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])