Script, sử dụng Shutter
Tôi không nghĩ nó tồn tại, nhưng giống như bất cứ điều gì, nó có thể được thực hiện.
Nếu bạn tạo tập lệnh bên dưới có sẵn dưới tổ hợp phím (giải thích thêm bên dưới), một cửa sổ sẽ bật lên, cho phép bạn đặt lề của ảnh chụp màn hình của bạn ở bên trái, phải, trên và dưới , cách nhau bởi một khoảng trắng:
kết quả:
hoặc là:
kết quả:
Vân vân.
Tôi đặt mặc định là 30 px, nhưng bạn có thể đặt bất kỳ giá trị mặc định nào (xem bên dưới).
Cách sử dụng
Kịch bản sử dụng Shutter
và wmctrl
. Giả sử Shutter
đã có trên hệ thống của bạn (vì bạn đã đề cập đến nó), hãy cài đặt wmctrl
:
sudo apt-get install wmctrl
NB Nếu bạn sử dụng Kubfox , Zenity
không được cài đặt theo mặc định:
sudo apt-get install zenity
Sao chép tập lệnh dưới đây vào một tập tin trống. Nếu bạn muốn, bạn có thể thay đổi giá trị "mặc định" trong dòng của tập lệnh:
`arg =`
lưu nó như là custom_screenshot.py
.
Thêm tập lệnh vào tổ hợp phím tắt: chọn: Cài đặt hệ thống> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh". Nhấp vào "+" và thêm lệnh:
python3 /path/to/custom_screenshot.py
Ghi chú
Kịch bản sử dụng wmctrl
để xác định vị trí của cửa sổ. Tuy nhiên, trên các trình quản lý cửa sổ khác nhau, đầu ra của wmctrl -lG
lệnh cho thấy sự khác biệt nhỏ ở vị trí y của cửa sổ. Những khác biệt này được loại bỏ bởi giá trị, được đặt trong deviation=
dòng của tập lệnh. Giá trị được đặt hiện tại (0) phù hợp với Unity và KDE.
Kịch bản cũng được kiểm tra và hoạt động tốt Xfce
và Gnome
, nhưng giá trị cần phải được thay đổi sau đó, như được giải thích trong phần đầu của tập lệnh.
Kịch bản
#!/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])