From 4bc6b333dc473d6fd6878cbec26a1eff1bf0672f Mon Sep 17 00:00:00 2001 From: TZGyn Date: Sun, 27 Sep 2026 10:40:27 +0800 Subject: [PATCH] Put the hamburger at the left of the visible icons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hamburger was landing among the system icons. Move it to the left edge of the visible group so it reads as the entry point rather than one more status item. 💘 Generated with Crush Assisted-by: Crush:deepseek-v4.1-flash --- README.md | 18 ++++++++++-------- Sources/SimpleTopBar/App.swift | 10 +++++++--- Sources/SimpleTopBar/MenuBarItems.swift | 6 +++++- build-app.sh | 2 +- 4 files changed, 23 insertions(+), 13 deletions(-) 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