2
2
3
3
AeroSpace is a tiling window manager for macOS.
4
4
5
- ## Status
5
+ ## Project status
6
6
7
7
🚧 ** Work in progress.** Not usable yet 🚧
8
8
@@ -14,14 +14,17 @@ I will publish first release once I believe it's usable, so subscribe to release
14
14
15
15
- ** Manual** tiling window manager
16
16
- [ i3] ( https://i3wm.org/ ) inspired
17
- - AeroSpace employs its ** own emulation of virtual workspaces** instead of relying on native macOS Spaces due to
17
+ - AeroSpace employs its [ own emulation of virtual workspaces] ( ./docs/guide.md#emulation-of-virtual-workspaces ) instead of relying
18
+ on native macOS Spaces due to
18
19
their considerable limitations
19
20
- Plain text configuration (dotfiles friendly)
20
21
- ** [ PLANNED] ** CLI scriptable
21
22
- Doesn't require disabling SIP (System Integrity Protection)
22
23
- Proper multi-monitor support (i3-like paradigm)
23
24
- Status menu icon displays current workspace name
24
25
26
+ ## [ AeroSpace Guide] ( ./docs/guide.md )
27
+
25
28
## How to build the project
26
29
27
30
You would need a Mac.
@@ -37,43 +40,43 @@ Firstly, install [xcodegen](https://github.com/yonaskolb/XcodeGen). Then run in
37
40
./run-tests.sh
38
41
```
39
42
40
- ## Todo
41
-
42
- - is dialog, is resizable, is modal?
43
- - select parent and kill several windows at once
44
- - select parent -> outline several windows?
45
- - OR: outline with "SLSSetWindowOpacity"
46
- - OR: "shake" windows
47
- - CLI interface
48
- - Check all todos in code
49
- - move vs swap
50
- - what is src/Assets.xcassets ?
51
- - license
52
- - unminimize apps automatically
53
- - minimized apps handling
54
- - macOS fullscreen apps handling
55
- - unhide apps automatically
56
-
57
- ## Challenges
58
-
59
- - Window overlapping
60
- - "floating" window layout
61
- - windows' min/max sizes
62
-
63
- ## Known Special windows to check
64
-
65
- - XCode welcome screen
66
- - Finder preview
67
- - Finder tabs
68
- - Chrome create bookmark window
69
- - Toolbox window
70
- - IntelliJ dialog windows (e.g. "Add to git")
71
- - IntelliJ project structure modal window blocks main window resize
72
- - VLC full screen window (eh, I wish every fullscreen window in macOS worked like that)
73
- - iTerm drop down window
74
- - Chrome cmd+f window
75
-
76
- ## Limitations of macOS API
77
-
78
- - It's not possible to find to what monitor window is assigned
79
- - It's not possible to __ reliably __ know what monitor is currently active
43
+ ## Values of the project
44
+
45
+ ** Values **
46
+ - AeroSpace is targeted at advanced users and developers
47
+ - Keyboard centric
48
+ - Never break configuration files or existing workflows (Guaranteed once AeroSpace reaches 1.0 version)
49
+ - AeroSpace doesn't use GUI, unless necessarily
50
+ - AeroSpace will never provide a GUI for configuration. For advanced users, it's easier to edit a configuration file in text
51
+ editor rather than navigating through checkboxes in GUI.
52
+ - Status menu icon is ok, because visual feedback is needed
53
+ - Provide _ practical _ features. Fancy appearance features are not _ practical _
54
+ - If "dark magic" (aka "private APIs", "code injections", etc) can be avoided, it must be avoided
55
+ - Right now, AeroSpace uses only a [ single private API ] ( ./src/Bridged-Header.h ) . Everything else is [ macOS public accessibility
56
+ API ] ( https://developer.apple.com/documentation/applicationservices/axuielement_h ) .
57
+ - AeroSpace will never require you to disable SIP (System Integrity Protection). For example, yabai [ requires you to disable
58
+ SIP ] ( https://github.com/koekeishiya/yabai/issues/1863 ) to use some of its features. AeroSpace will either find another way
59
+ (e.g. [ emulation of workspaces ] ( ./docs/guide.md#emulation-of-virtual-workspaces ) ) or will not implement this feature at all
60
+ (window transparency and window shadowing are not _ practical _ features)
61
+
62
+ ** Non Values **
63
+ - Play nicely with existing macOS features. If limitations are imposed then AeroSpace won't play nicely with existing macOS
64
+ features
65
+ - E.g. AeroSpace doesn't acknowledge the existence of macOS Spaces, and it uses [ emulation of its own
66
+ workspaces ] ( ./docs/guide.md#emulation-of-virtual-workspaces )
67
+
68
+ ## Tip of the day
69
+
70
+ ``` bash
71
+ defaults write -g NSWindowShouldDragOnGesture YES
72
+ ```
73
+
74
+ Now, you can move windows by holding ` ctrl ` + ` cmd ` and dragging any part of the window (not necessarily the window title)
75
+
76
+ Source: [ reddit ] ( https://www.reddit.com/r/MacOS/comments/k6hiwk/keyboard_modifier_to_simplify_click_drag_of/ )
77
+
78
+ ## Related projects
79
+
80
+ If AeroSpace doesn't work for you, take a look at projects by other authors:
81
+ - [ Amethyst ] ( https://github.com/ianyh/Amethyst )
82
+ - [ yabai ] ( https://github.com/koekeishiya/yabai )
0 commit comments