Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: FlashSpace – fast, open-source, macOS Spaces replacement (github.com/wojciech-kulik)
255 points by wojciech-kulik 4 days ago | hide | past | favorite | 104 comments
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!





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...


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.


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.


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.

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?


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?

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.

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.


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.

Does it also handle (let you pick) when opening a web link from another app?

Yes it does.

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.


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...?


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.

This is also how I use Chrome with spaces. I’d love someone to solve this problem.

Yes! Would love a solution to this.

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.

I’ve been using the Orion Browser a lot recently. Each profile pretends to be its own app as far as I can tell. You get separated spaces for work and private and links open in the last used window. This might solve your issue of assigning multiple windows to different spaces.

same reason I would like this feature

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.

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".

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

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.

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.


>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.


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

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

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.

If I remember correctly there is a command line option. I do it many year ago on my Mac, and I can switch space without any delay / animation Edit : You're right, there is some Fade transition between space, but it is not 1000 ms. defaults write com.apple.dock expose-animation-duration -int 1; killall Dock

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


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

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

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

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

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.


What’s wrong with TotalSpaces?

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

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

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

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

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.


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

Any insight on the pros/cons versus yabai?

Not needing to disable SIP is a big one.

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

Thank you for the feedback!

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 :(


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.


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


Really nice. I will give it a try :)

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.


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.

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.

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.

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.


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.

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.

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.

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).

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.

> 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.


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.

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.


I love the idea of staying with Native Apps even if I have to learn additional commands, shortcuts, etc. Then, I stay with as few apps as I can use as possible. I used to and am sometimes tempted to wander and start using another additional app, but I try to resist if that means I make a little extra effort—typing out the app’s name in Alfred/Spotlight.

Anyways, thanks for the suggestion.


Thank you for your comment. I can totally understand. I’m always tempted to stop worrying and go « default mode » for everything as I have a tendency to trap myself in rabbit holes configuring and fine tuning but sometimed it's too hard to resist !

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.

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.

> 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...


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.


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).

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.


The menu bar? God no. Cluttered enough.

It’s not like it’s hard to quit an app. You push Apple-Q for the app, Apple-W for a window.

What’s the point in having a window if it doesn’t need it. Do I need to check if this is the last window so I don’t lose my download, stop my render, etc. These things bite me on Windows. There is not the one way.


Precisely. It’s not really about system performance anymore, which just leaves the workflow benefits once you get used to it. As you point out, when using keyboard shortcuts thoroughly, the WM behaviours just make sense.

Command-Tab, Tab to select the app for foreground, Command-N for a new window. Combined with Command-Space for Spotlight (or Alfred/Raycast) it’s all very quick and seamless.


That's how Windows does it, but macOS just does it differently. Is it better? Depends who you ask.

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.

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

> 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.


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!

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.


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.

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.


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.

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.

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.

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.


> 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.


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.

Looks like there's a Chrome command line flag to override it: `--force-prefers-no-reduced-motion`

> 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.


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 :).

And the terminal flag is not going to happen. Apple doesn't care ;).

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

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!

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...

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.

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...



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.


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.

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.

[flagged]


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


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.

Free vs paid subscription



Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: