13个稳定版本 (3个主要版本)
3.2.5 | 2023年8月15日 |
---|---|
3.2.3 | 2022年3月26日 |
3.0.0 | 2021年10月20日 |
2.0.3 | 2021年10月19日 |
0.2.1 | 2021年5月28日 |
#166 in Unix APIs
225KB
3K SLoC
xdgkit
XDGkit
一个XDG库和命令行工具包!
很多内容都是从 freedesktop.org 复制粘贴过来的,并将其作为枚举和结构体实现,以用于二进制工具来使用规范。
xdgkit遵循SemVer
例如
- 0.0.1是初始版本
- 0.1.0增加了
icon-theme
到CLI子命令 - 0.2.0增加了
desktop-menu
到CLI子命令 - 2.0.0发生了一个重大变更:将libxdgkit重命名为xdgkit
基于目录
这使用了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
**
桌面条目
读取桌面文件并将其转换为结构体,您可以访问在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 规范或此库/程序文档中找到任何图标主题规范功能。
作为一个命令行工具,它返回一个在新行(或空行,如果您查找的字段为空)打印的字符串。
进行中
由于“重复、无序元素”,当前 serde 无法与任何 xml 库一起工作,这是大多数 xml 文件所必需的。这不会在 serde-xml-rs
中修复,因此谁也不知道是否会有一个支持 serde 和 xml 的 Rust serde xml 库。这会影响
- recently_used
- desktop_menu/desktop-menu
- user_places
在此之前,我可能需要手动读取所有内容...
依赖关系
~4MB
~75K SLoC