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

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

i3 WMを使用しています。したがって、私の質問は次のとおりです。 Unityのようなスクリーンショットの動作を構成して、キーボードショートカットなどで画面領域やウィンドウをスナップできるようにするにはどうすればよいですか(ウィンドウIDやコンソールなどを掘り下げることなく)

回答

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

リージョンをキャプチャする

これにより、カーソルが十字線に変わり、クリックしてドラッグしてボックスを形成すると、そのボックスは

import ss.png 

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

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

コメント

  • import ss.pngの後にあるウィンドウをクリックして、そのウィンドウのスクリーンショットを撮ることもできます。
  • これはしませんただし、’はi3構成からは機能しません。最小限の例:bindsym $mod+shift+s exec import ~/screenshot.png行を構成に追加します。 ‘何もしません。
  • フレームショットに関する他の回答を参照してください。これは、’が最近使用している’です。

回答

この質問をしてから久しぶりですが、一部のユーザーにとっては役立つようです。そこで、独自のスクリプトを作成します。 xclipおよびimagemagickパッケージのスクリーンショット。

まず、上記の依存関係をインストールします。その後、次のことができます。以下のスクリプトで必要なものは何でも。画面全体または画面領域のスクリーンショットの作成をサポートし、スクリーンショットをクリップボードに自動的にコピーして、どこにでも貼り付けることができるようにします(eiブラウザまたはTelegramメッセンジャー)。

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

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

回答

Flameshot は適切な代替手段です。

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

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

コメント

  • ドキュメントを作成するためのこのようなツールを探していました。スクリーンショットにマーキングを追加することもできます

回答

scrot a、シンプルなコマンドラインスクリーンキャプチャユーティリティ

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

コメント

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

回答

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

pacman -S imagemagick jq xclip 

I私の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を取得します。それをimagemagicksimportコマンドに渡し、結果をxclipにパイプして、クリップボードに配置します!

回答

使用 maim 。より積極的に開発されており、 slop に依存しています。これははるかに優れています。

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

コメント

  • (1)「スロップ」とは何ですか? (2)正確には、何よりも優れていますか? (3)なぜですか?
  • 1。ウィンドウ領域の選択に使用される操作の選択[ github.com/naelstrof/slop] 2. ‘の方が優れています’選択ボックスが破損しないため、scrotよりも優れています(htopでscrotを試してください)。 3.idk。

回答

インストールしている場合、またはインストールしてもかまわない場合は、非常に簡単なオプションを使用します xfce4-screenshooter およびi3構成は次のようになります。

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

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

回答

シャッターの後処理機能(手描きの赤い円!)と包括的な構成オプション。

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

shutter --select 

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

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

読み込みに1秒かかるため、バックグラウンドで自動起動することをお勧めします:

exec shutter --min_at_startup 

シャッターにアクセスできるようになりますトレイアイコンを介して、上記以外の多くの便利なオプションを提供します。

Com ments

  • シャッターは現時点ではUbuntu18.04に完全に簡単にインストールできません(編集ツールは利用できないライブラリによって異なります) ;カスタムPPAが最新ではありません)。悲しい。

回答

このperl6スクリプトは root、area、window、 または delay インポートを使用して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 

回答

@ddnomad は、スクリプトのbashバージョンで、より明確に、クリップボードにのみ保存できる別のフラグが付いています。

 #! /bin/bash - help_and_exit() { cat <<-EOF Usage: scregcp [-h|-s|-c] [<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 -c - save only to clipboard EOF exit 0 } base_folder="./" savefile=true region=false params="-window root" while test $# -gt 0; do case "$1" in -h|--help*) help_and_exit ;; -r|--region*) params="" shift ;; -c|--clipboard-only*) savefile=false shift ;; *) if [[ $1 =~ ^\- ]] ; then echo "error: unknown flag "$1"" help_and_exit fi base_folder="${1}" shift ;; esac done 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} if [ "$savefile" = false ] ; then rm ${file_path} fi  

次に、これを config

 bindsym --release Shift+Print exec "/dir/to/script.sh -r $HOME/Pictures/screenshots/" bindsym --release Control+Shift+Print exec "/dir/to/script.sh -r -c $HOME/Pictures/screenshots/" bindsym --release Print exec "/dir/to/script.sh $HOME/Pictures/screenshots/" bindsym --release Control+Print exec "/dir/to/script.sh -c $HOME/Pictures/screenshots/"  

つまり、キーバインディングは次のとおりです。

  • =スクリーンショットを作成する
  • +Control =クリップボードにのみ保存する
  • +Shift =画面の特定の領域のみをキャプチャします

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です