javascript Tauri窗口位置“未设置托盘位置”

nkhmeac6  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(157)

我正在使用金牛座和金牛座插件定位器。我按照文档进行了设置:网址:main.rs

fn main() {
    ...
    tauri::Builder::default()
    .plugin(tauri_plugin_positioner::init()) <- Initialised plugin
    .on_system_tray_event(|app, event| {
            tauri_plugin_positioner::on_tray_event(app, &event); <- Required for tray locations
            match event {
                SystemTrayEvent::LeftClick { position: _, size: _, .. } => {
                    ...
                },
                _ => {}
            }
        })
    ...

app.js from React frontend:

import { move_window, Position } from 'tauri-plugin-positioner-api'
function App () {
    move_window(Position.TrayBottomRight)
    ...

我还更新了cargo.toml文件,以包括系统托盘特性,因为这显然是必要的:

tauri-plugin-positioner = { version = "1.0", features = ["system-tray"] }

我尝试过将其作为“Rust only”,其中通过www.example.com进行定位main.rs,但它产生了进一步的错误。我得到的当前错误是:thread 'tokio-runtime-worker' panicked at 'Tray position not set'我已经研究过这个,但文档似乎非常有限。它似乎是Electron版本的镜像,在Electron版本中,它们在move_window(Position.TrayBottomRight, traybounds)中指定了一个traybounds参数,但由于参数是意外的,所以它会出错。我唯一的想法是,这是因为我的.on_system_tray_event设置,但我不知道如何重写它。有谁能给我指出正确的方向或者指出我做错了什么吗(对rust & tauri来说是个新手)。

whlutmcx

whlutmcx1#

您尝试在启动时将应用程序窗口移动到系统托盘图标的位置,甚至在用户与托盘交互之前。这是没有意义的,因为托盘图标可能在该点甚至不可见,并且用户不会期望应用程序在托盘附近打开。要澄清的是:系统托盘是屏幕右下角图标的集合。
相反,您应该将窗口移动逻辑移动到事件处理程序中,该事件处理程序在用户单击托盘中的图标后打开应用程序窗口:

fn main() {
    ...
    tauri::Builder::default()
    .plugin(tauri_plugin_positioner::init())
    .on_system_tray_event(|app, event| {
            tauri_plugin_positioner::on_tray_event(app, &event);
            match event {
                SystemTrayEvent::LeftClick { position: _, size: _, .. } => {
                    // open the window here ...
                    // and only then move it:
                    app.move_window(Position.TrayBottomRight);`
                    // (although it would be better to immediately set the position while building the window)
                },
                _ => {}
            }
        })
    ...

如果在用户单击任务栏图标时无法打开窗口,您可以咨询:I am trying to create a new window using Tauri 1.2, Rust, React, and Typescript. I am facing some issues

相关问题