Metadata-Version: 2.1
Name: TotoBotKey
Version: 0.0.2
Summary: Just like AutoHotKey, on Wayland (and probably X)
Author-email: Vanane <vanane@vanane.net>
Project-URL: Homepage, https://github.com/Vanane/TotoBotKey
Project-URL: issues, https://github.com/Vanane/TotoBotKey/issues
Keywords: Automation,Wayland
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Desktop Environment
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: evdev>=1.7.1
Requires-Dist: bitstring>=4.2.3
Requires-Dist: setuptools>=61.0

# TotoBotKey
## Just like AutoHotKey !*
*with a $0 budget and 8 hours of work

## What is this ?
A scripting macro tool written in Python, mainly destined to Wayland (but it might work with Xorg too, ig ?).
The inputs are simulated using [ydotool](https://github.com/ReimuNotMoe/ydotool), whereas the events are managed simply by reading udev's input files.

It work not unsimilarly to AutoHotKey, which I've yet to find a satisfying replacement on Linux, and more specifically on Wayland.

## Why tho ?
I've yet to find a satisfying replacement on Linux, and more specifically on Wayland.
Apparently, KDE's macro tool is complete enough to do most stuff, but I believe that a single script ~~to rule them all~~ that handles everything feels easier to use and manage. Also, versioning™-capable !

## What do I need ?
- A computer and an OS that uses Wayland
- Python 3.9+
- [ydotool](https://github.com/ReimuNotMoe/ydotool), which also includes ydotoold

**Quick note on ydotoold :** (I AM NOT A SYSADMIN, DON'T TAKE THIS AS A GOOD SECURITY MEASURE)<br>
It is recommended to run it as root user, but by doing so, ydotoold will create a socket file that's unreadable by a normal user.

The way _I_ am running ydotoold right now is the following :
- Added myself to `input` group
- Added `export YDOTOOL_SOCKET='/tmp/.ydotool_socket'` in my `~.bashrc`
- A service runs `ydotoold -P 660 -o 0:<input GID>`

## To-do List
By order of priority :
- Refactor and clean codebase (lmao)
- Add support for each ydotool command options (delaying keys, sending keydown/up, etc.)
- Add keydown/keyup events
  - i'm starting to think that it doesn't make much sense
- Encapsulate decorations into a class
- Better handling of keyboard layout
  - Current solution : "you figure out your own keys dictionary"
  - Final solution : "let's use input.h because ydotool said so"
- Add a screenshot function (or a library that does just that on Wayland)
  - "You figure out your own screenshot function"
- Provide a basic GUI to manage running scripts
  - Maybe also a killswitch which you can activate with a shortcut, a click or just hovering your mouse above
