Skip to content

🖥️ A lightweight tool for building great menu bar extras with SwiftUI.

License

Notifications You must be signed in to change notification settings

wadetregaskis/FluidMenuBarExtra

 
 

Repository files navigation

🖥
FluidMenuBarExtra

A lightweight tool for building great menu bar extras with SwiftUI.

GitHub code size in bytes GitHub contributors Swift version compatibility

Menu Sample

About

SwiftUI's built-in MenuBarExtra API makes it easy to create menu bar applications in pure SwiftUI. However, as of macOS 13 its functionality is extremely limited. Worse, it doesn't behave correctly (e.g. it doesn't animate, it doesn't close the pop-up when the user interacts with other menu items, etc).

FluidMenuBarExtra provides a drop-in replacement to correct these issues.

Key Features

  • Animated resizing when SwiftUI content changes.
  • Ability to access the scene phase of the menu using the scenePhase environment key.
  • Persisted highlighting of the menu bar button.
  • Smooth fade out animation when the menu is dismissed.
  • Automatic repositioning if the menu would otherwise surpass the screen edge.

Usage

Use FluidMenuBarExtra like you would Apple's MenuBarExtra, e.g.:

import SwiftUI
import FluidMenuBarExtra

@main
private struct DemoApp: App {
    @AppStorage("showMenuBarExtra") var showMenuBarExtra = true

    var body: some Scene {
        FluidMenuBarExtra("Demo", systemImage: "chevron.down.circle", isInserted: $showMenuBarExtra) {
            Text("Hello, world!")
                .padding(20)
        }
    }
}

See also the included demo application for a more elaborate example.

Caveats

  • Since FluidMenuBarExtra uses an NSWindow, not an NSMenu, you'll find that the window presented by FluidMenuBarExtra has a slighter wider corner radius than other menus.

Contributions

All contributions are welcome. If you have a need for this kind of package, feel free to resolve any issues and add any features that may be useful.

License

FluidMenuBarExtra is released under the MIT License unless otherwise noted.

About

🖥️ A lightweight tool for building great menu bar extras with SwiftUI.

Resources

License

Stars

Watchers

Forks

Languages

  • Swift 100.0%