#hyprland #终端 #工作空间 #终端窗口 #下拉菜单

应用程序 hyprdrop

Hyprland 的下拉菜单创建器,便于在各种工作空间间切换终端模拟器,实现无缝访问和组织

1 个不稳定版本

0.2.0 2024年2月13日

命令行工具 中排名第 1312

自定义许可协议GPL-3.0-or-later

23KB
328

Hyprdrop

Rust 实现 hdrop

https://github.com/kjlo/hyprdrop/assets/79338048/cdf9fff6-690c-46cb-a7a6-0b2db14ab753

需求

安装

克隆仓库并构建

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)$

免责声明

  • 本项目与Hyprlandhdrop无任何关联。
  • 本项目处于早期阶段,可能无法按预期工作。
  • 我不是程序员,因此我不知道如何编写良好的代码。

依赖项

~8–22MB
~251K SLoC