Skip to content(if available)orjump to list(if available)

Show HN: FlashSpace – fast, open-source, macOS Spaces replacement

Show HN: FlashSpace – fast, open-source, macOS Spaces replacement

119 comments

·February 8, 2025

I've recently launched a new open-source project aimed at enhancing the experience of switching between Spaces/workspaces on macOS. The built-in Spaces feature is often slow and unfriendly. This project is designed to boost your productivity :). Enjoy!

jameschensmith

This looks great! I currently use Aerospace, but your usage of macOS spaces has me curious.

1. Does FlashSpace require disabling SIP?

2. Aerospace documents the limitations of macOS spaces [1]. How does FlashSpace deal with these limitations?

3. Do you have any plans to support file-based configuration? I like syncing my dotfiles between multiple computers.

[1]: https://nikitabobko.github.io/AeroSpace/guide#emulation-of-v...

wojciech-kulik

1. No

2. Aerospace has significant performance issues with workspaces. The problem has persisted for over a year, and there are no plans to fix it. That's why I started building FlashSpace - to make it blazingly fast. Which limitation is especially interesting to you? FlashSpace addresses the animation lag, the number of workspaces is unlimited, and you can move apps between workspaces with hot keys.

3. FlashSpace already supports JSON config files which are stored by default in ~/.config/flashspace, so you can easily sync them.

jameschensmith

Thanks for your response! Regarding question 2, I think my initial understanding of FlashSpace was that it was using the macOS spaces API, which has been known to have its limitations (as documented in the Aerospace docs I shared). Now that I've played around with FlashSpace, I believe it's not using that API. So I think I'm clear on the questions.

I really like how FlashSpace plays well with macOS native tabs. One follow-up question I had is how you manage your windows? FlashSpace not managing windows on one hand is really nice for floating windows (e.g., mpv), but in your examples you have all the windows already set up with some gaps around each. Is all that set-up done by dragging windows around with your mouse? I use an accordion layout heavily, and I don't see how I can make it work with FlashSpace.

wojciech-kulik

In the video, I think they were manually dragged. But I also use Rectangle Pro for moving windows around with simple shortcuts (many apps have this feature, another one is Raycast). I don't use tiling managers though. Most of the time they cause too many problems and glitches.

matanrubin

The biggest pain point with macOS spaces is how it handles multiple windows of the same app. It drives me crazy. What is FlashSpace’s approach for solving this?

wojciech-kulik

Could you explain what you mean? The app only allows assigning the whole app to a specific workspace. So you can't have one window of the same app in workspace A and another in workspace B. It's done this way because it's the most efficient way so far, but of course I understand that sometimes people may want to have multiple windows in different workspaces. I'm going to investigate a possibility to manage apps on a window-level basis. But macOS is the limitation here, if it's slow then my hands are tied.

atombender

Not OP, but the way I use macOS Spaces is to differentiate between work and private. I use Chrome for both, so I have some Chrome windows in my work space, and some in my private space. I do similar things for other apps like iTerm. It's an important feature. I once tried having two different browsers for work/private, but it was a chore to manage which browser I opened links in, so I gave up.

My biggest problem with Spaces is that it never remembers which space anything is in. When I reboot, everything is in the wrong space and has to be moved around.

brainbag

I've been using Choosy.app for easily managing different browsers for work and personal (and testing), and it works great. You set it to your default browser, and then anytime something opens a browser it pops up a picker. Lots of global and per-site configuration options like browser profile selection, private windows, etc.

SebastianKra

Right click the app icon > options > Assign To > This Desktop

Also noteworthy: assign to all desktops. I use this to keep my browser and messaging apps in all spaces.

toisanji

same reason I would like this feature

dchuk

Being able to have windows of the same app assigned to different spaces would be the big unlock for me to able to use your app. Not only do I do things like separate work and personal Chrome profiles (with a window open for each), frequently I'll have a Chrome window open for a specific project with tabs just for that project, so I can switch fully into that context when I want to work on something. I also frequently have sensitive tabs open that I group into a window so I don't risk oversharing something when on a Zoom call for example as I flip through my tabs.

throwaway314155

Just echoing the others here. I get it in principle, but in practice I treat 2-3 separate windows of Firefox as their own "app".

cjonas

Or vscode. If I was going to use this, I'd ideally want a space per client.

schlumpf

Another example: I use Screen Sharing to manage multiple Macs on my network. Each host gets a Screen Sharing window, and I maximize each window (whose virtual resolutions are forced to my physical monitor size) and then toggle between them and other workspaces using Spaces. I need the screen real estate so I would never have multiple host windows in the same workspace.

gregoriol

Nice work, but I won't use it: the transitions between spaces actually allow me to change focus in my mind; with a direct switch, without any visual indication, it will take a few moments to scan the screen, realise the change and adapt in my mind

Also, assigned apps are not how I work: I don't assign a task per space, I assign a project per space, so within many spaces I'll have browser, editor, notes, ... a window of each in each space.

rpdillon

>it will take a few moments to scan the screen, realise the change and adapt in my mind

