我需要一个可以执行以下操作的工具:选择一个窗口,并使用x填充对该窗口进行截图,如下图所示:
因此,在大多数情况下,x与y相等,但有时我需要不同的距离。
如何自动制作这样的屏幕截图?我尝试过使用快门,但是在那里找不到这样的设置。但是,它支持插件。因此,一个插件可以以这种方式裁剪窗口。
我需要一个可以执行以下操作的工具:选择一个窗口,并使用x填充对该窗口进行截图,如下图所示:
因此,在大多数情况下,x与y相等,但有时我需要不同的距离。
如何自动制作这样的屏幕截图?我尝试过使用快门,但是在那里找不到这样的设置。但是,它支持插件。因此,一个插件可以以这种方式裁剪窗口。
Answers:
我不认为它存在,但是像任何东西一样,它可以制造。
如果在组合键下使下面的脚本可用(在下面进一步解释),将弹出一个窗口,您可以在屏幕左侧,右侧,顶部和底部设置屏幕截图的边距,以空格隔开:
结果:
要么:
结果:
等等
我将默认值设置为30 px,但是您可以设置任何默认值(请参见下文)。
该脚本使用Shutter
和wmctrl
。假设Shutter
您已经在系统上(因为您已经提到过),请安装wmctrl
:
sudo apt-get install wmctrl
注意:如果使用Kubuntu,Zenity
则默认情况下未安装:
sudo apt-get install zenity
将下面的脚本复制到一个空文件中。如果需要,可以在脚本行中更改“默认” marge:
`arg =`
另存为custom_screenshot.py
。
将脚本添加到快捷键组合中:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“ +”并添加命令:
python3 /path/to/custom_screenshot.py
该脚本用于wmctrl
确定窗口的位置。但是,在不同的窗口管理器上,wmctrl -lG
命令的输出在窗口的y位置显示很小的差异。这些差异可以通过deviation=
在脚本的-line中设置的值来消除。当前设置的值(0)适用于Unity和KDE。
该脚本也已经过测试,并且可以在Xfce
和上正常工作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