Ice: The Order Revolution for Your macOS Menu Bar
Ice is a powerful, native macOS menu bar manager built with Swift that brings unprecedented control and customization to your menu bar—hiding clutter, enabling an "Ice Bar" at the bottom of the screen, and offering deep UI personalization. Perfect for minimalists, power users, and designers who crave order and aesthetics.

As a Java veteran who’s spent years deep in the Spring Boot and JVM ecosystem, I recently stumbled upon a macOS tool that genuinely blew my mind—Ice. It’s not a microservices framework or a database middleware. Instead, it’s a menu bar manager. Sounds niche? Maybe. But once you try it, you’ll realize: it’s like giving your macOS menu bar a smart organizer box!
What Problem Does It Actually Solve?
By default, the macOS menu bar (that row of icons at the top of your screen) is a chaotic jumble. As you install more apps, it gets messier—some icons you might not even click once a year. Ice’s core mission is simple yet powerful: make your menu bar clean, controllable, and even fun to customize.
It doesn’t just hide icons—it delivers a full-fledged “menu bar operating system.” You can tuck away rarely used icons and reveal them only on hover, move them to a separate bar at the bottom of the screen (a godsend for MacBook Pros with the notch), and even customize colors, shadows, and corner radius. This isn’t just a utility—it’s a macOS aesthetic overhaul!
Tech Stack & Architecture
Ice is a native macOS app written entirely in Swift, and it requires macOS 14+ (so don’t bother trying to run it on Monterey). From its README, it’s clear the app heavily leverages Apple’s private or semi-private APIs to achieve deep menu bar control—things like dynamically hiding/showing status items, intercepting click events, and custom-drawing the menu bar background.
Although I haven’t seen the source code, based on its capabilities, it likely uses:
- Accessibility API: to detect and manipulate menu bar items
- NSStatusBar / NSStatusItem: for native status bar management
- Core Graphics / Core Animation: to customize appearance (gradients, shadows, rounded corners)
- Event Taps: to monitor global mouse/keyboard events (e.g., hover, clicks on empty space)
This approach is admittedly “risky”—Apple has a habit of deprecating private APIs without warning, which could break tools like this overnight. But the Ice author clearly understands this trade-off and wisely chose to support only the latest macOS 14+, ensuring greater API stability.
Installation & Getting Started: Faster Than Instant Noodles
Ice offers developer-friendly installation options. Beyond manual download, it’s available via Homebrew—a huge win for devs:
sh
brew install --cask jordanbaird-ice
Once launched, the UI is refreshingly minimal: a list of all your menu bar icons on the left, and a live preview on the right. You can drag to reorder, check “Hide” to conceal items, and even set trigger conditions (hover, click, scroll). The whole process is zero-config, zero-code, and you can transform your menu bar in under five minutes.
Advanced Features: It’s More Than Just Hiding
The real magic lies in Ice’s “Ice Bar” feature—displaying hidden icons in a dedicated bar at the bottom of your screen. For MacBook Pro users with the dreaded notch, this is a game-changer. No more obscured icons!
Additional capabilities include:
- Custom menu bar appearance: solid colors, gradients, shadows, borders, rounded corners—even a “split” layout
- Global keyboard shortcuts: toggle visibility or open the search panel instantly
- Auto-rehide: icons disappear again after a few seconds to keep things tidy
While the README doesn’t include Swift code samples (understandable—it’s a GUI app, not a library), its configuration logic is elegantly clear: everything revolves around state management and event response. If you’re familiar with React or Vue’s state-driven philosophy, you’ll recognize the same pattern here—flip a switch, and the UI updates automatically.
Who Is This For?
- macOS minimalists: anyone who can’t stand a cluttered menu bar
- Power users: those drowning in tools like Alfred, Bartender, or iStat Menus
- Designers & developers: folks obsessed with UI aesthetics and system-level customization
Learning curve? Virtually zero. No coding, no config files—just a polished graphical interface. The only requirement: macOS 14+.
My Critiques & Suggestions
As a Java developer, I’ll admit I’m a bit envious of the Swift ecosystem’s native experience. In our world, teams can argue for days over log formats, while here, everything just works in a single .app bundle.
That said, Ice isn’t perfect:
- No support for older macOS versions: reasonable, but excludes some users
- No config export: if you reinstall your OS, you lose all settings (though “Profiles” are on the roadmap—exciting!)
- Beta features can be unstable: e.g., menu bar spacing is still marked BETA
If I were using it, I’d pair Ice with Raycast or Alfred—Ice handles visual cleanliness, while they boost productivity. A perfect combo.
Is It Worth Studying Deeply?
If you’re a macOS developer, absolutely. Ice’s implementation strategy—especially how it safely leverages system APIs for advanced UI control—is worth reverse-engineering. But if you’re a backend engineer? Then it’s probably just a “really useful tool,” and you don’t need to dig into the code.
In summary, Ice isn’t a flashy demo project. It’s a thoughtfully crafted utility that solves a real pain point with exceptional user experience. In an era flooded with AI hype and bloated frameworks, it’s refreshing to see a native app that obsesses over details. Just like tidying your desk—sometimes, a sense of order is productivity itself.
Code Examples
Installation via Homebrew
sh
brew install --cask jordanbaird-ice
Manual Installation
sh
Download the "Ice.zip" file from the latest release and move the unzipped app into your `Applications` folder.
Advanced Configuration (GUI-Based Workflow)
swift
// Ice is a GUI application, so configuration is done through its interface.
// Example workflow:
// 1. Open Ice
// 2. Drag menu bar items to reorder
// 3. Check 'Hide' for items you want to conceal
// 4. Enable 'Ice Bar' to show hidden items in a separate bar
// 5. Customize appearance via the Appearance tab