{"id":19216574,"url":"https://github.com/fbeline/automata","last_synced_at":"2026-05-01T23:35:20.123Z","repository":{"id":243592425,"uuid":"787705685","full_name":"fbeline/automata","owner":"fbeline","description":"Automation tool for Windows","archived":false,"fork":false,"pushed_at":"2024-11-16T13:46:47.000Z","size":115,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-13T23:30:14.130Z","etag":null,"topics":["automation","c","hotkeys","lua","scripting","windows"],"latest_commit_sha":null,"homepage":"https://github.com/fbeline/automata","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fbeline.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2024-04-17T02:53:59.000Z","updated_at":"2024-11-16T13:46:51.000Z","dependencies_parsed_at":"2024-06-27T19:27:38.718Z","dependency_job_id":"e2c8bc90-5477-4c70-8a2c-4a8b2abffe30","html_url":"https://github.com/fbeline/automata","commit_stats":null,"previous_names":["fbeline/automata"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/fbeline/automata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbeline%2Fautomata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbeline%2Fautomata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbeline%2Fautomata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbeline%2Fautomata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fbeline","download_url":"https://codeload.github.com/fbeline/automata/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbeline%2Fautomata/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32517228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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":["automation","c","hotkeys","lua","scripting","windows"],"created_at":"2024-11-09T14:17:41.925Z","updated_at":"2026-05-01T23:35:20.075Z","avatar_url":"https://github.com/fbeline.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automata\r\nPowerful windows automation tool for advanced users.\r\n\r\nAutomata is designed to efficiently handle keyboard and mouse input tasks through scripting.\r\nIt ensures high performance and minimal resource usage, with no reliance on external libraries or dependencies.\r\n\r\n*Please be aware that this project is currently in its early stages.*\r\n\r\n## Why?\r\n\r\n**Minimal Resource Usage**:\r\n\r\nAutomata is designed to be lightweight and efficient. With a binary size of approximately 300KB and no external dependencies. The application operates in the background, consuming around 2MB of RAM.\r\n\r\n**Flexibility and Freedom**:\r\n\r\nAutomata empowers you to write your automation scripts using [Lua](https://www.lua.org/), a open-source and battle-tested language. No need to learn a new scripting language or be constrained by limited implementations.\r\n\r\n## Scripting with LUA\r\nThe scripting interface exposes functions for key presses, key releases, mouse movements, clicks and more.\r\n\r\nRefer to the [scripting documentation](doc/scripting.md) for more details.\r\n\r\n### Example\r\n\r\n```lua\r\nfunction foo()\r\n  write(\"foo\")\r\nend\r\n\r\nfunction bar()\r\n  tap_key(KC_B)\r\n  wait(50)\r\n\r\n  press_key(KC_A)\r\n  wait(100)\r\n  release_key(KC_A)\r\nend\r\n\r\nfunction baz()\r\n  pos = mouse_position()\r\n  mouse_move(pos.x + 100, pos.y + 50)\r\n  mouse_click(M_LEFT)\r\nend\r\n\r\nfunction open_cmd()\r\n  run(\"powershell.exe\")\r\n  -- also accepts working directory\r\n  -- run(\"C:\\\\Users\", \"powershell.exe\")\r\nend\r\n\r\n-- keyboard hook\r\n-- press those keys combinations and the action will be triggered\r\nactions = {\r\n  { keycode = { KC_CONTROL, KC_F1 }, action = \"foo\" },\r\n  { keycode = { KC_F2 }, action = \"bar\" },\r\n  { keycode = { KC_F3 }, action = \"baz\" },\r\n  { keycode = { KC_CONTROL, KC_MENU, KC_T }, action = \"open_cmd\" },\r\n}\r\n```\r\n\r\n# Quick Start\r\n\r\n- Double-click to open `automata.exe`.\r\n- Create a new Lua file or use the `default.lua` located in `$HOME\\AppData\\Roaming\\Automata\\`.\r\n- Click on the tray icon to open the menu and select the script you want to load.\r\n\r\n# UI\r\n\r\n![ui](https://github.com/fbeline/automata/assets/5730881/39e1affb-cd3e-402b-b1ae-daeb413e7a94)\r\n\r\n1. **Scripts**: List of available scripts.\r\n1. **Reload**: Reloads the active script to apply any changes.\r\n1. **Log**: Shows the most recent log entries.\r\n1. **Log Pressed Keys**: Logs every pressed key, useful for debugging.\r\n1. **Start with windows**: Launches Automata when the computer starts.\r\n1. **Exit**: Exit the application.\r\n\r\n# Build\r\n\r\n- CLang\r\n- CMake\r\n- Ninja\r\n- vcpkg; \r\n\r\n```bash\r\n# install lua\r\nvcpkg install lua:x64-windows-static\r\n\r\n# create build folder \r\ncmake --preset=release\r\n\r\n# build\r\ncmake --build build-release\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbeline%2Fautomata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffbeline%2Fautomata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbeline%2Fautomata/lists"}