MCPcopy Index your code
hub / github.com/coffebar/hyprland-per-window-layout

github.com/coffebar/hyprland-per-window-layout @2.17

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.17 ↗ · + Follow
19 symbols 36 edges 4 files 14 documented · 74%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Stand With Ukraine

Hyprland Per-Window Keyboard Layout Manager

Automatic keyboard layout switching for Hyprland - each window remembers its own keyboard layout.

Features

  • 🚀 Zero configuration - works out of the box
  • 🧠 Per-window memory - each window maintains its layout
  • Lightweight - minimal resource usage (Rust)
  • 🔧 Optional configuration - set default layouts per application

Use Cases

  • Developers: Code in English, chat in native language
  • Multilingual users: Seamless switching between languages
  • Power users: Consistent layouts across applications

Requirements: At least 2 keyboard layouts in hyprland.conf

Installation

From AUR (Arch Linux)

# e.g.
yay -Sy && yay -S hyprland-per-window-layout

Add to hyprland.conf:

exec-once = /usr/bin/hyprland-per-window-layout

From Cargo

cargo install hyprland-per-window-layout

Add to hyprland.conf:

exec-once = ~/.cargo/bin/hyprland-per-window-layout

Gentoo

Activate wayland overlay as described in README, allow ~amd64 keyword and then install it:

# emerge --ask gui-apps/hyprland-per-window-layout

From Source

git clone https://github.com/coffebar/hyprland-per-window-layout.git
cd hyprland-per-window-layout
cargo build --release
mkdir -p ~/.local/bin/
cp target/release/hyprland-per-window-layout ~/.local/bin/

Add to hyprland.conf:

exec-once = ~/.local/bin/hyprland-per-window-layout

Configuration

Optional. See configuration.md for setting default layouts per application.

Contributing

Bug reports and PRs are welcome! See CONTRIBUTING.md for guidelines.

Tested on Hyprland v0.50.

Core symbols most depended-on inside this repo

hyprctl
called by 4
src/hyprland_event.rs
change_layout
called by 3
src/hyprland_event.rs
fullfill_layouts_list
called by 2
src/hyprland_event.rs
fullfill_keyboards_list
called by 2
src/hyprland_event.rs
listen
called by 1
src/main.rs
get_kb_layouts_count
called by 1
src/main.rs
get_kb_layouts_count_retry
called by 1
src/main.rs
kb_file_isset
called by 1
src/main.rs

Shape

Function 12
Method 4
Class 3

Languages

Rust100%

Modules by API surface

src/hyprland_event.rs7 symbols
src/main.rs6 symbols
src/single.rs4 symbols
src/options.rs2 symbols

For agents

$ claude mcp add hyprland-per-window-layout \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page