gittech. site

for different kinds of informations and explorations.

FlashSpace – fast, open-source, macOS Spaces replacement

Published at
3 days ago

GitHub Release Homebrew Cask Version min macOS CI Status Supported Xcode

⚑ FlashSpace

FlashSpace is a blazingly-fast virtual workspace manager for macOS, designed to enhance and replace native macOS Spaces. No more waiting for macOS animations.

FlashSpace

βš™οΈ Installation

Requirements: macOS 14.0 or later.

Homebrew

brew install flashspace

Download Binary

See: Releases Page.

Build From Source

See: Build From Source.

πŸŽ₯ Demo

The video shows a sample configuration where I use 3 workspaces and switch between them using hotkeys.

https://github.com/user-attachments/assets/03498386-7c3d-4d9e-8fbd-cd49dea36661

πŸ’¬ How to use

  1. Move all your apps to a single macOS space. You can keep separate spaces on each display.
  2. Create a workspace.
  3. Assign apps to it.
  4. Assign a display to the workspace.
  5. Set a hotkey for quick workspace activation.
  6. Follow the same steps for other workspaces.
  7. Switch between configured workspaces using hotkeys.

The Same App In Multiple Workspaces

If you want to keep the same app in multiple workspaces, you can use the "Floating Apps" feature from the app settings or you can add the app to multiple workspaces from the main app window.

πŸ‘‰ How it works

FlashSpace allows to define virtual workspaces and assign apps to them. Each workspace is also assigned to a specific display. When you switch to a workspace, the assigned apps are automatically presented and all other apps from the assigned display are hidden.

The app allows workspaces to be switched independently on each display.

✨ Features

  • Blazingly fast workspace switching
  • Multiple displays support
  • Activate workspace on app focus
  • Move apps between workspaces with a hotkey
  • Floating apps visible across all workspaces
  • Space Control - preview all workspaces and switch between them
  • Focus manager - set hotkeys to switch between apps quickly
  • Cursor manager - auto-center the cursor in the active window
  • Profiles - quickly switch between different configurations
  • Picture-in-Picture support (see: Design Decisions)
  • Configurable Menu Bar icon & text (per workspace)
  • SketchyBar integration

βš–οΈ Project Values

  • Performance - The app should be as fast as possible.
  • Simplicity - The app should be easy to use and configure.
  • Reliability - The app should work without glitches and unexpected behavior.
  • Invisible - The app should help, not disturb.
  • UNIX Philosophy - The app should do one thing and do it well - manage workspaces.

πŸ”­ Space Control

Space Control allows you to preview all workspaces on a grid and switch between them.

FlashSpace - Space Control

πŸͺŸ Focus Manager

FlashSpace enables fast switching of focus between windows. Use hotkeys to shift focus in any desired direction. It also allows you to jump between displays.

https://github.com/user-attachments/assets/9bc22b19-7cd7-48f8-a679-0adf4adc3aef

πŸ“ Design Decisions

Non-disruptive Behavior

FlashSpace doesn't actively manage windows, so if you switch to a workspace and call another app that is not assigned to the workspace, it will be shown on top of the workspace apps.

It is considered to be a desired behavior as it allows quickly accessing other apps without glitches or switching between workspaces.

Glitches are common in tiling window managers, often caused by not configured pop-ups or dialog windows. FlashSpace prevents these issues by not managing windows & apps that are unassigned allowing you to interact with the system in a non-disruptive way.

No Support For Individual App Windows Per Workspace

FlashSpace doesn't support the concept of individual app windows per workspace. This is a conscious decision to keep the app simple and fast.

This way, FlashSpace can rely on native show & hide functionality ensuring the most efficient way of managing and switching between workspaces. Additionally, this hack-free approach is battery-friendly and doesn't break other features in the system like Mission Control.

Adding support for individual app windows per workspace would require a lot of complexity and would downgrade the performance of the app. However, it is planned to further investigate a possibility of adding this feature in the future.

Picture-In-Picture Support

FlashSpace partially supports Picture-In-Picture mode. This is an experimental feature and can be enabled in the App Settings -> Workspaces.

macOS does not offer a public API to hide a specific window, and hiding the app also hides the PiP window. To work around this issue, FlashSpace identifies if the app supports PiP and minimizes all windows except the PiP window.

This approach is not perfect because there is a visible minimization and restoration animation. However, it allows you to keep the PiP window visible when switching between workspaces. If the PiP window is not visible, the standard behavior is applied and no minimization is performed.

