i3 WMを使用してArch Linuxの画面領域のスクリーンショットを簡単に作成するにはどうすればよいですか?


27

約1か月前にUbuntu 14.04 LTSからArchに切り替えましたが、この決定に非常に満足しています。しかし、私は私の新しいディストリビューション、特にで一部の機能を欠場Shift+ printscrユニティで画面領域の選択をキャプチャすることができます。

i3 WMを使用しています。それで、私の質問は、Unityのようなスクリーンショットの動作を設定して、キーボードショートカットなどを使用して画面領域またはウィンドウを(ウィンドウIDやコンソールなどを調べることなく)スナップできるようにする方法ですか?

回答:


29

importImageMagickの一部を使用できます。

領域をキャプチャする

これにより、カーソルが十字に変わり、クリックしてドラッグしてボックスを作成すると、そのボックスがとして保存されss.pngます。

import ss.png

ディスプレイ全体をキャプチャする

import -window root ss.png

単語rootをウィンドウIDに置き換えて、特定のウィンドウをキャプチャすることもできます。


1
シンプルで完璧、必要なものだけです。別のプログラムをダウンロードする必要はありませんでした。
ダレンヘインズ

1
また、ウィンドウをクリックして、import ss.pngそのウィンドウのスクリーンショットを撮ることもできます。
ジョンガワーズ

9

この質問をしたのは久しぶりで、一部のユーザーにとっては役立つようです。そこで、スクリーンショットを作成するための独自のスクリプトxclipimagemagickパッケージを提供します。

まず、上記の依存関係をインストールします。その後、以下のスクリプトを使用して、必要な操作を実行できます。スクリーン全体またはスクリーン領域のスクリーンショットの作成をサポートし、スクリーンショットをクリップボードに自動的にコピーして、どこにでも貼り付けることができるようにします(ei browserまたはTelegram messenger)。

ハックを思い付くのがそれほど難しくないカップルは、特定のウィンドウをキャプチャし、一部のコピーを切り替えるためのサポートを追加します。

#!/usr/bin/env bash

# screenshots stuff
# TODO: docs

function help_and_exit {
    if [ -n "${1}" ]; then
        echo "${1}"
    fi
    cat <<-EOF
    Usage: scregcp [-h|-s] [<screenshots_base_folder>]

    Take screenshot of a whole screen or a specified region,
    save it to a specified folder (current folder is default)
    and copy it to a clipboard. 

       -h   - print help and exit
       -s   - take a screenshot of a screen region
EOF
    if [ -n "${1}" ]; then
        exit 1
    fi
    exit 0
}

if [ "${1}" == '-h'  ]; then
    help_and_exit
elif [ "${1:0:1}" == '-' ]; then
    if [ "${1}" != '-s' ]; then
        help_and_exit "error: unknown option ${1}"  
    fi
    base_folder="${2}"
else
    base_folder="${1}"
    params="-window root"
fi  

file_path=${base_folder}$( date '+%Y-%m-%d_%H-%M-%S' )_screenshot.png
import ${params} ${file_path}
xclip -selection clipboard -target image/png -i < ${file_path}

そしてi3wm、このスクリプトを利用するための参照ショートカットは次のとおりです。

# take a screenshot of a screen region and copy it to a clipboard
bindsym --release Shift+Print exec "scregcp -s /home/ddnomad/pictures/screenshots/"

# take a screenshot of a whole window and copy it to a clipboard
bindsym --release Print exec "scregcp /home/ddnomad/pictures/screenshots/"

6

scrot a、シンプルなコマンドライン画面キャプチャユーティリティを試してみましたか

ref。、:https : //faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/


うわー、私はグーグルで気付いた後、陰嚢は実際に私が必要とするすべてのことができることに気づきました。あまりにも奇妙な私は自分でそれを見つけませんでした。ありがとう、相棒!
ddnomad

scrot -sを使用して特定の領域をキャプチャすることもできます。コマンドを実行し、2番目のポイントをクリックして押したままクリックすると、現在のディレクトリにファイル名として日付を含むファイルが作成されます。
-vimdude

5

まず、xclip、imagemagick、jqをインストールします!

