About this project

perfuncted is a Go library and command-line interface designed for automating Linux desktop applications. It simplifies the process by detecting the user's session type (X11 or Wayland) at runtime and automatically selecting the appropriate backend, requiring no manual configuration. The tool provides comprehensive capabilities including screen capture, input injection (typing, clicking, dragging), and window management (activating, moving, resizing, closing windows). It supports various Wayland compositors like Sway, KDE Plasma, and GNOME, with specific integrations such as a bundled GNOME Shell extension for native control. The library exposes facades for screen, input, windows, outputs, clipboard, and accessibility (AT-SPI), allowing developers to build robust automation scripts. It also includes a CLI tool `pf` for probing backend availability and executing commands. Installation is supported via Go install or Flatpak bundles, with optional dependencies like `wl-clipboard` or `xclip` for specific features.