2 个稳定版本
3.2.5 | 2024年5月23日 |
---|---|
3.2.4 | 2024年5月17日 |
#309 在 Unix API
每月 21 次下载
215KB
2.5K SLoC
xdgkit
XDGkit
XdG 库和命令行工具包!
大量内容来自 freesktop.org,并将其作为枚举和结构体 rust 化,并在主函数中实现,以便二进制工具可以使用规范。
xdgkit 遵循 SemVer
例如
- 0.0.1 是初始版本
- 0.1.0 添加了
icon-theme
到 CLI 子命令 - 0.2.0 添加了
desktop-menu
到 CLI 子命令 - 2.0.0 发生了一个重大变更:将 libxdgkit 重命名为 xdgkit
basedir
这使用 std::env
并返回 Result<String, VarError>
,与 std::env
相同。这提供了所有正常的 XDG 变量,以及图标、菜单/目录文件、桌面文件和自动启动目录的位置。命令行解析器将自动检查现有目录。具有类似 Vec
属性的函数(例如应用程序目录)都可以轻松扩展
use xdgkit::basedir::*;
// simple use
let app_dirs:Vec<String> = convert_to_vec(applications());
这将返回一个空向量和一个空字符串,如果不存在则返回
**这实现了来自 XDG 规范 的 autostart-spec
、basedir-spec
和 trash-spec
**
desktop-entry
读取桌面文件并将其转换为可以访问 freedesktop 规范中包含的所有桌面文件功能的结构体。
作为库,它返回一个主要由 Option<whatever>
组成的结构体
作为一个命令行工具,它返回一个字符串,该字符串在新行上打印(如果你要查找的字段为空,则打印一个空行。换句话说,你需要类似以下内容:
icon_finder
基于 freedesktop.org 上的伪代码
use xdgkit::icon_finder;
use std::path::PathBuf;
let icon_name = "firefox";
// look for the 48px icon
let icon = match icon_finder::find_icon(icon_name.to_string(),48,1){
Some(icon)=>icon,
None=>PathBuf::new(),
};
// this will show the path to the icon in the current theme
println!("Firefox icon:{:?}", icon);
icon_theme/icon-theme
读取一个 index.theme
类型的 ini 文件,并将其转换为可以访问的结构体 Option<whatever>
,该结构体可以访问 freedesktop 规范或此库/程序文档中提供的任何图标主题规范功能。
作为一个命令行工具,它返回一个字符串,该字符串在新行上打印(如果你要查找的字段为空,则打印一个空行。
正在进行中
由于 "重复、顺序不正确" 的元素是大多数 XML 文件所必需的,因此 serde 目前不能与任何 XML 库一起工作。这将在 serde-xml-rs
中不会得到修复,所以谁也不知道是否会有一个支持 serde、xml 和 rust 的 rust serde XML 库。这影响
- recently_used
- desktop_menu/desktop-menu
- user_places
在此之前,我可能需要手动读取所有内容...
依赖关系
~4MB
~72K SLoC