#output #windows #parse #pango #error #return

rofi

用于创建 rofi 窗口并解析输出的库

6 个版本 (3 个重大更改)

0.4.0 2024年1月16日
0.3.0 2021年9月19日
0.2.2 2020年6月10日
0.1.0 2020年6月10日

#122GUI

每月下载量 37
2 个工具包 中使用

Apache-2.0

36KB
584

Rofi Rust 库

生成 rofi 窗口,并适当地解析结果。

简单示例

use rofi;
use std::{fs, env};

let dir_entries = fs::read_dir(env::current_dir().unwrap())
    .unwrap()
    .map(|d| format!("{:?}", d.unwrap().path()))
    .collect::<Vec<String>>();

match rofi::Rofi::new(&dir_entries).run() {
    Ok(choice) => println!("Choice: {}", choice),
    Err(rofi::Error::Interrupted) => println!("Interrupted"),
    Err(e) => println!("Error: {}", e)
}

返回索引示例

rofi 还可以用来返回选中项的索引

use rofi;
use std::{fs, env};

let dir_entries = fs::read_dir(env::current_dir().unwrap())
    .unwrap()
    .map(|d| format!("{:?}", d.unwrap().path()))
    .collect::<Vec<String>>();

match rofi::Rofi::new(&dir_entries).run_index() {
    Ok(element) => println!("Choice: {}", element),
    Err(rofi::Error::Interrupted) => println!("Interrupted"),
    Err(rofi::Error::NotFound) => println!("User input was not found"),
    Err(e) => println!("Error: {}", e)
}

使用 pango 格式化字符串的示例

rofi 可以显示 pango 格式。以下是一个简单示例(您需要调用 self..pango 函数)。

use rofi;
use rofi::pango::{Pango, FontSize};
use std::{fs, env};

let entries: Vec<String> = vec![
    Pango::new("Option 1").size(FontSize::Small).fg_color("#666000").build(),
    Pango::new("Option 2").size(FontSize::Large).fg_color("#deadbe").build(),
];

match rofi::Rofi::new(&entries).pango().run() {
    Ok(element) => println!("Choice: {}", element),
    Err(rofi::Error::Interrupted) => println!("Interrupted"),
    Err(e) => println!("Error: {}", e)
}

不带输入显示消息的示例

rofi 可以显示不带任何输入的消息。这通常用于错误报告。

use rofi;

match rofi::Rofi::new_message("Something went wrong").run() {
    Err(rofi::Error::Blank) => () // the expected case
    Ok(_) => ()  // should not happen
    Err(_) => () // Something went wrong
}

依赖项

~320–790KB
~19K SLoC