如何使用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

这是一种方法。它使用fdfzf指定目的地截屏。

#!/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;更改bindsym以拥有您使用的终端并指定可执行文件的实际路径。
  • 终端应该有一个指定的工作区,屏幕截图是不是该工作空间的

当您按 时Print,将在专用于该终端的工作区中打开一个终端窗口。
它将显示由fzf.
通过滚动并按 选择要保存屏幕截图的目录Enter
您将有 10 秒的时间移动到相关工作区。
10 秒过去后,指针变为十字线。选择区域。
图像将保存在您选择的目录中。

相关内容