You might have noticed that Plasma keyboard shortcuts have been
changing recently with the aim to have everything KWin/Plasma be
Meta+Something.
Now, I tend to redefine most of the default shortcuts, so this didn’t
affect my workspace directly, but I liked the idea to have different
modifiers used depending on the category of /thing/ for which I’m
creating a shortcut.
An additional aim I had is to have a common shortcut ‘body’ for
equivalent actions in different categories, in order to more easily
build muscle memory with my new shortcuts.
Categories that I have are:
system (Plasma and such)
terminal application (Konsole, Kitty)
terminal multiplexer (TMux)
specific application (Firefox, Vim, …)
And these are the modifiers I’m trying out:
system: Meta+Anything and
Alt+Special keys
terminal application: Ctrl+Shift+Anything
terminal multiplexer: nothing special yet, just the
Ctrl+d as the leader
specific application:
working with tabs: Ctrl+Anything
other shortcuts: Alt+Normal keys
So, for example, the ; and ' as the shared
shortcut /bodies/ mean the following in different categories:
Meta+; and Meta+' – switch to next and
previous window (I’m using Krohnkite for tiling, so this is not like
Alt+Tab, but moving through the visible tiled windows);
Ctrl+Shift+; and Ctrl+Shift+' – would mean
switch to next and previous panes in the terminal application (I’m not
using this yet, as I don’t tend to use split views in terminal except in
TMux);
Ctrl+d ; and Ctrl+d ' – move to next and
previous panes in TMux;
Alt+; and Alt+' – move to next and
previous panes in an application (currently only in Vim and
Neovim).
So far, the approach seems to work Ok. I’ve quickly got accustomed to
the new window/pane navigation shortcuts.
The main problem are the programs that don’t allow changing shortcuts
(Firefox for example) or don’t allow creating shortcuts with some key
combinations (using Ctrl+; in Vim or Neovim does not work,
while it works with Alt).
Because of those limitations, the modifiers are not as clear cut as
they ideally would be. Ideally, each category would have its own single
modifier, instead of, for example, having a mix of Alt and
Ctrl in the /specific application/ category, and using a
modifier combination like Ctrl+Shift for the /terminal
application/.
I’ve also redefined all my Plasma and KWin shortcuts to be
location-on-keyboard-based, but more on that later.
I’ve written a small Neovim plugin which might be useful to people
who often work on several projects in parallel.
It activates a specific theme based on the project you are working on
(the current directory you start Neovim from).
It allows you to define which themes should be used for which
projects. The configuration is simple and allows specifying patterns for
matching project names (not full regex, but what Lua supports).
My configuration looks something like this (this is in Fennel, for
the Lua version, check out the readme):
You might have seen the awesome Klassy theme by Paul McAuley for Qt
applications and window decorations for KWin.
Klassy
It has some issues compiling against the latest Plasma since the
KDecoration API break.
Until it is fixed in the main repository, I’ve created a temporary
fork that includes the port to KDecoration3 done by Eliza Mason, with a
tiny additional fix I added on top of it. The fork is available at github.com/ivan-cukic/wip-klassy
If you’re old enough, you probably remember that there was a meme
from the 4.x days is that Plasma is all about clocks.
I’ve started working on some new artwork, and ended up sidetracked
spending more time designing fun clocks for Plasma than on what I
planned to work on, proving there’s some truth to the meme.
These are based on one of the coolest watch designs I’ve seen in
recent years – a Raketa Avant Garde:
I use several non-KDE Qt-based applications which I tend to compile
manually from source to use the same non-distro-provided Qt version that
I compile KDE software against.
I’ve noticed that I don’t update them as often as the rest of the
system, so I decided to see if I can add them to
kdesrc-build.
The packages-to-be-built definitions are located in
repo-metadata/module-definictions which already contains a
few 3rd-party libraries that the KDE frameworks and applications
use.
Adding the Strawberry player (fork of Clementine, which was a fork of
Amarok 1.x) to the build, was quite straight-forward. I just needed to
define the repository, cmake options to make it build the
Qt6 version instead of the Qt5 one, and the branch I want to build
from.
module strawberry
repository https://github.com/strawberrymusicplayer/strawberry.git
cmake-options -DBUILD_WITH_QT6=ON
branch master
end module
For applications with normal cmake setup, it is as easy
as that. But there are applications like recoll which don’t
have a CMakeLists.txt file in the top level, and
kdesrc-build doesn’t like that.
To ensure that kdesrc-build finds the real src directory
for cmake, I needed to do something completely hackhish. I
had to pass the path to the source directory, which is otherwise defined
automatically by kdesrc-build for each project it builds,
to cmake-options: