Shortcut to input a string of text in Plasma Wayland

flyos@jlai.lu to Linux@lemmy.ml – 28 points –

OK, so I'm a heavy user of the native pipe in R which goes like this "|>". This is particularly painful to type on French keyboard, so on Plasma X11, I had a little script using xdotools to input |> when I pressed Ctrl+$. Very comfortable!

With the switch to Plasma 6, I'm now using Wayland because one needs to live with one time, I guess. But this means I lost the ability to use xdotools to do that.

I tried wtype, which seemed easy, but it doesn't seem to work in Plasma (and is not maintained any more?).

I tried ydotools, which is harder to set up (it requires running a deamon as root, which is not convenient and also defeats the security purpose of Wayland I guess? Maybe not, I'm no expert). The problem with ydotools is that it doesn't seem to be aware of the keyboard layout, and since my keyboard is French AZERTY, it outputs gibberish instead of, well, |>.

So, here's my question for you guys: do you know of any other (if possible, easy as wtype is/was) way to setup a string input associated to a shortcut?

13

It's more about replacing typed text than using shortcuts, but there's espanso.

Seems interesting. I'm happy if it works with just as a text replacement. Seems a bit of a pain to install though! 😅

I'll have a look in more details tomorrow! Cheers!

I second this. I've been using it for months, compilation may seem complicated, but you just prepare your environment once and you aren't bothered again. You can ask for support if you find problems, and you can easily modify and backup your configuration for future uses or just in case :)

This may sound convoluted, but you could create a custom command in Keyboard->Shortcuts (Add New -> Command or Script) that uses ydotool (uses a service) that is basically ydotool type "|>" and then create a shortcut of Ctrl+$ for it.

Edit: I just tried this, it seems like custom shortcuts aren't working?

Sorry, may need to submit a bug report.

Yeah, I tried this way, but due to the issue with keyboard layout, ydotool does not output |>, but some gibberish instead. I couldn't reverse-engineer how to make it output a proper |>.

Maybe this?

https://github.com/xremap/xremap

Edit: I haven't figured it out yet, so still a maybe.

Looks interesting. I'm not entirely sure it can output two keys since it's a remapper, but I'll dig into more details tomorrow, thanks!

I also found this, which looks specifically able to do exactly what you want.

https://github.com/snyball/Hawck

But there are some hoops to jump through and I haven't tested it.

(Edit: I just wish Plasma's key bindings worked, perhaps it'll work again soon)

@superfes@lemmy.world @Andy@programming.dev @thingsiplay@beehaw.org

After exploring all solutions, and fighting a few things to build either Hawck or Espanso on openSUSE (I'm not a dev), I finally managed to find instructions to get Espanso to build (it's all there, fellow desperate random reader of the future). Since you can define the keyboard layout AND the variant of said keyboard you are using with Espanso, it's working as expected.

So now, I've associated ":$" with "|>", not sure how well that'll work in the future, but it's far easier to type on my keyboard at least... Also, I gained a tool to insert greek symbols and smileys everywhere that I didn't know I needed, but very quickly adopting! 😅

Thanks all for your help!

Thank you for the final resolution. That's always neat to see. :-)

You could use a clipboard tool to copy something to the clipboard and then paste it in one command. There is such a common tool for Wayland: https://github.com/YaLTeR/wl-clipboard-rs . It's at least in the official repository in Archlinux. The command could be something like this:

wl-copy "|>" ; wl-paste

Off course you would lose the current clipboard content this way. But I guess a script could easily be written to backup and restore clipboard, but not entirely sure how safe it is.

Interesting take! Worth a shot!

Hm, I don't think it works, because as far as I understand, wl-paste is outputting the content of clipboard into stdout, not actually "pasting" the content (or at least, I can't make it paste something outside of stdout, maybe I'm being thick).