Releases: mdSlash/hyprkan
Releases · mdSlash/hyprkan
v2.2.0
v2.1.0
v2.0.0
⚠️ Important Changes
Refactored Config Structure:
- Removed top-level
base
,exec
, andrules
fields. - Config now consists of a flat list of rules.
Important
Ensure your existing config file are updated to match the new structure to avoid runtime errors.
See: docs/config
Added
- X11 support: Hyprkan now monitors window focus changes using the
python-xlib
library to fetch active window class and title. - Sway support: Integrated via
i3ipc-python
for window focus events and active window info. - New CLI option to list all Kanata-defined layer names, now working correctly thanks to a TCP response fix in Kanata 1.8.1.
- Validation: Ensures layers defined in the Hyprkan config file exist in the Kanata configuration.
- Signal handling: Proper handling added to gracefully terminate the script on exit.
- New options:
fake-key
,set-mouse
,change-layer
,layers
,current-window-info
,current-layer-name
, andcurrent-layer-info
- Testing: Added basic pytest-based test coverage.
- New Rule Actions:
cmd
: Run a shell command when the rule matches.fake_key
: Trigger a virtual key actionset_mouse
: Move the mouse to specified coordinates
Changed
- Hyprland behavior: Now listens only to
activewindow>>
events, reducing noise and avoiding duplicate logs. This ensures correct layer switching when the focused window changes (e.g., title updates), while ignoring unrelated events. - Kanata client: Now maintains a persistent TCP connection instead of reconnecting on every window focus event.
- Codebase: Refactored and reorganized for improved readability and maintainability.
- Logging: Improved clarity and consistency across all output.
Removed
- Dependencies: socat is no longer required — resolving a FileNotFoundError (see issue #2).
- Code: Removed unused or unnecessary logic for a cleaner codebase.