## Summary
Fixes Monocle Layout with `Minimize Unfocused Windows` (internally `config.monocleMinimizeRest`) option enabled.
Restores previous functionality (before Wayland patches) and adds
* minimize inactive windows only on same monitor with multimonitor setup
* can switch windows with focus-changing `Actions`
* switches to the next window when closing the active window (still a little buggy in multimonitor, but a big improvment)
* handles moving window onto a `Surface` with this layout properly
## UI Changes
Removed "(WIP)" from "Minimize unfocused windows" option in the config UI.
## Test Plan
1. Reload script
2. Verify all behavior in the Summary
## Related Issues
Closes#43, #55
Mouse poller does not work on Wayland anyway. It uses xdottool, which
does not work on Wayland.
This will break the setup of the users, who used the config setting to
use xdotool
This completely changes how are shortcuts are interpreted by the script.
Instead of using the complicated system, where up, down, left and right
keys (hjkl) were used dynamically depended on the mode (directional,
dwm), we just put all the possible shortcuts in the list. This increases
the user's flexibility to bind shortcuts however they want and also
reduces the code complexity.
Since this change breaks the existing shortcuts for the user anyway
and we are currently earlier in the development, it makes sense
to break shortcuts entirely, to we also break the naming scheme.
BREAKING CHANGE: This completely breaks existing shortcuts. Users need
to remove all the existing shortcuts from config file and relogin into
the session immediately. After that, the new set of shortcuts will be
visible in the UI.
Advantages:
- Building description is more readable (top to bottom)
- Build step is extracted from package step
- Abstraction layers are not mixed within the tools ("Scripts describe
how to build, Npm calls scripts, Make calls Npm" instead of "Make
describes build, calls Npm")
- No duplication of package description in Makefile and package.json
The previous default behavior was derived from dwm. It totally make
sense for dwm, because it has "tag" system instead of virtual desktop.
However, most people are more used to virtual desktop system and
consider each desktp as physically independent entity. Thus, it makes
more sense to turn this on by default.
It turns out that column-based operations require lots of state
management, which is strictly against the base architecture.
Fully implementing this layout is almost the same as re-implementating
a whole new window manager.
The feature itself works nicely, but damages window states by minimizing
windows. To mitigate this, Krohnkite should track minimization.
In fact, minimization was intentionally excluded from the initial
design to reduce the complexity of window state management, but should
be managable anyway.
* THAT was a hard ride, really. It took so many experiements, but ended
up with this simple elegant hack.
* The trick is to delay arranging on window unminimize. Without this
delay, KWin doesn't register the unminimized window as the current
window, no matter what you do.