Skip to content
dsbeldaPublic

About

A modular macOS menu bar utility.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

MenuDeck

English | Español

A modular macOS menu bar utility. Lives in the top-right corner of the screen and groups system tools as expandable modules with Apple's Liquid Glass design.

Requires macOS 26 (Tahoe) or later.


Features

  • Liquid Glass UI — built with SwiftUI's modern .regularMaterial / glass styling introduced in macOS 26
  • Modular architecture — each tool is a self-contained module, expanded on demand from a tile grid
  • No Dock icon — lives only in the menu bar (LSUIElement)
  • Configurable menu bar icon (app icon, temperature, battery, CPU, or RAM) and default module on open

Modules

Module Description
Volume Per-application volume sliders and mute toggles via CoreAudio HAL
Thermal Live thermal state via SMC
Battery Battery status and health
CPU CPU usage
Screenshot Screenshot capture
Clipboard Clipboard history/manager

Requirements

  • macOS 26 (Tahoe) or later
  • Xcode Command Line Tools (provides swift):
    xcode-select --install

Running it

MenuDeck is a Swift Package Manager project driven by a Makefile. It must run as a signed .app bundle (not the raw binary) — otherwise macOS won't grant or persist TCC permissions like Audio Capture.

Run in development

make run

This builds a debug binary, wraps it into MenuDeck.app, ad-hoc code-signs it, kills any running instance, and reopens it.

Build a release .app bundle

make app

Creates MenuDeck.app in the project folder (release configuration).

Install to /Applications

make install

Copies the release bundle to /Applications/MenuDeck.app. To launch it automatically on login: System Settings → General → Login Items → add MenuDeck.

Clean build artifacts

make clean

Removes .build/ and MenuDeck.app.


Architecture

Sources/MenuDeck/
├── main.swift                       # NSApplication entry point
├── AppDelegate.swift                # Hides from Dock (LSUIElement)
├── MenuBar/
│   └── MenuBarController.swift      # NSStatusItem + NSPopover
├── Views/
│   ├── MenuDeckPopoverView.swift      # Root SwiftUI view (tile grid + settings)
│   └── ModuleSectionView.swift      # Collapsible section per module
└── Modules/
    ├── Module.swift                 # Protocol every module conforms to
    ├── VolumeControl/
    ├── Thermal/
    ├── Battery/
    ├── CPU/
    ├── Screenshot/
    └── Clipboard/

Adding a new module

  1. Create Sources/MenuDeck/Modules/MyModule/
  2. Implement the Module protocol:
final class MyModule: Module {
    let id = "my-module"
    let name = "My Module"
    let sfSymbol = "star.fill"
    let tintColor: Color = .blue

    @MainActor
    func makeContent() -> AnyView {
        AnyView(MyModuleView())
    }
}
  1. Register it in MenuDeckPopoverView.swift:
private let allModules: [any Module] = [
    VolumeControlModule(),
    ThermalModule(),
    BatteryModule(),
    CPUModule(),
    ScreenshotModule(),
    ClipboardModule(),
    MyModule(),
]

License

PolyForm Noncommercial License 1.0.0 — free to use, modify, and share for any noncommercial purpose. Commercial use requires the licensor's permission.

About

A modular macOS menu bar utility.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages