Skip to content

veyxov/qanata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Application aware layer switching 🔁 with kanata ⌨️ and sway 💨

Additional features:

Current layer text overlay

  • Using sdl2 for rendering just text, is overkill
  • Find a more lightweight alternative
  • Is there any better way of showing current-layer information?
  • Maybe some sway prompt using ipc?

TODO 📔

  • Configuration

    • List of registered apps that have specific layers
      • Currently getting from file system (~/.config/keyboard/apps/*)
      • Get from config file?
    • Aliases and patterns for application names
  • Refactor the code

  • Don't rely on swaymsg, make universal

    • Now using swayipc
    • Make it work on other than sway?
  • Whitelist/blacklist

  • Make the overlay a compile time feature

  • Fork kanata and apply the logging patches

How it works ⚙️

  1. You have a main layer, this will be used by default.
  2. You have a ~/.config/keyboard/apps/org.telegram.desktop layer. When telegram is focused it sends the window name (org.telegram.desktop in this case) to kanata. Kanata switches to this layer. NOTE: If it can't find the corresponding file in /apps it fallbacks to the default layer (main)
  • Create a file and include it in your kanata configuration
    • NOTE: The name of the file should match what sway returns

Check out my kanata config for reference 💡

Dependencies

  • SDL2 for the overlay window, optional (todo)

How to run 🏃

git clone https://github.com/veyxov/qanata
cd qanata/
cargo run -- --port 7070

Visualize statistics generated from kanata

python script for generating heatmap for key presses

How to run:

./run_stats.sh --file path/to/kanata/log

# Current format: actual_key_presses|layer|resulting_key_press

Bugs 🐞

  • Panics if there are no windows in current workspace (when the wallpaper is visible)
  • Overheats the CPU when sway is locked; Fixed in commit

Caution: This is very experimental and raw. Needs a lot of work to make usable

About

Application aware layer switching in `kanata`

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published