@@ -123,10 +123,14 @@ enable-normalization-opposite-orientation-for-nested-containers = false
123
123
```
124
124
125
125
### Floating windows
126
- TODO DOCUMENTATION
127
126
128
- Normally, floating windows are not part of the tiling tree. But it's not the case with ` focus ` command. From ` focus ` command
129
- perspective, floating windows are part of the tree.
127
+ Normally, floating windows are not considered to be part of the [ tiling tree] ( #tree ) . But it's not the case with
128
+ [ ` focus ` ] ( ./commands.md#focus ) command.
129
+
130
+ From [ ` focus ` ] ( ./commands.md#focus ) command perspective, floating windows are part of [ the tree] ( #tree ) . The floating window
131
+ parent is determined as the smallest tiling container that contains the center of the floating window.
132
+
133
+ This technique eliminates the need for an additional binding for focusing floating windows.
130
134
131
135
## Default keybindings
132
136
@@ -142,22 +146,63 @@ AeroSpace uses TOML format for the config. TOML is easy to read, and it supports
142
146
info] ( https://toml.io/en/ )
143
147
144
148
### Binding modes
145
- TODO DOCUMENTATION. For now you can refer to https://i3wm.org/docs/userguide.html#binding_modes
149
+
150
+ You can create multiple sets of bindings by creating different binding modes. When you switch to a different binding mode, all
151
+ the bindings from the current mode are deactivated, and only the bindings specified in the new mode become active. The initial
152
+ binding mode that AeroSpace starts out with is "main".
153
+
154
+ This feature is absolutely identical to the one [ in i3] ( https://i3wm.org/docs/userguide.html#binding_modes )
155
+
156
+ Working with binding modes consists of two parts: 1. defining a binding to switch to the binding mode and 2. declaring the binding
157
+ mode itself.
158
+
159
+ ``` toml
160
+ [mode .main .binding ] # Declare 'main' binding mode
161
+ alt-r = " mode resize" # 1. Define a binding to switch to 'resize' mode
162
+
163
+ [mode .resize .binding ] # 2. Declare 'resize' binding mode
164
+ minus = ' resize smart -50'
165
+ equal = ' resize smart +50'
166
+ ```
146
167
147
168
### Commands
148
169
149
170
AeroSpace is controlled by commands. For more info see [ the list of all available commands] ( ./commands.md ) .
150
171
151
172
## Emulation of virtual workspaces
152
173
153
- The supposed workflow is to only have one macOS Space (or as many as monitors you have) and don't interact with macOS spaces in
154
- any way
174
+ Native macOS Spaces have a lot of problems.
175
+
176
+ - The animation for Spaces switching is slow
177
+ - You can't disable animation for Spaces switching (you can only make it slightly faster by turning on ` Reduce motion ` setting,
178
+ but it's suboptimal)
179
+ - You have a limit of Spaces (up to 16 Spaces with one monitor)
180
+ - You can't create, delete, reorder Spaces with hotkeys
181
+ - Apple doesn't provide public API to create, delete, reorder and switch Spaces
182
+
183
+ Since Spaces are so hard to deal with, AeroSpace reimplements Spaces and calls them "Workspaces". The idea is that if the
184
+ workspace isn't active then all of its windows are placed outside of the visible area of the screen. Once you switch back to the
185
+ workspace, (by the means of binding, or by choosing the workspace in the tray icon list) windows are placed back to the visible
186
+ area of the screen.
187
+
188
+ When you exit the AeroSpace or when the AeroSpace is about to crash, AeroSpace will place all windows back to the visible area of
189
+ the screen.
155
190
156
- When user quits AeroSpace or before crashing, AeroSpace puts windows back to the center of the screen
191
+ > [ !NOTE]
192
+ > For better or worse, macOS doesn't allow to place windows outside of the visible area entirely. You will still be able to see a
193
+ > few pixels of "hidden" windows in the bottom right corner of your screen. That means, that if AeroSpace crashes badly you will
194
+ > still be able to manually "unhide" the windows by dragging these few pixels to the center of the screen.
195
+
196
+ The supposed workflow of using AeroSpace workspaces is to only have one macOS Space (or as many as monitors you have, if `Displays
197
+ have separate Spaces` is enabled) and don't interact with macOS Spaces anymore.
157
198
158
199
### A note on mission control
159
- TODO DOCUMENTATION
160
- Enable 'Group windows by application'
200
+
201
+ For some reason, mission control doesn't like that AeroSpace puts a lot of windows in the bottom right corner of the screen.
202
+ Mission control shows windows too small even if it has enough space to show them bigger.
203
+
204
+ To workaround it, you can enable ` System Settings -> Desktop & Dock -> Group windows by application ` setting. For some weird
205
+ reason, it helps.
161
206
162
207
### A note on 'Displays have separate Spaces'
163
208
@@ -174,6 +219,5 @@ Overview of 'Displays have separate Spaces'
174
219
175
220
176
221
## Multiple displays
177
- TODO DOCUMENTATION
178
222
TODO DOCUMENTATION. Add difference with i3
179
223
0 commit comments