---
layout: ../layouts/DocLayout.astro
title: Installation
toc: true
---

# Installation

## Cargo

```sh
cargo install deskctl
```

## From source

```sh
git clone https://github.com/harivansh-afk/deskctl
cd deskctl
cargo build --release
```

## Docker (cross-compile for Linux)

Build a static Linux binary from any platform:

```sh
docker compose -f docker/docker-compose.yml run --rm build
```

This writes `dist/deskctl-linux-x86_64`.

## Deploy to a remote machine

Copy the binary over SSH when `scp` is not available:

```sh
ssh -p 443 user@host 'cat > ~/deskctl && chmod +x ~/deskctl' < dist/deskctl-linux-x86_64
```

## Requirements

- Linux with an active X11 session
- `DISPLAY` environment variable set (e.g. `DISPLAY=:1`)
- `XDG_SESSION_TYPE=x11`
- A window manager that exposes EWMH properties (`_NET_CLIENT_LIST_STACKING`, `_NET_ACTIVE_WINDOW`)

No extra native libraries are needed beyond the standard glibc runtime (`libc`, `libm`, `libgcc_s`).
