https://github.com/cryogenicplanet/fenster
Sane Macos Spaces
https://github.com/cryogenicplanet/fenster
desktops macos spaces
Last synced: 8 months ago
JSON representation
Sane Macos Spaces
- Host: GitHub
- URL: https://github.com/cryogenicplanet/fenster
- Owner: CryogenicPlanet
- Created: 2022-04-17T09:43:21.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-12-28T02:41:06.000Z (over 3 years ago)
- Last Synced: 2025-09-27T04:56:11.810Z (9 months ago)
- Topics: desktops, macos, spaces
- Language: Go
- Homepage:
- Size: 12.7 KB
- Stars: 5
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Fenster - MacOS Space Manager
The main functionality fenster provides is to have good full screen spaces, in the future it might provide more.
https://user-images.githubusercontent.com/10355479/163709379-b5c99dca-0123-41f3-ba43-e93c5b69e66e.mp4
## Install
[yabai](https://github.com/koekeishiya/yabai) - You need `yabai` to move spaces around which is critical for how Fenster works, in the future this might be something directly implemented
For `yabai` to work with this feature, you need to [Disable System Integrity Protection](https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection)
Also need to setup https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)#configure-scripting-addition correctly
```bash
// ~/.yabairc
yabai -m signal --add event=space_changed action="curl localhost:8090/prepare?oldSpace=\${YABAI_RECENT_SPACE_ID}&newSpace=\${YABAI_SPACE_ID}"
yabai -m signal --add event=mission_control_enter action="curl localhost:8090/mission/enter"
yabai -m signal --add event=mission_control_exit action="curl localhost:8090/mission/exit"
sudo yabai --load-sa
```
### Installing fenster itself
Go to https://github.com/CryogenicPlanet/fenster/releases and download the `fenster` binary for your platform
Make sure it is in `/usr/local/bin` or somewhere in your path
## Usage
Setup callback
```bash
yabai -m signal --add event=space_changed action="curl localhost:8090/prepare?oldSpace=\${YABAI_RECENT_SPACE_ID}&newSpace=\${YABAI_SPACE_ID}"
yabai -m signal --add event=mission_control_enter action="curl localhost:8090/mission/enter"
yabai -m signal --add event=mission_control_exit action="curl localhost:8090/mission/exit"
# In the future will be
# fenster setup # not implement yet
```
Run the fenster server
```
fenster start
```
## Run server on startup
```
crontab -e
@reboot fenster start
```
## Disclaimer
This is really just written for me, so it may not make a lot of sense for you to use it.
Also the code here was written in like an hour and is really quite shit so don't judge me too much on it