Imperator Apps
← Home / Imperator DockFolders

Imperator DockFolders

Group the apps you use into a folder, put it on the left side of the Dock, and click it for a grid you arranged yourself.

LiveMIT Licensev1.0.0Updated 2026-08-02

README.md

// Overview

Group the apps you actually use into a folder, put that folder in the Dock, and click it for a grid of those apps. Not a Finder stack of aliases — a real popup you lay out yourself, with your own order, labels and grid size, paged if you want more than fits.

macOS already lets you drag a folder to the right side of the Dock and get a stack. DockFolders puts your folders on the left side among the real apps, gives each one a generated icon showing what is inside, and opens a keyboard-dismissable popup anchored to the Dock tile.

// Requirements

macOS 14 or later on Apple silicon. Built and tested on macOS 26 only; older versions are expected to work but have not been verified.

The app is not notarized and carries no Apple Developer signature, so macOS cannot vouch for it. Install at your own risk — provided as is, no warranty, under the MIT license.

// Install

Download the zip from the releases page, unpack it, and drag Imperator DockFolders.app into /Applications. It has to live there: the launcher bundles start the app by bundle identifier, and Launch Services resolves that most reliably from /Applications.

Gatekeeper blocks the first launch. Right-click and choose Open, or clear the quarantine flag:

xattr -dr com.apple.quarantine "/Applications/Imperator DockFolders.app"

// Permissions

One, and the app degrades gracefully without it.

Accessibility is used to read the screen position of your folder's icon in the Dock, so the popup can be anchored to it with the arrow pointing at the right tile. That is all it does with the grant: it does not read other apps' windows, observe keystrokes, or control other applications. Deny it and everything still works — the popup falls back to the mouse position captured at click time, which for a Dock click is within a few pixels of the tile anyway.

macOS keys the grant to the app's code signature, so the app ships signed with a stable self-signed certificate specifically to survive updates.

Nothing else is asked for. No Full Disk Access: the Dock configuration goes through CFPreferences and defaults, which are the supported APIs for the com.apple.dock domain, rather than reading the plist directly. No Files and Folders: only the application directories are scanned, and none of them are TCC-protected. No Input Monitoring, no Automation, no Screen Recording, and no network at all — no telemetry, no update check, no analytics.

It is not sandboxed, which is why it cannot ship on the App Store. Writing to the Dock's preference domain and creating launcher bundles outside a container are both impossible inside the sandbox.

// Where it writes

Everything the app owns lives in ~/Library/Application Support/DockFolders/ — folders, symlinks, per-folder layout config, and generated launcher bundles. Deleting that directory resets the app completely.

Outside it, two places. The com.apple.dock preferences, where it adds and removes its own launcher bundles from persistent-apps and touches nothing else. And /tmp/dockfolders_open, a one-line handoff file: a launcher writes the folder name and mouse position, posts a Darwin notification, and the app reads the file and deletes it immediately.

// Use

The menu bar icon opens the folder list, and can be turned off if you would rather use the main window. Create a folder there, then add apps from everything installed. Double-click a folder name or an app label to rename it — custom labels are yours and the underlying app is untouched. Drag to reorder, and the folder icon regenerates to match. Grid controls set columns and items per page; more apps than fit means pages, and a trackpad swipe moves through them.

Add to Dock builds a launcher bundle with the generated icon and drops it in. Escape or a click outside closes the popup.

Apps are added as symlinks, not copies and not Finder aliases. Nothing is duplicated on disk and nothing is moved.

// Build

Requires Xcode — a Command Line Tools setup cannot build this.

DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -project DockFolders/DockFolders.xcodeproj -scheme DockFolders -configuration Release build

Two build phases matter. Build mousepos Helper compiles MouseLocation/main.swift into the bundle; the launcher scripts run that tiny binary to capture the mouse position at click time. It is compiled at build time on purpose, because compiling it on the user's Mac would need swiftc, which is an xcode-select shim that pops the Command Line Tools installer on a machine without Xcode.

Code Sign signs with the self-signed Imperator Dev identity, which is what makes the Accessibility grant survive an update. Building without it in your keychain works, but every new build asks for Accessibility again.

// Third-party

None. SwiftUI and AppKit only, no package dependencies, no vendored code.