diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 570f2ec0..087a3b83 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1473,6 +1473,7 @@ dependencies = [ "known-folders", "log", "nix", + "objc", "objc2 0.6.4", "objc2-foundation 0.3.2", "objc2-network-extension", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d83d185c..3a347acf 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -129,6 +129,7 @@ block2 = "0.6" objc2 = "0.6" objc2-foundation = "0.3" objc2-network-extension = "0.3" +objc = "0.2" [target.'cfg(unix)'.dependencies] nix = { version = "0.31", features = ["user", "fs"] } diff --git a/src-tauri/src/window_manager/macos.rs b/src-tauri/src/window_manager/macos.rs index 00cba231..c1cdd371 100644 --- a/src-tauri/src/window_manager/macos.rs +++ b/src-tauri/src/window_manager/macos.rs @@ -10,10 +10,13 @@ use crate::window_manager::{WindowManager, NEW_UI_WINDOW_ID, OLD_UI_WINDOW_ID}; #[cfg(target_os = "macos")] use cocoa::{ - appkit::{NSView, NSWindow, NSWindowStyleMask}, + appkit::{NSView, NSWindow, NSWindowButton, NSWindowStyleMask, NSWindowTitleVisibility}, base::id, }; +#[cfg(target_os = "macos")] +use objc::{msg_send, sel, sel_impl}; + #[cfg(target_os = "macos")] pub fn enable_rounded_corners(window: WebviewWindow) -> Result<(), String> { window @@ -33,6 +36,26 @@ pub fn enable_rounded_corners(window: WebviewWindow) -> Result<() ns_window.setStyleMask_(style_mask); ns_window.setTitlebarAppearsTransparent_(cocoa::base::YES); + // Hide the window title + ns_window.setTitleVisibility_(NSWindowTitleVisibility::NSWindowTitleHidden); + + // Hide the standard window buttons (close, minimize, zoom) + let close_button = + ns_window.standardWindowButton_(NSWindowButton::NSWindowCloseButton); + if !close_button.is_null() { + let _: () = msg_send![close_button, setHidden: cocoa::base::YES]; + } + let miniaturize_button = + ns_window.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); + if !miniaturize_button.is_null() { + let _: () = msg_send![miniaturize_button, setHidden: cocoa::base::YES]; + } + let zoom_button = + ns_window.standardWindowButton_(NSWindowButton::NSWindowZoomButton); + if !zoom_button.is_null() { + let _: () = msg_send![zoom_button, setHidden: cocoa::base::YES]; + } + let content_view = ns_window.contentView(); content_view.setWantsLayer(cocoa::base::YES); }