helix
Documentation menu

Command line

Helix.App.exe accepts commands that drive the copy of Helix already running. It is meant for Task Scheduler, a backup job's pre- and post-scripts, or a Stream Deck button.

The flags are Windows only: on macOS, a second launch of a running app does not pass its arguments on. Links work on both.

Commands

--status                  list every drive and whether it is up
--connect-all             connect every drive
--disconnect-all          disconnect every drive
--connect <drive>         connect one drive, by letter or name
--disconnect <drive>      disconnect one drive, by letter or name
--connect-group <name>    connect a drive group
--disconnect-group <name> disconnect a drive group
--wake <drive>            send that drive's NAS a wake-up packet
--show                    bring the window forward
--quit                    close Helix
--help                    print this

A drive is named by its letter (Z, Z:) or by its name, case-insensitively. If two drives share a name, Helix refuses and lists their letters so you can use one. A group is named by its name.

Helix.App.exe --connect Z
Helix.App.exe --connect "Photos"
Helix.App.exe --disconnect-group Office

--status prints one line per drive:

Y:  Backups  disconnected
Z:  Photos   connected

It needs a running, unlocked Helix

Commands go to the instance that is already running, over a named pipe only your Windows account can open. There is no way to run them with Helix closed, because every drive's credentials are behind your account password. A command is refused when:

SituationReply
Helix is not runningHelix is not running. Start it and sign in, then try again.
Nobody is signed inHelix is not signed in. Sign in, then try again.
The idle lock is upHelix is locked. Unlock it, then try again.

--help and a mistyped flag are answered without a running Helix.

Launching Helix.App.exe with no arguments while Helix is running brings its window forward, the same as --show, even when it is hidden in the tray.

Output and exit codes

Exit codeMeaning
0success; the reply is written to standard output
1failure; the reply is written to standard error

Replies are in English, whatever language the app is set to, so scripts can rely on them.

Waiting for the result

Helix.App.exe is a GUI program, so PowerShell and cmd do not wait for it by default: the prompt returns at once and the exit code is lost. Ask them to wait:

# PowerShell
$p = Start-Process Helix.App.exe -ArgumentList '--connect-all' -Wait -PassThru
$p.ExitCode
 
# or pipe the output, which also makes PowerShell wait
Helix.App.exe --status | Out-String
:: cmd
start /wait "" Helix.App.exe --connect-all
echo %ERRORLEVEL%

A connect can take up to about thirty seconds per drive when a NAS is slow to answer, so allow for that in scripts with a time limit.

Every command is also a helix:// link, which is what a Stream Deck button, a browser bookmark or a macOS Shortcut can open:

helix://status
helix://connect-all
helix://disconnect-all
helix://connect/Z
helix://disconnect/Photos
helix://connect-group/Office
helix://disconnect-group/Home%20Lab
helix://wake/Z
helix://show

Spaces in a name are written %20. Helix registers the scheme for your Windows account each time it starts, so it keeps pointing at the right copy after an update; on macOS it comes with the app.

A link is answered in the window rather than in a console: the outcome appears as a notification from the tray, or as a banner when the tray icon is off. The same rules apply as for the flags — Helix has to be running, signed in and unlocked. A link opened while Helix is closed just starts it.

Any web page can ask your browser to open a link, so a link that disconnects or quits does not act straight away: Helix brings its window forward and asks first. Use the flags from a script when you want a disconnect without the question.