Skip to content

Shells-com/shells-go

Repository files navigation

Shells™ Go Client

A cross-platform desktop client for remotely accessing Shells™ virtual desktop instances.

Requirements

A Shells™ account is required to use this application. You can create an account at shells.com.

Features

  • Remote desktop access to your Shells™ virtual machines
  • Cross-platform support (Linux, macOS, Windows)
  • SPICE protocol for high-performance display, keyboard, and mouse input
  • Audio support via PortAudio and Opus codec
  • Clipboard sharing between local and remote systems
  • OAuth2 authentication with QR code support for thin clients

Building

Prerequisites

  • Go 1.24 or later
  • CGO enabled (required for audio and graphics dependencies)

Linux

Install the required development packages:

# Debian/Ubuntu
sudo apt-get install libgl1-mesa-dev libxcursor-dev libxrandr-dev \
    libxinerama-dev libxi-dev libxxf86vm-dev libasound2-dev pkg-config

# Fedora
sudo dnf install mesa-libGL-devel libXcursor-devel libXrandr-devel \
    libXinerama-devel libXi-devel libXxf86vm-devel alsa-lib-devel pkgconfig

macOS

Xcode command line tools are required:

xcode-select --install

Windows

MSYS2 with MinGW64 toolchain is recommended for building on Windows.

Build

go build -v .

Static Linking (PortAudio / Opus)

For producing portable binaries with statically linked audio libraries, add the following to go.mod:

replace github.com/gordonklaus/portaudio => github.com/KarpelesLab/static-portaudio v0.6.190600
replace github.com/hraban/opus => github.com/KarpelesLab/static-opus v0.9.152

Environment Variables

  • SHELLS_FULLSCREEN=WIDTHxHEIGHT - Start in fullscreen mode with specified resolution (e.g., 1920x1080)
  • SHELLS_LOGIN=thin - Use QR code login flow for thin client deployments

License

This software is proprietary to Shells™. See shells.com for terms of service.