Skip to content

Latest commit

 

History

History
152 lines (105 loc) · 5.36 KB

install.md

File metadata and controls

152 lines (105 loc) · 5.36 KB

Install

proton-cli is one self-contained binary for Linux, macOS and Windows, on amd64 and arm64. Pick the line that matches your system.

The command is proton. Every install also puts proton-cli beside it as a second name, so a line written either way runs.

Platform Install
Linux, macOS curl -fsSL https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.sh | sh
Windows irm https://raw.githubusercontent.com/roman-16/proton-cli/main/scripts/install.ps1 | iex
Homebrew brew install --cask roman-16/tap/proton-cli
winget winget install Roman-16.ProtonCLI
Arch yay -S proton-cli-bin
Debian, Ubuntu APT repository
Fedora, RHEL sudo dnf install ./proton-cli_*.rpm
Alpine sudo apk add --allow-untrusted ./proton-cli_*.apk
Nix environment.systemPackages = [ pkgs.proton-cli ];
npm npm install -g @roman-16/proton-cli

Then sign in and run your first commands.

Where the install scripts put it

~/.local/bin on Linux and macOS, %LOCALAPPDATA%\Programs\proton-cli on Windows.

Both scripts take a version and a directory:

curl -fsSL …/install.sh | sh -s -- --install-dir /usr/local/bin --version 2.5.0
& ([scriptblock]::Create((irm …/install.ps1))) -InstallDir "C:\tools\proton-cli"

Debian, Ubuntu and Linux Mint

The APT repository updates proton with the rest of your system:

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://roman-16.github.io/proton-cli/gpg.key | sudo tee /etc/apt/keyrings/proton-cli.asc >/dev/null
echo "deb [signed-by=/etc/apt/keyrings/proton-cli.asc] https://roman-16.github.io/proton-cli stable main" | sudo tee /etc/apt/sources.list.d/proton-cli.list
sudo apt update && sudo apt install proton-cli

Nix flake

To track the latest release rather than your nixpkgs channel:

inputs.proton = {
  url = "github:roman-16/proton-cli";
  inputs.nixpkgs.follows = "nixpkgs";
};

environment.systemPackages = [
  proton.packages.${pkgs.stdenv.hostPlatform.system}.default
];

Download a binary

Every release ships raw binaries, archives and checksums.txt on the releases page, named proton-cli_<os>_<arch> for linux, darwin and windows on amd64 and arm64.

curl -LO https://github.com/roman-16/proton-cli/releases/latest/download/proton-cli_linux_amd64
curl -LO https://github.com/roman-16/proton-cli/releases/latest/download/checksums.txt
sha256sum --check --ignore-missing checksums.txt
chmod +x proton-cli_linux_amd64
sudo mv proton-cli_linux_amd64 /usr/local/bin/proton

On Windows, download the .exe, rename it to proton.exe, and put its folder on your PATH.

The .tar.gz and .zip archives also bundle the licence and shell completions. The .zip carries proton-cli.exe as a real file, since an archive cannot hold a link.

Shell completions

Package installs wire these up for you. For a manual install, run the line for your shell:

# bash
proton completion bash > /etc/bash_completion.d/proton

# zsh
proton completion zsh > "${fpath[1]}/_proton"

# fish
proton completion fish > ~/.config/fish/completions/proton.fish

What Tab then offers is described under Tab completion.

One script covers both command names, except in fish, which looks for a file named after the command being typed:

echo 'complete -c proton-cli -w proton' > ~/.config/fish/completions/proton-cli.fish

Updating

If you installed with a package manager, update with it. Otherwise proton updates itself:

proton update             # install the latest release
proton update --dry-run     # only report whether an update exists
proton update 2.5.0       # install a specific version

On an install no package manager owns, proton looks for a new release once a day and says so after the command has finished:

$ proton mail messages list
…

proton 2.4.1 → 2.5.0 available.
Run `proton update` to install it, or `proton changelog 2.5.0` for what changed.

It stays quiet when a package manager owns this copy, when stderr is not a terminal, and under --quiet. To end it for good, set PROTON_NO_UPDATE_CHECK=1.

proton changelog prints what each release changed: the whole file, one version, or a range with --since 2.3.0 --until 2.4.0.

Note

proton update checks the download against checksums.txt from the same release, and neither is signed. An install from a package manager is verified by the package manager.

Uninstalling

Package installs go out the way they came in. Script and manual installs remove themselves:

proton uninstall --dry-run       # show what would be removed
proton uninstall --yes           # remove the binary without asking
proton uninstall --yes --purge   # also delete saved sessions and the ID cache

Uninstalling cannot be undone from here, so it asks first, like every other permanent removal.

Build from source

Needs Go 1.27 or newer:

git clone https://github.com/roman-16/proton-cli.git
cd proton-cli
go build ./cmd/proton

Every command that manages the install

proton itself has the full reference for update, uninstall, completion, changelog, report, skill and version.