3 个版本 (破坏性更新)
0.3.0 | 2020年11月23日 |
---|---|
0.2.0 | 2020年8月27日 |
0.1.0 | 2020年8月26日 |
在 #dmenu 中排名 8
每月下载 21 次
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)
}
}