grimを使ってファイルの保存場所を尋ねる方法は?

grimを使ってファイルの保存場所を尋ねる方法は?

現在、Sway / grimを使用してスクリーンショットを保存していますが、ファイル名の入力を求めてこれを改善する方法は不明です。つまり、私のSway設定の一般的なバインディングは次のようになります。

bindsym Print exec grim -g "$(slurp)" "$HOME/screenshots/$(date '+%y%m%d_%H-%M-%S').png

これにより、画面領域を選択し、その領域のスクリーンショットを撮ってから、日付と同じファイル名で$ HOME / screenshotsディレクトリに保存できます。私が使用する別の関連コマンドは次のとおりです。

exec grim -g "$(slurp)" - | wl-copy

これにより画像はクリップボードに保存されますが、通常は特定のディレクトリに画像を保存したいと思います。

しかし、時にはディレクトリを選択するオプションを使用して同じことをしたい場合があります。だからスクリーンショットを撮り、ディレクトリ選択ダイアログを有効にして、そのディレクトリにファイルを保存したいと思います。理想的には、Waylandの組み込みファイルセレクタを有効にする方法があります。 yad("yad --file-selection") を試してみましたが、実行すると空の画面のみが表示されます。おそらく私はArch/Wayland/Swayを実行しているのでしょうか?

以下の答えの1つには端末ベースのアプローチがありますが、少し厄介です。むしろファイル保存ダイアログボックスが表示されるようにしたいと思います。

答え1

これは一つの方法です。目的地を使用しfdて指定します。fzf今後スクリーンショット。

#!/bin/bash

folder=$(cd && fd -a -t d | fzf)

sleep 10

grim -g "$(slurp)" "$folder"/"$(date +%Y%m%d-%H%M%S)".png

実行ファイルとして保存し、次bindsymのように変更します。

bindsym Print exec foot -e /path/to/executable

仮定:

  • foot使用中の端末を持ち、実行可能ファイルの物理パスを指定するには;change binsymを使用しています。
  • 端末には指定されたワークスペースが必要です。スクリーンショットは次のとおりです。いいえこのワークスペースの

を押すと、Printその端末専用ワークスペースに端末ウィンドウが開きます。
と表示されますfzf
スクロールしてを押して、スクリーンショットを保存するディレクトリを選択しますEnter
そのワークスペースに移動するのに10秒の時間がかかります。
10秒後、手は十字線に変わります。地域を選択してください。
画像は選択したディレクトリに保存されます。

関連情報