An open-source Liquid Glass taskbar and Cmd-Tab window switcher for macOS.
LiquidBar gives Mac power users the window control they keep missing: a real taskbar, large window thumbnails, Windows Alt-Tab style switching, system indicators, and deep configuration without taking over macOS.
Many macOS taskbar utilities are closed source while asking for Accessibility, Screen Recording, or Input Monitoring permissions. LiquidBar takes the opposite approach: the code is inspectable, the release path is documented, and the permission-sensitive pieces are kept small enough to review, build, and disable.
LiquidBar is for users who want:
- a real taskbar on macOS, including hidden and minimized windows
- a Windows Alt-Tab style switcher with macOS Cmd-Tab muscle memory
- large window thumbnails and click-to-select switching
- a bar that visually belongs on modern macOS instead of fighting it
- configuration that can be edited, tested, and extended
- an open foundation for future plugins such as media controls
LiquidBar turns Cmd-Tab into a window switcher: large thumbnails, MRU back-and-forth behavior, Cmd-Shift-Tab reverse traversal, click-to-select, and aspect-aware cards for wide, square, and portrait windows.
LiquidBar supports labeled windows, icon-only mode, app grouping, pinned apps, custom items, launcher/search entries, and per-display panels. The v1 default is an icon-first 32 px bottom bar with Liquid Glass styling.
Right-click a window to rename it, apply a color, close it, pin it, hide it from the bar, reload config, or open preferences. Window actions stay at the top; app controls stay at the bottom.
CPU, GPU, memory, thermal, Codex, and Claude Code indicators can live inside the bar. Codex and Claude are independent, reorderable app-icon tiles that show the remaining percentage at a glance, reveal quota windows and reset times on hover, and open their app when clicked. Claude connects from Preferences without discarding an existing Claude Code status line. See AI Usage Indicators.
Most v1 behavior can be tuned without editing JSON by hand: bar size, icon size, glass style, hover intensity, visual depth, animations, indicators, multi-monitor behavior, language, previews, permissions, diagnostics, and plugins.
- Native taskbar: bottom, top, left, and right AppKit panels with retained Core Animation rendering rather than a permanent full-surface render loop.
- Window control: focus, hide, minimize, close, cycle, group, and show hidden/minimized windows from the bar.
- Context menus: right-click taskbar items for focused window actions, pinning, hiding, config reload, preferences, and quit.
- Keyboard switcher: Cmd-Tab by default, Cmd-Shift-Tab for reverse traversal, click-to-select thumbnails, all-display scope, and MRU-style back-and-forth switching.
- Large thumbnails: static ScreenCaptureKit thumbnails optimized for quick switcher open time without continuous background capture.
- Liquid Glass appearance: native vibrancy/material backdrops, glass tile treatments, hover states, and focus indicators tuned for modern macOS.
- System indicators: CPU, GPU, RAM, optional temperature, and independent Codex and Claude Code usage-left tiles with compact presentation modes.
- Multi-monitor support: choose all displays, main display only, or per-display window behavior.
- Custom items: pinned apps, files, folders, URLs, spacers, launcher items, and user-defined tab groups.
- Stable pinned apps: global pinned apps are the v1 default. Per-Space pinned apps remain experimental because macOS does not expose a public, fully reliable Spaces API for this use case.
- Plugin groundwork: experimental provider/plugin runtime for future extensibility, including media-control style tiles.
| Action | Default |
|---|---|
| Open switcher / next window | Cmd-Tab |
| Previous window in switcher | Cmd-Shift-Tab |
| Select hovered/clicked switcher item | Mouse click |
| Cycle windows from taskbar | Scroll wheel over the bar |
| Close a taskbar window | Middle-click its taskbar item |
| Open preferences | Menu bar icon or taskbar context menu |
The switcher hotkey is configurable. If you do not want LiquidBar to intercept
Cmd-Tab, change switcher_hotkey or disable switcher_enabled in config.
LiquidBar can run with different feature sets, but the full taskbar/switcher experience uses macOS privacy permissions:
- Accessibility is used for window actions such as focus, hide, minimize, close, and optional window resizing around the bar.
- Screen Recording is used to capture window thumbnails for previews and the switcher. LiquidBar uses static thumbnails, not a constant recording loop.
- Input Monitoring is used only when a global shortcut needs to intercept keystrokes before macOS handles them, especially Cmd-Tab.
- Automation may appear for optional provider/media-control actions that control another app.
Other system-facing features are narrower in scope: update checks read GitHub
release metadata from the canonical gradigit/LiquidBar repository, Launch at
Login uses a user-visible LaunchAgent, and Dock auto-hide changes the standard
macOS Dock preference only when that setting is enabled.
These permissions are powerful. The advantage here is that LiquidBar is open source: you can inspect the code, build the app yourself, verify the release artifact, and turn off features you do not use. That is a materially better trust model than a closed-source taskbar requesting the same system access.
- macOS 26 or newer
- Swift 6.2 or newer for source builds
- Xcode command line tools
Download the latest DMG from
GitHub Releases, open
it, drag LiquidBar.app to Applications, then launch LiquidBar from
Applications.
On first launch, grant only the permissions for the features you use: Accessibility for window control, Screen Recording for thumbnails, and Input Monitoring for the Cmd-Tab switcher. See Permissions And Trust and Release Trust before installing unsigned/ad-hoc builds.
Run from source:
swift build
swift test -c debug
swift run LiquidBarBuild the real release-mode app bundle locally:
LIQUIDBAR_CREATE_DMG=1 LIQUIDBAR_CREATE_ZIP=0 ./scripts/build_release_app.sh
open build/release/LiquidBar.appThe release builder can produce build/release/LiquidBar-1.1.0.dmg. Set
LIQUIDBAR_CODESIGN_IDENTITY=- for the unsigned/ad-hoc public artifact, or pass
a Developer ID identity when notarized distribution is available. Early GitHub
binaries may be published as unsigned/ad-hoc when clearly labeled; macOS
Gatekeeper will warn until Developer ID signing and notarization are added. See
docs/RELEASE.md.
The developer test bundle still exists for local TCC reset/regrant workflows, but it is not a release artifact:
./scripts/build_test_app.sh
open -a "$HOME/Applications/LiquidBar Test.app"Configuration is stored in:
~/Library/Application Support/LiquidBar/config.json
Useful config commands:
swift run LiquidBar -- --print-config-path
swift run LiquidBar -- --print-default-config
swift run LiquidBar -- --write-default-configThe v1 default config enables the icon-first taskbar, right-aligned system indicators, Cmd-Tab switcher, all-display switcher scope, and Liquid Glass styling. Developer performance logging is disabled by default.
Change the app language in Preferences -> General -> System -> Language. Choose System, English, or Korean.
Set LIQUIDBAR_CONFIG_DIR during development or tests to isolate config and
state files:
LIQUIDBAR_CONFIG_DIR="$(mktemp -d)" swift run LiquidBarCONTRIBUTING.md: contribution workflowSECURITY.md: security reporting, permissions, and release trust modeldocs/START_HERE.md: fresh-session onboarding packetdocs/ARCHITECTURE.md: source map and runtime flowdocs/DEVELOPMENT.md: local setup and common development commandsdocs/TESTING.md: SwiftPM, UI, visual regression, and release-oriented test flowsdocs/PERFORMANCE.md: local performance capture and A/B comparison workflowdocs/RELEASE.md: release packaging, signing, notarization, and notesdocs/MAINTAINER_NOTES.md: repository hygiene and documentation policy
Official update metadata and binary releases must come from:
https://github.com/gradigit/LiquidBar/releases
Do not install release assets from similarly named repositories or package mirrors unless they are explicitly linked from this repository. Official artifacts should be traceable to the documented release process. Prefer signed and notarized assets when available; unsigned/ad-hoc assets must be labeled.
LiquidBar v1 is the first public release line. The current feature release is
v1.1.0, adding capacity-aware taskbar overflow, Codex and Claude usage
indicators, and a reversible Claude Code status-line bridge alongside broader
fullscreen, display-change, and window-identity hardening. Initial binaries may
be ad-hoc signed and clearly labeled unsigned/ad-hoc while Developer ID
notarization remains pending. Sidebar mode, provider plugins, per-Space pinning,
and window layout memory remain experimental.
LiquidBar is released under the MIT License. See LICENSE.





