9 个版本 (4 个破坏性更新)

0.6.0 2024 年 4 月 20 日
0.5.0 2023 年 12 月 26 日
0.4.6 2023 年 12 月 24 日
0.4.3 2023 年 11 月 30 日
0.1.0 2023 年 10 月 14 日

GUI 中排名 #267

Download history • Rust 包仓库 111/week @ 2024-04-27 • Rust 包仓库 2/week @ 2024-06-29 • Rust 包仓库 21/week @ 2024-07-06 • Rust 包仓库 52/week @ 2024-07-27 • Rust 包仓库

每月 52 次下载

GPL-3.0 许可证

150KB
3.5K SLoC

受 Tilda 启发的下拉终端。

(GTK4 风味: hkoosha/zoha4)

$ zoha -h
A drop down terminal inspired by Tilda

Usage: zoha [OPTIONS]

Options:
  -c, --cfg-file CFG_FILE      Override location of config file
  -k, --keypress-grabber       Disable listening on dbus for keypress
      --list-key-grabber-keys  List keys accepted by keypress grabber
  -s, --signal                 Signal Zoha to toggle visibility and exit
      --list-monitors          List monitors and exit
  -q, --quiet                  Do not print hints
      --dry-run                Sanitize configuration, print any errors and exit
  -h, --help                   Print help
  -V, --version                Print version

什么是 Zoha?

Zoha 是一个基于 GTK 的 VTE 的终端模拟器。然而,与其他不同,它可以通过点击按钮从屏幕顶部下拉。

热键切换可见性

Zoha 连接到 dbus,并监听切换其可见性的信号。可以通过以下命令广播 dbus 信号

zoha -s

通过您的窗口管理器将此命令分配给键盘快捷键,然后您就设置好了!

使用 Zoha 而不使用 DBus 的技巧

Zoha 还提供了一种技巧,它会监听键盘按键,并在按下配置的快捷键时切换可见性。这是一个技巧,更多详情可以通过运行带有技巧的 zoha 来找到。

zoha -k

安装

通过以下命令生成和启动二进制文件,您需要安装 Rust

cargo build -r
./target/release/zoha

# And to send the DBus signal:
./target/release/zoha -s

您可以通过以下方式安装到 /usr/bin/

sudo make install

不要忘记将 zoha -s 分配给您的窗口管理器快捷键配置中的所需快捷键。

配置

Zoha 有一组配置,都具有默认值。默认值可以在 $HOME/.zoha.toml 的配置文件中覆盖,或者在启动 zoha 时命名替代配置文件

zoha -c 'alt/path/to/config/file.toml'

如果配置文件解析失败,zoha 会回退到默认值,这样您仍然可以启动终端并检查配置文件。

配置格式是 TOML,如下所示

[process]
# nothing here yet.

[keys]
quit = "Shift-Ctrl-Alt-q"
tab_add = "Shift-Ctrl-t"
tab_close = "Shift-Ctrl-w"

[display]
# start_hidden = true
tab_mode = "Auto"

[color]
pallet = "SolarizedDark"
bg = "rgba(0,0,0,0.8)"

配置值

[process]

Config Default Type Notes
application_id io.koosha.zoha string GTK 应用程序 ID,更改这一点没有太大意义。
command varies string 在终端内部使用的 shell。必须是可执行文件的路径,默认为首先找到的:bash、zsh、fish。

[font]

Config Default Type Notes
font font string 要使用的字体名称,必须是 Pango 可解析的值。
size 16 u8 字体大小。

[color]

Config Default Type Notes
bg rgba(0, 0, 0, 0.1) RGBA 字符串 背景颜色,必须可解析为 GTK RGBA。
fg rgba(255, 255, 255, 0.1) RGBA 字符串 前景颜色,必须能被解析为GTK RGBA。
光标 rgba(0, 0 ,0, 0.1) RGBA 字符串 光标颜色,必须能被解析为GTK RGBA。
调色板 Tango 枚举 默认调色板;可能的值:Tango、Zenburn、Linux、XTerm、RXVT、SolarizedLight、SolarizedDark、Snazzy。
color_00 RGBA 字符串 调色板中颜色0的覆盖,必须能被解析为GTK RGBA。
color_01 RGBA 字符串 调色板中颜色1的覆盖,必须能被解析为GTK RGBA。
color_02 RGBA 字符串 调色板中颜色2的覆盖,必须能被解析为GTK RGBA。
color_03 RGBA 字符串 调色板中颜色3的覆盖,必须能被解析为GTK RGBA。
color_04 RGBA 字符串 调色板中颜色4的覆盖,必须能被解析为GTK RGBA。
color_05 RGBA 字符串 调色板中颜色5的覆盖,必须能被解析为GTK RGBA。
color_06 RGBA 字符串 调色板中颜色6的覆盖,必须能被解析为GTK RGBA。
color_07 RGBA 字符串 调色板中颜色7的覆盖,必须能被解析为GTK RGBA。
color_08 RGBA 字符串 调色板中颜色8的覆盖,必须能被解析为GTK RGBA。
color_09 RGBA 字符串 调色板中颜色9的覆盖,必须能被解析为GTK RGBA。
color_10 RGBA 字符串 调色板中颜色10的覆盖,必须能被解析为GTK RGBA。
color_11 RGBA 字符串 调色板中颜色11的覆盖,必须能被解析为GTK RGBA。
color_12 RGBA 字符串 调色板中颜色12的覆盖,必须能被解析为GTK RGBA。
color_13 RGBA 字符串 调色板中颜色13的覆盖,必须能被解析为GTK RGBA。
color_14 RGBA 字符串 调色板中颜色14的覆盖,必须能被解析为GTK RGBA。
color_15 RGBA 字符串 调色板中颜色15的覆盖,必须能被解析为GTK RGBA。

[显示]

Config Default Type Notes
显示器 string 要在其上显示Zoha的显示器,您可以通过zoha --list-monitors获取可用显示器的列表。
标题 Zoha string 应用程序的标题。
宽度 u32 Zoha窗口的像素宽度。
高度 u32 Zoha窗口的像素宽度。
width_percentage 100 u8 将监控器宽度用作Zoha窗口宽度的百分比。如果指定,将覆盖width属性。
width_percentage 100 u8 将监控器高度用作Zoha窗口高度的百分比。如果指定,将覆盖height属性。
start_hidden false bool 在初始启动时隐藏Zoha。
skip_taskbar true bool 不要在任务栏中显示Zoha。
always_on_top true bool 始终位于其他窗口之上。
sticky true bool 始终位于所有桌面。
fullscreen true bool 全屏。
tab_scroll_wrap true bool 当使用配置的快捷键滚动标签时,在到达末尾/开头时进行循环。
tab_mode Auto 枚举 何时显示标签。"自动"将在有多个标签时显示标签;可能的值:自动、从不、始终。
tab_position Top 枚举 显示标签的位置;可能的值:左、右、上、下。
tab_expand false bool 将标签栏扩展到整个窗口的宽度。
tab_title_num_characters 25 i8 显示在标签中的字符数。负值从右端修剪标题,正值从左端修剪。
scrollbar_position Hidden 枚举 可能的值:左、右、隐藏。

[键]

Config Default Type Notes
copy Ctrl-Shift-C string 复制快捷键;有效的GTK加速器规范。
paste Ctrl-Shift-V string 粘贴快捷键;有效的GTK加速器规范。
quit Ctrl-Shift-Alt-q string 应用程序退出快捷键;有效的GTK加速器规范。
transparency_toggle F12 string 临时切换透明度;有效的GTK加速器规范。
tab_add Ctrl-Shift-T string 在当前标签旁边添加一个新标签;有效的GTK加速器规范。
tab_close Ctrl-Shift-W string 关闭当前标签;有效的GTK加速器规范。
tab_move_backward Ctrl-Shift-Page_Up string 将活动标签向前移动到所有标签中;有效的GTK快捷键指定。
tab_move_forward Ctrl-Shift-Page_Down string 将活动标签向后移动到所有标签中;有效的GTK快捷键指定。
tab_goto_next Ctrl-Page_Down string 转到下一个标签;有效的GTK快捷键指定。
tab_move_previous Ctrl-Page_Down string 转到上一个标签;有效的GTK快捷键指定。
tab_goto_last Ctrl-Alt-9 string 转到最后一个标签;有效的GTK快捷键指定。
tab_goto_01 Ctrl-Alt-1 string 转到标签号1;有效的GTK快捷键指定。
tab_goto_02 Ctrl-Alt-2 string 转到标签号2;有效的GTK快捷键指定。
tab_goto_03 Ctrl-Alt-3 string 转到标签号3;有效的GTK快捷键指定。
tab_goto_04 Ctrl-Alt-4 string 转到标签号4;有效的GTK快捷键指定。
tab_goto_05 Ctrl-Alt-5 string 转到标签号5;有效的GTK快捷键指定。
tab_goto_06 Ctrl-Alt-6 string 转到标签号6;有效的GTK快捷键指定。
tab_goto_07 Ctrl-Alt-7 string 转到标签号7;有效的GTK快捷键指定。
tab_goto_08 Ctrl-Alt-8 string 转到标签号8;有效的GTK快捷键指定。
font_size_inc Ctrl-Alt-Equal string 临时增加所有标签的字体大小;有效的GTK快捷键指定。
font_size_dec Ctrl-Alt-Equal string 临时减小所有标签的字体大小;有效的GTK快捷键指定。
font_size_reset Ctrl-Alt-Equal string 将所有标签的字体大小重置为初始值;有效的GTK快捷键指定。

