| Crates.io | hypr-nest |
| lib.rs | hypr-nest |
| version | 0.0.7 |
| created_at | 2025-10-04 20:35:42.840746+00 |
| updated_at | 2026-01-10 01:17:20.189114+00 |
| description | An automatic window switcher for Hyprland |
| homepage | |
| repository | https://github.com/vincbro/nest |
| max_upload_size | |
| id | 1868373 |
| size | 6,754,293 |

Unlike traditional window rules, which are static (you set them up once, and if your habits change, you have to update them yourself.), nest is dynamic, adaptive, and invisible.
It’s window rules on steroids: automatic, effortless, and always in sync with your habits.
Here’s what sets it apart:
The goal of nest is to feel like an extension of your workflow, not another tool to manage.
nest is constantly evolving. Feedback isn’t just welcome, it’s part of the process. Well-written ideas and suggestions often make it into the next release.
If you have feedback, open an issue or start a discussion - your input directly helps shape nest’s future.
cargo install hypr-nest
git clone https://github.com/vincbro/nest.git
cd nest
cargo build --release
Add this line to your Hyprland config:
exec-once = nest
exec-once = /PATH/TO/nest/target/release/nest
On first run, nest will create a config directory at ~/.config/nest/ with the following files:
config.toml – configuration settingsoutput.txt – program output/logsstorage.txt – stored workspace dataExample config.toml:
save_frequency = 10 # Seconds between saves
log_level = "INFO" # OFF, ERROR, WARN, INFO, DEBUG, TRACE
[workspace]
buffer = 30 # Number of records nest will keep per program class
tau = 604800.0 # Decay constant for learning: e^(-age/tau), where age is in seconds (default = 1 week)
[workspace.filter]
mode = "Exclude" # Include, Exclude
programs = [] # List of program classes you wish to either include or exclude
[floating]
frequency = 5 # How often nest will look for new floating windows
[floating.filter]
mode = "Include" # Include, Exclude
programs = [] # List of program classes you wish to either include or exclude
[restore]
timeout = 120 # If a program closes before this timeout, you'll be returned to your previous workspace.
[restore.filter]
mode = "Include" # Include, Exclude
programs = [] # List of program classes you wish to either include or exclude