#终端 #gtk4 # # #风味 #zoha #波浪号

程序+库 zoha4

受 Tilda 启发的下拉终端,GTK4 风味

4 个版本

0.1.0 2024 年 4 月 13 日
0.0.3 2023 年 12 月 24 日
0.0.2 2023 年 12 月 19 日
0.0.1 2023 年 12 月 19 日

#546 in GUI

Download history 33/week @ 2024-04-14 77/week @ 2024-04-28 2/week @ 2024-06-30 22/week @ 2024-07-07 45/week @ 2024-07-28

67 每月下载量

GPL-3.0 许可证

155KB
3.5K SLoC

受 Tilda 启发的下拉终端。

(GTK3 风味: hkoosha/zoha)

$ 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

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

不使用 DBus 使用 Zoha 的技巧

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
monitor string 要在其上显示Zoha的监视器,您可以通过以下命令获取可用监视器的列表:zoha --list-monitors
title Zoha string 应用程序的标题。
width u32 Zoha窗口的高度(以像素为单位)。
height 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 枚举 何时显示标签。 "Auto"将在有多个标签时显示标签;可能的值:Auto, Never, Always。
tab_position Top 枚举 显示标签的位置;可能的值:Left, Right, Top, Bottom。
tab_expand false bool 将标签栏扩展到整个窗口宽度。
tab_title_num_characters 25 i8 标签中要显示的字符数。负值从右侧裁剪标题,正值从左侧裁剪。
scrollbar_position Hidden 枚举 可能的值:Left, Right, 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;待办:RestartCommand,DropToDefaultShell。
last_tab_exit_behavior RestartTerminal 枚举 当最后一个标签退出或关闭时会发生什么;可能的值:RestartTerminal,RestartTerminalAndHide,Exit。

[技巧]

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

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

toggle的示例值

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

待办

  • 测试多显示器设置。
  • 配置TUI。
  • 窃取从Tomboy Notes(和Tilda)借用合适的键抓取器。
  • (也许)直接修改受支持的窗口管理器/受支持的版本以添加切换快捷键。
  • 在配置错误时显示对话框。
  • 自定义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–54MB
~1M SLoC