I'm consistently astonished at how visual so many people are in their usage of a computer. The array of icons I see folks scanning on their phones to pick and app is like that, but so are Apple's window managers. That's fine, but they don't offer any alternative.

I maintain a list of spaces in my mind and have them assigned to numbers. I think this comes from using tmux and screen for so long. I just want my display to instantly teleport me to that space. The idea that they are layed out on a table and have to slide out of view is a weird skeumorphic thing that I wish they would at least allow folks to disable, since it eats keyboard input during the animation.

If any other company had done this, people would deride them for the thoughtless design.

gregoriol

I do agree that alternatives and options for power users must be available, everyone should be able to tweek things until they are satisfied as everyone is different

parentheses

I believe you can turn off all the movement animations and configure the switching time to be near instant using `defaults`

rpdillon

Sadly, after many hours troubleshooting this, the answer is that you cannot. Even with reduced motion and turning off as much animation as possible, there is a 1,000 millisecond input delay in switching workspaces on Mac. That is a fundamental limitation of the core operating system APIs.

cyberax

Super nice! I wish you could add a grid view of the workspaces. I miss TotalSpaces...

CharlesW

I wonder if SpaceCapsule (https://spacecapsule.app/) could work with FlashSpace?

wojciech-kulik

Probably not, because as far as I can see, it relies on macOS spaces. FlashSpace doesn't use native spaces.

CharlesW

Sorry, yes, "could" is doing wayyy too much lifting there. I was thinking you could potentially work together on an integration (and/or leverage the existing integration you mention in the README) that would provide the experience @cyberax is looking for.

In any case, I'm very excited to try FlashSpace after reluctantly giving up on Spaces! And thank you for linking to SketchyBar as well — it's always great to learn about new, well-regarded power-user utilities.

wojciech-kulik

I've just added a grid view of the workspaces :)

user3939382

What’s wrong with TotalSpaces?

cyberax

The author disappeared, and the last available version barely works on the modern macOS.

chrisvalleybay

Doesn't work properly with newer versions of MacOS and requires you to disable SIP.

atombender

I've started trying out this app, and I'm really confused by why it hides applications that are not in the space list.

For example, let's say I have defined a "Work" space and assigned iTerm and IntelliJ to it. I open an application like Finder. I hit the keyboard shortcut for "Work". This causes Finder to hide.

In other words, it just hides stuff that isn't explicitly assigned to a space or set to be "floating". This will mean that a lot of micromanaging of application lists is required to avoid constantly hiding stuff.

Surely applications not explicitly listed could just be preserved as they are?

marliechiller

Interesting - does this also manage my app window placement like a tiling window manager? I personally hate having to organise windows rather than just have them fill half my screen without thinking

bradyriddle

This is SO close to being perfect for what I'm looking for. I just need better support for handling multiple windows of the same app in a workspace.

Is there a way to create a workspace manually in the desktop and save it? That would get me most of the way there

rane

Is this compatible with Amethyst? I want tiling windows but without the delay in switching spaces.

wojciech-kulik

Just try it out :D. There is almost no setup required. Basically, the app only shows and hides apps, so it depends on how well Amethyst handles it.

FlashSpace is not interruptive - it doesn't actively try restoring your workspace, so there shouldn't be any "fight" between a tiling manager and FlashSpace.

shaarmar

Good timing, I was exploring my options again in this space and settled on aerospace. Will give this a try

semi-extrinsic

Any insight on the pros/cons versus yabai?

Secretmapper

Not needing to disable SIP is a big one.

yisonPylkita

Thank you! I've just installed it and so far it works great

wojciech-kulik

Thank you for the feedback!

boronine

I have been using AeroSpace for this purpose for over a year. I simply disable all the tiling features in the config and only use two shortcuts: switch to workspace and move current window to workspace. It's absolutely essential when working on a small screen.

AeroSpace does indeed suffer from a performance issue but this appears to be inherent to the available macOS APIs: https://github.com/nikitabobko/AeroSpace/issues/131

The way you reproduce it is open Factorio.app and quickly switch between workspaces while the game is loading.

FlashSpace seems to suffer from this problem as well based on a quick test.

With regards to configuration, I think it's cumbersome to configure shortcuts per workspace. In AeroSpace, every letter and number on the keyboard is automatically a workspace and shortcuts are global.

All that said, this is a fantastic tool and I would prefer a tool like this that addresses the pain of macOS workspaces as its primary goal rather than being part of a tiling window manager.

EDIT: After more testing it appears that FlashSpace does not support having different windows of the same app on different workspaces, this is a dealbreaker for my workflow :(

snippety

Regarding the performance, the app uses native api to show/hide so I don’t think it is possible to make it faster than it is now. If it lags it’s probably not the app lagging but the system because of the heavy work going on.

Btw. I had the same adventure with Aerospace, I disabled whole tiling just to have workspaces, but they become unusable because anything going on on the computer could cause lag like 5 seconds between switching workspaces. And as a developer I often build apps and switch between workapaces.

foofoobar

How do you disable the AeroSpace tiling, are you just using the floating layout? Can you share your config?

seivan

[dead]

null

[deleted]

codecraze

Really nice. I will give it a try :)