#菜单 #图标 #桌面 #xdg #命令行 #命令行工具 #Linux

xdgkit2

适用于 XDG 规范的命令行工具包。同时也是 Rust 库

2 个稳定版本

3.2.5 2024年5月23日
3.2.4 2024年5月17日

#309Unix API

每月 21 次下载

自定义许可证

215KB
2.5K SLoC

xdgkit

XDGkit

Documentation Crates.io

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-specbasedir-spectrash-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