tags: linux kde bobbins # KDE 6 Breaks this So I finally put Kubuntu 25.10 on a Thinkpad that needed a reinstall. It comes with KDE 6, and the custom keyboard shortcuts of old is gone. Moreover, mass adding shortcuts as with Bobbins, which meant hundreds of them, just crashes the settings app. So I needed a different approach. What I came up with is a simple app with Tkinter which displays a list of shortcuts which one can press. I called it `schmoop` for the sake of giving it a silly name like `schmerp`. Then, I bind e.g. `A-C-M-l` to the command `schmoop A-C-M-l`, which then finds `~/.schmoop/A-C-M-l.schmoop` which contains eybindings in a simple form: ``` x command args y command args ``` and generally each keystroke then launches a script or application. Generally that places most things two combos away, one to load `schmoop`, and the other to follow it. For other things, there is the `schmerp` app I wrote a while back, which presents a simple text entry into which you can use shorthands for commands. # Old Content I often use the word bobbins and a random word for things, especially an 'everything else'. What I do with KDE is to bind many combos using meta (which I try to reserve to window management and app launching stuff, so that all combos without meta are passed to the application and not intercepted by the desktop environment). These all then call a single binary `~/bin/bobbins` passing the keyboard shortcut, in `A-C-M-S-x` notation (Alt-Control-Meta-Shift-key) as a command line argument. So Meta+Shift+0 calls `bobbins M-S-0`. I can then control what this shortcut does by editing the script at `~/bin/bobbins`. I then put environment variables for `bobbins` in `~/.bobbins`. I then assign `A-C-M-delete` to edit the `bobbins` script. I've exported the group here (load them in the Custom Shortcuts panel in KDE Settings). Note that after importing, you may need to disable and renable the group for the mappings to take effect. [bobbins kde shortcuts](bobbins_001_2024_10.kdecustomshortcuts.xz) # My bobbins file Note that `tkt` is [Tk Text Display](/lang/python/tk/examples/TextDisplay_01) and `mp` is my [MPD helper script](/aw/media/mpd/MpcHelperScript) ```bash #!/bin/bash # $HOME/.bobbins contains variables # C-w gf to edit in new tab; C-w C-f to open in split if [ -e "$HOME/.bobbins" ]; then . "$HOME/.bobbins"; fi MP="${MP-1}" # default # ~/.bobbins.log is the log file # if you're wondering why I state the f'ing obvious, # it's so I can position the cursor over ~/.bobbins.log # in vim and use C-w gf to open it in a new tab LOG=~/.bobbins.log echo "[$(date +"%Y/%m/%d %H:%M:%S")] bobbins $@" >> $LOG # REMEMBER the ;; case "$1" in M-S-0) mp "$MP",p ;; C-M-minus) mp "$MP",v-4 >> $LOG ;; C-M-=) mp "$MP",v+4 >> $LOG ;; A-C-M-delete) gvim ~/bin/bobbins ;; A-C-M-insert) gvim ~/.bobbins ;; *) echo "Bobbins $1" | tkt ;; esac ```