HN.zip

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

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!

225 points by wojciech-kulik - 90 comments

90 Comments

marliechiller [3 hidden]5 mins ago
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
jameschensmith [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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.

toisanji [3 hidden]5 mins ago
same reason I would like this feature
brainbag [3 hidden]5 mins ago
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.
Quiark [3 hidden]5 mins ago
Does it also handle (let you pick) when opening a web link from another app?
SebastianKra [3 hidden]5 mins ago
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.

atombender [3 hidden]5 mins ago
I'm of course assigning apps to specific spaces. But my browser has to be in all spaces. MacOS still doesn't remember which window is where when the app restarts or the OS reboots.
maroonblazer [3 hidden]5 mins ago
That doesn't solve parent's (and my) problem.

I have collections of tabs in different windows and I assign those windows to different spaces. Every time I reboot Chrome all windows are assigned to whichever space is active when I launch Chrome.

I seem to recall that Chrome used to remember these assignments, so maybe it's not a macOS problem, but rather a Chrome problem...?

snippety [3 hidden]5 mins ago
Btw. Zen Browser or Arc have great management of spaces in the browser. You can quickly switch between profiles without unloading them. So you can be even on a call using work space and switch to personal space. This way you don’t need to have separate windows per profile unless you need to see the content of both at the same time.
ttul [3 hidden]5 mins ago
This is also how I use Chrome with spaces. I’d love someone to solve this problem.
dchuk [3 hidden]5 mins ago
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.
schlumpf [3 hidden]5 mins ago
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.
throwaway314155 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
Or vscode. If I was going to use this, I'd ideally want a space per client.
gregoriol [3 hidden]5 mins ago
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.

rane [3 hidden]5 mins ago
Is this compatible with Amethyst? I want tiling windows but without the delay in switching spaces.
wojciech-kulik [3 hidden]5 mins ago
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.

cyberax [3 hidden]5 mins ago
Super nice! I wish you could add a grid view of the workspaces. I miss TotalSpaces...
CharlesW [3 hidden]5 mins ago
I wonder if SpaceCapsule (https://spacecapsule.app/) could work with FlashSpace?
wojciech-kulik [3 hidden]5 mins ago
Probably not, because as far as I can see, it relies on macOS spaces. FlashSpace doesn't use native spaces.
CharlesW [3 hidden]5 mins ago
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.

user3939382 [3 hidden]5 mins ago
What’s wrong with TotalSpaces?
chrisvalleybay [3 hidden]5 mins ago
Doesn't work properly with newer versions of MacOS and requires you to disable SIP.
cyberax [3 hidden]5 mins ago
The author disappeared, and the last available version barely works on the modern macOS.
boronine [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
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 [3 hidden]5 mins ago
How do you disable the AeroSpace tiling, are you just using the floating layout? Can you share your config?
boronine [3 hidden]5 mins ago
shaarmar [3 hidden]5 mins ago
Good timing, I was exploring my options again in this space and settled on aerospace. Will give this a try
semi-extrinsic [3 hidden]5 mins ago
Any insight on the pros/cons versus yabai?
Secretmapper [3 hidden]5 mins ago
Not needing to disable SIP is a big one.
yisonPylkita [3 hidden]5 mins ago
Thank you! I've just installed it and so far it works great
wojciech-kulik [3 hidden]5 mins ago
Thank you for the feedback!
codecraze [3 hidden]5 mins ago
Really nice. I will give it a try :)
whatever1 [3 hidden]5 mins ago
This is awesome. But Apple needs to get their act together. Window management, specially in multi monitor/ space setups is unbelievably bad.

What is the purpose of the dock? It does not tell you what apps have windows visible, preview these windows or inform you where these windows are. Absolute waste of screen real estate.

And to add to the injury they seized another 10% of the horizontal space for the even more useless stage manager.

cosmic_cheese [3 hidden]5 mins ago
On the other hand, the ability to switch virtual desktops independently between monitors as macOS has been able to for ages remains absent on Windows and is present only on some Linux desktops which feels insane to me. That single feature reduces the amount of twiddling with window arrangements and such I need to do to almost nothing.
hysan [3 hidden]5 mins ago
Every year I spend a month trying out Linux distros to see if it’s in a good enough place to switch back to. Every time I do this, I’m surprised by how few desktop environments supports this. Either it’s not popular or using multiple monitors isn’t common. This isn’t the only reason I haven’t switched back, but it’s one of the more surprising ones because it feels so natural to treat monitors and workspaces like this.
cosmic_cheese [3 hidden]5 mins ago
My guess is that among Linux users, multimonitor is unusual. Even most Linux laptop users seem to prefer single monitor clamshell mode vs. keeping the laptop open as a secondary screen. There’s a fair number of Macbook users who do clamshell too but secondary-laptop-screen setups are much much more common in the Mac crowd.
doubled112 [3 hidden]5 mins ago
At some point I realized I’d rather one large 4K screen to any multi monitor setup I ever had.

I’m not sure if it’s a coping mechanism for using Linux desktops or not, but it does avoid a few issues.

It also makes window management simpler in the sense I can just sprawl them out and still see everything. Kind of like moving your project from a small desk to a big kitchen table.

I tend to have two workspaces. One for what I’m doing. One for background stuff, like mail and music.

zuhsetaqi [3 hidden]5 mins ago
I really like having 2 4K 27" displays. I even have a third monitor in vertical orientation but don’t use it that often. Most often I have my editor on one screen and my browser with developer tools on the other screen.
cosmic_cheese [3 hidden]5 mins ago
I’m not sure that a single large screen would work for me. The value in both separate physical monitors and virtual desktops is the ability to distribute windows across screens and desktops according to purpose. Size factors in here too; I think my cap for usability sits at about 32” (preferably at 6k), with anything larger than that making me likely to get lost at sea in an ocean of windows.
fiddlerwoaroof [3 hidden]5 mins ago
I use a single large screen (55”) but I keep my MacBook open so I can send things like my music player there where I can glance at them.
hysan [3 hidden]5 mins ago
This seems to confirm my lived experiences (ran Linux as my main OS for about a decade). I remember spending so much time hand configuring X11, installing drivers, and endlessly debugging things to get my triple monitor setup working in the past. It was fun and it led me to my distrohopping hobby, but eventually I realized that not many people ran a setup like mine. So I moved away to Apple which has much better multi-monitor & workspace ergonomics (for me).
markles [3 hidden]5 mins ago
I can't think of a single Linux user I know who doesn't use a multi-monitor setup. I have three monitors on my desktop and it works fine on Cinnamon and Plasma. Maybe the dozen I know are outliers, but I think multi-monitor setups are fairly common.
zuhsetaqi [3 hidden]5 mins ago
> What is the purpose of the dock?

It’s an app launcher. Since I only open app with Spotlight/Alfred, my dock auto hides and doesn’t waste any real estate.

The stage manager in my opinion should have been iPad only. But if you ignore the button in the control center it’s easy to forget that it even exists.

Brajeshwar [3 hidden]5 mins ago
This is also what I do. The auto-hidden Dock is my way to check for Open apps (at times). Otherwise, I still do Alfred/Spotlight to go to an App.
10729287 [3 hidden]5 mins ago
Are you aware of the AltTab app ? Highly customisable and best way to switch between opened windows on Macos. https://alt-tab-macos.netlify.app/

Couldn't go back.

creativenolo [3 hidden]5 mins ago
This stuff is so divisive. You can find seemingly a roughly equal number of people who passionately think the opposite on many of these very-different-from-windows UX choices. I’m one. The dock tells me what apps are running and available. There are other ways to find the windows, and running apps don’t need windows.
whatever1 [3 hidden]5 mins ago
Every single running UI app needs a window. The ones that run in the background and do not need a full fledged window go in the menubar next to the clock.
newdee [3 hidden]5 mins ago
> Every single running UI app needs a window.

I’m sorry, but this is false. The default/conventional behaviour is for apps to keep running even if all their windows are closed.

There’s actually a toggle for this behaviour on the app delegate.[0]

You may be thinking about LSUIElement, which is loosely related, but doesn’t mandate that windowless apps must quit. [1]

0: https://developer.apple.com/documentation/appkit/nsapplicati...

1: https://developer.apple.com/documentation/bundleresources/in...

whatever1 [3 hidden]5 mins ago
Apologies, I was not clear. Obviously in MacOS an app can be open without a window. My question is why?

What is the point of having for example Word or Safari running without a window? If they want to run a background task that requires some user interaction (eg outlook checking email and calendar), the menubar is the perfect place for it.

In the past the argument was that people want their apps warm started so that they open faster. But this is a moot point in 2025 with SSDs of pulling 5gb/s and tons of ram that allow for ample intelligent caching.

bobbylarrybobby [3 hidden]5 mins ago
One reason is to be able to close the last window of an app without quitting it. Always bugged me how on windows, if I closed, say, the only word doc I had open, I had to relaunch word again (with all the loading time that that entailed) just to open a new doc. On a Mac you can close windows without worrying that you're also going to quit the app (except for apps that only support one window, although I do think it’s silly that every app doesn't just support multiple windows).
whatever1 [3 hidden]5 mins ago
Why the app has to be scrubbed from memory immediately after you close the last window? We are not in the times with 512kb of RAM memory. This is not something that the user should have to worry about today.

This is the simplest caching scenario I can think of.

philistine [3 hidden]5 mins ago
That's how Windows does it, but macOS just does it differently. Is it better? Depends who you ask.
wojciech-kulik [3 hidden]5 mins ago
Totally agree. I even created a feature request to allow disabling animation when switching between spaces. But I don't have any faith in them. I enabled auto-hiding of the Dock. When I use FlashSpace I don't need to see the dock anymore because I know what is where. I also integrated the number of messages on my Sketchybar, so that I know if there is a new SMS or Slack message without Dock.
loremm [3 hidden]5 mins ago
Not for speed (that was only allowed in past versions of macos) but even now, you can go Accessibilty -> Reduce motion blur and it at least won't do the horrible slide animation, just fade in and out. The other one made me nauseous if I was doing it so often
Aurornis [3 hidden]5 mins ago
> What is the purpose of the dock? It does not tell you what apps have windows visible, preview these windows or inform you where these windows are. Absolute waste of screen real estate.

Auto-hide. First thing I turn on when I do a fresh install.

Some keep it as an app launcher and quick switcher. I prefer to only open it when necessary.

escapecharacter [3 hidden]5 mins ago
I’m noticing that every single time I wake my (recent) MacBook from sleep, it forgets it’s attached to external monitors for at least 10 seconds. So, a bunch of windows do this confusing jump around and I have to wait for them to settle before I started anything!
Tagbert [3 hidden]5 mins ago
It depends on how long that external monitor takes to wake up and respond to the display connection to confirm that it is there. If the monitor is still active then that is almost instant.
Aurornis [3 hidden]5 mins ago
I had this problem with a cheap monitor I had to use at the office for a while.

Not a problem with any other monitor I’ve used.

It’s the monitor taking a long time to wake up.

fujinghg [3 hidden]5 mins ago
Just tell the dock to auto hide. I don’t use stage manager. I don’t know why it exists to be fair.

Window management is “meh” but I don’t care. I use virtual desktops and the desktop Apple magic touchpad. Good enough.

rplnt [3 hidden]5 mins ago
They make more money that way, by having terrible desktop ux that needs to be supplemented with dozen of extra apps. Not sure if that was their intention, but they do.
10729287 [3 hidden]5 mins ago
Not sure they are doing extra money because official apps are generally opened by free, community driven, ones, but yeah, this is my main issue with Macos nowadays, official apps are so flawed the os needs to be heavily customed out of the box.
JSR_FDED [3 hidden]5 mins ago
How on earth do “they” make more money that way? The support costs of different users on different window management solutions obliterates any small fraction of application sales they earn on the App Store.
toddmorey [3 hidden]5 mins ago
I’ve tried a lot of tiling window managers & Spaces replacements and it’s hard to take over that central piece of the OS reliably. There’s always at least one of my critical apps that freaks out.

What I want more than anything is just a terminal flag to turn off the dumb animations on the built-in Spaces.

CharlesW [3 hidden]5 mins ago
> What I want more than anything is just a terminal flag to turn off the dumb animations on the built-in Spaces.

You can turn on "Reduce Motion" to change it from a slide to a fast cross-fade.

anon7000 [3 hidden]5 mins ago
I ultimately stopped because the trade off is not being able to see web animations (or most any animations in the OS) most of the time, which isn’t ideal as a web developer.
lelandfe [3 hidden]5 mins ago
Looks like there's a Chrome command line flag to override it: `--force-prefers-no-reduced-motion`
nicce [3 hidden]5 mins ago
> You can turn on "Reduce Motion" to change it from a slide to a fast cross-fade.

That is just an illusion. Time is the same. Instead, you need to add abstraction on top of CMD + Left/Right keybinds to get fast movement between spaces, for example.

wojciech-kulik [3 hidden]5 mins ago
Yep, tiling window managers usually cause a lot of glitches and you spend more time on fighting with glitches than gaining time using the app. That's why I built FlashSpace with no tiling and annoying taking control over your computer :).
wojciech-kulik [3 hidden]5 mins ago
And the terminal flag is not going to happen. Apple doesn't care ;).
Crowberry [3 hidden]5 mins ago
And a hotkey to go directly to the space. Only seem to work for spaces now and not fullscreen apps, which I make heavy use of
wrs [3 hidden]5 mins ago
Will this, or anything else, make Safari restore its windows to the spaces they were in when it quit? Chrome does better but only succeeds part of the time. This is so annoying that I’ll consider switching to any browser that does it!
CharlesW [3 hidden]5 mins ago
Hey, are you familiar with Spaces' "Assign apps to spaces" feature? It doesn't have an "assign to Space where last used", but it does let you assign an app to any Space (or every Space). https://support.apple.com/guide/mac-help/work-in-multiple-sp...
wrs [3 hidden]5 mins ago
I don’t want to assign Safari to a space, I want each Safari window to stay where I put it. It makes no sense for Spaces to assume every window of an app is being used for the same task, especially a browser app.
donfotto [3 hidden]5 mins ago
This is much needed on mac os. But why? Back in the day, mac os was supposed to "just work", and linux was for weirdos who had too much time and customized everything. But now, it's the opposite. Vanilla flavor ubuntu just works out of the box. And mac os needs tons of third party customization. Same with external monitors, on mac one needs 3rd party software for properly scaling the UI on a 4k monitor. That's core OS functionality, not something one should need an extension for.
adamredwoods [3 hidden]5 mins ago
I don't use VWS on OSX, because I'm faster without it. Flashspace looks like an improvement (faster), but I don't know if it's how I work. I may try it.

The biggest complaint I have, is why doesn't alt-tab work smarter? Here's an example of using alt-tab and window management differently: https://justinnoel.dev/2020/12/22/macplus-software-demo-of-c...

fragmede [3 hidden]5 mins ago
maleldil [3 hidden]5 mins ago
This is a good solution. It interacts weirdly with programs that use native tabs (e.g. each Ghostty tab shows up as a separate window), but other than that, coming from other OSs, it works as you'd expect.

I tried getting used to the "macOS way", but this is just better.

locusofself [3 hidden]5 mins ago
Is there a similar app for Windows? I work at Microsoft and while I'm allowed to use other OSes it's not really practical.
freedomben [3 hidden]5 mins ago
[flagged]
wojciech-kulik [3 hidden]5 mins ago
Yes, it's a perfect thing to include in the title because using just 2 words I can say:

- It's free to use

- You can request new features, and there is a good chance that they'll be implemented

- There is no tracking = full privacy

- You can add features on your own if you know the platform

- If you learn Swift programming, you can check out the project and learn something from it

- If you are willing to become a contributor, you can join

conception [3 hidden]5 mins ago
This is an interesting question and I think for me open-source on the Mac usually means it’s hard to manage? It might use lots of CLI and config files and libraries and be more Lennox focused. This is fine of course, but I wouldn’t say it’s how you advertise to a Mac user. For me the best Mac apps are made by small focused teams with a passion for the product that they are making with an eye towards customer usability.
moondev [3 hidden]5 mins ago
Free vs paid subscription