1 个不稳定版本
0.2.0 | 2024年2月13日 |
---|
在 命令行工具 中排名第 1312
23KB
328 行
Hyprdrop
Rust 实现 hdrop。
https://github.com/kjlo/hyprdrop/assets/79338048/cdf9fff6-690c-46cb-a7a6-0b2db14ab753
需求
- Hyprland
- Rust >= 1.75
安装
克隆仓库并构建
git clone https://github.com/kjlo/hyprdrop
cd hyprdrop
cargo install --path .
这将在您的 $HOME/.cargo/bin
中创建一个二进制文件。您必须验证这个地址是否在您的 $PATH
中。
用法
使用它的首选方式是将此作为绑定添加到您的 Hyprland 配置中
# Template
bind = $mainMod, [KEY], exec, hyprdrop [TERMINAL] -i [CHOOSEN_IDENTIFIER]
# Example
bind = $mainMod, U, exec, hyprdrop alacritty -i alacritty_hyprdrop
[!NOTE]
如果要将它用作具有特殊窗口规则的独立应用程序,则参数标识符必须是一个唯一名称。
另外,如果您要启动一个 TUI 应用程序
# Template
bind = $mainMod, [KEY], exec, hyprdrop [TERMINAL] --identifier=[CHOOSEN_IDENTIFIER] --args=[TUI_CMD_AND_ARGS]
# Example
bind = $mainMod, I, exec, hyprdrop alacritty --identifier=bottom_hyprdrop --args=btm,-b
[!NOTE]
请检查对于 TUI 应用程序,不需要像大多数终端模拟器执行命令时使用的
-e
标志,这是由 Hyprdrop 本身实现的。
要启动 Spotify
# Template
bind = $mainMod, [KEY], exec, hyprdrop [GUI_APP] --identifier=[CHOOSEN_IDENTIFIER] --args=[GUI_APP_ARGS] --env=[ENVIRONMENT_VARIABLE]
# Example
bind = $mainMod, code:47, exec, hyprdrop spotify --identifier="Spotify Free" --args="--enable-features=UseOzonePlatform\,WaylandWindowDecorations,--ozone-platform=wayland" --env="LD_PRELOAD=/usr/lib/spotify-adblock.so"
[!NOTE]
Hyprdrop 默认将逗号分隔值转换为空格分隔值。如果您想忽略某些值,必须添加前缀
\
。
[!NOTE]
Spotify 的类或标题不能由用户修改,因此 Hyprdrop 使用默认的
initial_title
来识别应用程序,在我的情况下是Spotify Free
。
您可以通过查看 hyprdrop --help
命令来查看所有可用的选项。
[!WARNING]
Hyprdrop 最初是为 TUI 应用程序设计的。理论上,它应该可以与任何 GUI 应用程序或未完全支持的 TUI 应用程序一起使用(您必须使用原始类/标题来识别窗口)。
支持的终端模拟器
完全支持
以下列表显示了 Hyprdrop 完全支持的终端模拟器,这意味着您可以使用这些终端运行每个 TUI 应用程序并应用窗口规则。
终端 | 支持 | 窗口标识符(用于 Hyprland 配置) |
---|---|---|
Alacritty | yes | class |
Kitty | yes | class |
Wezterm | yes | class |
Gnome Terminal | yes | title |
Foot | yes | title |
Konsole | yes[^1] | title |
Rio | no | - |
- 本列表基于对以下应用程序进行的测试编制。
部分支持
终端 | 注意事项 |
---|---|
Spotify | 无法应用窗口规则 |
- 本列表基于对以下应用程序进行的测试编制。
[^1]:要为Konsole应用窗口规则,您需要使用部分模式匹配,因为Konsole会将窗口标题修改为类似以下内容:[ASSIGNED_IDENTIFIER_BY_USER] — Konsole
。因此,您必须创建一个具有以下语法的窗口规则:windowrule = [RULE], title:^[ASSIGNED_IDENTIFIER_BY_USER] — Konsole$
或者简单地:windowrule = [RULE], title:^[ASSIGNED_TITLE_BY_USER]
[!NOTE]
标识符由Hyprdrop用于识别拖放窗口,以及由Hyprland用于应用窗口规则。
窗口规则
为了获得更好的体验,您可以将一些窗口规则添加到Hyprland配置中。这可以创建一个具有定义大小的居中浮动窗口。
windowrulev2 = float, class:^(alacritty_hyprdrop)$
windowrulev2 = center, class:^(alacritty_hyprdrop)$
windowrulev2 = size 1460 810, class:^(alacritty_hyprdrop)$
windowrulev2 = float, title:^(foot_hyprdrop)$
windowrulev2 = float, title:^(gnome-terminal_hyprdrop)
以及为TUI应用程序提供的附加规则,与上述内容相同
windowrulev2 = float, class:^(bottom_hyprdrop)$
windowrulev2 = center, class:^(bottom_hyprdrop)$
windowrulev2 = size 1460 810, class:^(bottom_hyprdrop)$
免责声明
依赖项
~8–22MB
~251K SLoC