macOS
brew install xdotoollocal Homebrew formula metadata
sudo port install xdotoolMacPorts ports tree · x11/xdotool/Portfile · source: api.github.com
brew
Fake keyboard/mouse input and window management for X. Version 4.20260303.1 via Homebrew; verified from local package data.
install
brew install xdotoollocal Homebrew formula metadata
sudo port install xdotoolMacPorts ports tree · x11/xdotool/Portfile · source: api.github.com
sudo apk add xdotoolAlpine Linux edge package indexes · xdotool · source: dl-cdn.alpinelinux.org
sudo apt install libxdo-devDebian stable package indexes · libxdo-dev · source: deb.debian.org
sudo dnf install libxdoFedora Rawhide package metadata · libxdo · source: dl.fedoraproject.org
nix profile install nixpkgs#xdotoolnixpkgs package indexes · pkgs/by-name/xd/xdotool/package.nix · source: api.github.com
sudo pacman -S xdotoolArch Linux sync databases · xdotool · source: geo.mirror.pkgbuild.com
sudo zypper install xdotoolopenSUSE Tumbleweed package metadata · xdotool · source: download.opensuse.org
overview
Fake keyboard/mouse input and window management for X
history
xdotool is Jordan Sissel's X11 automation command: a small CLI and companion libxdo library for synthesizing keyboard and mouse input, searching for windows, and manipulating X window-manager state from scripts.
The earliest public GitHub commit history for xdotool reaches back to 2007 and records a migration from a semicomplete Google Code Subversion repository, while the GitHub repository itself was created in 2011. Its upstream documentation has long described the same core design: use the XTEST extension and Xlib calls to fake input, locate windows, move and resize them, switch desktops, and alter window properties.
xdotool evolved from a one-command X scripting helper into a grab bag of practical desktop automation verbs. The upstream README documents not only key and mouse events but also window stacks, EWMH/NetWM-oriented window-manager interactions, and libxdo for C programs that need the same behavior without shelling out.
Adoption followed the path of a classic Linux desktop utility: package it everywhere, make it scriptable, and let window-manager users compose it with shell, hotkey daemons, status bars, and test harnesses. The upstream project page lists common installs for Debian/Ubuntu, Fedora, FreeBSD, macOS through Homebrew or MacPorts, and OpenSUSE, matching its role as a small dependency-free command that distributions can ship easily.
Its importance also became clearer during the Wayland transition. The README explicitly warns that xdotool does not work correctly for many Wayland tasks because its model depends on X11 semantics; that limitation turned xdotool into both a beloved X11 automation tool and a marker of the security and protocol differences between X11 and Wayland.
Practitioners use xdotool to press hotkeys, type text into focused applications, click or move the pointer, activate a window found by name or class, resize matching windows, script window focus, and glue graphical applications into shell workflows. It is common in lightweight window-manager setups, kiosk scripts, GUI smoke tests, and one-off desktop automation.
The tool is intentionally composable: upstream examples show pipelines that search for Firefox, activate it, and send Ctrl+L, or find visible terminal windows and resize them. libxdo gives packagers and C applications a lower-level route to the same XTEST and Xlib behavior.
xdotool is one of the canonical examples of a package that matters because it exposes a desktop protocol as a Unix command. It packages the old X11 assumption that clients can inspect and influence each other into a tiny CLI, which made it disproportionately useful for automation and disproportionately hard to replace under Wayland.
For package nerds, it also illustrates the value of boring distribution: a single executable, a small C library, a manpage, and enough stable behavior that scripts written years apart still tend to work on Xorg sessions.
security posture
narrow executable package without higher-risk signals.
green risk · low confidence · appliance
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
xdotool | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://github.com/jordansissel/xdotool
install metadata
| Package key | brew:xdotool |
|---|---|
| Version | 4.20260303.1 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/xdotool |
| Homepage | https://www.semicomplete.com/projects/xdotool/ |
| Repository | https://github.com/jordansissel/xdotool |
| Upstream docs | https://github.com/jordansissel/xdotool#readme |
| License | BSD-3-Clause |
| Source archive | https://github.com/jordansissel/xdotool/archive/refs/tags/v4.20260303.1.tar.gz |
| Dependencies | libx11, libxi, libxinerama, libxkbcommon, libxtst |
| Build dependencies | pkgconf |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
| Caveats | You will probably want to enable XTEST in your X11 server now by running: defaults write org.x.X11 enable_test_extensions -boolean true For the source of this useful hint: https://stackoverflow.com/questions/1264210/does-mac-x11-have-the-xtest-extension |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | xdotool |
| Version Scheme | 0 |
| Revision | 0 |
| Head Version | HEAD |
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
libxdo-dev 1:3.20160805.1-5.1
library for simulating X11 keyboard/mouse input
https://github.com/jordansissel/xdotool/
sudo apt install libxdo-devlibxdo3 1:3.20160805.1-5.1
library for simulating (generating) X11 keyboard/mouse input events
https://github.com/jordansissel/xdotool/
sudo apt install libxdo3xdotool 1:3.20160805.1-5.1
simulate (generate) X11 keyboard/mouse input events
https://github.com/jordansissel/xdotool/
sudo apt install xdotoolxdotool
nix profile install nixpkgs#xdotoollibxdo-dev 1:3.20160805.1-5build1
library for simulating X11 keyboard/mouse input
https://github.com/jordansissel/xdotool/
sudo apt install libxdo-devlibxdo3 1:3.20160805.1-5build1
library for simulating (generating) X11 keyboard/mouse input events
https://github.com/jordansissel/xdotool/
sudo apt install libxdo3xdotool 1:3.20160805.1-5build1
simulate (generate) X11 keyboard/mouse input events
https://github.com/jordansissel/xdotool/
sudo apt install xdotoolxdotool 4.20260303.1-r0
Simulate X11 keyboard/mouse input events
https://github.com/jordansissel/xdotool
sudo apk add xdotoolxdotool-dev 4.20260303.1-r0
Simulate X11 keyboard/mouse input events (development files)
https://github.com/jordansissel/xdotool
sudo apk add xdotool-devxdotool-doc 4.20260303.1-r0
Simulate X11 keyboard/mouse input events (documentation)
https://github.com/jordansissel/xdotool
sudo apk add xdotool-doclibxdo 3.20211022.1-10.fc44
Keyboard input simulation library
https://github.com/jordansissel/xdotool
sudo dnf install libxdolibxdo-devel 3.20211022.1-10.fc44
Development files for libxdo
https://github.com/jordansissel/xdotool
sudo dnf install libxdo-develxdotool 3.20211022.1-10.fc44
Fake keyboard/mouse input
https://github.com/jordansissel/xdotool
sudo dnf install xdotoolxdotool 4.20260303.1-1
Command-line X11 automation tool
https://www.semicomplete.com/projects/xdotool/
sudo pacman -S xdotoolxdotool 4.20251130.1-1.3
Fake keyboard/mouse input
https://www.semicomplete.com/projects/xdotool/
sudo zypper install xdotoolxdotool-devel 4.20251130.1-1.3
Development and Library files
https://www.semicomplete.com/projects/xdotool/
sudo zypper install xdotool-develsource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.