FluidMenuBarExtra

main

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

🖥
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.

Description

  • Swift Tools 5.7.0
View More Packages from this Author

Dependencies

  • None
Last updated: Mon Apr 15 2024 02:07:59 GMT-0900 (Hawaii-Aleutian Daylight Time)