我目前使用 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
这是一种方法。它使用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
;更改bindsym以拥有您使用的终端并指定可执行文件的实际路径。 - 终端应该有一个指定的工作区,屏幕截图是不是该工作空间的
当您按 时Print,将在专用于该终端的工作区中打开一个终端窗口。
它将显示由fzf
.
通过滚动并按 选择要保存屏幕截图的目录Enter。
您将有 10 秒的时间移动到相关工作区。
10 秒过去后,指针变为十字线。选择区域。
图像将保存在您选择的目录中。