Skip to content

ruittenb/Spaceman

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

683 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spaceman Example

πŸ”Ή About

Spaceman is an application for macOS that allows you to view your Spaces (Virtual Desktops) in the menu bar. Spaceman allows you to see which space you are currently on (or spaces if you are using multiple displays) relative to the other spaces you have. Naming these spaces is also an option in order to organise separate spaces for your workflow.

Also, the menu and menu bar icons enable switching between spaces.

Spaceman requires macOS 13 Ventura or greater.

For switching spaces, Spaceman requires Accessibility and Automation permissions (see below).

πŸ”Ή Installation

Through GitHub

Go to the releases tab and download Spaceman.dmg from the latest release. Double-click the dmg file and drag Spaceman.app to the Applications folder.

Through Homebrew

$ brew install --cask ruittenb/tap/spaceman

Launching Spaceman

When launching Spaceman, you may run into this message. Open the System Settings β†’ Privacy & Security and click "Open Anyway".

πŸ”Ή What It Looks Like

You can choose between Filled or Bordered view:

Icons can be rectangular, rounded, or pill-shaped. Fullscreen spaces automatically use a contrasting shape so they are easy to tell apart.

You can assign colors to each space button:

You can choose variable width icons or mostly-equal width icons:

You can choose to display just numbers instead of the entire names, or even just rectangles:

Icons can have Round and Pill shapes:

The icon font can be changed:

You can use emoji to identify spaces!

For ultra-compact mode, choose the Two Rows layout:

Full Unicode support:

Optional navigation buttons let you switch to the previous/next space or open Mission Control directly from the menu bar:

You can choose to display all spaces or just a few neighboring ones; and to hide Fullscreen spaces entirely.

πŸ”Ή Preferences

Spaceman's preferences are organized into four tabs: General, Appearance, Spaces, and Displays.

General Tab

  • Launch Spaceman at login: Automatically start Spaceman when you log in to macOS
  • Refresh spaces in background: If enabled, Spaceman will update the view when your space configuration changes
  • Shortcut for manual refresh: Defines a shortcut key to tell Spaceman to update the space information
  • Shortcut to open preferences window: Defines a shortcut key to open the preferences window. The preferences window can be closed with ⌘W
  • Enable switching to Fullscreen spaces by chaining keypresses: When enabled, Spaceman can switch to fullscreen spaces by first switching to a neighboring space and then sending shortcuts for Previous/Next space.
  • Open System Settings β†’ Mission Control Shortcuts: Opens the System Settings panel for the Keyboard. Click [Shortcuts] and [Mission Control] to manage them.
  • Backup Preferences: Saves all your preferences to ~/.spaceman/app-defaults.xml (old copies are preserved)
  • Restore Preferences: Loads preferences from that file

Spaceman reads keyboard shortcuts directly from your system settings β€” no manual configuration needed.

Appearance Tab

  • Icon size: Adjusts the size of the space icons in the menu bar
  • Icon width: Switches between:
    • roughly equal icon widths (short names are padded to match the longest, but fullscreen names are disregarded), or
    • variable widths (each icon sized to its own content)
  • Icon text: Selects whether to show space numbers and/or names in the icons
    • Font: Choose from four main font styles
  • Active style / Inactive style: Choose the shape and fill for active and inactive space icons
  • Rows: Choose single row, or two rows filled by rows or by columns:

  • Spaces shown: Selects which spaces are shown in the menu bar: all, a few, or just the current one
  • Nearby range: With "Nearby spaces", this determines how many spaces will be shown
  • Show fullscreen spaces: Shows or hides fullscreen app spaces from the menu bar
  • Show Mission Control button: Adds a button to open Mission Control to the menu bar
  • Show navigation arrows: Adds buttons to the menu bar for switching to previous/next space

Spaces Tab

  • Space names: Assigns custom names of any length to individual spaces
    • The menu displays full names regardless of length
    • Menu bar icons truncate names to 10 characters for compactness
    • Optionally, for each Space icon, a color can be selected.

Displays Tab

  • Restart space numbering by display: For each display, Space numbering starts at 1, instead of using continuous numbering
  • When displays are side by side: Use macOS display order or reverse it
  • When displays are stacked: macOS standard is to sort displays by the X coordinate of their center. This option enables sorting by Y coordinate
  • Open System Settings β†’ Displays: Opens the System Settings panel for Displays. Click [Arrange] to adjust the arrangement of the displays

πŸ”Ή Switching Spaces

Spaceman provides multiple ways to switch between spaces quickly and efficiently.

Setup Requirements

For space switching to work, you need to configure two things:

1. Accessibility and Automation Permissions

  • Go to System Settings β†’ Privacy & Security β†’ Accessibility
  • Add Spaceman to the list of allowed applications.†
  • Enable the checkbox next to Spaceman

  • Go to System Settings β†’ Privacy & Security β†’ Automation
  • Add Spaceman to the list of allowed applications.†
  • Enable the checkbox next to Spaceman

† If you are updating from a previous version, you may need to remove and re-add Spaceman to grant permissions to the new version.

2. Mission Control Shortcuts

  • Go to System Settings β†’ Keyboard β†’ Keyboard Shortcuts β†’ Mission Control
  • Assign and enable shortcuts for the following, if you want to use them:
    • "Switch to Desktop" for any spaces you want to be able to switch to
    • "Move left/right a space" for navigation buttons
    • "Mission Control" if you want to use a menu bar button to open Mission Control

Usage Methods

Navigation Buttons

  • Optionally show arrow buttons and a Mission Control button in the menu bar
  • Arrow buttons switch to the previous or next space
  • The Mission Control button opens Mission Control
  • Enable these in Preferences β†’ Appearance or via the right-click menu β†’ Buttons Shown

Menu Bar Clicking

  • Click directly on any space icon in the menu bar to switch to that space
  • Current space is highlighted and cannot be clicked
  • Clicking an unavailable space flashes the menu bar

Menu Selection

  • Right-click the Spaceman icon to open the context menu
  • Select any space from the list to switch to it
  • Menu shows full space names and indicates the current space with a checkmark

Some appearance settings are also available directly from this menu.

Resizing the Icon

  • Hold βŒ₯ Option and scroll on the menu bar icon to quickly change the icon size

Keyboard Shortcuts

  • Spaceman reads keyboard shortcuts directly from macOS Mission Control settings and sends the corresponding keystrokes.
  • Desktops 1–16 are supported (matching the macOS Mission Control shortcut limit).
  • Mission Control doesn't have keyboard shortcuts for fullscreen spaces. With "Enable switching to Fullscreen spaces by chaining keypresses" turned on, Spaceman can reach them by chaining arrow keypresses.

Limitations

  • Space switching will fail without proper Accessibility permissions

πŸ”Ή Remote Control

Spaceman supports AppleScript commands for remote control:

$ osascript -e 'tell application "Spaceman" to refresh' # Refresh the Spaces Icon
$ osascript -e 'tell application "Spaceman" to open preferences' # Open Preferences Window
$ osascript -e 'tell application "Spaceman" to restore preferences' # Restore Preferences from Backup

It also exposes read-only properties for querying the current space:

$ osascript -e 'tell application "Spaceman" to get current space number' # e.g. 3
$ osascript -e 'tell application "Spaceman" to get current space name'   # e.g. "Mail"

With multiple displays, these return the current space on the frontmost display.

These commands and properties can be used in automation tools like Alfred, Keyboard Maestro, or custom scripts. For details on how to maximize usefulness of 'refresh', see MikeJL's Comments

πŸ”Ή Troubleshooting

  • If Spaceman does not start, or does not run correctly, after an upgrade: you may need to delete the application defaults:
$ defaults delete dev.ruittenb.Spaceman
  • If Spaceman assigns the desktop names wrong: Spaceman is not compatible with the setting System Settings β†’ Desktop & Dock β†’ Mission Control β†’ Automatically rearrange Spaces based on most recent use. You should turn this setting off.

πŸ”Ή Attributions

πŸ”Ή Mentions

πŸ”Ή Similar projects

About

A macOS app for viewing and switching Spaces (Virtual Desktops) from the menu bar

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Swift 86.7%
  • HTML 7.5%
  • Makefile 2.0%
  • CSS 1.7%
  • Shell 1.0%
  • Python 0.9%
  • Objective-C 0.2%