{"id":15507024,"url":"https://github.com/kantord/enwiro","last_synced_at":"2026-05-25T23:04:59.016Z","repository":{"id":216824675,"uuid":"742449415","full_name":"kantord/enwiro","owner":"kantord","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-20T12:55:31.000Z","size":20257,"stargazers_count":8,"open_issues_count":107,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-20T17:30:45.110Z","etag":null,"topics":["i3","i3-env","i3config","i3wm","worktree-manager","worktrees"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kantord.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":"2024-01-12T14:01:44.000Z","updated_at":"2026-05-20T12:18:38.000Z","dependencies_parsed_at":"2024-02-05T04:25:53.930Z","dependency_job_id":"1abb4bfb-1823-460b-be89-62957e1bcf2c","html_url":"https://github.com/kantord/enwiro","commit_stats":null,"previous_names":["kantord/enwiro"],"tags_count":144,"template":false,"template_full_name":null,"purl":"pkg:github/kantord/enwiro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kantord%2Fenwiro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kantord%2Fenwiro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kantord%2Fenwiro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kantord%2Fenwiro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kantord","download_url":"https://codeload.github.com/kantord/enwiro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kantord%2Fenwiro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33413623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T18:09:33.147Z","status":"ssl_error","status_checked_at":"2026-05-23T18:09:31.380Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["i3","i3-env","i3config","i3wm","worktree-manager","worktrees"],"created_at":"2024-10-02T09:29:33.676Z","updated_at":"2026-05-25T23:04:58.996Z","avatar_url":"https://github.com/kantord.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# enwiro\n\nEnwiro's aims to make window management as useful and convenient as possible\nwith the goal of making you more productive.\n\nThe core feature of Enwiro is connecting your window manager's \"workspace\" (or\nsimilar) feature with separate [environments](#environment) that allow you to\nwork with different projects or workflows.\n\nEnwiro is window-manager-agnostic and relies on adapters to support different\ntypes of window managers and operating systems. Even if your window manager is\nnot currently supported, it should be simple enough to create an adapter for it.\n\nAt their core, environments are simple working directories, and they might be\ngenerated using different plugins called [cookbooks](#cookbook).\n\nEnwiro is the successor to [i3-env](https://github.com/kantord/i3-env).\n\n## Usage\n\n### Integration with desktop environment\n\n`enwiro` integrates with your desktop environment using adapters such as\n`enwiro-adapter-i3wm`. Adapters implement a set of basic features which `enwiro`\ncan use in order to connect to your operating system's graphical environment.\n\nThe adapter will provide `enwiro` with an environment name (based on your\ncurrently active desktop workspace). You can check your adapter's README to\nknow how the environment name is derived.\n\n#### Currently available adapters:\n\n- `enwiro-adapter-i3wm` supports i3\n\n#### Configuring desktop environment integration\n\n`enwiro` adapters have names prefixed with `enwiro-adapter-` and can be\ninstalled using `cargo`. For example, to install an adapter for i3, you can run\n\n`cargo install enwiro-adapter-i3wm`.\n\nIn your configuration file, set `adapter` to your desired adapter. For example,\nto use `enwiro-adapter-i3wm`, set `adapter` to `i3wm`.\n\n```toml\nadapter = \"i3wm\"\n```\n\n#### Updating\n\nThe most convenient way to update all enwiro-related packages at once is:\n\n```\ncargo install-update -a\n```\n\nThis requires [`cargo-update`](https://crates.io/crates/cargo-update), which\nyou can install with `cargo install cargo-update`.\n\n## Concepts\n\n### Environment\n\n\u003cimg align=\"right\" src=\"environment.png\" width=\"250\" /\u003e\n\nAn environment is a local folder or a symbolic link pointing to a folder. To define\nan environment, create a folder or a symbolic link inside your `workspaces_directory`\n(`$HOME/.enwiro_envs` by default). The name of the folder or symlink will be used\nas the environment name.\n\nAn environment serves as a working directory for your applications, such as your\nterminal or your code editor. To run a command inside an environment, switch to a\ndesktop workspace with a name matching the name of the environment you want to use\nand run  `enw wrap \u003cCOMMAND\u003e [-- [COMMAND_ARGS]...]`. If no matching environment\nis found but a matching recipe exists, the environment will be created automatically.\nIf no environment or recipe is found, it will default to using your home directory.\n\nYou can also use `enw activate \u003cNAME\u003e` to switch to (or create) a workspace for\na given environment. This is the complement to `enw wrap`: while `wrap` runs a\ncommand inside an environment, `activate` selects which environment is active in\nyour desktop.\n\nAn environment variable `ENWIRO_ENV` containing the `enwiro` environment name\nwill also be added before running commands with `enw wrap ...`.\n\nAn environment could be linked to:\n\n- Any branch of a Git repository checked out on your local computer\n- A folder on a remote computer\n- Any folder on your computer\n\n### Recipe\n\n\u003cimg align=\"right\" src=\"recipe.png\" width=\"250\" /\u003e\n\nRecipes are automatically generated blueprints for environments.\n\nWhile they do not exist as environments on your computer yet, you can interact\nwith them as if they were environments and when you do so, they will be created\non the fly for you.\n\nRecipes can have a hierarchical nature. For instance, the recipe for a Git\nrepository might refer to the main working tree of the Git repository, and serve\nas the \"parent recipe\" to recipes for creating new worktrees for the same Git\nrepository.\n\n### Cookbook\n\n\u003cimg align=\"right\" src=\"cookbook.png\" width=\"250\" /\u003e\n\nCookbooks are plugins that contain recipes. You can add more recipes to your\nenwiro by installing and configuring more cookbooks.\n\nList of currently available cookbooks:\n\n- `enwiro-cookbook-chezmoi`: Use your chezmoi source directory as an environment\n- `enwiro-cookbook-git`: Generate environments using Git repositories\n- `enwiro-cookbook-github`: Discover repositories from GitHub using the GraphQL API\n- `enwiro-cookbook-obsidian`: Discover Obsidian vaults and auto-open Obsidian/Zotero on activation\n\n### Bridge\n\nBridges provide close integration between enwiro and other applications. A bridge\ntranslates between enwiro and an external tool's interface, acting as glue that\nconnects the two.\n\nList of currently available bridges:\n\n- `enwiro-bridge-rofi`: Browse and activate environments from [rofi](https://github.com/davatorium/rofi)\n\n### Daemon\n\n`enw activate` and `enw list-all` need a background daemon. Some cookbooks\nfetch recipes over the network (the GitHub cookbook, for example), so enwiro\ndoes that work in a daemon to keep the foreground commands fast. Both\ncommands will fail if the daemon is not running.\n\nStart it manually:\n\n```\nenwiro-daemon\n```\n\nOr check the systemd user service:\n\n```\nsystemctl --user status enwiro-daemon.service\n```\n\n- Recipes are refreshed periodically while the user is active\n- SIGTERM, SIGINT, and SIGHUP all shut it down cleanly\n- Runtime files live in `$XDG_RUNTIME_DIR/enwiro/` (or\n  `$XDG_CACHE_HOME/enwiro/run/` as fallback)\n\n### Notifications\n\nEnwiro sends desktop notifications for important events using the system's\nnotification service (via [notify-rust](https://crates.io/crates/notify-rust)):\n\n- **Environment creation**: when a new environment is cooked from a recipe\n- **Errors**: when workspace activation or environment setup fails\n\nThis is especially useful when enwiro is triggered from a keybinding or bridge\nwhere there is no terminal to show output. If the notification service is\nunavailable, error messages fall back to stderr.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkantord%2Fenwiro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkantord%2Fenwiro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkantord%2Fenwiro/lists"}