6 个版本
0.2.9 | 2024年7月28日 |
---|---|
0.2.6 | 2024年7月25日 |
0.2.5 | 2023年11月11日 |
0.2.4 | 2023年10月25日 |
0.2.3 | 2022年9月7日 |
#231 在 配置 中
每月330次下载
用于 trawlcat
15KB
279 行
Trawl
简单的基于 Linux 的配置系统,独立于发行版/显示后端(Wayland / X11 等)。
构建说明
确保您已安装 Rust 工具链(版本 >= 1.62)。使用以下命令构建所有二进制文件
git clone https://github.com/regolith-linux/trawl.git
cd trawl
make
注意1:将 cargo build
替换为 cargo build --release
以在发布模式下构建二进制文件。
注意2:二进制文件位于 target/debug
目录中(如果以发布模式构建,则为 target/release
)。
注意3:第一次运行 make setup
命令时将失败。这是因为在此步骤中会生成 dbus-interface 的代码。您可以忽略此错误并继续执行以下命令。
安装说明
git clone https://github.com/regolith-linux/trawl.git
cd trawl
# enable the "install" target in the Makefile
make install
systemctl daemon-reload
systemctl enable --now trawld
注意:第一次运行 make setup
命令时将失败。这是因为在此步骤中会生成 dbus-interface 的代码。您可以忽略此错误并继续执行以下命令。
功能
- 类似 Xresources 的基于文件的配置系统。
- 与现有的
Xresources
文件兼容。 - 独立于显示后端和发行版。
- 轻量级且易于使用。
- 使用 DBus 会话总线 来建立 IPC。这允许每个用户运行自己的配置管理器实例。
用法
在二进制文件前加上构建目录路径(target/debug
或 target/release
)以使用而不安装。
资源文件/配置文件格式
- 资源文件中的每一行都是一个以 ':' 分隔的键值对。例如。
key1: value1 key2: value2
- 有效的密钥是一个没有空格的ASCII字母数字字符串,但可以包含以下特殊字符——' - ', ' . ', ' _ '。例如。
sway-wm.screen_timeout: 100
- 如果一行包含多个冒号(':'),则第一个冒号之前的内容被视为密钥,第一个冒号之后的内容被视为值。例如。
swaywm.workspace.1.name: 1: Shell
- 值可以是任何UTF-8字符串。
- 注释以'//'开头,将被忽略。
- 默认情况下,预处理指令(以'#'开头)由c预处理程序处理。如果指令不被识别,则会被忽略。
- 预处理指令可以用于包含其他文件。指令的形式为
#include <file>
。文件相对于资源文件。#include <config.d/swayidle>
- 预处理指令可以用于定义宏。指令的形式为
#define <macro> <value>
。宏是一个字符串,值也是一个字符串。宏在资源文件中定义。#define USERNAME "John Doe"
- 就像在C中一样,可以使用
#ifdef
和ifndef
指令有条件地忽略/包含资源文件的某些部分。#ifdef USERNAME swaylock.greeter.user USERNAME // USERNAME is replaced with John Doe #endif
启动配置管理器(trawld)
运行trawld
以启动配置守护进程。您可以向守护进程传递可选参数来自定义行为或更改日志级别。运行trawld --help
获取更多信息。
使用CLI客户端(trawldb)
CLI客户端允许用户与配置管理器交互。客户端的主要功能包括从文件中加载配置。运行trawldb --help
获取更多信息。
示例
- 加载文件
# load a file (doesn't overwrite existing resources) trawldb --load example/resources # load a file without preprocessing resrdb --load example/resources --nocpp
- 合并来自文件的资源
# merge resource from a file (overrides existing resources) trawldb --merge example/resources # merge resource from a file without preprocessing trawldb --merge example/resources --nocpp
- 将当前加载的资源保存到文件
# if file exists it is backed up to a file with the same name but with a .bak extension trawldb --edit all_resources # specify suffix for -edit [.bak] trawldb --edit all_resources --backup .old
- 查询资源
# query all resources trawldb --query # query a specific resource (partial matches are also shown) trawldb --query key1
- 获取资源值
# get the value for the resouource whose name is 'key1' trawldb --get key1
获取资源值(trawlcat)
trawlcat
是xrescat
的替代品,并打印请求资源的值。有关更多信息,请参阅(《a href="https://github.com/regolith-linux/xrescat" rel="noopener ugc nofollow">xrerscat》)文档。
客户端API(C语言)
在service.xml
文件期间,使用meson
构建自动生成dbus接口的头文件和实现文件。《code>client_api.h头文件提供了一个简单易用的包装API。所有dbus方法名称均为蛇形命名法,并以前缀conf_client
开头。
Rust客户端库
将trawldb
包包含在《code>Cargo.toml文件中。然后可以使用Rust客户端库与配置管理器交互。
[dependencies]
trawldb = { path = "/path/to/trawldb" }
依赖项
~11–22MB
~327K SLoC