feat(shortcuts): add helper written in egui

This commit adds a simple egui helper application which shows a list of
shortcuts defined in a user's whkdrc file. Parsing AHK files is not
supported.

In addition to listing out shortcuts defined in the whkdrc file, the top
line allows users to add filter a filter to narrow down the list of
commands and key bindings to the ones they are interested in.

A new komorebic command "toggle-shortcuts" has been introduced which
will first attempt to kill "komorebi-shortcuts.exe", and then exit if
the kill signal was successful (ie. a process was closed), or proceed to
open "komorebi-shortcuts.exe" if the kill signal was not successful (ie.
no process was closed, so we should open one).

"komorebi-shortcuts.exe" has been added as a floating application in
lib.rs to allow for users to use the "komorebic move" command to
manipulate its position via their existing keyboard bindings.
This commit is contained in:
LGUG2Z
2025-05-03 17:37:02 -07:00
parent 4ea835fa59
commit 70f561e6ac
13 changed files with 256 additions and 15 deletions

View File

@@ -1003,6 +1003,8 @@ enum SubCommand {
GlobalState,
/// Launch the komorebi-gui debugging tool
Gui,
/// Toggle the komorebi-shortcuts helper
ToggleShortcuts,
/// Show a JSON representation of visible windows
VisibleWindows,
/// Show information about connected monitors
@@ -2713,6 +2715,15 @@ if (Get-Command Get-CimInstance -ErrorAction SilentlyContinue) {
SubCommand::Gui => {
Command::new("komorebi-gui").spawn()?;
}
SubCommand::ToggleShortcuts => {
let output = Command::new("taskkill")
.args(["/F", "/IM", "komorebi-shortcuts.exe"])
.output()?;
if !output.status.success() {
Command::new("komorebi-shortcuts.exe").spawn()?;
}
}
SubCommand::VisibleWindows => {
print_query(&SocketMessage::VisibleWindows);
}