{"id":19832627,"url":"https://github.com/pitkley/i3nator","last_synced_at":"2025-05-01T16:33:38.448Z","repository":{"id":37828959,"uuid":"92970188","full_name":"pitkley/i3nator","owner":"pitkley","description":"i3nator is Tmuxinator for the i3 window manager","archived":false,"fork":false,"pushed_at":"2023-02-28T04:57:43.000Z","size":4654,"stargazers_count":63,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-31T11:45:18.828Z","etag":null,"topics":["cli","i3","i3wm","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pitkley.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-31T17:15:09.000Z","updated_at":"2024-06-04T16:25:13.000Z","dependencies_parsed_at":"2023-02-13T16:31:09.302Z","dependency_job_id":null,"html_url":"https://github.com/pitkley/i3nator","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitkley%2Fi3nator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitkley%2Fi3nator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitkley%2Fi3nator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pitkley%2Fi3nator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pitkley","download_url":"https://codeload.github.com/pitkley/i3nator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224268705,"owners_count":17283536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cli","i3","i3wm","rust"],"created_at":"2024-11-12T11:38:10.584Z","updated_at":"2024-11-12T11:38:11.327Z","avatar_url":"https://github.com/pitkley.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# i3nator\n\ni3nator is [Tmuxinator][gh-tmuxinator] for the [i3 window manager][i3wm].\n\nIt allows you to manage what are called \"projects\", which are used to easily restore saved i3\nlayouts (see [Layout saving in i3][i3wm-layout-saving]) and extending i3's base functionality\nby allowing you to automatically start applications too.\n\n* [Documentation][i3nator-docs]\n* [GitHub source repository][i3nator-gh]\n* [Example configurations][i3nator-examples]\n\n## Installation\n\nYou have multiple options to install i3nator:\n\n1. If you have a recent Rust with Cargo installed, you can install `i3nator` directly from\n   crates.io:\n\n    ```console\n    $ cargo install i3nator\n    ```\n\n2. Alternatively, you can download the supplied static binary from the [release\n   page][i3nator-releases], this should work without any additional dependencies.\n\n3. Another option is to install from directly from source (this again requires a recent Rust\n   installation):\n\n    ```console\n    $ git clone https://github.com/pitkley/i3nator.git\n    $ cd i3nator\n    $ cargo install\n    ```\n\n**Note:** If you want to be able to use the automatic command execution feature, you will need\nto install [`xdotool`][xdotool].\n\n## Usage\n\n\u003c!-- usage-main --\u003e\n```text\ni3nator 1.2.0\nPit Kleyersburg \u003cpitkley@googlemail.com\u003e\ni3nator is Tmuxinator for the i3 window manager\n\nUSAGE:\n    i3nator \u003cSUBCOMMAND\u003e\n\nFLAGS:\n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nSUBCOMMANDS:\n    copy      Copy an existing project to a new project\n    delete    Delete existing projects\n    edit      Open an existing project in your editor\n    help      Prints this message or the help of the given subcommand(s)\n    info      Show information for the specified project\n    layout    Manage layouts which can used in projects\n    list      List all projects\n    local     Run a project from a local TOML-file\n    new       Create a new project and open it in your editor\n    rename    Rename a project\n    start     Start a project according to it's configuration\n    verify    Verify the configuration of the existing projects\n```\n\u003c!-- /usage-main --\u003e\n\nEvery command -- except `layout` -- is for managing your projects, i.e. creating, editing,\nstarting and potentially deleting them.\n\n`layout` is a bit special, because it is most of the commands used for projects, except for i3\nlayouts:\n\n\u003c!-- usage-layout --\u003e\n```text\ni3nator-layout 1.2.0\nManage layouts which can used in projects\n\nUSAGE:\n    i3nator layout \u003cSUBCOMMAND\u003e\n\nFLAGS:\n    -h, --help    Prints help information\n\nSUBCOMMANDS:\n    copy      Copy an existing layout to a new layout\n    delete    Delete existing layouts\n    edit      Open an existing layout in your editor\n    help      Prints this message or the help of the given subcommand(s)\n    info      Show information for the specified layout\n    list      List all layouts\n    new       Create a new layout and open it in your editor\n    rename    Rename a layout\n```\n\u003c!-- /usage-layout --\u003e\n\nThese commands allow you to manage [i3 layouts][i3wm-layout-saving] in addition to the actual\nprojects which will be able to use and reuse them.\n\n## Examples\n\n(See [here][i3nator-examples] for additional examples. See also the [`types::Config` API\ndocumentation][i3nator-docs-types-Config] for detailed documentation on the configuration\nparameters.)\n\n### Full workflow\n\n1. Open all applications you want and lay them out on a workspace as desired.\n\n2. Save the workspace's layout using [`i3-save-tree`][i3wm-save-tree], feeding the layout\n   directly into i3nator's layout management:\n\n    ```console\n    $ i3-save-tree --workspace 1 | i3nator layout new -t - mylayout\n    ```\n\n    If you don't want the layout managed by i3nator, you can alternatively:\n    * copy the layout to your clipboard, and insert it directly in your project configuration\n      later *or*\n    * save it to a file on your disk, and reference this file-path in your configuration later.\n\n    If you are using i3nator's layout management, the above command should drop you into an\n    editor, ready for step 3.\n\n3. Modify the saved layout to accurately match created applications. See [Editing layout\n   files][i3wm-modify-layout] on how to do this.\n\n    If you copied the layout to your clipboard, you will be able to do this in step 5.\n\n4. Create a new project:\n\n    ```console\n    $ i3nator new myproject\n    Created project 'myproject'\n    Opening your editor to edit 'myproject'\n    ```\n\n    This will open your default editor with a configuration template. If it doesn't, you have to\n    specify either the `$VISUAL` or the `$EDITOR` environment variable.\n\n    You can also simply edit the configuration file directly. Use `i3nator info \u003cPROJECT\u003e` to\n    retreive its path.\n\n5. Modify the template to fit your needs. This includes:\n\n   1. Setting the main working directory.\n   2. Setting the destination workspace (this is optional, if not specified, the active one\n      will be used).\n   3. Specifying which layout to use. If you have passed the layout to i3nator in step 2, you\n      can simply enter its name here, which in case two was `mylayout`.\n\n        Alternatively you can either supply a path to the file containing the layout, or you can\n        paste the layout from step 2 directly into your project file as a multi-line string. At\n        this point you will also be able to modify the layout to match applications correctly.\n\n   4. Configuring which applications to start and how to start them. This is done by setting\n      the `command` to the full command to be used to start the application and optionally\n      configuring a different working directory if desired.\n\n        If you want to execute additional commands or keypresses in the started applications,\n        you can also define `exec`.\n\n    The resulting configuration could look something like this:\n\n    ```toml\n    [general]\n    working_directory = \"/path/to/my/working/directory\"\n    workspace = \"1\"\n    layout = \"mylayout\"\n\n    [[applications]]\n    command = \"mycommand --with 'multiple args'\"\n    exec = [\"command one\", \"command two\"]\n    ```\n\n6. Save and close your editor. This will automatically verify the created configuration. If\n   there is an issue it will tell you what failed and allow you to reedit the file directly or\n   ignore the error and exit.\n\nWith these prerequisites fulfilled, you are now able to start a configuration which appends\nyour layout to a specified workspace and starts the configured applications:\n\n```console\n$ i3nator start myproject\n```\n\n## \u003ca name=\"versionbumppolicy\"\u003e\u003c/a\u003e Version bump policy\n\nIn general, the versioning scheme follows the semantic versioning guidelines:\n\n* The patch version is bumped when backwards compatible fixes are made (this includes updates to dependencies).\n* The minor version is bumped when new features are introduced, but backwards compatibility is retained.\n* The major version is bumped when a backwards incompatible change was made.\n\nSpecial case:\n\n* A bump in the minimum supported Rust version (MSRV), which is currently 1.54.0, will be done in patch version updates (i.e. they do not require a major or minor version bump).\n\n## License\n\ni3nator is licensed under either of\n\n* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or\n  http://www.apache.org/licenses/LICENSE-2.0)\n* MIT license ([LICENSE-MIT](LICENSE-MIT) or\n  http://opensource.org/licenses/MIT)\n\nat your option.\n\n#### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in i3nator by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n[gh-tmuxinator]: https://github.com/tmuxinator/tmuxinator\n[i3nator-docs]: https://docs.rs/i3nator\n[i3nator-docs-types-Config]: https://docs.rs/i3nator/*/i3nator/types/struct.Config.html\n[i3nator-examples]: https://github.com/pitkley/i3nator/tree/main/examples\n[i3nator-gh]: https://github.com/pitkley/i3nator\n[i3nator-releases]: https://github.com/pitkley/i3nator/releases\n[i3wm]: https://i3wm.org/\n[i3wm-modify-layout]: https://i3wm.org/docs/layout-saving.html#_editing_layout_files\n[i3wm-layout-saving]: https://i3wm.org/docs/layout-saving.html\n[i3wm-save-tree]: https://i3wm.org/docs/layout-saving.html#_saving_the_layout\n[xdotool]: https://github.com/jordansissel/xdotool\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpitkley%2Fi3nator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpitkley%2Fi3nator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpitkley%2Fi3nator/lists"}