Wmacro is a macro recorder and automation tool for Hyprland on Wayland. Users can record, edit, and replay mouse/keyboard events.
It features a GUI with 13 built-in themes, customizable shortcuts, and support for custom .wmr files to save and edit macros.
paru -S wmacroor
yay -S wmacroparu -S wmacro-gitor
yay -S wmacro-gitAfter installation, add your user to the wmacro group:
sudo usermod -aG wmacro $USERLog out and log back in (or reboot) to reload your user group membership. Then enable and start the daemon:
sudo systemctl enable --now wmacro-daemonIf you prefer to build manually or are on a different distribution, you can compile wmacro from source using cargo.
Build dependencies:
- Rust toolchain (
rust,cargo) - C compiler toolchain (
base-devel) - Wayland libraries (
wayland) - libxkbcommon (
libxkbcommon)
Runtime requirements:
- Wayland compositor (e.g. Hyprland)
grim(required for pixel color conditions)
-
Clone the repository and build the project:
git clone https://github.com/uint82/wmacro.git cd wmacro cargo build --release --workspace -
Run the daemon (requires root privileges to access input devices):
sudo ./target/release/wmacro-daemon
-
In a separate terminal, run the GUI:
./target/release/wmacro-gui
| Gruvbox Dark | Gruvbox Light |
|---|---|
![]() |
![]() |
- Mouse: movement, clicks, and scrolling
- Touchpad: movement, clicks, and drag and drop
- Keyboard: All keys
- Record/pause/resume
- Play/pause/resume
- Adjustable playback speed from
0.1xto10.0x - Adjustable repeat count and humanized playback using a hybrid synthetic path engine
- Smart Mouse Randomization with adjustable path wobble and endpoint jitter
- Humanized submovements and curve adjustments for mouse paths
- Customizable global hotkeys (default):
F7record/pauseF8abort recordingF9play/pauseF10abort playbackShift + kstep-by-stepF2Capture Coordinate
- Full GUI editor for creating and modifying macros
- Drag and drop command reordering
- Type text action for fast text input
- Logic and Flow Control:
- If Pixel Color condition
- Loop and EndLoop
- Else and EndIf
- Goto and Label
- Execute other macros from within a macro
- Custom
.wmrfiles for saving and loading macros
- 13 built-in themes
- Modern interface with customizable settings
- User can add their own themes in
.config/wmacro/themes/
To create a custom theme, place a .json file in ~/.config/wmacro/themes/ using the structure below. Colors must be provided in 6-character hex format (e.g., #FFFFFF).
{
"name": "My Custom Theme",
"is_dark": true,
"bg_base": "#1e1e2e",
"bg_surface": "#181825",
"bg_element": "#313244",
"bg_element_alt": "#45475a",
"border": "#cba6f7",
"text_primary": "#cdd6f4",
"text_muted": "#a6adc8",
"accent_primary": "#cba6f7",
"accent_primary_fg": "#11111b",
"accent_danger": "#f38ba8",
"accent_danger_fg": "#11111b",
"accent_success": "#a6e3a1",
"accent_success_fg": "#11111b",
"col_delay": "#f9e2af",
"col_move": "#89b4fa",
"col_click": "#f38ba8",
"col_keyboard": "#cba6f7",
"col_if": "#94e2d5",
"col_else": "#94e2d5",
"col_end_if": "#94e2d5",
"col_loop": "#f5c2e7",
"col_end_loop": "#f5c2e7",
"col_label": "#b4befe",
"col_goto": "#b4befe",
"col_type_text": "#a6e3a1",
"col_import_saved_macro": "#f38ba8"
}- Expand flow control with advanced variables and conditions
- Additional IDE themes and layout customizations
- Add more wayland compositor support
Contributions are always welcome! If you have a feature request, bug report, or want to submit a pull request, please check the issues page on GitHub.
When submitting PRs, please ensure your code builds cleanly and follows the existing Rust conventions.
This project is licensed under the GPL-3.0-only License - see the LICENSE file for details.

