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:

https://askubuntu.com/questions/1413829/how-can-i-install-and-use-the-latest-ydotool-keyboard-automation-tool-working-o

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!

  • hades@feddit.uk
    link
    fedilink
    arrow-up
    4
    ·
    3 days ago

    It looks like you’re missing the ydotool.service unit file in the package. Can you check by running dpkg -L ydotool-custom (the name of the package you chose in step 3.4)?

    Unit files are how services are defined in most Linux-based desktop systems, similar to services in Windows.

    • DarkSpectrum@lemmy.worldOP
      link
      fedilink
      arrow-up
      4
      ·
      3 days ago

      Thanks for the reply Hades, the output of that command is:

      /.

      /usr

      /usr/lib

      /usr/lib/systemd

      /usr/lib/systemd/user

      /usr/lib/systemd/user/ydotoold.service

      /usr/local

      /usr/local/bin

      /usr/local/bin/ydotool

      /usr/local/bin/ydotoold

      /usr/local/share

      /usr/local/share/man

      /usr/local/share/man/man1

      /usr/local/share/man/man1/ydotool.1.gz

      /usr/local/share/man/man8

      /usr/local/share/man/man8/ydotoold.8.gz

      • hades@feddit.uk
        link
        fedilink
        arrow-up
        8
        ·
        edit-2
        3 days ago

        Ah okay, it’s a user unit then. Try the following:

        $ systemctl --user enable ydotoold
        $ systemctl --user start ydotoold