4个版本
0.2.3 | 2022年6月21日 |
---|---|
0.2.1 | 2022年6月15日 |
0.2.0 |
|
0.1.1 | 2022年6月14日 |
0.1.0 | 2022年6月13日 |
在GUI中排名第598
19KB
308 行
dm_x
dm_x是一个Rust crate,用于使用dmenu
,这是一个键盘驱动的菜单,最初是为与平铺窗口管理器一起使用而编写的。
使用此crate需要为您自己的类型实现Item
trait,然后将这些项的切片传递给Dmx::select()
方法。
Item
已经为&str
实现,所以以下应该可以工作
let choices: &[&str] = &[
"Choice A",
"Choice B",
"Choice C",
"Both A and B",
"Both B and C",
"All Three",
"None of the Above",
];
let dmx = Dmx::default();
match dmx.select("Pick One:", choices).unwrap() {
None => {
println!("You declined to select an option.");
},
Some(n) => match choices.get(n) {
None => {
println!("You somehow chose an invalid choice.");
},
Some(choice) => {
println!("You chose \"{}\".", choice);
}
}
}
请参阅examples/
中的Item
的非平凡实现。
lib.rs
:
dm_x
是一个库,用于方便地使用dmenu
让用户从选项列表中选择。
dmenu
是一个非常好的键盘驱动环境工具,因为它允许用户以比点击列表中的项目或从下拉菜单中选择更快、更方便的方式选择选项。这个小型库在使用此工具时提供了以下三个功能
- 与
dmenu
交互的方便方式——无论是提供选项还是报告哪个被选中。 - 将
dmenu
提供的选项的文本与其程序功能分开。 - 向用户提供易于输入的助记符以及更详细的选项文本(这两者都与特定选项的功能不同)。
显然,您需要安装dmenu
(以及一个可以运行它的系统)。
static REGRESSION_TYPES: &[(&str, &str)] = &[
("linear", "Linear Regression"),
("p2", "Quadratic Regression"),
("p3", "Cubic Regression"),
("log", "Logistic Regression"),
("ln", "Logarithmic Regression"),
("sin", "Sinusoidal Regression")
];
let dmx = Dmx::default();
match dmx.select("method:", REGRESSION_TYPES).unwrap() {
Some(n) => {
println!("{}", REGRESSION_TYPES[n].1);
},
None => {
println!("No regression type chosen.");
},
}
特性
dm_x
有一个可选功能config
,它提供从某些.toml文件反序列化Dmx
配置的能力。这涉及到了serde
(以及toml
),这对于其他依赖项(除了dmenu
二进制文件)来说是一个相当大的依赖项(因此有功能门)。
#[cfg(feature = "config")]
{
const CHOICES: &[(&str, &str)] = &[
("frog", "a Fire-Breathing, Blue-Winged Frog"),
("toad", "a Acid-Blooded, Orange-Eyed Toad"),
("cat", "a Psychic Cat (Can Kill You With Its Mind)"),
("rat", "a Venom-Fanged Skaven Warlock"),
("dog", "Just a Regular Border Collie")
];
let dmx = Dmx::from_file("test/dmx_conf.toml").unwrap();
match dmx.select("->", CHOICES).unwrap() {
None => {
println!("You have chosen to adventure alone.");
},
Some(n) => {
println!("You will be accompanied by {}", CHOICES[n].1);
}
}
}
查看包含的"test/dmx_conf.toml"文件应该会使所需的格式相当明显;所有值都是可选的(默认为Dmx::default()
提供的值),并且应该与dmenu
作为参数期望它们一样。
文件 "test/dmx_conf.toml"
dmenu = "/usr/bin/dmenu"
font = "Terminus-12"
normal_bg = "#88cccc"
normal_fg = "#422"
select_bg = "#422"
select_fg = "#88cccc"
依赖项
~205KB