#dmenu #shell #facade #depend #display #items #disclaimer

dmenu_facade

通过 dmenu 交互的 Rust 包装器。依赖于已安装的 dmenu

3 个版本 (破坏性更新)

0.3.0 2020年11月23日
0.2.0 2020年8月27日
0.1.0 2020年8月26日

#dmenu 中排名 8

每月下载 21

MIT 许可证

14KB
165

dmenu_facade

这是一个允许从 rust-project 中使用 dmenu 的小型库。它目前只能在 Linux 上运行,并且依赖于用户 $PATH 中的 dmenu。

免责声明:dmenu_facade 使用 shell 与 dmenu 交互,如果这让您感到不舒服,请查看源代码

我主要创建这个库是为了自己,因为我想要开始编写 rust 可执行文件而不是我的某些脚本。对于这些脚本,我想要使用 dmenu 作为用户交互的便利性。

如何使用

dmenu_facade 很容易使用。它使用构建器模式,通过执行方法来最终化指令。它包含了来自 man dmenu 的大多数参数。它接受一个必须实现 Display 特性的项目列表,并根据调用的函数返回引用或所有权的项目。

如果有多个项目的 Display 输出相等,则返回 Vec 中的最后一个项目。

示例

use dmenu_facade::*;
use std::error::Error;
use std::fmt::Display;

pub fn main() -> Result<(), Box<dyn Error>> {
    let items = vec![
        TestStruct {
            id: 0,
            text: "Hello".to_string(),
        },
        TestStruct {
            id: 1,
            text: "World".to_string(),
        },
        TestStruct {
            id: 2,
            text: "!".to_string(),
        },
    ];

    println!(
        "id: {}",
        DMenu::default().execute_consume(items).unwrap().id
    );

    Ok(())
}

// Just a test struct to see that it can work with more complex structs, as long as they implement Display
struct TestStruct {
    id: i32,
    text: String,
}

impl Display for TestStruct {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        self.text.fmt(f)
    }
}

无运行时依赖项