2 个版本

0.1.1 2022年1月16日
0.1.0 2022年1月15日

#2045 in 命令行工具

Apache-2.0

48KB
810

RUFET

另一个命令行系统信息工具,但用 Rust 编写!

内容

路线图

计划未来的事情

代码
  • ANSI 图像
  • 真实图像支持(Kitty,ueberzug)
  • Sixel 支持
内置模块
  • 主机名
  • 内核
  • 内存
  • 操作系统
  • 运行时间
  • 自定义用户脚本
  • 常用环境变量
    • 编辑器
    • 终端
  • 终端颜色
  • 窗口管理器
  • 桌面环境
  • 软件包
  • 主题 - gtk, Qt
  • 分辨率
  • GPU
文档
  • 在 docs.rs 上的文档
  • 更好的 Markdown
  • 配置说明
  • 标志设计
  • 配置示例,截图

安装

cargo install rufet 

或手动克隆仓库并构建

配置

配置通过位于 $HOME/.config/rufet/config.toml 的 toml 文件完成。所有内容都被分成了模块,例如 [data][logo][data.hostname],每个模块都有变量来指定模块的显示方式。一些模块有独特的变量。 以下将提及这些变量

[data]
format="$hostname$os"
height=10
margin=2
padding=5

[data.hostname]
format="this is my  hostname: $value"

[logo]
format="logo"

[[logo.rule]]
id="logo"
exec='echo -ne "$(<$HOME/.config/rufet/ansi)" \\n'

变量

格式

更改模块将显示的文本。每个模块将用模块获取的值替换 $value。因此,主机名将用用户的主机名替换 $value

[data.hostname]
	format="This is my hostname: $value"

高度

修改模块占用的最小行数。如果您想在模块和边框之间留出一些空间,或者想让数据模块的高度与标志一致,则很有用。[data] height=25

填充

在模块的左侧和右侧添加空白字符,但位于边框内,如果您想在模块和边框的两侧留出一些空间,则很有用。data.kernel padding=25

边距

在模块的左侧和右侧添加空白字符,但位于边框外,如果您想在两个由边框分隔的模块之间留出一些空间,则很有用。[data] margin=2

对齐

改变模块内文本的对齐方式 [data] alignment= "left"|"center"|"right"

唯一变量

数据

数据模块,包含所有模块的内置ID,例如 $hostname$os 等。但它还有一个 $all,将显示所有尚未使用的可用模块。因此,如果您想始终首先显示内存使用情况,可以这样做:format="$memory$all"

运行时间

“运行时间”有一个变量 time_format,用于格式化显示的时间。例如:time_format="运行时间是:$d天,$h小时,$m分钟,$s秒"

自定义边框

边框是每个模块内的一个结构。它有自己的变量,可以自定义,如下所示

[data.hostname.border]
top: ['╭', '─', '╮'],
bottom: ['╰', '─', '╯'],
sides: ['│', '│'],
visible: true,
color: "#ff00ff",
background: "255;0;0",

规则

如果您想创建一个自定义模块来显示文本或执行脚本,您可以通过 rules 来这样做,规则是一个具有 id 的结构,当在其他模块中找到时将被替换为值。规则可用于创建自定义模块或更改现有模块的颜色和外观。规则的变量

id: "id to replace"
text: "text"
exec: "shell command"
color: "#fff"|"0;0;0"
background: "#fff"|"0;0;0"
effects: ["bold","faint","italic","underline","blink","reverse","conceal","crossed"]
border: Border
padding: int
margin: int
alignment: String

如果未设置 text 变量,则将使用自身替换 id,同时赋予其颜色。如果要更改预定义ID(如 $value)的颜色,则 text 变量的优先级高于 exec

更改颜色

更改 colorbackground 变量的值,它们支持十六进制代码颜色,如 #f0f#ff00ff,以及用分号分隔的 rgb,如 255;0;255

[data.hostname]
	format="this is my red hostname: $value , $blue"
	[[data.hostname.rule]]
	    id="$value"
	    color="#ff0000"
	[[data.hostname.rule]]
	    id="$blue"
	    text="this is blue text with a green background"
	    color="#0000ff"
	    background="#00ff00"

自定义模块

自定义模块仍然是规则,但您不是使用 text 变量来选择 id,而是使用 exec 变量来执行一个打印到标准输出的 shell 命令。

[data]
  format="$custom1"
  [[data.rule]]
    id="$custom1"
    exec="echo -n aaa"
    padding=5
    [data.rule.border]
      color="#f00"
      visible=true

由于toml的构建方式,它不支持用于ANSI艺术的\e转义代码,或用于它的任何其他转义代码,要在toml中使用ANSI艺术,只能使用\u001B转义代码,为此,您需要使用一个图像到ANSI转换器,然后将所有转义代码替换为\u001B。相反,建议使用一个规则,该规则使用命令来打印文件内容,例如echo,或您选择的任何脚本。这将使其更容易,并且会使配置文件更加简洁。

[logo]
	format="logo"
	[[logo.rule]]
	  id="logo"
	  exec='echo -ne "$(<$HOME/.config/rufet/ansi)" \\n'

截图

default themedefault theme 2

依赖项

~0.7–1.8MB
~36K SLoC