diff --git a/biome.json b/biome.json index 1b56af09..1a452c0a 100644 --- a/biome.json +++ b/biome.json @@ -1,31 +1,31 @@ { - "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", - "organizeImports": { - "enabled": true - }, - "files": { - "ignore": [ - "apps/desktop2/src/router.gen.ts", - "packages/system/src/commands.ts" - ] - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "style": { - "noNonNullAssertion": "warn", - "noUselessElse": "off" - }, - "correctness": { - "useExhaustiveDependencies": "off" - }, - "a11y": { - "noSvgWithoutTitle": "off" - }, - "complexity": { - "noStaticOnlyClass": "off" - } - } + "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", + "organizeImports": { + "enabled": true + }, + "files": { + "ignore": [ + "apps/desktop2/src/router.gen.ts", + "packages/system/src/commands.ts" + ] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noNonNullAssertion": "warn", + "noUselessElse": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off" + }, + "a11y": { + "noSvgWithoutTitle": "off" + }, + "complexity": { + "noStaticOnlyClass": "off" + } } + } } diff --git a/package.json b/package.json index 26be25de..a9968ce8 100644 --- a/package.json +++ b/package.json @@ -1,35 +1,35 @@ { - "name": "lume", - "private": true, - "version": "4.0.0", - "scripts": { - "build": "turbo run build", - "dev": "turbo run dev", - "web:dev": "turbo run dev --filter web", - "desktop:dev": "turbo run dev --filter desktop2", - "desktop:build": "turbo run build --filter desktop2", - "tauri": "tauri" - }, - "devDependencies": { - "@biomejs/biome": "^1.8.3", - "@tauri-apps/cli": "2.0.0-beta.22", - "turbo": "^1.13.4" - }, - "packageManager": "pnpm@8.9.0", - "engines": { - "node": ">=18" - }, - "dependencies": { - "@tauri-apps/api": "2.0.0-beta.15", - "@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.5", - "@tauri-apps/plugin-dialog": "2.0.0-beta.7", - "@tauri-apps/plugin-fs": "2.0.0-beta.7", - "@tauri-apps/plugin-http": "2.0.0-beta.8", - "@tauri-apps/plugin-os": "2.0.0-beta.7", - "@tauri-apps/plugin-process": "2.0.0-beta.7", - "@tauri-apps/plugin-shell": "2.0.0-beta.8", - "@tauri-apps/plugin-updater": "2.0.0-beta.7", - "@tauri-apps/plugin-upload": "2.0.0-beta.8", - "@tauri-apps/plugin-window-state": "2.0.0-beta.8" - } + "name": "lume", + "private": true, + "version": "4.0.0", + "scripts": { + "build": "turbo run build", + "dev": "turbo run dev", + "web:dev": "turbo run dev --filter web", + "desktop:dev": "turbo run dev --filter desktop2", + "desktop:build": "turbo run build --filter desktop2", + "tauri": "tauri" + }, + "devDependencies": { + "@biomejs/biome": "^1.8.3", + "@tauri-apps/cli": "2.0.0-beta.22", + "turbo": "^1.13.4" + }, + "packageManager": "pnpm@8.9.0", + "engines": { + "node": ">=18" + }, + "dependencies": { + "@tauri-apps/api": "2.0.0-beta.15", + "@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.5", + "@tauri-apps/plugin-dialog": "2.0.0-beta.7", + "@tauri-apps/plugin-fs": "2.0.0-beta.7", + "@tauri-apps/plugin-http": "2.0.0-beta.8", + "@tauri-apps/plugin-os": "2.0.0-beta.7", + "@tauri-apps/plugin-process": "2.0.0-beta.7", + "@tauri-apps/plugin-shell": "2.0.0-beta.8", + "@tauri-apps/plugin-updater": "2.0.0-beta.7", + "@tauri-apps/plugin-upload": "2.0.0-beta.8", + "@tauri-apps/plugin-window-state": "2.0.0-beta.8" + } } diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 3f317702..5814e136 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -606,6 +606,19 @@ dependencies = [ "piper", ] +[[package]] +name = "border" +version = "0.1.0" +source = "git+https://github.com/ahkohd/tauri-toolkit?branch=v2#8aac2f5659b036f9c269444a78e7bf15425b4bd8" +dependencies = [ + "cocoa", + "color", + "objc", + "objc-foundation", + "objc_id", + "tauri", +] + [[package]] name = "brotli" version = "3.5.0" @@ -862,6 +875,15 @@ dependencies = [ "objc", ] +[[package]] +name = "color" +version = "0.1.0" +source = "git+https://github.com/ahkohd/tauri-toolkit?branch=v2#8aac2f5659b036f9c269444a78e7bf15425b4bd8" +dependencies = [ + "cocoa", + "tauri", +] + [[package]] name = "color_quant" version = "1.1.0" @@ -2780,6 +2802,7 @@ dependencies = [ name = "lume" version = "4.0.0" dependencies = [ + "border", "cocoa", "futures", "keyring", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index fd4ea4c8..8815c87d 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -16,11 +16,11 @@ tokio = { version = "1", features = ["full"] } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } tauri = { version = "2.0.0-beta", features = [ - "unstable", - "tray-icon", - "macos-private-api", - "native-tls-vendored", - "protocol-asset", + "unstable", + "tray-icon", + "macos-private-api", + "native-tls-vendored", + "protocol-asset", ] } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-clipboard-manager = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } @@ -34,7 +34,7 @@ tauri-plugin-shell = { git = "https://github.com/tauri-apps/plugins-workspace", tauri-plugin-updater = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-plugin-upload = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } tauri-specta = { git = "https://github.com/reyamir/tauri-specta", branch = "feat/tauri-v2", features = [ - "typescript", + "typescript", ] } tauri-plugin-theme = "0.4.1" tauri-plugin-decorum = { git = "https://github.com/reyamir/tauri-plugin-decorum", branch = "feat/tauri-v2" } @@ -53,6 +53,7 @@ objc = "0.2.7" rand = "0.8.5" monitor = { git = "https://github.com/ahkohd/tauri-toolkit", branch = "v2" } tauri-nspanel = { git = "https://github.com/ahkohd/tauri-nspanel", branch = "v2" } +border = { git = "https://github.com/ahkohd/tauri-toolkit", branch = "v2" } [profile.release] codegen-units = 1 diff --git a/src-tauri/src/commands/window.rs b/src-tauri/src/commands/window.rs index 9d594adb..568b9088 100644 --- a/src-tauri/src/commands/window.rs +++ b/src-tauri/src/commands/window.rs @@ -1,6 +1,8 @@ use std::path::PathBuf; use std::str::FromStr; +#[cfg(target_os = "macos")] +use border::WebviewWindowExt as BorderWebviewWindowExt; #[cfg(target_os = "macos")] use cocoa::{appkit::NSApp, base::nil, foundation::NSString}; use serde::{Deserialize, Serialize}; @@ -180,6 +182,7 @@ pub fn open_window(window: Window, app_handle: tauri::AppHandle) -> Result<(), S .title_bar_style(TitleBarStyle::Overlay) .minimizable(window.minimizable) .maximizable(window.maximizable) + .transparent(true) .effects(WindowEffectsConfig { state: None, effects: vec![Effect::UnderWindowBackground], @@ -226,9 +229,9 @@ pub fn open_window(window: Window, app_handle: tauri::AppHandle) -> Result<(), S // Set decoration window.create_overlay_titlebar().unwrap(); - // Make main window transparent + // Restore native border #[cfg(target_os = "macos")] - window.make_transparent().unwrap(); + window.add_border(None); } Ok(()) @@ -250,9 +253,9 @@ pub fn open_main_window(app: tauri::AppHandle) { .build() .unwrap(); - // Make main window transparent + // Restore native border #[cfg(target_os = "macos")] - window.make_transparent().unwrap(); + window.add_border(None); } } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 0913e4ab..53f90ecd 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -9,6 +9,8 @@ extern crate cocoa; #[macro_use] extern crate objc; +#[cfg(target_os = "macos")] +use border::WebviewWindowExt as BorderWebviewWindowExt; use nostr_sdk::prelude::*; use serde::{Deserialize, Serialize}; use specta::Type; @@ -150,9 +152,9 @@ fn main() { #[cfg(target_os = "windows")] main_window.create_overlay_titlebar().unwrap(); - // Make main window transparent + // Restore native border #[cfg(target_os = "macos")] - main_window.make_transparent().unwrap(); + main_window.add_border(None); // Set a custom inset to the traffic lights #[cfg(target_os = "macos")] diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 695d2201..4e8b1588 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -17,6 +17,7 @@ "minWidth": 480, "minHeight": 760, "hiddenTitle": true, + "transparent": true, "windowEffects": { "state": "followsWindowActiveState", "effects": [