refactor(ffm): add selection of ffm implementation

This commit adds an optional flag to allow users to select the focus
follows mouse implementation that they wish to use (komorebi or
windows). The flag defaults to komorebi.

The ahk-derive crate has been updated to enable the generation of
wrappers fns that require flags.

I pushed the ffm check up to listen_for_movements() so that we don't
even try to listen to the next event from the message loop unless
komorebi-flavoured ffm is enabled.

re #7
This commit is contained in:
LGUG2Z
2021-09-04 13:14:45 -07:00
parent ce3c742e09
commit 2b7c51b87b
9 changed files with 258 additions and 55 deletions
+17 -1
View File
@@ -164,6 +164,21 @@ komorebic.exe identify-tray-application exe Discord.exe
# komorebic.exe identify-tray-application title [TITLE]
```
#### Focus Follows Mouse
Komorebi supports two focus-follows-mouse implementations; the native Windows X-Mouse implementation, which treats the
desktop, the task bar and the system tray as windows and switches focus to them eagerly, and a custom `komorebi`
implementation which only considers windows managed by `komorebi` as valid targets to switch focus to when moving the
mouse.
When calling any of the `komorebic` commands related to focus-follows-mouse functionality, the `komorebi`
implementation will be chosen as the default implementation. You can optionally specify the `windows` implementation by
passing it as an argument to the `--implementation` flag:
```powershell
komorebic.exe toggle-focus-follows-mouse --implementation windows
```
## Configuration with `komorebic`
As previously mentioned, this project does not handle anything related to keybindings and shortcuts directly. I
@@ -263,7 +278,8 @@ used [is available here](komorebi.sample.with.lib.ahk).
- [x] Toggle floating windows
- [x] Toggle monocle window
- [x] Toggle native maximization
- [x] Toggle focus follows mouse
- [x] Toggle X-Mouse (Native Windows) focus follows mouse
- [x] Toggle custom Komorebi focus follows mouse (desktop and system tray-aware)
- [x] Toggle automatic tiling
- [x] Pause all window management
- [x] Load configuration on startup