qanata
qanata copied to clipboard
Application aware layer switching in `kanata`
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
- [x] Currently getting from file system (
~/.config/keyboard/apps/*
) - [ ] Get from config file?
- [x] Currently getting from file system (
- [ ] Aliases and patterns for application names
- [ ] List of registered apps that have specific layers
-
[ ] Refactor the code
-
[ ] Don't rely on swaymsg, make universal
- [x] Now using swayipc
- [ ] Make it work on other than sway?
-
[x] Whitelist/blacklist
-
[ ] Make the overlay a compile time feature
-
[ ] Fork kanata and apply the logging patches
How it works ⚙️
- You have a
main
layer, this will be used by default. - You have a
~/.config/keyboard/apps/org.telegram.desktop
layer. Whentelegram
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 🐞
- [x] ~~Panics if there are no windows in current workspace (when the wallpaper is visible)~~
- [x] Overheats the CPU when sway is locked; Fixed in commit