#菜单 #图标 #桌面 #xdg #命令行 #linux

程序+库 xdgkit

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

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


用于 fsearch-plugin-app-lanche…

自定义许可证

225KB
3K SLoC

xdgkit

XDGkit

Documentation Crates.io

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