pacman -S imagemagick jq xclip

私は私のi3構成にこの行があります:

bindsym $mod+Print exec \
    import -window $( \
        i3-msg -t get_tree | \
        jq 'recurse(.nodes[]) | select(.focused).window' \
    ) png:- | \
    xclip -selection clipboard -t image/png

これにより、mod(Window / Alt)+ Printscreenを押すと、アクティブウィンドウのスクリーンショットがクリップボードに表示されます。

i3-msg -t get-treeは、i3からすべてのウィンドウをjsonとして取得し、jqを使用して、フォーカスされたウィンドウのウィンドウIDを取得します。それをimagemagicksのimportコマンドに渡し、結果をxclipにパイプします。xclipはそれをクリップボードに配置します!


2

Flameshotはまともな選択肢です。

bindsym Print       exec flameshot full
bindsym Shift+Print exec flameshot gui

オプション-p /path/to/directoryを使用して、保存ディレクトリの選択をスキップできます。


1

xfce4-screenshooterとi3 config を使用してインストールするか、インストールを気にしない場合の非常に簡単なオプションは次のとおりです。

bindsym Print exec --no-startup-id xfce4-screenshooter

警告:他のxfce4プログラムを使用していない場合、かなり軽量ですが、いくつかの依存関係があります


1

maimを使用します。それはより積極的に開発されており、はるかに優れているスロップに依存しています。

scrotを使用しないでください。選択ボックスが破損し、更新ウィンドウ(htopなど)で使用すると、スクリーンショットに印象が残ります(サイズ変更時にボックスも変形します)。


(1)「スロップ」とは何ですか?(2)正確に、それは何よりも優れていますか?(3)なぜですか?
G-Manが「Reinstate Monica」と言う

1.ウィンドウ領域の選択に使用する選択操作[ github.com/naelstrof/slop] 2.選択ボックスが破損しないため、scrotよりも優れています(htopでscrotを試してください)。3. idk。
Hritik

1

後処理機能(手描きの赤い丸!)と包括的な設定オプションでシャッターが好きです。

実行することで画面領域を取得できます

shutter --select

次の.config/i3/configようにキーバインディングを設定できます:

bindsym Print         exec shutter --full
bindsym Shift+Print   exec shutter --select

ロードには1秒かかるため、バックグラウンドで自動起動することもできます。

exec shutter --min_at_startup

シャッターは、トレイアイコンからアクセスできます。これにより、上記以外の多くの便利なオプションが提供されます。


現時点では、シャッターをUbuntu 18.04に簡単に完全にインストールすることはできません(編集ツールは利用できないライブラリに依存しています。カスタムPPAは最新ではありません)。悲しい。
ラファエル

1

このperl6スクリプトはインポートを使用して、ルート、エリア、ウィンドウ、または遅延 ScreenShotsを取得し、それらを$ fileおよびクリップボードに保存します。

#!/usr/bin/env perl6
use v6;

sub print_window(Str $file) {
  qx{xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"} ~~ /(0x\S*)/;
  run <import -window>, $0, $file;
}

sub MAIN( Str $option where $option ∈ <root area window delay> ) {
  my $today = DateTime.now( 
    formatter => { 
      sprintf "%04d_%02d_%02d_%02d-%02d-%02d", .year, .month, .day, .hour, .minute, .second 
    } 
  );
  my $file  = "$*HOME/Dades/Imatges/ScreenShots/$today.png";

  given $option {
    when 'root'   { run <import -window root>, $file }
    when 'area'   { run 'import', $file              }
    when 'window' { print_window($file)              }
    when 'delay'  { sleep 10; print_window($file)    }
  }
  run <xclip -selection clipboard -target image/png -i>, $file;
  run <xmessage -nearmouse -timeout 3>, "Screenshot in clipboard, and saved in $today.png";
}

スクリプトを実行するためのi3のキーバインディングは次のとおりです。

bindsym $mod+Print exec Print_Screen root 
bindsym --release $mod+Shift+Print exec Print_Screen area
bindsym $mod+Mod1+Print exec Print_Screen delay
bindsym $mod+Control+Print exec Print_Screen window
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.