# XClicker: a fast autoclicker for X11 Linux desktops

> XClicker is a C program with a GTK 3 interface that automates mouse clicks on X11 desktops, with a fixed or randomised interval, single, double or hold clicks, click-while-holding-a-hotkey and a safe mode. It builds with a single make target, ships as a deb, an AppImage and an AUR package, and its last tagged release is v1.5.1 from 2024.

**robiot/xclicker** — XClicker - Fast GUI autoclicker for x11 linux desktops

- Repository: https://github.com/robiot/xclicker
- Website: https://xclicker.xyz
- Stars: 643 · Forks: 58
- Language: C
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/robiot-xclicker

## A mouse automation tool built straight on X11

XClicker is an autoclicker for Linux desktops using X11, written in C, with a GTK 3 interface. The repository description calls it a fast GUI autoclicker for X11 Linux desktops, and the README describes it as open source, easy to use and feature rich.

The feature list is where the design decisions are visible. The layout is deliberately simple. There is a safe mode, described as protection from unwanted behaviour, which is the one item in the list that suggests the author has thought about what happens when the tool keeps clicking after you have stopped meaning to. Clicking happens at a specified amount of time between each click, you choose the mouse button, left, right or middle, and you choose the click type, single, double or hold. It can repeat until stopped or a given number of times, it can click on a specified location only, it can randomize the click interval, and it can specify a hold time per click.

Two more behaviours make it usable alongside other work. It can click while a hotkey is held down, so the automation is under your finger rather than running on its own, and it can be started and stopped with a custom hotkey.

On performance, the README gives one number, the author's own highest observed rate of around 750 clicks per second, which was still with a 1 millisecond interval. With a 0 millisecond interval, the README warns that the focused application may freeze. That is an honest framing of the ceiling, since the limit is the target application's event loop rather than the clicker itself, and it tells you where the practical range lies for a normal interface.

## One make target produces the binary

Building is described as a single command after cloning the repository, and the executable lands in ./build/release/src/xclicker:

```bash
$ make release
```

The Makefile shows what that does. The release target depends on a version target that regenerates src/version.h, writing a header with a static XCLICKER_VERSION string from the VERSION variable, and the file itself carries a comment saying it is auto generated and should not be edited. The build directory is created with meson in release buildtype if it does not already exist, and the actual compilation is done by ninja install.

The comment in the Makefile explains why the two steps are not merged. It says not to use meson compile since that does not work in the workflow, which tells you the project builds through CI as well as locally, and that the choice of meson plus ninja is deliberate rather than a leftover from an older Makefile based build.

The remaining targets are for packaging and installation. The install target copies the binary to /usr/bin, the desktop file to /usr/share/applications and the icon to /usr/share/pixmaps, and the uninstall target removes exactly those three files. There are also deb and AppImage targets, with a pkg directory holding the Debian package layout and the AppImage directory, and a Dockerfile for container based builds.

## The Dockerfile shows the real dependency list

The Dockerfile is short and it names every library the tool needs, which makes it the most informative file in the repository.

```dockerfile
FROM ubuntu:18.04

RUN apt-get update -y
```

The package line installs meson, pkg-config, gtk+-3.0, libx11-dev, libxi-dev, libxtst-dev, python3-pip, python3-setuptools, patchelf, desktop-file-utils, libgdk-pixbuf2.0-dev, fakeroot, strace, fuse, wget, build-essential, manpages-dev and software-properties-common.

Three entries in that list carry the technical meaning. libx11-dev is the X11 client library, libxi-dev is the X Input extension, and libxtst-dev is the XTest extension, which is the mechanism that lets a program synthesise button events at the server level rather than asking the window manager to move a pointer. That is why the tool is X11 specific. XTest is not part of Wayland, and a Wayland session has no equivalent that a program can simply call, which is the structural reason an X11-only autoclicker cannot be expected to work under a modern Wayland desktop.

The rest of the file deals with producing an AppImage. It adds the Ubuntu toolchain PPA and installs gcc-11 with update-alternatives, downloads the AppImageKit appimagetool, and then applies a workaround for AppImage issues in Docker, patching the binary with sed and extracting it so it can be used as a symlinked executable. The comment labels it a workaround, and it exists because the base image is old.

## Packaging: deb, AppImage and an AUR package

Three distribution routes are visible in the repository. The Debian package and the AppImage are built from the Makefile targets and the pkg directory, with the AppImage output landing in a directory named for the application. The Dockerfile supports building those artefacts in a container, and the image is referenced as being available on Docker Hub for the project.

For Arch users, the README carries a badge pointing at an AUR package, and the project site has a downloads page, so an Arch user can install from the AUR and everyone else has binaries to fetch. The installation instructions themselves are not in the README. The README links to an Installation Guide in the project wiki instead, which is where the distribution specific steps live, and the same pattern is used for contributing, where a Contributing Guide in the wiki explains how to set up the development environment.

That split is worth noting as a fact about the project. The README is short on purpose. It describes what the program is, lists the features, gives the build command, and links out for everything else, including the installation and contribution workflows, which live in wiki pages rather than in the repository.

## Where an autoclicker stops being the right tool

The first limit is the platform. Everything in the dependency list points at X11 and its extensions, the project describes itself as an X11 tool, and there is no mention of Wayland, macOS or Windows support. A user on a Wayland desktop, which is the default on current Fedora, Ubuntu and GNOME, is outside the scope of the tool entirely.

The second limit is what a click actually means to the target application. XClicker injects events at the X server level, which is what makes it fast and what makes it indiscriminate. The safe mode exists precisely because of that: a tool that keeps clicking will keep clicking on whatever has focus, and if focus moves to a different window mid run, the clicks land somewhere else. That is a property of any click injector rather than a defect in this one, but it means the tool needs supervision unless the interval is slow and the target is predictable.

The third limit is the class of task. If you need to submit a form, fill a field or drive an application by its widgets, an accessibility or automation interface is the right mechanism, and clicking pixels is a fallback. The README does not describe any of those capabilities, so XClicker is the answer only when the interaction is genuinely a click at a position.

The alternative worth knowing is writing the same thing yourself against XTest, which is what the dependency list implies is possible. The difference in approach is that a hand written script can check the window, the position and the target application before each event, and it can be scheduled rather than run continuously. The trade is that you get none of the interface, the hotkeys, the safe mode or the packaging that XClicker already solves, and you inherit the dependency on libxtst either way.

## Maintained in the repository, released slowly

The release history and the commit history do not line up, which is the main thing to know about the project's maintenance state. Tagged releases come at v1.5.0 on 2023-09-29, v1.5.1 on 2024-04-27 and v1.4.0 before that in 2022, and the README's own screenshot caption still shows v1.4.0. The last push to the repository, however, was on 2026-08-23, which is well after the newest tag.

In other words, the working tree is moving and the published releases are not, or at least not often. For a tool distributed as an AUR package, a deb and an AppImage, that means a user on Arch will get whatever the AUR package points at, and a user elsewhere depends on the downloads page. The Makefile's VERSION variable is 1.5.1, which matches the newest tag, so even the build in the tree identifies itself as that release.

The licence is GPL-3.0, and the README adds a line worth noting: dependencies are licensed by their own. For a tool that links against GTK 3 and the X11 libraries, that separation is normal and it means the GPL terms apply to XClicker itself while each library keeps its own terms.

The project also has a web companion repository, xclicker-web, listed alongside the main one, and the downloads page on the project site. The main repository holds the C sources in src, the assets and images, the packaging scripts, and the workflow definitions under .github.

## Conclusion

XClicker suits a Linux user automating repeated mouse input, for example in a game, a test harness or a repeated form entry, and it suits anyone on Wayland, macOS or Windows poorly, since the tool is built directly against X11 libraries and the repository describes nothing else. Before installing, check that your session is X11, since the XTest extension the click injection relies on is an X11 feature, and read the safe mode documentation, because a tool that injects input without a UI focus check can act on the wrong window. The project is GPL-3.0, the last push was on 2026-08-23, and the newest tagged release is v1.5.1 from 2024-04-27.

## FAQ

### How do I build XClicker from source?

Clone the repository and run make release, which regenerates the version header, configures a meson release build and installs with ninja. The executable is placed at ./build/release/src/xclicker.

### Does XClicker work on Wayland?

The project is built for X11 desktops and depends on libx11-dev, libxi-dev and libxtst-dev, and the XTest extension that injects button events is an X11 feature. The README does not mention Wayland support.

### What click options does XClicker offer?

You can choose the mouse button, single, double or hold click types, a fixed or randomised interval, a hold time per click, a specific location only, a fixed number of repetitions or repeat until stopped, and it can click while a hotkey is held or start and stop with a custom hotkey.

### How fast can XClicker click?

The README reports around 750 clicks per second as the author's highest observed rate, which was still with a 1 millisecond interval, and notes that with a 0 millisecond interval the focused application may freeze.

### How is XClicker distributed?

The Makefile has targets for a Debian package and an AppImage, the project publishes a Dockerfile for container builds, there is an AUR package for Arch, and binaries are offered through the downloads page on the project site. Installation details are in the project wiki.

## Sources

- [License: GPL-3.0](https://github.com/robiot/xclicker/blob/master/LICENSE)
- [Project website](https://xclicker.xyz)
- [README](https://github.com/robiot/xclicker/blob/master/README.md)
- [Releases](https://github.com/robiot/xclicker/releases)
- [robiot/xclicker on GitHub](https://github.com/robiot/xclicker)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/robiot-xclicker
