{"id":50202308,"url":"https://github.com/alper-han/CrossMacro","last_synced_at":"2026-06-11T15:00:35.975Z","repository":{"id":328386800,"uuid":"1106983118","full_name":"alper-han/CrossMacro","owner":"alper-han","description":"Cross-platform desktop automation app with macro recording, playback, scheduling, text expansion, CLI tools, and Wayland/X11-aware Linux support.","archived":false,"fork":false,"pushed_at":"2026-06-06T20:39:03.000Z","size":57841,"stargazers_count":247,"open_issues_count":5,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-06T22:13:42.021Z","etag":null,"topics":["autoclicker","automation","avalonia","cli","cross-platform","desktop-automation","dotnet","keyboard","linux","macos","macro","macro-editor","macro-recorder","mouse","scheduling","shortcuts","text-expansion","wayland","windows","x11"],"latest_commit_sha":null,"homepage":"https://github.com/alper-han/CrossMacro#readme","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alper-han.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-30T11:02:06.000Z","updated_at":"2026-06-06T20:39:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/alper-han/CrossMacro","commit_stats":null,"previous_names":["alper-han/crossmacro"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/alper-han/CrossMacro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alper-han%2FCrossMacro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alper-han%2FCrossMacro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alper-han%2FCrossMacro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alper-han%2FCrossMacro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alper-han","download_url":"https://codeload.github.com/alper-han/CrossMacro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alper-han%2FCrossMacro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34204181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autoclicker","automation","avalonia","cli","cross-platform","desktop-automation","dotnet","keyboard","linux","macos","macro","macro-editor","macro-recorder","mouse","scheduling","shortcuts","text-expansion","wayland","windows","x11"],"created_at":"2026-05-25T23:00:36.310Z","updated_at":"2026-06-11T15:00:35.969Z","avatar_url":"https://github.com/alper-han.png","language":"C#","funding_links":[],"categories":["Utilities"],"sub_categories":[],"readme":"# CrossMacro\n\n![Linux](https://img.shields.io/badge/Linux-Wayland%20%7C%20X11-1793D1?logo=linux\u0026logoColor=white)\n![Windows](https://img.shields.io/badge/Windows-0078D6?logo=windows\u0026logoColor=white)\n![macOS](https://img.shields.io/badge/macOS-000000?logo=apple\u0026logoColor=white)\n[![Flathub](https://img.shields.io/badge/Flathub-Install-0E5AFC?logo=flatpak\u0026logoColor=white)](https://flathub.org/en/apps/io.github.alper_han.crossmacro)\n[![Downloads](https://img.shields.io/github/downloads/alper-han/CrossMacro/total?label=Downloads)](https://github.com/alper-han/CrossMacro/releases)\n[![Discord](https://img.shields.io/badge/Discord-5865F2?logo=discord\u0026logoColor=white)](https://discord.gg/QUBuND5TvM)\n[![CI](https://github.com/alper-han/CrossMacro/actions/workflows/ci.yml/badge.svg?branch=main\u0026event=push)](https://github.com/alper-han/CrossMacro/actions/workflows/ci.yml)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/recording-tab.png\" alt=\"CrossMacro recording interface preview\" /\u003e\n\u003c/p\u003e\n\nCrossMacro is a cross-platform desktop automation app for recording, editing,\nscheduling, and replaying mouse/keyboard workflows. It combines a polished\nAvalonia GUI, scriptable CLI, text expansion, shortcuts, and a GUI-less desktop\nruntime in one app.\n\n- Linux-first support for Wayland and X11, with daemon-backed/direct-device\n  input modes and compositor-aware cursor positioning\n- Windows support through Microsoft Store, winget, MSIX, and portable binaries\n- macOS support through Apple Silicon and Intel DMG packages\n\n## Contents\n\n- [Features](#features)\n- [Why CrossMacro?](#why-crossmacro)\n- [Screenshots](#screenshots)\n- [Quick Start](#quick-start)\n- [Installation](#installation)\n- [CLI Usage](#cli-usage)\n- [Diagnostics and Troubleshooting](#diagnostics-and-troubleshooting)\n- [Support and Project Links](#support-and-project-links)\n- [Contributors](#contributors)\n- [Star History](#star-history)\n- [License](#license)\n- [Community](#community)\n\n## Features\n\n### Record and replay\n\n- Mouse recording for clicks, movement, and scrolling\n- Keyboard recording and macro playback with pause/resume\n- Playback speed control from `0.1x` to `10.0x`\n- Loop mode, repeat count, fixed repeat delay, and randomized repeat-delay ranges\n- Customizable global hotkeys:\n  - `F8` start/stop recording\n  - `F9` start/stop playback\n  - `F10` pause/resume playback\n\n### Edit and organize\n\n- Files tab for loading, saving, sequencing, and replaying `.macro` files\n- Macro editor with undo/redo, coordinate capture, action reordering, filtering,\n  variables, loops, conditionals, text input, and delay editing\n\n### Automate and trigger\n\n- Shortcut-bound macro execution with keyboard shortcuts and key combinations\n- Shortcut modes for press-to-start/stop and run-while-held playback\n- Scheduled task execution with interval, random interval, one-time, weekly, and\n  custom weekday options\n- CLI playback, recording, validation, settings, schedules, shortcuts, and inline\n  `run` steps\n- GUI-less desktop runtime for hotkeys, scheduler, shortcuts, and text expansion\n\n### Text expansion and desktop polish\n\n- Text expansion shortcuts with per-entry enable/disable and insertion-mode controls\n- Optional system tray controls where the desktop session supports tray icons\n- Theme support: Classic, Latte, Mocha, Dracula, Nord, Everforest, Gruvbox,\n  Solarized, Crimson\n- Language selection, runtime log-level control, and update-check settings\n\nSome features require platform permissions, such as Linux input device or daemon\naccess, macOS Input Monitoring/Accessibility, or desktop-session tray support.\n\n## Why CrossMacro?\n\nCrossMacro is built for people who want desktop automation without stitching\ntogether separate recorders, hotkey tools, text expanders, and platform-specific\nscripts.\n\n- **One workflow across platforms:** a polished Avalonia GUI with packaged builds\n  for Linux, Windows, and macOS.\n- **Modern Linux support:** Wayland and X11 are first-class targets, with\n  daemon-backed/direct-device input paths and compositor-aware cursor positioning\n  where the desktop exposes it.\n- **GUI when you want it, CLI when you need it:** record and edit visually, run\n  macros from scripts, or keep automation available with a GUI-less desktop\n  runtime.\n- **More than playback:** shortcuts, schedules, text expansion, files, themes,\n  and editor tools live in the same app.\n\n## Screenshots\n\n| Playback | Text Expansion | Shortcuts |\n| :---: | :---: | :---: |\n| ![Playback](screenshots/playback-tab.png) | ![Text Expansion](screenshots/text-expansion-tab.png) | ![Shortcuts](screenshots/shortcuts-tab.png) |\n| **Scheduled Tasks** | **Editor** | **Settings** |\n| ![Scheduled Tasks](screenshots/schedule-tab.png) | ![Editor](screenshots/editor-tab.png) | ![Settings](screenshots/settings-tab.png) |\n\n## Quick Start\n\n1. Install CrossMacro for your platform.\n2. Launch the app and grant any platform permissions it requests.\n3. Press `F8` to start/stop recording.\n4. Press `F9` to start/stop playback.\n5. Press `F10` to pause/resume playback.\n6. Save your macro, edit it if needed, and optionally bind it to a shortcut or schedule.\n\nIf setup or playback does not work, run:\n\n```bash\ncrossmacro doctor --json --verbose\n```\n\n## Installation\n\nDownload page for all release binaries:\n\n- [GitHub Releases](https://github.com/alper-han/CrossMacro/releases)\n\n### Quick Install Matrix\n\n| Platform | Channel | Command / Link | Notes |\n| --- | --- | --- | --- |\n| [![Flatpak](https://img.shields.io/badge/Flatpak-Flathub-0E5AFC?logo=flatpak\u0026logoColor=white)](https://flathub.org/en/apps/io.github.alper_han.crossmacro) | Flathub | [Store](https://flathub.org/en/apps/io.github.alper_han.crossmacro)\u003cbr\u003e`flatpak install flathub io.github.alper_han.crossmacro` | Sandboxed install; daemon or Quick Setup on Wayland |\n| [![Debian](https://img.shields.io/badge/Debian-Ubuntu-A81D33?logo=debian\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | `.deb` | `sudo apt install ./crossmacro*.deb` | Daemon-backed Linux package |\n| [![Fedora](https://img.shields.io/badge/Fedora-RHEL-51A2DA?logo=fedora\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | `.rpm` | `sudo dnf install ./crossmacro*.rpm` | Daemon-backed Linux package |\n| [![Arch](https://img.shields.io/badge/Arch-AUR-1793D1?logo=arch-linux\u0026logoColor=white)](https://aur.archlinux.org/packages/crossmacro) | AUR | `yay -S crossmacro`\u003cbr\u003e`paru -S crossmacro` | Community daemon-backed package |\n| [![Linux](https://img.shields.io/badge/Linux-AppImage-1793D1?logo=appimage\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | AppImage | [Releases](https://github.com/alper-han/CrossMacro/releases) | Portable `x86_64` and `aarch64`; Quick Setup may prompt on Wayland |\n| [![NixOS](https://img.shields.io/badge/NixOS-Module-5277C3?logo=nixos\u0026logoColor=white)](https://search.nixos.org/options?channel=unstable\u0026query=services.crossmacro) | nixpkgs module | `services.crossmacro = { enable = true; users = [ \"you\" ]; };` | Daemon-backed setup with service, uinput, polkit, group, and users |\n| [![Windows](https://img.shields.io/badge/Windows-Store-0078D6?logo=windows\u0026logoColor=white)](https://apps.microsoft.com/detail/9n1qp1d6js70) | Store | [Store](https://apps.microsoft.com/detail/9n1qp1d6js70) | Managed updates |\n| ![Windows](https://img.shields.io/badge/Windows-winget-0078D6?logo=windows\u0026logoColor=white) | winget | `winget install AlperHan.CrossMacro` | Stable updates may lag behind GitHub Releases |\n| [![Windows](https://img.shields.io/badge/Windows-MSIX-0078D6?logo=windows\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | MSIX | [Releases](https://github.com/alper-han/CrossMacro/releases) | App package for `x64` and `arm64` |\n| [![Windows](https://img.shields.io/badge/Windows-Portable-0078D6?logo=windows\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | Portable EXE | [Releases](https://github.com/alper-han/CrossMacro/releases) | Self-contained `x64` and `arm64` binaries |\n| [![macOS](https://img.shields.io/badge/macOS-DMG-000000?logo=apple\u0026logoColor=white)](https://github.com/alper-han/CrossMacro/releases) | `.dmg` | [Releases](https://github.com/alper-han/CrossMacro/releases) | Choose `osx-arm64` for Apple Silicon or `osx-x64` for Intel |\n\n### First-run notes\n\n- **Linux daemon packages (`.deb`, `.rpm`, AUR):** package scripts try to set up\n  `crossmacro.service` and the `crossmacro` group. Log out and back in, or\n  reboot, if your user was added to that group.\n- **Flatpak/AppImage on Wayland:** CrossMacro may show a setup dialog and run\n  Quick Setup for temporary direct device permissions.\n- **NixOS:** use the nixpkgs module for a complete daemon-backed setup. Enable\n  `services.crossmacro` and set `services.crossmacro.users` for your desktop\n  users.\n- **Windows:** Store and winget are the easiest update paths. Portable EXE users\n  run the downloaded binary directly unless they add it to `PATH`.\n- **macOS:** requires macOS 10.15 or newer. Grant permissions when prompted; if\n  macOS blocks a GitHub DMG on first launch after dragging the app to\n  Applications, run `xattr -cr /Applications/CrossMacro.app`.\n\n### Platform-specific setup\n\n- Linux setup, runtime modes, Wayland notes, NixOS, and daemon/direct-device\n  troubleshooting: [docs/linux.md](docs/linux.md)\n- Windows Store and winget provide managed updates. GitHub Releases include MSIX\n  packages and self-contained portable EXE files for `x64` and `arm64`.\n- macOS install, Gatekeeper, Input Monitoring, and Accessibility setup:\n  [docs/macos.md](docs/macos.md)\n\n## CLI Usage\n\nUse the platform app executable as `crossmacro` when your install channel places\nit on `PATH`. Portable builds may require running the executable directly from\nits download folder.\n\n```bash\ncrossmacro --help\ncrossmacro --version\ncrossmacro --start-minimized\n\ncrossmacro play ./demo.macro --speed 1.25 --repeat 3 --repeat-delay-ms 500\ncrossmacro macro validate ./demo.macro\ncrossmacro macro info ./demo.macro\ncrossmacro doctor --json --verbose\n\ncrossmacro settings get\ncrossmacro settings get playback.speed\ncrossmacro settings set playback.speed 1.25\n\ncrossmacro schedule list\ncrossmacro shortcut list\ncrossmacro run --step \"move abs 800 400\" --step \"click left\" --dry-run\n```\n\nFor command syntax, direct-run steps, log levels, and GUI-less desktop runtime\nnotes, see [docs/cli.md](docs/cli.md). The `headless` commands still require a\ndesktop session; they are not intended for display-less server automation.\n\n## Diagnostics and Troubleshooting\n\nStart with doctor instead of guessing from manual commands:\n\n```bash\ncrossmacro doctor --json --verbose\n```\n\nOn Linux, doctor reports daemon-backed readiness separately from direct device\nreadiness. Direct input checks can pass while daemon IPC still warns or fails,\nfor example when `/run/crossmacro/crossmacro.sock` exists but the current login\nsession has not picked up `crossmacro` group membership. Direct device readiness\ndoes not grant access to the daemon socket.\n\nWhen opening an issue, include your platform, install channel, relevant logs, and\n`crossmacro doctor --json --verbose` output.\n\nLinux setup and troubleshooting details are in [docs/linux.md](docs/linux.md).\nFor Windows or macOS capture/playback issues, restart CrossMacro after changing\npermissions or switching sessions, and pause other automation, overlay, or\nsecurity tools before retesting.\n\n## Support and Project Links\n\n- Contribution guide: [CONTRIBUTING.md](CONTRIBUTING.md)\n- Security policy: [SECURITY.md](SECURITY.md)\n- Linux setup and troubleshooting: [docs/linux.md](docs/linux.md)\n- CLI usage and run syntax: [docs/cli.md](docs/cli.md)\n- Issues: \u003chttps://github.com/alper-han/CrossMacro/issues\u003e\n- Discussions: \u003chttps://github.com/alper-han/CrossMacro/discussions\u003e\n- Private vulnerability reporting: \u003chttps://github.com/alper-han/CrossMacro/security/advisories/new\u003e\n- Packaged CLI manpage: [`docs/man/crossmacro.1`](docs/man/crossmacro.1)\n\n## Contributors\n\nThanks to everyone who contributes to CrossMacro.\n\n[![Contributors](https://contrib.rocks/image?repo=alper-han/CrossMacro)](https://github.com/alper-han/CrossMacro/graphs/contributors)\n\n## Star History\n\n[![Star History Chart](https://starchart.cc/alper-han/CrossMacro.svg)](https://starchart.cc/alper-han/CrossMacro)\n\n## License\n\nLicensed under GPL-3.0-only. See [LICENSE](LICENSE).\n\n## Community\n\n\u003cdiv\u003e\u003ca href=\"https://discord.gg/QUBuND5TvM\"\u003e\u003cimg src=\"https://discord.com/api/guilds/1477899451476742164/widget.png?style=banner2\" alt=\"CrossMacro Discord community\" /\u003e\u003c/a\u003e\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falper-han%2FCrossMacro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falper-han%2FCrossMacro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falper-han%2FCrossMacro/lists"}