Tauri2——使用Rust创建窗口并设置磨砂背景

1,837 阅读2分钟

image.png

一、使用WebviewWindowBuilder创建窗口

使用Rust创建新的窗口。

fn main() {
    tauri::Builder::default()
        .setup(move |app| {
            let win_width = 800.;
            let win_height = 700.;
            
            let mut window_builder =
                WebviewWindowBuilder::new(app, "main", WebviewUrl::default());

            window_builder = window_builder
                // 设置窗口大小
                .inner_size(win_width, win_height);

            let _ = window_builder.build()?;

            Ok(())
        })
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

WebviewWindowBuilder需要三个参数:

  • 对App的可变引用
  • label窗口的唯一标识符
  • 需要打开的窗口链接,这里使用WebviewUrl::default()

inner_size()设置窗口的像素大小

build()构建窗口,构建窗口可能会失败,这里使用?向外传递可能出现的错误

二、设置窗口磨砂背景

要让创建的窗口有磨砂背景需要使用EffectsBuilder

fn main() {
    tauri::Builder::default()
        .setup(move |app| {
            let win_width = 800.;
            let win_height = 700.;
            
            let effects = EffectsBuilder::new()
                .effects(vec![Effect::Acrylic, Effect::Blur])
                .build();
            
            let mut window_builder =
                WebviewWindowBuilder::new(app, "main", WebviewUrl::default());

            window_builder = window_builder
                // 设置窗口大小
                .inner_size(win_width, win_height)
                // 设置窗口透明背景
                .transparent(true)
                // 设置窗口磨砂背景
                .effects(effects);

            let _ = window_builder.build()?;

            Ok(())
        })
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

窗口要呈现磨砂背景必须使用transparent(true)使窗口背景透明,用EffectsBuilder构建一个effects传入effects(effects)

effects(vec![Effect::Acrylic, Effect::Blur])传入的是一个向量,第一个向量是磨砂背景的枚举只支持win10/11,第二个枚举支持win7,当一个枚举不生效会往后生效。

如果需要使用macos的背景效果,参考:Configuration | Tauri | EffectsBuilder in tauri::window - Rust

三、使用主题切换磨砂背景主题

fn main() {
    tauri::Builder::default()
        .setup(move |app| {
            let win_width = 800.;
            let win_height = 700.;
            
            let effects = EffectsBuilder::new()
                .effects(vec![Effect::Acrylic, Effect::Blur])
                .build();
            
            let mut window_builder =
                WebviewWindowBuilder::new(app, "main", WebviewUrl::default());

            window_builder = window_builder
                // 设置窗口大小
                .inner_size(win_width, win_height)
                // 设置窗口透明背景
                .transparent(true)
                // 设置窗口磨砂背景
                .effects(effects)
                // 使用黑色主题
                .theme(Some(tauri::Theme::Dark));

            let _ = window_builder.build()?;

            Ok(())
        })
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

磨砂背景默认是亮色主题,使用theme(Some(tauri::Theme::Dark))整体切换为暗黑主题,磨砂背景也会切换为暗色主题。

源代码地址:kit-tool/kit: Plugin-based Tools for Improving Work Efficiency. 插件化提高工作效率工具