次のことを行うツールが必要です。ウィンドウを選択すると、次の画像のようにxパディングでそのウィンドウのスクリーンショットが作成されます。
そのため、ほとんどの場合xはyと等しくなりますが、異なる距離が必要な場合があります。
このようなスクリーンショットを自動的に作成する方法は?私はシャッターを試しましたが、そのような設定を見つけることができませんでした。ただし、プラグインはサポートしています。したがって、プラグインは、この方法でウィンドウを切り取ることができます。
私はそれが存在するとは思いませんが、何でもそうであるように、作ることができます。
以下のスクリプトをキーの組み合わせで使用できるようにすると(さらに下の説明)、ウィンドウがポップアップし、スクリーンショットのマージンをleft、right、topおよびbottom、スペース区切り:
result:
または:
result:
等.
デフォルトを30 pxに設定しましたが、任意のデフォルト値を設定できます(以下を参照)。
スクリプトはShutter
およびwmctrl
を使用します。 Shutter
がすでにシステムにあると仮定すると(言及しているため)、wmctrl
をインストールします。
Sudo apt-get install wmctrl
N.B. Kubuntuを使用する場合、デフォルトでは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
およびGnome
で正常に動作しますが、スクリプトのheadセクションで説明されているように、値を変更する必要があります。
#!/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])
scrot
コマンドラインスクリーンキャプチャユーティリティでスクリーンショットを撮ることができます。
scrot -s
または
scrot -ub -d 5
2番目のコマンドは、選択されたウィンドウの周囲に境界線を配置します。このウィンドウは、ウィンドウのサイズに対してナイス幅です。 -d 5
オプションは遅延を表し、スクリーンショットに表示するウィンドウを選択するために5秒の遅延を与えます。
これでインストール:
Sudo apt-get install scrot
参照: buntuマニュアル-scrot
ShiftとPrtScrユーザー定義の寸法で特定の領域のスクリーンショットを撮るボタン。
組み合わせを押して、変更されたカーソル(プラス記号に似たものになる)を使用して、スクリーンショットの領域を選択します。