[终端]

Config Default Type Notes
allow_hyperlink true bool 请参考GTK VTE以获取更多信息。
allow_bold true bool 请参考GTK VTE以获取更多信息。
audible_bell false bool 请参考GTK VTE以获取更多信息。
cursor_blink false bool 请参考GTK VTE以获取更多信息。
cursor_shape 块状 枚举 请参考GTK VTE以获取更多信息;可能的值:块状,IBeam,下划线。
scroll_on_output false bool 请参考GTK VTE以获取更多信息。
scroll_on_keystroke true bool 请参考GTK VTE以获取更多信息。
mouse_auto_hide false bool 请参考GTK VTE以获取更多信息。
scrollback_lines -1 i64 请参考GTK VTE以获取更多信息。
backspace_binding Auto 枚举 请参考GTK VTE以获取更多信息;可能的值:自动,AsciiBackspace,AsciiDelete,DeleteSequence,Tty。
delete_binding Auto 枚举 请参考GTK VTE以获取更多信息;可能的值:自动,AsciiBackspace,AsciiDelete,DeleteSequence,Tty。
word_char_exceptions -A-Za-z0-9,./?%&#:_ string 请参考GTK VTE以获取更多信息。

[行为]

Config Default Type Notes
terminal_exit_behavior ExitTerminal 枚举 当VTE终端退出时会发生什么;可能的值:ExitTerminal;TODO:RestartCommand,DropToDefaultShell。
last_tab_exit_behavior RestartTerminal 枚举 当最后一个标签退出或关闭时会发生什么;可能的值:RestartTerminal,RestartTerminalAndHide,Exit。

[技巧]

Config Default Type Notes
toggle F1 键码列表(键码序列) 切换可见性的键码序列。Zoha必须使用-k标志才能生效。

注意:使用--list-key-grabber-keys运行Zoha以打印上述toggle配置接受的键列表。请注意:键序列指定与快捷键指定不同。快捷键采用GTK加速键指定,而toggle采用Rust的device_query crate特定键。

toggle的示例值

toggle = ["LControl", "LShift", "F1"]

TODO

  • 测试多显示器设置。
  • 配置TUI。
  • 窃取从Tomboy笔记(和Tilda)借用适当的键捕获器。
  • (也许)直接修改支持的窗口管理器/支持的版本以添加toggle快捷键。
  • 在配置错误时显示对话框。
  • 自定义gtk CSS。
  • 额外配置:新标签的添加位置。
  • 额外配置:在鼠标上显示滚动条。
  • 配置:terminal_exit_behavior。
  • 配置:prompt_on_exit。
  • 配置:working_dir。
  • 在原始crate(vte-rs)中更新VTE并弃用我们的(zoha-vte-rs)。
  • 修复vte-rs(或zoha-vte-rs)中的正则表达式。

故障排除

在切换可见性后,Zoha立即隐藏,或者根本不显示

您是否以zoha -k的方式运行了Zoha,并且配置了窗口管理器快捷键?这将导致Zoha在出现后立即接收到2个信号并隐藏。

我的配置没有生效

以干运行模式启动Zoha并观察输出。是否有配置错误?

zoha --dry-run
# OR
zoha --dry-run -k

依赖项

~25–56MB
~1M SLoC