回答:
import
ImageMagickの一部を使用できます。
領域をキャプチャする
これにより、カーソルが十字に変わり、クリックしてドラッグしてボックスを作成すると、そのボックスがとして保存されss.png
ます。
import ss.png
ディスプレイ全体をキャプチャする
import -window root ss.png
単語root
をウィンドウIDに置き換えて、特定のウィンドウをキャプチャすることもできます。
import ss.png
そのウィンドウのスクリーンショットを撮ることもできます。
この質問をしたのは久しぶりで、一部のユーザーにとっては役立つようです。そこで、スクリーンショットを作成するための独自のスクリプトxclip
とimagemagick
パッケージを提供します。
まず、上記の依存関係をインストールします。その後、以下のスクリプトを使用して、必要な操作を実行できます。スクリーン全体またはスクリーン領域のスクリーンショットの作成をサポートし、スクリーンショットをクリップボードに自動的にコピーして、どこにでも貼り付けることができるようにします(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/"
scrot a、シンプルなコマンドライン画面キャプチャユーティリティを試してみましたか
ref。、:https : //faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/
まず、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はそれをクリップボードに配置します!
maimを使用します。それはより積極的に開発されており、はるかに優れているスロップに依存しています。
scrotを使用しないでください。選択ボックスが破損し、更新ウィンドウ(htopなど)で使用すると、スクリーンショットに印象が残ります(サイズ変更時にボックスも変形します)。
後処理機能(手描きの赤い丸!)と包括的な設定オプションでシャッターが好きです。
実行することで画面領域を取得できます
shutter --select
次の.config/i3/config
ようにキーバインディングを設定できます:
bindsym Print exec shutter --full
bindsym Shift+Print exec shutter --select
ロードには1秒かかるため、バックグラウンドで自動起動することもできます。
exec shutter --min_at_startup
シャッターは、トレイアイコンからアクセスできます。これにより、上記以外の多くの便利なオプションが提供されます。
この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