i3 WMを使用してArch Linuxで画面領域を簡単にキャプチャする方法は?

i3 WMを使用してArch Linuxで画面領域を簡単にキャプチャする方法は?

私は約1ヶ月前にUbuntu 14.04 LTSからArchに切り替え、その決定に非常に満足しています。しかし、新しいリリースの一部の機能、特にキャプチャする画面領域を選択できるUnityのShift+機能が欠けています。printscr

i3 WMを使用しています。だから私の質問は:キーボードショートカットなどを使用して画面領域やウィンドウをキャプチャできるように(ウィンドウIDやコンソールコンテンツを詳しく調べる必要なしに)Unityなどのスクリーンショットの動作をどのように設定しますか?

答え1

ImageMagickの一部を使用できますimport

地域を捉える

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

import ss.png

フルディスプレイキャプチャ

import -window root ss.png

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

答え2

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

まず、上記の依存関係をインストールします。その後、以下のスクリプトを使用して目的の操作を実行できます。フルスクリーンまたはスクリーン領域のスクリーンショットの作成をサポートし、自動的にスクリーンショットをクリップボードにコピーしてどこにでも貼り付けることができます(eiブラウザまたはテレグラムメッセンジャー)。

それほど難しくないいくつかのトリックは、特定のウィンドウのキャプチャとコピーされたセクション切り替えのサポートを追加します。

#!/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/"

答え3

火災射撃良い選択です。

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

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

ここで設定を編集し、設定の再~/.config/i3/config読み込みを使用できますi3-msg reload

答え4

まず、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にリンクするとクリップボードに保存されます。

関連情報