11 个不稳定版本 (4 个破坏性更新)
0.11.2 | 2024年7月31日 |
---|---|
0.10.1 | 2024年6月26日 |
0.10.0 | 2024年3月17日 |
0.9.0 | 2023年12月4日 |
0.7.1 | 2022年4月2日 |
在 解析器实现 中排名 155
每月下载量 463
110KB
2K SLoC
handlr-regex
使用 handlr
轻松管理默认应用程序!现在具有正则表达式的功能!
原始 handlr 的分支
功能
- 根据扩展名或 MIME 类型设置默认处理程序
- 根据正则表达式设置任意命令作为处理程序
- 基于扩展名和内容智能检测文件 MIME 类型
- 一次性打开多个文件
- 为 MIME/扩展名设置多个处理程序,并使用
rofi
/dmenu
选择一个 - 支持通配符,如
text/*
- 自动从
mimeapps.list
中删除无效/错误的.desktop
条目 - 提供如
launch
,get --json
,mime --json
等辅助命令,满足您的脚本编写需求 - 运行速度极快(用 Rust 编写)
- 单个编译的二进制文件,无依赖项
使用说明
# Open a file/URL
handlr open ~/.dotfiles/pacman/packages.txt
handlr open https://google.ca
# Set default handler for png files
handlr set .png feh.desktop
# Set wildcard handler for all text files
handlr set 'text/*' nvim.desktop
# Set wildcard handler for all OpenDocument formats
# NOTE: startcenter.desktop is usually LibreOffice's main desktop entry
handlr set 'application/vnd.oasis.opendocument.*' startcenter.desktop
# Set default handler based on mime
handlr set application/pdf evince.desktop
# List default apps
handlr list
# Get the handler for a mime/extension
$ handlr get .png
feh.desktop
# Launch a handler with given path/URL
handlr launch x-scheme-handler/https -- https://google.ca
# Get the mimetypes of given paths/URLs
handlr mime https://duckduckgo.com . README.md
与 xdg-utils
相比
- 可以一次性打开多个文件/URL
- 可以有多个处理程序,并在运行时使用 rofi/dmenu 选择一个
- 使用简单命令如
get
,set
,list
等操作更加方便 - 可以操作扩展名,无需查找或记住 MIME 类型
- 适用于设置 png/docx 等文件的处理程序等常见任务
- 出色的自动完成功能(目前包括 fish,zsh 和 bash),包括 MIME 类型、扩展名和
.desktop
文件 - 可选 JSON 输出以供脚本使用
- 正确支持
Terminal=true
条目
设置默认终端
不幸的是,没有XDG规范,因此没有一种标准化的方式让handlr
获取您的默认终端模拟器运行Terminal=true
桌面条目。几年前曾有一个提议,建议使用x-scheme-handler/terminal
来实现这个目的。在我看来,这是最差的选择,相比于处理N+1个发行版的怪癖或使用handlr特定的配置选项。
如果存在x-scheme-handler/terminal
,则handlr
将使用它。
否则,handlr
将
- 查找具有
TerminalEmulator
类别的应用程序 - 将其设置为
x-scheme-handler/terminal
的默认值 - 发送通知告知您已猜测您的终端,并提供必要的更改说明
优点是,Terminal=true
条目现在可以在交互式终端之外工作,而与xdg-utils
不同。
终端模拟器兼容性
handlr
应该与几乎所有终端模拟器兼容。
但是,具体取决于您的终端模拟器支持的命令行参数或直接在其中运行命令所需的要求,可能需要进行一些轻微的配置。
如果它使用/支持-e
(即xterm
、xfce4-terminal
、foot
等),则无需进行任何操作。
如果需要其他内容,则将term_exec_args
在~/.config/handlr/handlr.toml
中设置为必要的参数,如下所示
// Replace 'run' with whatever arguments you need
term_exec_args = 'run'
如果不需要任何参数,或者其参数已包含在其桌面文件中,但未使用-e
(即wezterm
、kitty
等),则将term_exec_args
设置为''
。
如果您有更好的处理方式,请随时提出问题或拉取请求。
设置多个处理器
-
打开
~/.config/handlr/handlr.toml
并设置enable_selector = true
。可选地,您还可以调整selector
以使用您的选择器命令(例如rofi或dmenu)。 -
使用
handlr add
添加第二个/第三个/任何处理器,例如
handlr add x-scheme-handler/https firefox-developer-edition.desktop
- 现在在这个示例中,当您打开一个URL时,您将提示选择所需的应用程序。
设置正则表达式处理器
受到mimeo中类似功能的启发
打开~/.config/handlr/handlr.toml
并添加如下内容
[[handlers]]
exec = "freetube %u" # Uses desktop entry field codes
terminal = false # Set to true for terminal apps, false for GUI apps (optional; defaults to false)
regexes = ['(https://)?(www\.)?youtu(be\.com|\.be)/*.'] # Use single-quote literal strings
更多信息
智能表格输出
从v0.10.0版本开始,具有表格输出的命令(即handlr list
和handlr mime
)在管道输出时切换到输出制表符分隔值,以便与cut
等命令一起使用。
截图
安装
Arch Linux
sudo pacman -S handlr-regex
可选地,您也可以使用 handlr-regex
来替换 xdg-open
,通过在 $HOME/.local/bin/
(或任何其他用户作用域的 $PATH
目录)中的脚本来实现。以下是一个示例脚本:
#!/bin/sh
handlr open "$@"
Rust/Cargo
cargo install handlr-regex
二进制文件
- 下载最新的 发布版二进制文件 并将其放置在
$PATH
中某个位置。 - 下载 fish 的补全
curl https://raw.githubusercontent.com/Anomalocaridid/handlr/master/completions/handlr.fish --create-dirs -o ~/.config/fish/completions/handlr.fish
归属
图标由 Eucalyp 设计,来源于 www.flaticon.com
封面照片来自 creativebloq.com
依赖项
~16–27MB
~303K SLoC