{"id":36399940,"url":"https://github.com/vincbro/nest","last_synced_at":"2026-01-11T16:02:58.123Z","repository":{"id":317278717,"uuid":"1066733453","full_name":"vincbro/nest","owner":"vincbro","description":"an intelligent window placement system for Hyprland","archived":false,"fork":false,"pushed_at":"2026-01-10T01:17:57.000Z","size":12949,"stargazers_count":31,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-10T23:23:43.449Z","etag":null,"topics":["automation","hyprland","nest","rust","tool"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/hypr-nest","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vincbro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T22:10:57.000Z","updated_at":"2026-01-10T01:17:01.000Z","dependencies_parsed_at":"2025-09-30T00:36:44.373Z","dependency_job_id":null,"html_url":"https://github.com/vincbro/nest","commit_stats":null,"previous_names":["vincentbrodin/nest","vincbro/nest"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/vincbro/nest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincbro%2Fnest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincbro%2Fnest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincbro%2Fnest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincbro%2Fnest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vincbro","download_url":"https://codeload.github.com/vincbro/nest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincbro%2Fnest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28312206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","hyprland","nest","rust","tool"],"created_at":"2026-01-11T16:02:57.478Z","updated_at":"2026-01-11T16:02:58.118Z","avatar_url":"https://github.com/vincbro.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\" style=\"margin-bottom: 0px !important;\"\u003e\n  \u003cimg width=\"200\" src=\"./assets/nest_logo.png\" alt=\"nest logo\" align=\"center\"\u003e\n\u003c/p\u003e\n**Your windows always find their way home.**\nnest is an intelligent window placement system for [Hyprland](https://github.com/hyprwm/Hyprland).\nIt learns where you like your apps to live and ensures they always open in the right workspace, no hunting, no dragging, no friction.\nThink of it like [zoxide](https://github.com/ajeetdsouza/zoxide), but for your windows.\n\n\n## Quick Demo\n\n![demo](./assets/demo.gif)\n\n## What makes nest special\nUnlike traditional window rules, which are static (*you set them up once, and if your habits change, you have to update them yourself.*),\nnest is dynamic, adaptive, and invisible.\n\nIt’s window rules on **steroids**: automatic, effortless, and always in sync with your habits.\n\n**Here’s what sets it apart:**\n- **Learns your habits** - nest observes where you place your apps and remembers it automatically. No manual rules, no configs.\n- **Workspace aware** - your apps consistently open in the workspaces you expect (browser on 2, terminal on 1, etc.).\n- **Floating window memory** - optionally restores the size, position, and state of floating windows.\n- **Seamless experience** - runs quietly in the background; you should never notice it working.\n- **Adaptive by design** - as your habits change, nest learns and adapts with you.\n- **Lightweight** - minimal footprint, no unnecessary overhead, just smooth automation.\n\nThe goal of nest is to feel like an extension of your workflow, not another tool to manage.\n\n## Growing with you\nnest is constantly evolving.\nFeedback isn’t just welcome, it’s part of the process.\nWell-written ideas and suggestions often make it into the next release.\n\nIf you have feedback, open an issue or start a discussion - your input directly helps shape nest’s future.\n\n##  Installation\n\n### Cargo\n```bash\ncargo install hypr-nest\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/vincbro/nest.git \ncd nest\ncargo build --release\n```\n\n## Setup\n\nAdd this line to your Hyprland config:\n\n### Cargo\n```conf\nexec-once = nest\n```\n\n### From Source\n```conf\nexec-once = /PATH/TO/nest/target/release/nest\n```\n\nOn first run, nest will create a config directory at `~/.config/nest/` with the following files:\n\n- `config.toml` – configuration settings\n- `output.txt` – program output/logs\n- `storage.txt` – stored workspace data\n    \n## Configuration\n\nExample `config.toml`:\n\n```toml\nsave_frequency = 10 # Seconds between saves\nlog_level = \"INFO\" # OFF, ERROR, WARN, INFO, DEBUG, TRACE\n\n[workspace]\nbuffer = 30 # Number of records nest will keep per program class\ntau = 604800.0 # Decay constant for learning: e^(-age/tau), where age is in seconds (default = 1 week)\n\n[workspace.filter]\nmode = \"Exclude\" # Include, Exclude\nprograms = [] # List of program classes you wish to either include or exclude\n\n[floating]\nfrequency = 5 # How often nest will look for new floating windows\n\n[floating.filter]\nmode = \"Include\" # Include, Exclude\nprograms = [] # List of program classes you wish to either include or exclude\n\n[restore]\ntimeout = 120 # If a program closes before this timeout, you'll be returned to your previous workspace.\n\n[restore.filter]\nmode = \"Include\" # Include, Exclude\nprograms = [] # List of program classes you wish to either include or exclude\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvincbro%2Fnest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvincbro%2Fnest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvincbro%2Fnest/lists"}