カスタマイズ可能なマージンを使用して、ウィンドウからスクリーンショットを撮るにはどうすればよいですか


17

次のことを行うツールが必要です。ウィンドウを選択すると、次の画像のように、xパディングでそのウィンドウのスクリーンショットが作成されます。

そのため、ほとんどの場合、xyと等しくなりますが、異なる距離が必要な場合があります。

このようなスクリーンショットを自動的に作成する方法は?私はシャッターを試しましたが、そのような設定を見つけることができませんでした。ただし、プラグインはサポートしています。したがって、プラグインは、この方法でウィンドウを切り取ることができます。


そのモックアップの作成に使用したツールを尋ねることはできますか?とても素敵に見えます:)
セス

1
@Seth InkScapeルール!私は専門家ではありませんが、プロジェクト用にこのようなものを作成するのが好きです。目にとってはよさそうだ。:-) これはPNGバージョンSVG バージョンです。このリポジトリには、InkScapeで作成された他のものが含まれています。
イオニカビザ15

回答:


19

シャッターを使用したスクリプト

私はそれが存在するとは思わないが、何でもそうであるように、それは作ることができる。

以下のスクリプトをキーの組み合わせで使用できるようにすると(さらに下の説明)、ウィンドウがポップアップし、スクリーンショットのマージンを左、右、上にスペースで区切って設定できます。

ここに画像の説明を入力してください

結果:

ここに画像の説明を入力してください

または:

ここに画像の説明を入力してください

結果:

ここに画像の説明を入力してください

デフォルトを30 pxに設定しましたが、任意のデフォルト値を設定できます(以下を参照)。

使い方

  • スクリプトはとを使用Shutterwmctrlます。Shutter(既に言及しているので)すでにシステム上にあると仮定して、インストールしwmctrlます:

    sudo apt-get install wmctrl
    

    あなたが使用している場合はNB KubuntuのがZenityデフォルトではインストールされません。

    sudo apt-get install zenity
    
  • 以下のスクリプトを空のファイルにコピーします。必要に応じて、スクリプトの行の「デフォルト」マージを変更できます。

    `arg =`
    
  • として保存しますcustom_screenshot.py

  • スクリプトをキーショートカットの組み合わせに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。「+」をクリックして、コマンドを追加します。

    python3 /path/to/custom_screenshot.py
    

注意

スクリプトはwmctrl、ウィンドウの位置を決定するために使用します。ただし、異なるウィンドウマネージャーでは、wmctrl -lGコマンドの出力はウィンドウのy位置にわずかな違いを示します。これらの違いはdeviation=、スクリプトの-lineで設定された値によって排除されます。現在設定されている値(0)は、UnityおよびKDEに適しています。

スクリプトは、テストされ、上の罰金に動作されるXfceGnome、その値は、スクリプトの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])

3
私はそれが存在するとは思わない -今は存在する!本当にありがとうございます!
IonicăBizău

1
@IonicăBizăuどういたしまして!質問してくれてありがとう。デフォルト設定の説明を少し修正しました。
ジェイコブVlijm

1
@IonicăBizăuは、ジオメトリのバグを発見(および修正)しました。
ジェイコブVlijm

2
ナイス、ナイス、ナイス!ASUSノートブックの特別なボタンを押したときに実行するコマンドとして設定します。:-)
IonicăBizău

2

ShiftボタンとPrtScrボタンの組み合わせを使用して、ユーザー定義の寸法で特定の領域のスクリーンショットを撮ることもできます。

組み合わせを押して、修正カーソル(プラス記号に似たもの)を使用して、スクリーンショットの領域を選択します。


通常、これらのマージンを正確に設定するために手を制御することはできません。:-)しかし、このショートカットに+1、私はそれを知りませんでした。
IonicăBizău

2

scrotコマンドラインのスクリーンキャプチャユーティリティでスクリーンショットを撮ることができます。

scrot -s  

または

scrot -ub -d 5  

2番目のコマンドは、選択されたウィンドウの周囲に境界線を配置します。このウィンドウは、ウィンドウのサイズに対して適切な幅を持っています。この-d 5オプションは遅延の略で、スクリーンショットに表示するウィンドウを選択するために5秒の遅延を与えます。

これでインストール:

sudo apt-get install scrot

リファレンス:Ubuntuマニュアル-scrot

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.