// overlay for linux

Crosshair

A borderless, permanent, click-through crosshair for your screen.

Draws a crosshair - from an SVG file, or an auto-generated default one - exactly centered on your primary monitor. It stays on top of every other window and never intercepts mouse input: clicks pass straight through to whatever is underneath. Built with plain Xlib + Cairo + librsvg + yaml-cpp - no Qt, no GTK.

// 01

Features

A static overlay and nothing else - no aim assistance, no ESP, no game-state awareness. Just a crosshair that is always exactly where your monitor's center is.

Truly click-through An empty X Shape input region means the overlay is never a candidate for pointer events - clicks are delivered to the window underneath with zero latency, at the X server level.
Always on top An override_redirect window with _NET_WM_STATE_ABOVE that periodically re-asserts its stacking order, so fullscreen apps and window managers can't push it behind.
Centered on your primary monitor Reads the primary output via XRandR, with sane fallbacks for unusual or single-monitor setups.
Your own SVG, or none needed Drop in a crosshair.svg next to the binary and it's rendered at its exact pixel size. None there? A compact default is generated automatically on first run.
Single instance, real taskbar entry Shows up as a normal, minimized taskbar entry. Opening it again offers a small Cancel/Exit dialog instead of starting a second overlay.
Small and dependency-light Plain Xlib + Cairo + librsvg + yaml-cpp - no Qt, no GTK - for a binary that's fast to start and easy to package.
Before you use this alongside a multiplayer game:

some anti-cheat systems flag or prohibit any third-party overlay drawn on top of the game window, purely because it exists - regardless of what it does. Crosshair provides no gameplay advantage, but check that game's terms of service first.

// 02

Install

A pre-built AppImage for Linux on x86_64, or build it yourself - a C++17 compiler and a handful of development packages is all it needs.

Pre-built AppImage (easiest)

No compiler, no dependencies - a single, self-contained file:

$ curl -LO https://github.com/dlehmann/crosshair/releases/latest/download/crosshair-x86_64.AppImage
$ chmod +x crosshair-x86_64.AppImage
$ ./crosshair-x86_64.AppImage

Arch · CachyOS · Manjaro

Install the build dependencies, then build and install for your user:

$ sudo pacman -S --needed base-devel cmake pkgconf libx11 libxext libxrandr cairo librsvg yaml-cpp
$ git clone https://github.com/dlehmann/crosshair.git && cd crosshair
$ ./install.sh

Debian · Ubuntu · KDE neon

Install the build dependencies, then build and install for your user:

$ sudo apt install build-essential cmake pkg-config libx11-dev libxext-dev libxrandr-dev libcairo2-dev librsvg2-dev libyaml-cpp-dev
$ git clone https://github.com/dlehmann/crosshair.git && cd crosshair
$ ./install.sh

Fedora

Install the build dependencies, then build and install for your user:

$ sudo dnf install gcc-c++ cmake pkgconf-pkg-config libX11-devel libXext-devel libXrandr-devel cairo-devel librsvg2-devel yaml-cpp-devel
$ git clone https://github.com/dlehmann/crosshair.git && cd crosshair
$ ./install.sh

install.sh installs into your user's XDG directories - no root privileges needed - and adds "Crosshair" to your application launcher. See the README for a build-only option, uninstalling, and packaging your own AppImage.

// 03

About

Runs on any X11 desktop, and transparently through XWayland on Wayland compositors like KDE Plasma and GNOME - as long as compositing is enabled, so the transparent background actually renders as transparent.

Purely passive Never reads or writes another process's memory, never hooks or injects into one, never inspects game state or network traffic.
Safe single instance A plain POSIX flock() - no daemon, no socket - released automatically by the kernel even if the process crashes.
Translatable exit dialog Its few strings live in crosshair.yml next to the binary - edit them for any language, no rebuild required.
Open source MIT License. Issues and pull requests are welcome on GitHub.