12
submitted 1 month ago* (last edited 3 weeks ago) by Flagstaff@programming.dev to c/linuxmint@programming.dev

The issue seems to be Keysharp interfering!

Original post:


I have this set up as a startup script, but it only sometimes triggers, despite setting a 20-second delay:

#!/bin/bash
sleep 2
xmodmap -e "clear lock"
xmodmap -e "keycode 66 = Return"

I have the startup command set to bash "path/Remap_Caps_Lock_to_Enter.sh". What's going on? It works when I press the triangle button when it doesn't work on boot.

you are viewing a single comment's thread
view the rest of the comments
[-] artwork@lemmy.world 1 points 1 week ago* (last edited 1 week ago)

As we know, it depends on the actual environment, where simpler or more complex options are available out-of-the-box.
Meanwhile, have you tried?:
- https://github.com/hluk/copyq
- https://copyq.readthedocs.io/en/latest/scripting.html

In CopyQ, since its compiled with the clipboard event handling, it's sure possible to handle these events, including changing the content or launching custom scripts, and though I don't like Python, I do like JavaScript, and CopyQ has built-in support for quite limited but JavaScript with its own API function built-in to handle it, mentioned in the documentation above.

Preview of the settings I've just checked out in a Kubuntu machine I had on hands:

| | | |


|


| | | |

And it worked! The quick scripts I tried are the following:

The one for CopyQ (I had v6.0.1)Apparently, it does not support

copyq:
try {
    var original = str(clipboard());
} catch(e) {
    abort();
}

// If empty or too long
if (!original || original.length > 10000) {
     abort();
}

try {
    var executed = execute('/home/user/scripts/clean-url.sh', original);
} catch(e) {
    abort();
}

// If failed to execute
if (!executed) {
    abort();
}

var cleaned = str(executed.stdout).trim();

// If empty or matches the original (CopyQ may get into a loop otherwise)
if (!cleaned || !cleaned.length || cleaned === original) {
    abort();
}

// Change the clipboard buffer
copy(cleaned);

That program or script, to clean it, may be anything you prefer of course, including Bash, Perl, PHP, JavaScript, or what AutoHotKey does/executes in your case possibly.


There's the following to automate the read/write I know but haven't used, too:
- https://github.com/Slackadays/Clipboard

In Wayland, you may use wl-paste to read, and wl-copy to write into the clipboard.
In X11, xclip to both read and write.

The thing is that there should be some kind of event to handle on the clipboard change, and there options as DBus or Qt, yet I am not currently aware of a verified option to do so without an actually compiler program to subscribe to such an event.

For instance, Klipper, the Qt program, uses the even handling over DBus exposed via its libraries for convenience.

this post was submitted on 11 Jun 2026
12 points (100.0% liked)

Linux Mint

359 readers
1 users here now

A community for news and discussion about linux mint

founded 2 years ago
MODERATORS