I am a new Linux user and have settled on Ubuntu 24.04.3 LTS in Wayland. In Windows, I used AutoHotKey to automate the keyboard to type repetitive text strings with a hotkey e.g. pressing Alt+E to type my@email.com
I believe the solution in Linux is to install an application like dotool or ydotool and then create a custom shortcut command. The problem is I cannot get dotool and ydotool to work. I’ll document the issues I’m having with ydotool as there seems to be more awareness and support for this application.
I am following the instillation instructions here:
Everything seems to go fine until I get to this step and get the following error:
sudo systemctl enable ydotoold
Failed to enable unit: Unit file ydotoold.service does not exist.
I came across this issue which suggests it could be a permissions issue on /dev/uinput and tried to the solution provided in that post but I still can’t enable ydotoold after a reboot.
Running this command works:
ydotoold --version
v1.0.4-38-g708e96f
But I am stuck here and not sure how to troubleshoot or progress further. Any help would be appreciated, thank you!


Perhaps it’s a user-level service? Try
systemctl --user start ydotoold.serviceThat seems to have worked better, I can now run ydotool commands in terminal. Will a user level service have any specific limitations?
When use this command as a custom keyboard shortcut:
ydotool type abcde12345It will miss the first few characters and type:
de12345When I try chaining shell commands to pause and wait before typing, it doesn’t work at all:
sleep 2; ydotool type abcde12345Any ideas on how I could automate ydotool as a keyboard hotkey? Custom shortcut to run a bash script maybe?
I think ydotoold has an equivalent to sleep built in. A good while back I wrote a quick ydotoold command to automate something like 100 keypresses with delays in between. Let me know in 12 hours if you haven’t gotten that figured out and I can find you the commands
Thanks, unfortunately ydotool has removed their sleep command stating ‘this should be your shell’s job’. I tried using the standard shell sleep command and used the semicolon to chain commands. Maybe thats not how to use the command field of the custom shortcut.