Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Web Archiving
  3. xDoTool

xDoTool

BSD-3-ClauseCv4.20260303.1

A command-line tool for simulating keyboard/mouse input and automating window management on X11 systems.

GitHubGitHub
3.8k stars341 forks0 contributors

What is xDoTool?

xdotool is a command-line automation tool for X11 systems that simulates keyboard and mouse input, and manages windows programmatically. It solves the problem of automating repetitive GUI interactions, enabling users to script desktop actions, automate application testing, or control window layouts without manual intervention.

Target Audience

Linux/Unix users and developers working on X11-based systems who need to automate desktop tasks, perform GUI testing, or create custom window management scripts.

Value Proposition

Developers choose xdotool for its straightforward command-line interface, deep integration with X11's native functions, and reliability in automating complex desktop interactions without requiring graphical scripting environments.

Overview

fake keyboard/mouse input, window management, and more

Use Cases

Best For

  • Automating repetitive GUI tasks like form filling or button clicking
  • Scripting window management (e.g., arranging multiple application windows)
  • Simulating user input for application testing or demos
  • Creating custom hotkeys or macros that trigger complex desktop actions
  • Controlling applications remotely via command-line scripts
  • Automating workflows in X11-based development environments

Not Ideal For

  • Wayland-based systems or modern Linux distributions defaulting to Wayland
  • Headless environments or containers without an X11 display server
  • Teams needing cross-platform automation that works seamlessly on Windows or non-X11 macOS setups
  • Projects requiring advanced GUI testing features like image recognition or record-and-playback

Pros & Cons

Pros

Simple Command-Line Interface

The README shows straightforward commands like 'xdotool type "Hello world"' for typing text, making it easy to script without complex GUI tools.

Deep X11 Integration

Uses X11's XTEST extension and Xlib functions for reliable automation, as highlighted in the philosophy, ensuring direct control over desktop interactions.

Comprehensive Window Management

Can search, move, resize, and modify window properties, demonstrated in examples like resizing all gnome-terminal windows with 'windowsize %@ 500 500'.

Library for Custom Development

Includes libxdo, a C library that provides the same automation capabilities, allowing integration into custom applications for extended functionality.

Cons

No Wayland Support

The README explicitly warns that xdotool does not work correctly on Wayland, with typing, window searching, and other functions failing, limiting its relevance on modern systems.

X11 Dependency

Requires X11 libraries and a running X server, making it unusable in headless environments or where X11 is not installed, as noted in the build prerequisites.

Limited Modern Features

Focuses on basic input and window control without built-in support for advanced automation like OCR or event recording, which newer tools might offer.

Potentially Complex Build Setup

Building from source requires installing multiple X11 libraries (xlib, xtst, etc.), as listed in the prerequisites, which can be cumbersome compared to package manager installations.

Frequently Asked Questions

Quick Stats

Stars3,776
Forks341
Contributors0
Open Issues289
Last commit1 month ago
CreatedSince 2011

Tags

#cli-tool#desktop-automation#linux-tools#window-management

Built With

C
C++

Included in

Web Archiving2.5k
Auto-fetched 1 day ago

Related Projects

FlameShotFlameShot

Powerful yet simple to use screenshot software :desktop_computer: :camera_flash:

Stars29,749
Forks1,897
Last commit8 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub