A Swift application that interfaces with Yabai to display interactive stack indicators for stacked windows on macOS.
- macOS 13.0 or later
- Yabai installed and running
- Download the DMG from the releases
- Mount the DMG by double clicking
- Drag the app from the DMG to the Applications folder
- Run the application
The application is signed, notarized and stapled, so you should be able to just run from there!
Note: I recently swapped from using plain old swift to xcode to build a signed app bundle
- XCode 26+ (for the app icon)
- It will compile with a lower version, but your mileage may vary
-
Clone the repository:
git clone https://github.com/liam-mackie/stackline-swift.git cd stackline-swift -
Build the application:
xcodebuild -scheme Stackline -configuration Release -derivedDataPath build
-
The built app will be located at:
build/Build/Products/Release/Stackline.app
-
Copy it to your applications folder:
cp -r build/Build/Products/Release/Stackline.app /Applications
Stackline automatically sets up Yabai signals for you! When you start Stackline, it will:
- Remove any old Stackline signals (identified by
mackie-sh-stackline) - Add new signals with the correct path to your current Stackline binary
- Periodically check that signals are properly configured
Manual Signal Setup: You can also manually trigger signal setup from the Stackline interface by clicking the "Setup Yabai Signals" button in the Status tab.
Signal Cleanup: Stackline automatically removes its signals when terminating normally with a 20-second timeout. For manual cleanup (e.g., after an unclean shutdown), you can run:
/Applications/Stackline.app/Contents/MacOS/Stackline --cleanupTo start Stackline automatically, ensure stackline is installed to your applications folder, then run it. In the behaviour section of configuration, tick "Launch at startup"
You can click on a stacked application's icon, pill or dot to swap to the application.
Stackline supports several command-line options:
# Start the application
/Applications/Stackline.app/Contents/MacOS/Stackline
# Handle a signal from Yabai (used internally by automatic signal setup)
/Applications/Stackline.app/Contents/MacOS/Stackline handle-signal window_created
# Show version information
/Applications/Stackline.app/Contents/MacOS/Stackline --version
# Show help
/Applications/Stackline.app/Contents/MacOS/Stackline --help
# Test signal system
/Applications/Stackline.app/Contents/MacOS/Stackline --test-client
# Clean up yabai signals
/Applications/Stackline.app/Contents/MacOS/Stackline --cleanupContributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable (I haven't)
- Submit a pull request
- macOS: 13.0+ (Ventura or later) - tested on
15.5 (24F74). - Yabai: Any recent version - tested with
yabai-v7.1.15 - Architecture: Intel x86_64 or Apple Silicon (universal binary support)