{"id":19691984,"url":"https://github.com/chrisyarbrough/unitycommandlinelauncher","last_synced_at":"2026-01-22T00:17:41.634Z","repository":{"id":206078003,"uuid":"715774110","full_name":"chrisyarbrough/UnityCommandLineLauncher","owner":"chrisyarbrough","description":"A command-line tool to open Unity projects and extend the Unity Hub functionality.","archived":false,"fork":false,"pushed_at":"2026-01-18T01:05:55.000Z","size":1112,"stargazers_count":4,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T07:28:54.762Z","etag":null,"topics":["cli","launcher","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","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/chrisyarbrough.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"Security.md","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":"2023-11-07T20:03:33.000Z","updated_at":"2026-01-18T01:05:58.000Z","dependencies_parsed_at":"2023-11-08T04:48:20.410Z","dependency_job_id":"345cf1c5-32f6-43bf-913c-9e9b4afdd0ca","html_url":"https://github.com/chrisyarbrough/UnityCommandLineLauncher","commit_stats":null,"previous_names":["chrisyarbrough/unitycommandlinelauncher"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/chrisyarbrough/UnityCommandLineLauncher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisyarbrough%2FUnityCommandLineLauncher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisyarbrough%2FUnityCommandLineLauncher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisyarbrough%2FUnityCommandLineLauncher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisyarbrough%2FUnityCommandLineLauncher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrisyarbrough","download_url":"https://codeload.github.com/chrisyarbrough/UnityCommandLineLauncher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisyarbrough%2FUnityCommandLineLauncher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28647978,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["cli","launcher","unity"],"created_at":"2024-11-11T19:12:02.203Z","updated_at":"2026-01-22T00:17:41.629Z","avatar_url":"https://github.com/chrisyarbrough.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unity Command Line Launcher\n\nA terminal command to open Unity projects quickly from the command line.\n\n![](doc/Screenshot_Open_Path.png)\n\n## Supported Platforms\n\n- macOS\n- Windows\n- Linux\n\n## Commands\n\n| Name                           | Description                                                                 |\n|--------------------------------|-----------------------------------------------------------------------------|\n| `open [path]`                  | Opens the Unity editor by searching for a project within path.              |\n| `open`                         | Shows a selection prompt of recent or favorite projects from the Unity Hub. |\n| `install [version]`            | Installs the Editor by version, fetching the revision, if necessary.        |\n| `install-missing`              | Installs all Unity versions used by projects but not installed.             |\n| `uninstall-unused`             | Uninstalls all Unity versions not used by any projects.                     |\n| `editor-revision [version]`    | Fetches the revision from Unity's API.                                      |\n| `editor-path [version]`        | Gets the installation directory of the Editor, if installed.                |\n| `editor-modules [version]`     | Lists installed modules for a Unity version.                                |\n| `project-version \u003cpath\u003e`       | Gets the Unity version information from a project.                          |\n| `project-path [path]`          | Gets the Unity project root directory from a search path.                   |\n| `projects-using [version]`     | Finds all projects that use a specific Unity version.                       |\n| `version-usage`                | Lists installed Unity versions and indicates which are used.                |\n| `create \u003cdirectory\u003e [version]` | Creates a new empty Unity project in the directory.                         |\n| `upm-git-url [path]`           | Generates a package git URL for Unity Package Manager from a project.       |\n| `hub`                          | Executes Unity Hub interactively or with additional CLI arguments.          |\n| `completion [shell]`           | Generates shell completion scripts (supports ZSH).                          |\n\n`path` can be a ProjectVersion.txt file or a directory (searches up and down for projects).\nIf a directory contains multiple Unity projects, an interactive prompt will request a single selection.\n\nIf `path` is omitted, it can be selected interactively from a prompt that shows recent projects from the Unity Hub.\nAdd the `--favorite` flag to show favorites instead.\n\nIf the `version` argument is omitted, an interactive prompt shows all installed editor versions.\n\n---\n\n## Installation\n\n### From Source (recommended)\n\n1. Clone the repository.\n2. Checkout a release tag and take note of the signature, e.g. `git tag -v v1.0.0`.\n3. Navigate to the project directory:\n   ```shell\n   cd src/ucll\n   ```\n4. Produce a binary:\n   ```shell\n   dotnet publish\n   ```\n5. Find the binary in e.g. `src/ucll/bin/osx-arm64/publish/`\n\n### Download Binaries\n\nOr, download a binary from the GitHub _Releases_ page.\n\nE.g. for macOS with an M4 Apple processor:\n`ucll-osx-arm64.tar.gz`\n\nSee [Security.md](Security.md) for instructions on how to verify the authenticity of your download.\n\n## Setup\n\nCreate an alias in your shell config (.zshrc, .shellrc, etc.):\n\n```shell\necho 'alias unity=\"~/UnityCommandLineLauncher/src/ucll/bin/Release/osx-arm64/publish/ucll\"' \u003e\u003e ~/.zshrc\n```\n\n\u003e The remainder of the guide assumes you have the alias named `unity` to run the `ucll` tool.\n\nOr add the binary location to your PATH variable.\n\n```shell\nexport PATH=$PATH:~/UnityCommandLineLauncher/src/ucll/bin/Release/osx-arm64/publish/\n```\n\nYou may need to make the file executable:\n\n```shell\nchmod +x ucll\n```\n\n### Interaction Selection Prompt\n\nVarious commands have optional parameters which show a selection prompt:\n\n- Use the arrow keys to select an item and press Enter to confirm\n- Type on the keyboard to start searching.\n\n### Enhanced Fuzzy Search (Optional)\n\nInstall [fzf](https://github.com/junegunn/fzf) 0.67.0 or newer:\n\n```shell\nbrew install fzf\n```\n\nWith `fzf` installed, the interactive project selection (`unity open`) will use enhanced matching:\n\n- **Acronyms**: `cfp` finds \"core-frontend-platform\"\n- **Typo tolerance**: `sigle-sign` finds \"single-sign-on\"\n\nPress the ESC key to cancel the prompt.\n\n![](doc/Screenshot_Open_Search.png)\n\nIf `fzf` is not installed, the built-in search will be used as a fallback.\nPress CTRL + C to cancel the prompt. Known bug: This will leave the console cursor hidden.\n\n### Shell Completion (Optional)\n\n`ucll` supports generating shell completion scripts to enable tab completion for commands and options.\n\n#### ZSH Setup\n\n1. **Generate the completion script:**\n   ```shell\n   ucll completion \u003e ~/.zsh/completions/_ucll\n   ```\n\n2. **Enable completions in your `~/.zshrc` (if not already configured):**\n   ```shell\n   # Add completion directory to fpath\n   fpath=(~/.zsh/completions $fpath)\n\n   # Initialize completion system\n   autoload -Uz compinit \u0026\u0026 compinit\n   ```\n\n3. **Reload your shell:**\n   ```shell\n   exec zsh\n   ```\n   Or simply open a new terminal window.\n\n#### Usage\n\nOnce installed, you can use tab completion:\n\n- `ucll \u003cTAB\u003e` - Shows all available commands\n- `ucll open \u003cTAB\u003e` - Shows options like `--favorite`, `--code-editor`, `--dry-run`\n- `ucll version-usage \u003cTAB\u003e` - Shows options like `--plaintext`, `--modules`\n\n#### Updating Completions\n\nWhen you update `ucll` or new commands are added, regenerate the completion script:\n\n```shell\nucll completion \u003e ~/.zsh/completions/_ucll\nexec zsh\n```\n\n### Unity Hub\n\n- Ensure version 3.15.4 or newer is installed (https://unity.com/download)\n\n---\n\n## Usage\n\nDiscover available commands and options:\n\n```shell\nunity --help\n```\n\nShow more info about a command:\n\n```shell\nunity open --help\n```\n\nForward additional arguments to Unity Hub/Editor by separating them with a `--`:\n\n```shell\nunity open path/to/project -- -batchmode -quit\n```\n\n```shell\nunity install 2022.3.10f1 -- --module webgl\n```\n\n## Features\n\n- Opens Unity projects from the terminal (faster than using the Unity Hub GUI)\n- Interactive project selection from Unity Hub's recent projects (optional favorites filter)\n- Detects Unity Editor version from projects\n- Installs missing Unity Editor versions via Unity Hub\n- Fetches changeset info from Unity API when missing in ProjectVersion.txt (e.g. legacy projects)\n- Forwards additional Unity CLI arguments (e.g. `-batchmode -quit`)\n- Auto-detects Unity Hub and Editor installation paths\n\n## Configuration\n\n\u003e If Unity Hub and the editors are installed in their default location, there should be no configuration needed.\n\nInstallations are detected in the following order:\n\n1. Environment variables (optional, see table below)\n2. Default paths on platform\n3. Search heuristic to find the paths\n\nEnvironment variables are optional but speed up execution for non-default installations.\n\n| Platform | Environment Variable Example                                                            |\n|----------|-----------------------------------------------------------------------------------------|\n| macOS    | `UNITY_EDITOR_PATH=\"/Applications/Unity/Hub/Editor/{0}/Unity.app/Contents/MacOS/Unity\"` |\n|          | `UNITY_HUB_PATH=\"/Applications/Unity Hub.app/Contents/MacOS/Unity Hub\"`                 |\n|          |                                                                                         |\n| Windows  | `UNITY_EDITOR_PATH=\"C:\\Program Files\\Unity\\Hub\\Editor\\{0}\\Editor\\Unity.exe\"`            |\n|          | `UNITY_HUB_PATH=\"C:\\Program Files\\Unity Hub\\Unity Hub.exe\"`                             |\n|          |                                                                                         |\n| Linux    | `UNITY_EDITOR_PATH=\"/home/\u003cuser\u003e/Unity/Hub/Editor/{0}/Editor/Unity\"`                    |\n|          | `UNITY_HUB_PATH=\"/home/\u003cuser\u003e/Applications/Unity Hub.AppImage\"`                         |\n\nThe placeholder `{0}` is part of the path pattern and will be replaced with the Editor version at runtime.\n\n## Tips \u0026 Examples\n\nThe command API is intentionally kept simple and (hopefully) logical.\nSave your favorite invocations as aliases to make the most out of this tool:\n\n```\nalias uo=\"ucll open --code-editor\"\n```\n\nWith this, opening a Unity project and the IDE in the current directory becomes a breeze:\n\n```\nuo .\n```\n\nRemember to take advantage of the builtin search to interactively select from multiple projects:\n\n```\nuo ~/repos\n```\n\nYou can use the `project-path` command to cd into a directory (e.g. for updating git in a project) before opening Unity:\n\n```shell\ncd $(unity project-path)\n```\n\n## Design Background\n\n### Problems\n\n- Unity Hub is slow to open and requires manual project management\n- GUI-based workflows are cumbersome for multiple projects\n- Unity Hub CLI has limitations: requires hardcoded paths, needs changeset info for installations, requires architecture\n  detection on macOS\n\n### Solutions\n\n- Terminal access is faster (global hotkeys, IDE integration, Finder context menu)\n- This tool streamlines the Unity Hub API with a better UX\n\n## Development\n\nSee the [Developer Readme](src/ucll/DeveloperReadme.md) to see how to build the .NET source.\n\n## Future \u0026 Contributions\n\nI consider the API pre version 1.0.0 experimental. Let's collaborate on defining the overall command structure.\nOnce it has settled a bit and we have automated Docker/VM tests, we can publish a stable release version.\n\nIf the tool receives enough stars/forks, we can publish it to _Homebrew_ and similar package managers.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisyarbrough%2Funitycommandlinelauncher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrisyarbrough%2Funitycommandlinelauncher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisyarbrough%2Funitycommandlinelauncher/lists"}