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
67 每月下载量
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