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

# Installation

## Default install

```sh
npm install -g deskctl
deskctl --help
```

`deskctl` is the default install path. It installs the command by
downloading the matching GitHub Release asset for the supported runtime target.

## One-shot usage

```sh
npx deskctl --help
```

## Agent skill

For `skills.sh`-style runtimes:

```sh
npx skills add harivansh-afk/deskctl -s deskctl
```

The repo skill lives under `skills/deskctl` and is designed around the same
observe -> wait -> act -> verify loop as the CLI.

## Other install paths

### Nix

```sh
nix run github:harivansh-afk/deskctl -- --help
nix profile install github:harivansh-afk/deskctl
```

### Build from source

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

Source builds on Linux require:

- Rust 1.75+
- `pkg-config`
- X11 development libraries such as `libx11-dev` and `libxtst-dev`

## Runtime requirements

- Linux with an active X11 session
- `DISPLAY` set to a usable X11 display, such as `DISPLAY=:1`
- `XDG_SESSION_TYPE=x11` or an equivalent X11 session environment
- a window manager or desktop environment that exposes standard EWMH properties
  such as `_NET_CLIENT_LIST_STACKING` and `_NET_ACTIVE_WINDOW`

The binary itself only depends on the standard Linux glibc runtime.

If setup fails, run:

```sh
deskctl doctor
```
