A macOS Dock tweak that re-adds a solid background with a configurable color and square corners.
On macOS Tahoe the Dock's appearance is driven by the SwiftUI Solarium feature flag. With it disabled:
sudo defaults write /Library/Preferences/FeatureFlags/Domain/SwiftUI.plist Solarium -dict Enabled -bool false…the modern Dock floor layer is still laid out but draws no background at all. BrutalDock injects into the Dock process and paints its own opaque (or translucent) background layer behind the icons, clipped to a corner radius of your choice — 0 for fully square corners.
It is built on:
- Ammonia — the runtime dylib injection system (requires SIP disabled).
- ZKSwizzle — declarative Objective-C method swizzling.
Design borrows from apple-sharpener (targeting DockCore.ModernFloorLayer, live reload via notify) and Zephyr (hex-color helper, inserting a custom sublayer at index 0, associated-object storage).
The Dock's floor layer is swizzled with ZKSwizzle:
- Tahoe (Solarium):
DockCore.ModernFloorLayer— Swift mangled name_TtC8DockCore16ModernFloorLayer. - Sequoia and earlier: the plain ObjC
FloorLayer(its native_materialLayeris hidden so our color is authoritative).
In the swizzled layoutSublayers, after calling the original, BDApplyBackground():
- Reads
enabled,backgroundColor, andcornerRadiusfrom the sharedNSUserDefaultssuite. - Lazily creates a
CALayer, stored on the floor layer via an associated object. - Sizes it to the floor's
bounds, sets the color and corner radius, and inserts it at index0(behind the icons).
Only the background layer is clipped — never the floor itself — so magnified or bouncing icons that overflow the pill are not cut off. Disabling the tweak removes the layer and restores the stock look.
The brutaldock CLI writes preferences and posts a Darwin notification (com.tweak.brutaldock.prefs.changed); the injected dylib observes it and re-applies the appearance live, without restarting the Dock.
- macOS Ventura or later (primarily intended for Tahoe with Solarium disabled).
- Ammonia installed.
- SIP disabled (
csrutil disablefrom Recovery). - On Apple Silicon, the arm64e preview ABI enabled:
(reboot afterwards).
sudo nvram boot-args="-arm64e_preview_abi"
make # build universal dylib + CLI
sudo make install # install to /var/ammonia/core/tweaks, install CLI, reload Dockmake install places:
libBrutalDock.dylib→/var/ammonia/core/tweaks/libBrutalDock.dylib.blacklist→ alongside it (keeps the dylib out of critical daemons)brutaldock→/usr/local/bin/
…then restarts the Dock so the tweak loads.
brutaldock on # enable
brutaldock off # disable (restore stock look)
brutaldock toggle
brutaldock color "#1C1C1EE6" # background colour (#RRGGBB or #RRGGBBAA)
brutaldock color "#000000CC" # ~80% opaque black
brutaldock radius 0 # square corners (default)
brutaldock radius 16 # rounded, if you change your mind
brutaldock statusChanges apply live — no Dock restart needed.
| Key | Default | Meaning |
|---|---|---|
enabled |
YES |
Master on/off |
backgroundColor |
#1C1C1EE6 |
Dark, ~90% opaque |
cornerRadius |
0.0 |
Square corners |
sudo make uninstallThis requires disabling SIP and the arm64e ABI restriction. Only proceed if you understand the implications of running with reduced system security, and only install tweaks you have read and trust.
- Ammonia — CoreBedtime
- ZKSwizzle — Alexander Zielenski (vendored under
ZKSwizzle/, MIT) - apple-sharpener — aspauldingcode (MIT)
- Zephyr — MTACS
ZKSwizzle is included verbatim under its original MIT license.
A configurable border and drop shadow around the Dock pill.
brutaldock border on
brutaldock border size 2
brutaldock border color "#000000AA" # #RRGGBB or #RRGGBBAA
brutaldock border shadow off