diff --git a/README.md b/README.md index cf6702f..bc6fbba 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,16 @@ automatically. What it can and cannot hide: -- It hides **other third-party apps' icons** (cmux, Kapture, WireGuard, input - source, Now Playing, …) so only your apps' icons leave the bar. -- It **keeps Wi-Fi, Spotlight, Clock, Battery and Control Center**. The spacer's - boundary is tuned (preferred position 250) to fall just left of Wi-Fi, so the - Apple items on the right stay visible. macOS reserves that far-right area: a - third-party item can never be placed to the right of it, so those icons cannot - be pushed away even in principle. (Bartender and Ice hit the same wall and - cover the area with their own overlay bar instead.) +- It hides **other third-party apps' icons** (cmux, Kapture, moomoo, WireGuard). +- It **keeps Wi-Fi, Now Playing, Spotlight, Clock, Battery and Control Center** + visible, with the **hamburger at the left edge of that group**. The spacer's + boundary (preferred position 300) falls just left of Now Playing. macOS + reserves the far-right area, so an item can never be placed to the right of + the system icons. +- The input-source indicator is the one system icon that ends up hidden (it sits + immediately left of where the hamburger can go). To keep it, set + `defaults write dev.tzgyn.simpletopbar debug.spacerPos -float 350` (and + `debug.hamburgerPos -float 100`), which moves the hamburger one slot right. - Newly launched apps are placed to the left of the spacer, so they are hidden automatically. - Advanced: set `defaults write dev.tzgyn.simpletopbar debug.spacerPos -float ` diff --git a/Sources/SimpleTopBar/App.swift b/Sources/SimpleTopBar/App.swift index bc9bc82..f474b82 100644 --- a/Sources/SimpleTopBar/App.swift +++ b/Sources/SimpleTopBar/App.swift @@ -103,9 +103,13 @@ final class AppDelegate: NSObject, NSApplicationDelegate { let name = "SimpleTopBar" let positionKey = "NSStatusItem Preferred Position \(name)" // Only seed the position on first run so the user's own drag wins and - // persists through the autosave name. - if UserDefaults.standard.object(forKey: positionKey) == nil { - UserDefaults.standard.set(100.0, forKey: positionKey) + // persists through the autosave name. Kept just below the hider's + // preferred position so the hamburger lands at the left edge of the + // visible icons. `debug.hamburgerPos` overrides it. + if let override = UserDefaults.standard.object(forKey: "debug.hamburgerPos") as? Double { + UserDefaults.standard.set(override, forKey: positionKey) + } else if UserDefaults.standard.object(forKey: positionKey) == nil { + UserDefaults.standard.set(290.0, forKey: positionKey) } let item = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) diff --git a/Sources/SimpleTopBar/MenuBarItems.swift b/Sources/SimpleTopBar/MenuBarItems.swift index 29aea57..a5df814 100644 --- a/Sources/SimpleTopBar/MenuBarItems.swift +++ b/Sources/SimpleTopBar/MenuBarItems.swift @@ -313,10 +313,14 @@ final class MenuBarHider: ObservableObject { // The boundary between "hidden" and "kept" falls just left of Wi-Fi at // ~250, so the other apps hide while Apple's Wi-Fi/Clock/Battery/Control // Center/Spotlight stay visible. `debug.spacerPos` overrides the seed. + // The boundary sits just left of Now Playing, so every Control Center + // item stays visible while the apps hide. It must stay *above* the + // hamburger's preferred position (see AppDelegate) for the hamburger to + // remain on the visible side. `debug.spacerPos` overrides the seed. if let override = UserDefaults.standard.object(forKey: "debug.spacerPos") as? Double { UserDefaults.standard.set(override, forKey: key) } else if UserDefaults.standard.object(forKey: key) == nil { - UserDefaults.standard.set(350.0, forKey: key) + UserDefaults.standard.set(300.0, forKey: key) } let item = NSStatusBar.system.statusItem(withLength: 0) item.autosaveName = name diff --git a/build-app.sh b/build-app.sh index b154e76..136e4c7 100755 --- a/build-app.sh +++ b/build-app.sh @@ -2,7 +2,7 @@ set -euo pipefail cd "$(dirname "$0")" -VERSION="${1:-0.4.5}" +VERSION="${1:-0.4.6}" swift build -c release