#ui #rofi #launcher

rustofi

构建简单的'rofi用户界面'应用程序的库

5个版本

0.2.2 2019年11月19日
0.2.1 2019年11月19日
0.1.6 2019年11月15日

#636GUI

GPL-3.0+

39KB
575

Rustofi

Rustofi是一个用于构建RUI(rofi用户界面)应用程序的库。它支持获取用户选择、用户输入,并在项目选择时运行相关回调。

用法

将其添加到您的 Cargo.toml

[dependencies]
rustofi = "0.2.2"

然后在您的Rust 2018应用程序中使用时,您可能需要这些导入

use rustofi::{AppRoot, RustofiOption, RustofiOptionType};
use rustofi::window::{Window, Location};

示例

简单

示例simple仅在一个循环中显示rofi窗口并返回所选文本。

git clone https://github.com/krruzic/rustofi
cd rustofi
cargo run --example simple

待办事项应用

更复杂的示例 todo_app 是一个持久的待办事项列表,它可以

  • 创建新的待办事项
  • 删除待办事项
  • 标记待办事项为完成
git clone https://github.com/krruzic/rustofi
cd rustofi
cargo run --example todo_app

lib.rs:

此Rust库允许构建使用Rofi显示其UI的复杂多页应用程序。基本思路是创建一个AppPageSearchPage作为应用程序主菜单,并为其提供可能的选项和操作。这些选项和操作可以将您导航到ItemListEntryBoxActionList或另一个主菜单。

通常,您将想要创建一个包含一些选项和操作的AppPage,然后在循环中显示它,检查返回的RustofiOptionType以退出。AppPageSearchPage将自动添加一个退出选项以简化循环退出情况,而ItemListActionList将添加一个取消选项。

最简单的示例

下面的示例比创建AppRoot更简单,它只是显示一个字符串列表,并使用回调来打印所选项。注意main中的循环检查rofi窗口的返回变体

use rustofi::components::ItemList;
use rustofi::RustofiResult;

fn simple_app() -> RustofiResult {
    let rustofi_entries = vec![
        "Entry 1".to_string(),
        "Entry 2".to_string(),
        "Entry 3".to_string(),
    ];
    ItemList::new(rustofi_entries, Box::new(simple_callback)).display("Select an entry".to_string())
}

pub fn simple_callback(s: &String) -> RustofiResult {
    println!("Clicked on item: {}", s);
    RustofiResult::Success
}

fn main() {
    loop {
        match simple_app() {
            RustofiResult::Error => break,
            RustofiResult::Exit => break,
            RustofiResult::Cancel => break,
            RustofiResult::Blank => break,
            _ => {}
        }
    }
}

依赖项

~2.5MB
~53K SLoC