|
1 | | -# Shells™ Go client |
| 1 | +# Shells™ Go Client |
2 | 2 |
|
3 | | -This is a client to remotely access Shells™ virtual desktop instances. |
| 3 | +A cross-platform desktop client for remotely accessing [Shells™](https://www.shells.com) virtual desktop instances. |
4 | 4 |
|
5 | | -It uses Spice protocol in order to provide access to the display, controls, etc. |
| 5 | +## Requirements |
6 | 6 |
|
7 | | -## PortAudio / opus dependencies |
| 7 | +**A Shells™ account is required to use this application.** You can create an account at [shells.com](https://www.shells.com). |
8 | 8 |
|
9 | | -Add the following to `go.mod` for statically including portaudio & opus as static libs: |
| 9 | +## Features |
10 | 10 |
|
11 | | - replace github.com/gordonklaus/portaudio => github.com/KarpelesLab/static-portaudio v0.6.190600 |
12 | | - replace github.com/hraban/opus => github.com/KarpelesLab/static-opus v0.5.131 |
| 11 | +- Remote desktop access to your Shells™ virtual machines |
| 12 | +- Cross-platform support (Linux, macOS, Windows) |
| 13 | +- SPICE protocol for high-performance display, keyboard, and mouse input |
| 14 | +- Audio support via PortAudio and Opus codec |
| 15 | +- Clipboard sharing between local and remote systems |
| 16 | +- OAuth2 authentication with QR code support for thin clients |
| 17 | + |
| 18 | +## Building |
| 19 | + |
| 20 | +### Prerequisites |
| 21 | + |
| 22 | +- Go 1.23 or later |
| 23 | +- CGO enabled (required for audio and graphics dependencies) |
| 24 | + |
| 25 | +### Linux |
| 26 | + |
| 27 | +Install the required development packages: |
| 28 | + |
| 29 | +```bash |
| 30 | +# Debian/Ubuntu |
| 31 | +sudo apt-get install libgl1-mesa-dev libxcursor-dev libxrandr-dev \ |
| 32 | + libxinerama-dev libxi-dev libxxf86vm-dev libasound2-dev pkg-config |
| 33 | + |
| 34 | +# Fedora |
| 35 | +sudo dnf install mesa-libGL-devel libXcursor-devel libXrandr-devel \ |
| 36 | + libXinerama-devel libXi-devel libXxf86vm-devel alsa-lib-devel pkgconfig |
| 37 | +``` |
| 38 | + |
| 39 | +### macOS |
| 40 | + |
| 41 | +Xcode command line tools are required: |
| 42 | + |
| 43 | +```bash |
| 44 | +xcode-select --install |
| 45 | +``` |
| 46 | + |
| 47 | +### Windows |
| 48 | + |
| 49 | +MSYS2 with MinGW64 toolchain is recommended for building on Windows. |
| 50 | + |
| 51 | +### Build |
| 52 | + |
| 53 | +```bash |
| 54 | +go build -v . |
| 55 | +``` |
| 56 | + |
| 57 | +## Static Linking (PortAudio / Opus) |
| 58 | + |
| 59 | +For producing portable binaries with statically linked audio libraries, add the following to `go.mod`: |
| 60 | + |
| 61 | +``` |
| 62 | +replace github.com/gordonklaus/portaudio => github.com/KarpelesLab/static-portaudio v0.6.190600 |
| 63 | +replace github.com/hraban/opus => github.com/KarpelesLab/static-opus v0.5.131 |
| 64 | +``` |
| 65 | + |
| 66 | +## Environment Variables |
| 67 | + |
| 68 | +- `SHELLS_FULLSCREEN=WIDTHxHEIGHT` - Start in fullscreen mode with specified resolution (e.g., `1920x1080`) |
| 69 | +- `SHELLS_LOGIN=thin` - Use QR code login flow for thin client deployments |
| 70 | + |
| 71 | +## License |
| 72 | + |
| 73 | +This software is proprietary to Shells™. See [shells.com](https://www.shells.com) for terms of service. |
0 commit comments