Supported browsers: Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Opera.

πŸ–₯️ SketchyBar Integration

FlashSpace can be integrated with SketchyBar and other tools. The app runs a configurable script when the workspace is changed.

You can enable the integration in the app settings.

Configuration Example

Only Active Workspace

sketchybarrc
sketchybar --add item flashspace left \
  --set flashspace \
  background.color=0x22ffffff \
  background.corner_radius=5 \
  label.padding_left=5 \
  label.padding_right=5 \
  script="$CONFIG_DIR/plugins/flashspace.sh" \
  --add event flashspace_workspace_change \
  --subscribe flashspace flashspace_workspace_change
plugins/flashspace.sh
#!/bin/bash

sketchybar --set $NAME label="$WORKSPACE - $DISPLAY"

All Workspaces

sketchybarrc
sketchybar --add event flashspace_workspace_change

SID=1
SELECTED_PROFILE_ID=$(jq -r ".selectedProfileId" ~/.config/flashspace/profiles.json)
WORKSPACES=$(jq -r --arg id "$SELECTED_PROFILE_ID" 'first(.profiles[] | select(.id == $id)) | .workspaces[].name' ~/.config/flashspace/profiles.json)

for workspace in $WORKSPACES; do
  sketchybar --add item flashspace.$SID left \
    --subscribe flashspace.$SID flashspace_workspace_change \
    --set flashspace.$SID \
    background.color=0x22ffffff \
    background.corner_radius=5 \
    background.padding_left=5 \
    label.padding_left=5 \
    label.padding_right=5 \
    label="$workspace" \
    script="$CONFIG_DIR/plugins/flashspace.sh $workspace"

  SID=$((SID + 1))
done
plugins/flashspace.sh
#!/bin/bash

if [ "$1" = "$WORKSPACE" ]; then
  sketchybar --set $NAME label.color=0xffff0000
else
  sketchybar --set $NAME label.color=0xffffffff
fi

πŸ› οΈ Build From Source

FlashSpace uses XcodeGen to generate the Xcode project from the project.yml file.

  1. Clone the repository.
  2. Navigate to the project directory.
  3. Run brew bundle to install dependencies.
  4. Run xcodegen generate.
  5. Open FlashSpace.xcodeproj in Xcode.
  6. Click on the FlashSpace target, click on the Signing & Capabilities tab, and select your team.
  7. Build & run the app.

Remember to run xcodegen generate every time you change branch or pull changes.

If you want to generate the project with configured signing, you can run:

XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate

You can also set this variable globally in your shell.

πŸ’›Β Β Sponsors

Big thanks to all the sponsors who support this project 🍻!

Monthly Sponsors

@bjrmatos @notlus

One Time Sponsors

@danscheer

 

Earn $100 Fast: AI + Notion Templates

Earn $100 Fast: AI + Notion Templates

Get the guide here

Do you want to make extra money quickly? This guide shows you how to create and sell Notion templates step by step. Perfect for beginners or anyone looking for an easy way to start earning online.

Why Download This Guide?

  • Start Making Money Fast: Follow a simple process to create templates people want and will buy.
  • Save Time with AI: Learn to use tools like ChatGPT to design and improve templates.
  • Join a Growing Market: More people are using Notion every day, and they need templates to save time and stay organized.

Includes Helpful Tools:

  • ChatGPT Prompts PDF: Ready-made prompts to spark ideas and create templates faster.
  • Checklist PDF: Stay on track as you work.

What’s Inside?

  • Clear Steps to Follow: Learn everything from idea to sale.
  • How to Find Popular Ideas: Research trends and needs.
  • Using AI to Create: Tips for improving templates with AI tools.
  • Making Templates User-Friendly: Simple tips for better design.
  • Selling Your Templates: Advice on sharing and selling on platforms like Gumroad or Etsy.
  • Fixing Common Problems: Solutions for issues like low sales or tricky designs.

Who Is This For?

  • Anyone who wants to make extra money online.
  • People who love using Notion and want to share their ideas.
  • Creators looking for a simple way to start selling digital products.

Get your copy now and start making money today!


πŸ’° Want to Earn 40% Commission?

Join our affiliate program and start making money by promoting well crafter prodicts! Earn 40% on every sale you refer.

πŸ”— Sign up as an affiliate here: Become an Affiliate