feat(wm): add active window border

This commit adds an optional active window border with a user-defined
colour. This is achieved by spawning a dedicated "border window" and
constantly placing it behind the focused window, or hiding it whenever
necessary.

Some constraints to note:

- The border will only be applied to windows managed by komorebi
- This means that if you temporarily float a window, it will lose the
  active window border
- There are some issues where parts of the border will be broken by
  applications like Zoom, even if Zoom is behind the currently focused
  window
- You probably want to turn off window shadows globally in Advanced
  System Settings -> Performance for the borders to have a consistent
  colour all the way around the window
- There is some inevitable jank due to trying to reposition both the
  focused window and the "border window" behind it simultaneously
- There are no borders for unfocused windows

resolve #182
This commit is contained in:
LGUG2Z
2022-07-24 02:00:17 -07:00
parent 8c051d9f5e
commit 07bd53876f
16 changed files with 550 additions and 55 deletions

12
Cargo.lock generated
View File

@@ -494,6 +494,7 @@ dependencies = [
"lazy_static",
"miow 0.4.0",
"nanoid",
"os_info",
"parking_lot",
"paste",
"schemars",
@@ -760,6 +761,17 @@ version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "os_info"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eca3ecae1481e12c3d9379ec541b238a16f0b75c9a409942daa8ec20dbfdb62"
dependencies = [
"log",
"serde",
"winapi 0.3.9",
]
[[package]]
name = "os_str_bytes"
version = "6.2.0"