Skip to content

Releases: mdSlash/hyprkan

v2.2.0

03 Jul 19:44
ed72fb7
Compare
Choose a tag to compare

Added

  • Sway: Support app_id window attribute. Thanks to @j-ace-svg for the contribution! #4

Changed

  • Niri: Replace Windows with FocusedWindow in JSON requests.

v2.1.0

19 Jun 03:53
Compare
Choose a tag to compare

Added

  • Support for Niri compositor #3

v2.0.0

17 Jun 13:09
dfdadc4
Compare
Choose a tag to compare

⚠️ Important Changes

Refactored Config Structure:

  • Removed top-level base, exec, and rules 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, and current-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 action
    • set_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.