Skip to content

Repository files navigation

COSMICOLOR

A Windows-like taskbar for macOS.

macOS switches applications. COSMICOLOR switches windows — the way Windows does. It puts a taskbar at the bottom of the screen, always visible, listing every window as its own entry.

COSMICOLOR taskbar and launcher menu

Features

  • Windows-like taskbar. Every window on the desktop gets an entry, grouped by app, with the live window title. Click to focus, click again to minimize.
  • Window groups. Multiple windows of one app collapse into a single item with a popup list; minimize / restore / close all of them at once.
  • Pinning. Pin apps to the front section of the bar and drag to reorder them. Pinned apps stay put even when they are not running.
  • Launcher menu. A Start-menu-style app list with the current user at the top and shut down / restart / log out at the bottom.
  • Context menus. Minimize, maximize, restore, close, move to another display, quit, force quit, hide, pin — on windows, groups, and pinned apps.
  • Multi-display aware. A bar per screen (or just the main one, your choice), and windows that maximize respect the space the bar occupies.
  • Gets out of the way in full screen. The bar hides on displays that are showing a full-screen Space, per display.
  • Localized. English, Korean, Japanese, Simplified Chinese.

Planned: a per-window ⌘Tab switcher to replace the system one.

Requirements

  • macOS 26 (Tahoe) or later — the bar is drawn with NSGlassEffectView.
  • Accessibility permission. Screen Recording is not required; window titles are read through Accessibility rather than CGWindowList.

Recommended: turn on Dock auto-hide

The taskbar and the Dock both want the bottom of the screen. Enabling Dock auto-hide is the setting we recommend — the Dock stays one gesture away, and the taskbar gets the edge:

defaults write com.apple.dock autohide -bool true
killall Dock

(System Settings → Desktop & Dock → Automatically hide and show the Dock does the same thing.)

Do not try to hide the Dock permanently. The Dock cannot actually be removed without disabling SIP, and the popular trick of setting autohide-delay to a huge number only makes it never come back — including for the system UI that assumes it is reachable. If you get stuck, defaults delete com.apple.dock autohide-delay && killall Dock restores it. Auto-hide is the safe setting.

Repository layout

COSMICOLOR/     App target. AppKit entry point + SwiftUI views.
DesktopKit/     Window indexing and manipulation layer (Swift package)
Gesu/           Swift macros for binding private APIs (Swift package)
distutil/       Release script (archive → notarize → DMG)

DesktopKit and Gesu were ported from Noctiluca, a macOS remote desktop product. DesktopKit/README.md documents what changed and why, along with the measurements behind the window-classification rules — read it before touching that logic.

Building

Open COSMICOLOR.xcworkspace in Xcode and build the COSMICOLOR scheme.

The window layer builds and runs on its own, without the app target:

swift build --package-path DesktopKit

# stream the current window list and every subsequent change event
swift run --package-path DesktopKit wmdump

# per-display Space kind (user / system / fullscreen) — no permission needed
swift run --package-path DesktopKit wmdump spaces

wmdump is the tool to reach for when working on indexing; it prints the cost of each incremental rebuild, so you can see immediately whether a change made the index churn.

Binaries produced by swift run are re-signed on every build, so they cannot hold an Accessibility grant of their own — grant it to the parent terminal app and child processes inherit it.

A signed, notarized DMG is produced by distutil/build_dmg.sh (requires the Developer ID certificate and a notarytool keychain profile).

Caveats

  • COSMICOLOR uses private APIs (SkyLight), so it cannot ship on the Mac App Store.
  • The App Sandbox is off and must stay off — Accessibility does not work inside it.
  • Some apps report an empty window list over Accessibility (Excel, for one). Those windows do not make it into the index; showing an app-level entry for them is the current workaround.

License

Apache License 2.0

About

A Windows-like taskbar for macOS.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages