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

Download history 155/week @ 2024-06-23 16/week @ 2024-06-30 1/week @ 2024-07-07 269/week @ 2024-07-21 178/week @ 2024-07-28 8/week @ 2024-08-04 8/week @ 2024-08-11

每月下载量 463

MIT 许可证

110KB
2K SLoC


handlr-regex

使用 handlr 轻松管理默认应用程序!现在具有正则表达式的功能!

原始 handlr 的分支

功能

  • 根据扩展名或 MIME 类型设置默认处理程序
  • 根据正则表达式设置任意命令作为处理程序
  • 基于扩展名和内容智能检测文件 MIME 类型
  • 一次性打开多个文件
  • 为 MIME/扩展名设置多个处理程序,并使用 rofi/dmenu 选择一个
  • 支持通配符,如 text/*
  • 自动从 mimeapps.list 中删除无效/错误的 .desktop 条目
  • 提供如 launchget --jsonmime --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 选择一个
  • 使用简单命令如 getsetlist 等操作更加方便
  • 可以操作扩展名,无需查找或记住 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

  1. 查找具有TerminalEmulator类别的应用程序
  2. 将其设置为x-scheme-handler/terminal的默认值
  3. 发送通知告知您已猜测您的终端,并提供必要的更改说明

优点是,Terminal=true条目现在可以在交互式终端之外工作,而与xdg-utils不同。

终端模拟器兼容性

handlr应该与几乎所有终端模拟器兼容。

但是,具体取决于您的终端模拟器支持的命令行参数或直接在其中运行命令所需的要求,可能需要进行一些轻微的配置。

如果它使用/支持-e(即xtermxfce4-terminalfoot等),则无需进行任何操作。

如果需要其他内容,则将term_exec_args~/.config/handlr/handlr.toml中设置为必要的参数,如下所示

// Replace 'run' with whatever arguments you need 
term_exec_args = 'run'

如果不需要任何参数,或者其参数已包含在其桌面文件中,但未使用-e(即weztermkitty等),则将term_exec_args设置为''

如果您有更好的处理方式,请随时提出问题或拉取请求。

设置多个处理器

  1. 打开~/.config/handlr/handlr.toml并设置enable_selector = true。可选地,您还可以调整selector以使用您的选择器命令(例如rofi或dmenu)。

  2. 使用handlr add添加第二个/第三个/任何处理器,例如

handlr add x-scheme-handler/https firefox-developer-edition.desktop
  1. 现在在这个示例中,当您打开一个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 listhandlr 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

二进制文件

  1. 下载最新的 发布版二进制文件 并将其放置在 $PATH 中某个位置。
  2. 下载 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