> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/unigetui/reference/cli.md).

# Command-line interface

Every UniGetUI command-line command, option, startup parameter, environment variable, deep link and installer switch.

The `unigetui` command controls a running UniGetUI session from a terminal or a script: search, install, update and remove packages, manage settings, sources, bundles and backups, and read logs. The CLI talks to the session through the local [automation API](/unigetui/reference/ipc-api.md).

{% hint style="info" %}
If `unigetui` isn't recognized in your shell, run the UniGetUI executable from its installation folder instead, for example `UniGetUI.exe` on Windows.
{% endhint %}

## Requirements

The CLI needs a UniGetUI session to connect to:

* **Desktop session**: UniGetUI is open or running in the notification area, and ***Enable background api (UniGetUI Widgets and Sharing, port 7058)*** is on in ***Settings*** – ***Experimental settings and developer options***.
* **Headless session**: UniGetUI was started with `--headless`. See [Headless sessions](#headless-sessions).

If no session can be reached, the command exits with code `3`.

## Quick start

```powershell
unigetui status
unigetui app status
unigetui package search --manager dotnet-tool --query dotnetsay
unigetui package install --manager dotnet-tool --id dotnetsay --version 2.1.4 --scope Global
unigetui operation wait --id 123 --timeout 300
```

## Syntax

* Nouns accept the singular or plural: `operation`/`operations`, `package`/`packages`, `manager`/`managers`, `source`/`sources`, `shortcut`/`shortcuts`, `log`/`logs`, `backup`/`backups`, `bundle`/`bundles`.
* `startmenu` is accepted for `start-menu`, and `folders` for `folder`.
* Boolean options take an explicit value: `--enabled true`, `--wait false`.
* `--detach` is shorthand for `--wait false` on package operations. The command returns an operation ID right away.
* Aliases:
  * `--id` maps to `--package-id` or `--operation-id`, depending on the command.
  * `--source` maps to `--package-source`.
  * `--source-name` and `--source-url` map to `--name` and `--url` on `source add` and `source remove`.
  * `--name` maps to `--key` on `backup cloud download` and `backup cloud restore`.
* `--manager` takes a stable manager ID, not the name shown in the app: `apt`, `bun`, `cargo`, `chocolatey`, `dnf`, `dotnet-tool`, `flatpak`, `homebrew`, `npm`, `pacman`, `pip`, `pwsh`, `scoop`, `snap`, `vcpkg`, `winget`, `winps`. Only the managers of the current platform work. See [Supported package managers](/unigetui/reference/package-managers.md).

## Connection options

By default, the CLI finds the running session on its own. Use these to target a specific one.

<table><thead><tr><th width="250">OPTION</th><th>ENVIRONMENT VARIABLE</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--transport {named-pipe|tcp}</code></td><td><code>UNIGETUI_IPC_API_TRANSPORT</code></td><td>Transport used to reach the session. Default: <code>named-pipe</code>.</td></tr><tr><td><code>--tcp-port &#x3C;port></code></td><td><code>UNIGETUI_IPC_API_PORT</code></td><td>TCP port of the session. Only with <code>tcp</code>.</td></tr><tr><td><code>--pipe-name &#x3C;name-or-path></code></td><td><code>UNIGETUI_IPC_API_PIPE_NAME</code></td><td>Named pipe of the session. On Windows, a pipe name. On macOS and Linux, a relative name resolves under <code>/tmp</code> and an absolute path is used as the exact Unix socket path.</td></tr></tbody></table>

## Exit codes

<table><thead><tr><th width="250">CODE</th><th>MEANING</th></tr></thead><tbody><tr><td><code>0</code></td><td>Success.</td></tr><tr><td><code>1</code></td><td>The command failed.</td></tr><tr><td><code>2</code></td><td>A parameter is invalid.</td></tr><tr><td><code>3</code></td><td>The automation API is unavailable (no session reached).</td></tr><tr><td><code>4</code></td><td>Unknown command.</td></tr></tbody></table>

## Commands

### Session

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>status</code></td><td></td><td></td><td>Returns the transport, endpoint and build information of the session.</td></tr><tr><td><code>version</code></td><td></td><td></td><td>Returns the UniGetUI build number.</td></tr></tbody></table>

### Application

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>app status</code></td><td></td><td></td><td>Returns the session state: headless or not, current page, supported UI actions.</td></tr><tr><td><code>app show</code></td><td></td><td></td><td>Shows and focuses the UniGetUI window.</td></tr><tr><td><code>app navigate</code></td><td><code>--page &#x3C;page></code></td><td><code>--manager &#x3C;id></code>, <code>--help-attachment &#x3C;path></code></td><td>Opens a page: <code>discover</code>, <code>updates</code>, <code>installed</code>, <code>bundles</code>, <code>settings</code>, <code>managers</code>, <code>own-log</code>, <code>manager-log</code>, <code>operation-history</code>, <code>help</code>, <code>release-notes</code>, <code>about</code>.</td></tr><tr><td><code>app quit</code></td><td></td><td></td><td>Closes the session gracefully, including a headless one.</td></tr></tbody></table>

### Operations

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>operation list</code></td><td></td><td></td><td>Lists running, queued and finished operations.</td></tr><tr><td><code>operation get</code></td><td><code>--id &#x3C;operation-id></code></td><td></td><td>Returns everything about one operation.</td></tr><tr><td><code>operation output</code></td><td><code>--id &#x3C;operation-id></code></td><td><code>--tail &#x3C;n></code></td><td>Returns the output lines of one operation.</td></tr><tr><td><code>operation wait</code></td><td><code>--id &#x3C;operation-id></code></td><td><code>--timeout &#x3C;seconds></code>, <code>--delay &#x3C;seconds></code></td><td>Waits until the operation finishes.</td></tr><tr><td><code>operation cancel</code></td><td><code>--id &#x3C;operation-id></code></td><td></td><td>Cancels a queued or running operation.</td></tr><tr><td><code>operation retry</code></td><td><code>--id &#x3C;operation-id></code></td><td><code>--mode &#x3C;mode></code></td><td>Runs the operation again. Available modes are listed in the operation information.</td></tr><tr><td><code>operation reorder</code></td><td><code>--id &#x3C;operation-id></code>, <code>--action &#x3C;run-now|run-next|run-last></code></td><td></td><td>Moves a queued operation in the queue.</td></tr><tr><td><code>operation forget</code></td><td><code>--id &#x3C;operation-id></code></td><td></td><td>Removes a finished operation from the list.</td></tr></tbody></table>

### Package managers

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>manager list</code></td><td></td><td></td><td>Lists the package managers and their capabilities.</td></tr><tr><td><code>manager maintenance</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Returns maintenance information for one manager.</td></tr><tr><td><code>manager reload</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Reloads one manager.</td></tr><tr><td><code>manager set-executable</code></td><td><code>--manager &#x3C;id></code>, <code>--path &#x3C;path></code></td><td></td><td>Uses a custom executable, then reloads the manager.</td></tr><tr><td><code>manager clear-executable</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Removes the custom executable, then reloads the manager.</td></tr><tr><td><code>manager action</code></td><td><code>--manager &#x3C;id></code>, <code>--action &#x3C;action></code></td><td><code>--confirm</code></td><td>Runs a maintenance action specific to the manager.</td></tr><tr><td><code>manager enable</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Enables the manager.</td></tr><tr><td><code>manager disable</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Disables the manager.</td></tr><tr><td><code>manager notifications enable</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Turns on update notifications for the manager.</td></tr><tr><td><code>manager notifications disable</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Turns off update notifications for the manager.</td></tr></tbody></table>

### Sources

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>source list</code></td><td></td><td><code>--manager &#x3C;id></code></td><td>Lists sources, optionally for one manager.</td></tr><tr><td><code>source add</code></td><td><code>--manager &#x3C;id></code>, <code>--name &#x3C;source-name></code></td><td><code>--url &#x3C;source-url></code></td><td>Adds a source.</td></tr><tr><td><code>source remove</code></td><td><code>--manager &#x3C;id></code>, <code>--name &#x3C;source-name></code></td><td><code>--url &#x3C;source-url></code></td><td>Removes a source.</td></tr></tbody></table>

### Settings

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>settings list</code></td><td></td><td></td><td>Lists the regular settings and their keys.</td></tr><tr><td><code>settings get</code></td><td><code>--key &#x3C;key></code></td><td></td><td>Reads one regular setting.</td></tr><tr><td><code>settings set</code></td><td><code>--key &#x3C;key></code></td><td><code>--enabled true|false</code>, <code>--value &#x3C;text></code></td><td>Sets a setting, as a boolean or as text.</td></tr><tr><td><code>settings clear</code></td><td><code>--key &#x3C;key></code></td><td></td><td>Clears a text setting.</td></tr><tr><td><code>settings reset</code></td><td></td><td></td><td>Resets the regular settings.</td></tr><tr><td><code>settings secure list</code></td><td></td><td><code>--user &#x3C;name></code></td><td>Lists the secure (administrator-protected) settings of the current or given user.</td></tr><tr><td><code>settings secure get</code></td><td><code>--key &#x3C;key></code></td><td><code>--user &#x3C;name></code></td><td>Reads one secure setting.</td></tr><tr><td><code>settings secure set</code></td><td><code>--key &#x3C;key></code>, <code>--enabled true|false</code></td><td><code>--user &#x3C;name></code></td><td>Turns one secure setting on or off.</td></tr></tbody></table>

{% hint style="info" %}
Run `unigetui settings list` and `unigetui settings secure list` to see the available keys. What each setting does is described in [All settings](/unigetui/reference/settings.md).
{% endhint %}

### Desktop shortcuts

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>shortcut list</code></td><td></td><td></td><td>Lists tracked desktop shortcuts and whether each is kept or deleted.</td></tr><tr><td><code>shortcut set</code></td><td><code>--path &#x3C;path></code>, <code>--status &#x3C;keep|delete></code></td><td></td><td>Marks a shortcut to keep or delete.</td></tr><tr><td><code>shortcut reset</code></td><td><code>--path &#x3C;path></code></td><td></td><td>Clears the stored choice for one shortcut.</td></tr><tr><td><code>shortcut reset-all</code></td><td></td><td></td><td>Clears the stored choices for all shortcuts.</td></tr></tbody></table>

### Start Menu shortcuts

Windows only. The choice is stored by shortcut path and applied again each time an update recreates the shortcut. Paths outside a Start Menu `Programs` folder, and files that aren't `.lnk` or `.url` shortcuts, are rejected.

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>start-menu shortcut list</code></td><td></td><td></td><td>Lists tracked Start Menu shortcuts and whether each is kept or deleted.</td></tr><tr><td><code>start-menu shortcut set</code></td><td><code>--path &#x3C;path></code>, <code>--status &#x3C;keep|delete></code></td><td></td><td>Marks a Start Menu shortcut to keep or delete.</td></tr><tr><td><code>start-menu shortcut reset</code></td><td><code>--path &#x3C;path></code></td><td></td><td>Clears the stored choice for one shortcut.</td></tr><tr><td><code>start-menu shortcut reset-all</code></td><td></td><td></td><td>Clears all stored choices. Folder rules, and the shortcuts they moved, aren't affected.</td></tr></tbody></table>

### Start Menu folders

Windows only. A folder rule sets the subfolder of the current user's Start Menu `Programs` folder where a package keeps its shortcuts. UniGetUI applies it after every install and update, and deletes the moved shortcuts when the package is uninstalled.

* `--package` uses the `manager\PackageId` format, for example `winget\Python.Python.3.13`. The manager part is lowercase. The rule ignores the source, so two packages with the same manager and ID from different sources share one rule.
* `--folder` must be a subfolder of the Start Menu `Programs` folder. Absolute paths, `..` segments and the all-users Start Menu folder are rejected.

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>start-menu folder list</code></td><td></td><td></td><td>Lists folder rules. Packages that only have pending shortcuts are listed too, with an empty folder.</td></tr><tr><td><code>start-menu folder set</code></td><td><code>--package &#x3C;manager\id></code>, <code>--folder &#x3C;name></code></td><td><code>--relocate-existing</code></td><td>Creates a folder rule. <code>--relocate-existing</code> also moves the package's existing shortcuts.</td></tr><tr><td><code>start-menu folder remove</code></td><td><code>--package &#x3C;manager\id></code></td><td></td><td>Removes a package's folder rule.</td></tr></tbody></table>

### Logs

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>log app</code></td><td></td><td><code>--level &#x3C;n></code></td><td>Returns the UniGetUI application log.</td></tr><tr><td><code>log operations</code></td><td></td><td></td><td>Returns the operation history.</td></tr><tr><td><code>log manager</code></td><td></td><td><code>--manager &#x3C;id></code>, <code>--verbose</code></td><td>Returns the package manager logs.</td></tr></tbody></table>

### Backups

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>backup status</code></td><td></td><td></td><td>Returns the backup settings and the GitHub sign-in state.</td></tr><tr><td><code>backup local create</code></td><td></td><td></td><td>Creates a local backup.</td></tr><tr><td><code>backup github login start</code></td><td></td><td><code>--launch-browser</code></td><td>Starts the GitHub sign-in (device flow).</td></tr><tr><td><code>backup github login complete</code></td><td></td><td></td><td>Completes the pending GitHub sign-in.</td></tr><tr><td><code>backup github logout</code></td><td></td><td></td><td>Signs out of GitHub and removes the stored token.</td></tr><tr><td><code>backup cloud list</code></td><td></td><td></td><td>Lists cloud backups.</td></tr><tr><td><code>backup cloud create</code></td><td></td><td></td><td>Uploads a backup to the cloud.</td></tr><tr><td><code>backup cloud download</code></td><td><code>--key &#x3C;name></code></td><td></td><td>Downloads one cloud backup as bundle content.</td></tr><tr><td><code>backup cloud restore</code></td><td><code>--key &#x3C;name></code></td><td><code>--append</code></td><td>Imports one cloud backup into the current bundle.</td></tr></tbody></table>

### Bundles

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>bundle get</code></td><td></td><td></td><td>Returns the current bundle.</td></tr><tr><td><code>bundle reset</code></td><td></td><td></td><td>Empties the current bundle.</td></tr><tr><td><code>bundle import</code></td><td></td><td><code>--path &#x3C;path></code>, <code>--content &#x3C;text></code>, <code>--format &#x3C;ubundle|json|yaml|xml></code>, <code>--append</code></td><td>Imports a bundle from a file or raw content.</td></tr><tr><td><code>bundle export</code></td><td></td><td><code>--path &#x3C;path></code></td><td>Exports the current bundle, optionally to a file.</td></tr><tr><td><code>bundle add</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code>, <code>--version &#x3C;version></code>, <code>--scope &#x3C;scope></code>, <code>--pre-release</code>, <code>--selection &#x3C;search|installed|updates|auto></code></td><td>Finds a package and adds it to the bundle.</td></tr><tr><td><code>bundle remove</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code>, <code>--version &#x3C;version></code>, <code>--scope &#x3C;scope></code>, <code>--pre-release</code>, <code>--selection &#x3C;mode></code></td><td>Removes the matching packages from the bundle.</td></tr><tr><td><code>bundle install</code></td><td></td><td><code>--include-installed true|false</code>, <code>--elevated true|false</code>, <code>--interactive true|false</code>, <code>--skip-hash true|false</code></td><td>Installs the packages of the bundle.</td></tr></tbody></table>

### Packages

<table><thead><tr><th width="250">COMMAND</th><th>REQUIRED</th><th>OPTIONAL</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>package search</code></td><td><code>--query &#x3C;text></code></td><td><code>--manager &#x3C;id></code>, <code>--max-results &#x3C;n></code></td><td>Searches for packages.</td></tr><tr><td><code>package details</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code></td><td>Returns a package's details.</td></tr><tr><td><code>package versions</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code></td><td>Returns the installable versions, when the manager supports it.</td></tr><tr><td><code>package installed</code></td><td></td><td><code>--manager &#x3C;id></code></td><td>Lists installed packages.</td></tr><tr><td><code>package updates</code></td><td></td><td><code>--manager &#x3C;id></code></td><td>Lists available updates.</td></tr><tr><td><code>package install</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code>, <code>--version &#x3C;version></code>, <code>--scope &#x3C;scope></code>, <code>--pre-release</code>, <code>--elevated true|false</code>, <code>--interactive true|false</code>, <code>--skip-hash true|false</code>, <code>--architecture &#x3C;value></code>, <code>--location &#x3C;path></code>, <code>--wait true|false</code>, <code>--detach</code></td><td>Installs a package. Asynchronous mode returns an operation ID right away.</td></tr><tr><td><code>package download</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code>, <code>--version &#x3C;version></code>, <code>--scope &#x3C;scope></code>, <code>--wait true|false</code>, <code>--detach</code>, <code>--output &#x3C;path></code></td><td>Downloads a package's installer.</td></tr><tr><td><code>package reinstall</code></td><td><code>--id &#x3C;package-id></code></td><td>Same as <code>package install</code></td><td>Installs an installed package again.</td></tr><tr><td><code>package repair</code></td><td><code>--id &#x3C;package-id></code></td><td>Same as <code>package install</code>, plus <code>--remove-data true|false</code></td><td>Uninstalls, then reinstalls the package.</td></tr><tr><td><code>package update</code></td><td><code>--id &#x3C;package-id></code></td><td>Same as <code>package install</code></td><td>Updates one package.</td></tr><tr><td><code>package uninstall</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--source &#x3C;source></code>, <code>--scope &#x3C;scope></code>, <code>--remove-data true|false</code>, <code>--elevated true|false</code>, <code>--interactive true|false</code>, <code>--wait true|false</code>, <code>--detach</code></td><td>Uninstalls a package.</td></tr><tr><td><code>package show</code></td><td><code>--id &#x3C;package-id></code>, <code>--source &#x3C;source></code></td><td></td><td>Opens the package details in the UniGetUI window.</td></tr><tr><td><code>package ignored list</code></td><td></td><td></td><td>Lists ignored updates.</td></tr><tr><td><code>package ignored add</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--version &#x3C;version></code>, <code>--source &#x3C;source></code></td><td>Ignores a package's updates.</td></tr><tr><td><code>package ignored remove</code></td><td><code>--id &#x3C;package-id></code></td><td><code>--manager &#x3C;id></code>, <code>--version &#x3C;version></code>, <code>--source &#x3C;source></code></td><td>Stops ignoring a package's updates.</td></tr><tr><td><code>package update-all</code></td><td></td><td></td><td>Queues updates for every package that can be updated.</td></tr><tr><td><code>package update-manager</code></td><td><code>--manager &#x3C;id></code></td><td></td><td>Queues updates for every package of one manager.</td></tr></tbody></table>

## Headless sessions

Start UniGetUI with `--headless` to run the automation API without a window, for example on a build agent or in a script.

```powershell
UniGetUI.exe --headless
```

<table><thead><tr><th width="250">PARAMETER</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--ipc-api-transport {named-pipe|tcp}</code></td><td>Transport of the API. Default: <code>named-pipe</code>.</td></tr><tr><td><code>--ipc-api-port &#x3C;port></code></td><td>TCP port, with the <code>tcp</code> transport.</td></tr><tr><td><code>--ipc-api-pipe-name &#x3C;name-or-path></code></td><td>Pipe name, or Unix socket path on macOS and Linux.</td></tr></tbody></table>

Some commands depend on the window and behave differently headless:

<table><thead><tr><th width="250">COMMAND</th><th>IN A HEADLESS SESSION</th></tr></thead><tbody><tr><td><code>status</code>, <code>app status</code>, <code>app quit</code></td><td>Fully supported.</td></tr><tr><td><code>app show</code>, <code>app navigate</code></td><td>Fail: there's no window.</td></tr><tr><td><code>package show</code></td><td>Opens a UI flow, so it may fail or do nothing.</td></tr><tr><td><code>package update-all</code>, <code>package update-manager</code></td><td>May fail: they rely on the window to start the updates.</td></tr></tbody></table>

## Startup parameters

The UniGetUI executable also accepts these parameters.

<table><thead><tr><th width="250">PARAMETER</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>--daemon</code></td><td>Starts UniGetUI minimized to the notification area.</td></tr><tr><td><code>--updateapps</code></td><td>Forces the installation of available updates. Kept for compatibility.</td></tr><tr><td><code>--help</code>, <code>-h</code></td><td>Shows the CLI help.</td></tr><tr><td><code>--import-settings &#x3C;file></code></td><td>Imports settings from a JSON file. Existing settings are replaced.</td></tr><tr><td><code>--export-settings &#x3C;file></code></td><td>Exports settings to a JSON file, creating or overwriting it.</td></tr><tr><td><code>--enable-setting &#x3C;key></code>, <code>--disable-setting &#x3C;key></code></td><td>Turns one boolean setting on or off.</td></tr><tr><td><code>--set-setting-value &#x3C;key> &#x3C;value></code></td><td>Sets one text setting.</td></tr><tr><td><code>--enable-secure-setting &#x3C;key></code>, <code>--disable-secure-setting &#x3C;key></code></td><td>Turns one secure setting on or off for the current user. May need administrator rights.</td></tr><tr><td><code>--enable-secure-setting-for-user &#x3C;user> &#x3C;key></code>, <code>--disable-secure-setting-for-user &#x3C;user> &#x3C;key></code></td><td>Turns one secure setting on or off for the given user. May need administrator rights.</td></tr><tr><td><code>--no-corrupt-dialog</code></td><td>Shows the detailed crash report instead of the simplified dialog.</td></tr><tr><td><code>--delete-shortcuts &#x3C;path> [&#x3C;path>...]</code></td><td>Deletes desktop or Start Menu shortcuts, then quits. Used internally to remove shortcuts the current user can't delete. Only <code>.lnk</code> and <code>.url</code> files in a desktop or Start Menu folder are accepted.</td></tr><tr><td><code>--migrate-wingetui-to-unigetui</code></td><td>Migrates the data and shortcuts of a legacy WingetUI installation, then quits.</td></tr><tr><td><code>--uninstall-wingetui</code></td><td>Removes the legacy WingetUI from the notification panel and quits. Used by the WingetUI uninstaller.</td></tr><tr><td><code>&#x3C;bundle-file></code></td><td>Opens a bundle in <em><strong>Package Bundles</strong></em>. Supported extensions include <code>.ubundle</code>, <code>.json</code>, <code>.yaml</code> and <code>.xml</code>.</td></tr></tbody></table>

## Environment variables

Read by UniGetUI at startup.

<table><thead><tr><th width="250">VARIABLE</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>UNIGETUI_WINGET_CLI</code></td><td>Tool used by the WinGet manager: <code>default</code>, <code>winget</code> or <code>pinget</code>. Overrides the <em><strong>WinGet command-line tool</strong></em> setting.</td></tr><tr><td><code>UNIGETUI_WINGET_COM</code></td><td>Use of the WinGet COM API: <code>default</code>, <code>enabled</code> or <code>disabled</code> (<code>on</code>/<code>off</code>, <code>true</code>/<code>false</code> and <code>1</code>/<code>0</code> also work). Overrides the <em><strong>WinGet COM API</strong></em> setting.</td></tr><tr><td><code>UNIGETUI_FONT_FAMILY</code></td><td>Windows only. Font family added at the start of the interface font list. Ignored when UniGetUI uses the Windows system font.</td></tr><tr><td><code>UNIGETUI_FORCE_NATIVE_LINUX_DECORATIONS</code></td><td>Linux only. Forces the window manager's title bar on (<code>1</code>, <code>true</code>, <code>on</code>, <code>yes</code>, <code>enabled</code>) or off (<code>0</code>, <code>false</code>, <code>off</code>, <code>no</code>, <code>disabled</code>) instead of detecting it.</td></tr><tr><td><code>UNIGETUI_GITHUB_TOKEN_NAMESPACE</code></td><td>Suffix added to the credential entry of the GitHub backup token, so several UniGetUI instances on one computer can use different GitHub accounts.</td></tr><tr><td><code>WEBVIEW2_BROWSER_EXECUTABLE_FOLDER</code></td><td>Windows only. Folder of a fixed-version WebView2 runtime to use instead of the installed one.</td></tr><tr><td><code>UNIGETUI_IPC_API_TRANSPORT</code>, <code>UNIGETUI_IPC_API_PORT</code>, <code>UNIGETUI_IPC_API_PIPE_NAME</code></td><td>See <a href="#connection-options">Connection options</a>.</td></tr></tbody></table>

## Deep links

On Windows, a regular installation registers the `unigetui://` protocol. Portable installations don't.

<table><thead><tr><th width="250">LINK</th><th>WHAT IT DOES</th></tr></thead><tbody><tr><td><code>unigetui://openUniGetUI</code></td><td>Shows the UniGetUI window.</td></tr><tr><td><code>unigetui://openUniGetUIOnUpdatesTab</code></td><td>Shows UniGetUI on <em><strong>Software Updates</strong></em>.</td></tr><tr><td><code>unigetui://updateAll</code></td><td>Updates every package that has an update.</td></tr><tr><td><code>unigetui://releaseSelfUpdateLock</code></td><td>Lets a pending UniGetUI update proceed.</td></tr></tbody></table>

{% hint style="warning" %}
A deep link only acts when UniGetUI is already running. If the link starts UniGetUI, the app opens normally and the action is ignored. To automate UniGetUI, use the commands above or the [automation API](/unigetui/reference/ipc-api.md).
{% endhint %}

## Installer switches

The Windows installer switches (silent install, all users, portable, skipping dependencies) are listed in [Install UniGetUI](/unigetui/reference/installation.md#installer-switches).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/unigetui/reference/cli.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
