-
Notifications
You must be signed in to change notification settings - Fork 506
Open
Labels
type: bugSomething isn't workingSomething isn't working
Description
Describe the bug
When using two different screens, one external 24" monitor, and one internal 16" monitor, tauri-plugin-positioner crashes when opened first on one, then unplugging it, and then opening it on the second one.
Reproduction
Step-by-step:
- Only 24" external screen used
- Start application, tray icon visible
- Click tray icon -> App opens up at the correct position
- Disconnect from USB hub, open laptop lid
- Only 16" internal screen used at this point
- Click tray icon -> Application instantly crashes with below stack trace
Expected behavior
App should not crash when moving between external and internal screen
Full tauri info output
npm run tauri info 101 ↵
> tauri
> tauri info
[✔] Environment
- OS: Mac OS 26.3.0 arm64 (X64)
✔ Xcode Command Line Tools: installed
✔ Xcode: 26.2
✔ rustc: 1.90.0 (1159e78c4 2025-09-14)
✔ cargo: 1.90.0 (840b83a10 2025-07-30)
✔ rustup: 1.28.2 (e4f3ad6f8 2025-04-28)
✔ Rust toolchain: stable-aarch64-apple-darwin (default)
- node: 24.11.1
- yarn: 1.22.22
- npm: 11.6.2
[-] Packages
- tauri 🦀: 2.10.1, (outdated, latest: 2.10.2)
- tauri-build 🦀: 2.5.5
- wry 🦀: 0.54.2
- tao 🦀: 0.34.5
- @tauri-apps/api ⱼₛ: 2.10.1
- @tauri-apps/cli ⱼₛ: 2.10.0
[-] Plugins
- tauri-plugin-positioner 🦀: 2.3.1
- @tauri-apps/plugin-positioner ⱼₛ: not installed!
- tauri-plugin-opener 🦀: 2.5.3
- @tauri-apps/plugin-opener ⱼₛ: 2.5.3
- tauri-plugin-log 🦀: 2.8.0
- @tauri-apps/plugin-log ⱼₛ: 2.8.0
[-] App
- build-type: bundle
- CSP: unset
- frontendDist: ../../apps/my/build/webpack
- devUrl: http://localhost:8000/
- framework: React
- bundler: Webpack
Stack trace
thread 'main' panicked at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-plugin-positioner-2.3.1/src/ext.rs:155:44:
called `Option::unwrap()` on a `None` value
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:697:5
1: core::panicking::panic_fmt
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/panicking.rs:75:14
2: core::panicking::panic
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/panicking.rs:145:5
3: core::option::unwrap_failed
at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/option.rs:2130:5
4: core::option::Option<T>::unwrap
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/option.rs:1009:21
5: tauri_plugin_positioner::ext::calculate_position
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-plugin-positioner-2.3.1/src/ext.rs:155:44
6: <tauri::window::Window<R> as tauri_plugin_positioner::ext::WindowExt>::move_window_constrained
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-plugin-positioner-2.3.1/src/ext.rs:85:31
7: <tauri::webview::webview_window::WebviewWindow<R> as tauri_plugin_positioner::ext::WindowExt>::move_window_constrained
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-plugin-positioner-2.3.1/src/ext.rs:65:32
8: my_lib::run::{{closure}}::{{closure}}
at ./src/lib.rs:107:49
9: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1985:9
10: tauri::app::on_event_loop_event
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.10.1/src/app.rs:2468:17
11: tauri::app::App<R>::make_run_event_loop_callback::{{closure}}
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.10.1/src/app.rs:1313:21
12: tauri_runtime_wry::handle_event_loop
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-runtime-wry-2.10.0/src/lib.rs:4235:32
13: tauri_runtime_wry::make_event_handler::{{closure}}
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-runtime-wry-2.10.0/src/lib.rs:3174:5
14: <tao::platform_impl::platform::app_state::EventLoopHandler<T> as tao::platform_impl::platform::app_state::EventHandler>::handle_user_events::{{closure}}
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/app_state.rs:117:11
15: tao::platform_impl::platform::app_state::EventLoopHandler<T>::with_callback
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/app_state.rs:79:7
16: <tao::platform_impl::platform::app_state::EventLoopHandler<T> as tao::platform_impl::platform::app_state::EventHandler>::handle_user_events
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/app_state.rs:111:10
17: tao::platform_impl::platform::app_state::Handler::handle_user_events
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/app_state.rs:217:16
18: tao::platform_impl::platform::app_state::AppState::cleared
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/app_state.rs:394:13
19: tao::platform_impl::platform::observer::control_flow_end_handler::{{closure}}
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/observer.rs:187:11
20: tao::platform_impl::platform::observer::control_flow_handler::{{closure}}
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/observer.rs:148:5
21: std::panicking::catch_unwind::do_call
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:589:40
22: ___rust_try
23: std::panicking::catch_unwind
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panicking.rs:552:19
24: std::panic::catch_unwind
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/panic.rs:359:14
25: tao::platform_impl::platform::event_loop::stop_app_on_panic
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/event_loop.rs:277:9
26: tao::platform_impl::platform::observer::control_flow_handler
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/observer.rs:146:3
27: tao::platform_impl::platform::observer::control_flow_end_handler
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/observer.rs:182:5
28: <unknown>
29: <unknown>
30: <unknown>
31: <unknown>
32: <unknown>
33: <unknown>
34: <unknown>
35: <unknown>
36: <unknown>
37: <unknown>
38: <unknown>
39: <unknown>
40: <() as objc2::encode::EncodeArguments>::__invoke
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc2-0.6.3/src/encode.rs:433:26
41: objc2::runtime::message_receiver::msg_send_primitive::send
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc2-0.6.3/src/runtime/message_receiver.rs:172:18
42: objc2::runtime::message_receiver::MessageReceiver::send_message
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc2-0.6.3/src/runtime/message_receiver.rs:432:38
43: <MethodFamily as objc2::__macro_helpers::msg_send_retained::MsgSend<Receiver,Return>>::send_message
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/objc2-0.6.3/src/__macro_helpers/msg_send_retained.rs:35:28
44: tao::platform_impl::platform::event_loop::EventLoop<T>::run_return
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/event_loop.rs:234:16
45: tao::platform_impl::platform::event_loop::EventLoop<T>::run
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/platform_impl/macos/event_loop.rs:201:26
46: tao::event_loop::EventLoop<T>::run
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.5/src/event_loop.rs:214:21
47: <tauri_runtime_wry::Wry<T> as tauri_runtime::Runtime<T>>::run
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-runtime-wry-2.10.0/src/lib.rs:3118:21
48: tauri::app::App<R>::run
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.10.1/src/app.rs:1247:8
49: tauri::app::Builder<R>::run
at /Users/bes/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.10.1/src/app.rs:2299:26
50: my_lib::run
at ./src/lib.rs:127:10
51: my::main
at ./src/main.rs:5:5
52: core::ops::function::FnOnce::call_once
at /Users/bes/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Additional context
Code:
tauri::Builder::default()
.plugin(
tauri_plugin_log::Builder::new()
.level(tauri_plugin_log::log::LevelFilter::Info)
.build(),
)
.setup(|app| {
let app_handle = app.handle().clone();
app_handle.plugin(tauri_plugin_positioner::init()).unwrap();
TrayIconBuilder::new()
.icon(app.default_window_icon().unwrap().clone())
.icon_as_template(true)
.on_tray_icon_event(|tray_handle, event| {
let app_handle = tray_handle.app_handle();
tauri_plugin_positioner::on_tray_event(tray_handle.app_handle(), &event);
// More stuff ...
})
.build(app)?;
#[cfg(target_os = "macos")]
app.set_activation_policy(tauri::ActivationPolicy::Accessory);
Ok(())
}
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
type: bugSomething isn't workingSomething isn't working