#status-bar #bar #i3 #window-manager #status

bin+lib yaib

yaib 是另一种 i3 侧边栏,专注于显示大量数据

2 个不稳定版本

0.2.0 2023年10月11日
0.1.0 2023年10月2日

#674 in GUI

MIT 许可证

42KB
890

yaib: 另一种 i3 侧边栏

yaib 是一个非常简单(截至本文写作时)的 i3 窗口管理器(X11)状态栏,利用异步计算来限制性能瓶颈。这使得一个非常节省资源的侧边栏,能够显示统计信息和您想显示的其他内容。

yaib 在写作时非常不成熟。您想要的大部分功能都不会在这里。

一些功能

  • 可展开。每个块都有一个 icon 值,可以点击以展开它。结合紧急颜色值,您就无需整天看到文本更新;只需在需要时看到颜色。
  • 页面:使用箭头在许多不同的页面之间切换。这样,您可以在侧边栏中隐藏您不关心的不那么重要的事情,但在需要时可以访问它们。
  • 资源轻量:yaib 非常小,几乎不使用资源。

以下是在默认配置中展开的磁盘部分的示例

它折叠了(只需点击即可)

安装

发布

cargo install yaib

开发(推荐)

cargo install --git https://github.com/erikh/yaib

执行 & 设置

yaib

将侧边栏的内容以 JSON 格式输出到标准输出。

要将它集成到您的 i3 安装中,请在您的 ~/.config/i3/config 文件中提供如下段落;请记住删除任何其他类似的块。

注意:在此段落中,您必须将 $HOME 替换为您的主目录。

bar {
    font pango:monospace 10, FontAwesome 10
    position bottom
    status_command $HOME/.cargo/bin/yaib
    colors {
        separator #666666
        background #222222
        statusline #dddddd
        focused_workspace #0088CC #0088CC #ffffff
        active_workspace #333333 #333333 #ffffff
        inactive_workspace #333333 #333333 #888888
        urgent_workspace #2f343a #900000 #ffffff
    }
}

这样做并重新加载您的配置(默认为 mod + shift + r)后,侧边栏应该会出现!

配置

有一个示例配置文件。此配置文件可以通过设置环境中的 YAIB_CONFIG 或在 $XDG_CONFIG_HOME/yaib/yaib.config.yaml 中创建文件来指定。

字段描述如下

  • update_interval 是在轮询系统并显示新统计数据之前要等待的时间。它以 fancy duration 格式 指定,您可以在该链接中了解更多信息。
  • pages 是用于翻页的页面列表。每个页面包含一个项目列表。
    • name 是块的名称。它必须存在,且对于所有块必须是唯一的。
    • icon 是可点击的简短内容。不支持在静态值中使用。如果没有提供,将始终显示格式化内容。
    • urgency 是一个包含3个元素的元组,值均小于100。它们对应于紧急值,绿色/黄色/红色。不支持在静态或音乐值中使用。当低于最低值时,使用默认文本颜色。
    • urgency_colors 是一个包含3个元素的元组,值为 #rrggbb。当设置紧急阈值时使用这些值。
    • type 是块的类型。 valueformat 依赖于此类型,因此它们将在下面的类型中指定。
      • command 执行命令。它不会通过shell执行,并且通过空格对值进行分词。值是要执行的命令。可以使用 update_interval 来覆盖全局 update_interval 以运行执行缓慢或无需更新的命令。有关更多信息,请参阅 example_command.sh。命令必须输出(并且仅输出)一个包含以下三个参数的JSON对象
        • name:这是您配置的块的名称,因此可以映射回。
        • value:这是您想在栏中显示的数据。如果存在,图标将被自动连接。
        • percent:这是可选的,0-100之间的整数,有助于紧急着色。
      • dynamic 仅适用于通过Unix套接字更新的类型(见下文)。它不携带任何值,不传达紧急性,也没有格式。
      • static 仅显示在 value 中设置的静态字符串。不应用格式化。
      • music 通过MPRIS(例如,spotify,xmms)显示当前播放音乐曲目的一些选项。不使用值。
        • %artist 是当前艺术家
        • %title 是当前曲目标题
        • %pct_played 是您在曲目中所处的完整百分比。
        • %total_playedminute:second,适合常规更新。
      • cpu 是CPU指标。两者 %count(CPU数量)和 %usage 都可用作格式字符串。
      • disk 是存储指标。 value 是挂载点。
        • %total 是总用户存储
        • %usage 是已使用量
        • %pct 是磁盘使用的百分比。
      • memory 是内存指标。不使用值。
        • %total 是总用户内存
        • %usage 是已使用量
        • %swap_total 是可用的交换空间量
        • %swap_usage 是使用的交换空间量
        • %pct 是使用的内存百分比。
        • %pct_swap 是使用的交换空间百分比。
      • load 是内存指标。不使用值。
        • %1 是一分钟负载平均值
        • %5 是五分钟负载平均值
        • %15 是十五分钟负载平均值
      • time 是时间指标。没有使用值。格式是 chrono的strftime格式

Unix套接字

注意: 这一层未来可能会发生重大变化。如果您使用此功能,建议您通过yaib命令使用它,而不是直接写入套接字,因为协议肯定会发生变化。

您可以使用与command类型相同的JSON格式写入块。每次写入一个块;使用yaib write-block '<block json>'直接写入套接字。套接字也位于/tmp/yaib.sock;只有最新运行的yaib副本将响应它,但您可以使用nc等工具来控制它。只需向套接字发送一些JSON数据。有关输出格式的示例,请参阅example_command.sh

无论块的name值设置为多少,都将替换挡板中的块。如果此块在配置中不是dynamic类型,则它不会持久存在,在下一次迭代中将被新的收集数据覆盖(这种行为预计将在未来发生变化)。

许可

MIT

作者

Erik Hollensbe [email protected]

依赖项

~16–27MB
~416K SLoC