iSpace is a macOS menu bar app that creates lightweight app-based workspaces.
It does not create/delete Mission Control Spaces. Instead, it shows or hides running apps based on the selected workspace.
- Shows a menu bar icon with the current workspace symbol and index.
- Lets you switch between named workspaces from the menu or keyboard shortcuts.
- Lets you assign running apps to a workspace.
- Hides apps assigned to other workspaces and unhides apps assigned to the selected workspace.
- Leaves unassigned apps visible in all workspaces.
- Saves configuration to
~/.config/ispace/config.json.
- macOS 13.0 or later (per app
Info.plist). - Accessibility permission (prompted at launch).
- Apple Events permission may be requested by macOS, depending on fallback visibility control paths.
cd iSpace
swift build -c releaseBinary output:
.build/release/iSpace
Run directly:
.build/release/iSpaceOr package as a simple app bundle:
mkdir -p iSpace.app/Contents/MacOS iSpace.app/Contents/Resources
cp .build/release/iSpace iSpace.app/Contents/MacOS/iSpace
cp Sources/Info.plist iSpace.app/Contents/Info.plist
chmod +x iSpace.app/Contents/MacOS/iSpace
open iSpace.appNote: the existing build.sh script still references the old SpaceCleaner name and is not aligned with the current binary target.
On first launch, iSpace creates a default config with these workspaces:
MainCodeCommunicationBrowseCreativeProductivity
Each workspace has a color, icon, and a default app-name allowlist.
WORKSPACES: select active workspace.Assign Apps: map running apps to a workspace, or unassign them.New Workspace...: create a workspace.Delete Workspace: remove any workspace except the first one.Edit Config File...: openconfig.json.Open Config Folder: open~/.config/ispace/.Reload Config: reload config from disk.Reset to Defaults...: replace in-memory workspaces with defaults and switch to workspace 1.Pause iSpace/Resume iSpace: disable/enable workspace visibility switching.Quit iSpace: unhides hidden apps, then exits.
Ctrl+1...Ctrl+9: switch to workspace index 1-9.Ctrl+Option+Left: previous workspace.Ctrl+Option+Right: next workspace.Ctrl+Option+D: pause/resume iSpace.
Config file location:
~/.config/ispace/config.json
Template file written on first run:
~/.config/ispace/config.template.json
Current schema:
{
"version": 1,
"currentWorkspaceIndex": 0,
"workspaces": [
{
"name": "Main",
"appNames": [],
"color": "blue",
"icon": "house.fill"
}
]
}Supported color values:
blueindigopurplepinkredorangeyellowgreenminttealcyan
icon uses an SF Symbols name.
- Switching workspaces only affects currently running regular apps.
- iSpace itself is never hidden.
- When paused, all hidden apps are unhidden.
- App assignment is by localized app name string.
- An app can only be assigned to one workspace at a time from the UI flow.
- Ensure Accessibility is enabled for iSpace in System Settings > Privacy & Security > Accessibility.
- If prompted, allow automation/Apple Events access for System Events.
- Confirm the app is currently running (assignment menu only lists running regular apps).
- Check for exact app name matching in
config.json. - Use
Reload Configafter manual edits.
Apps stay hidden after testing
- Use
Resume iSpaceorQuit iSpace(quit explicitly unhides apps first).
No license is currently declared in this repository.