Finally made the switch from alacritty to kitty. I have been thinking
about this for a while. Both, fundamentally, serve my purposes just
fine. Both are fast, customizable, gpu accelerated, and so on.
Kitty feels a little faster on the input, but this should not provide
major differences.
One big difference, however, is now very apparent and I can feel it:
Alacritty, on wayland, does not support any picture preview. It does not
support sixel, and things like w3mimg or ueberzug are based on and
require X11 to run.
Kitty brings its own graphics display library and it seems both pretty
stable and fast.
I have not done much more with it than use it in things like vifm image
previews but it should be much more stable than things like ueberzug,
much faster than things like sixel. Time will tell.
Switched other modules to make use of kitty instead of alacritty:
vifm uses kitty previews,
river spawns kitty instances,
systemd units use kitty instances,
waybar presents extra mouse-click interactions through kitty,
and styler contains a processor to style kitty permanently.
I would love to converge this all a bit more on the `$TERMINAL` env var,
but this is unfortunately difficult for things like systemd and waybar.
For waybar I currently see no real way except for a custom
`ideal-terminal` script which just goes down the list of terminal
emulators I want to run, depending on which is installed,
since it does not read env vars,
while for systemd it might be feasible to import user environment
variables,
but also connected to additional complexity and overhead which it does
not seem worth for the currently two simple service units it affects.
Also removed some obsolete sxhkd and sh settings from the move to
wayland.
Detect X autostart a bit better with a separate service. The service
relies on a shell script which searches for a socket which X creates on
startup and only finishes when it finds the socket succesfully.
This makes services which need X to start successfully a bit more
robust, and while it can still break if X takes too long, it should be
more stable now.
Finally, services can restart more quickly when ended since they don't
require the 2+ `RestartSec` option to be present anymore to successfully
start.
Flashfocus did not start up correctly since it was not required for the
`default.target` which is the only (?) valid target when systemd
operates in user-mode.
Instead of overwriting just part of the flashfocus service file, and
subsequently having it enabled for default.target and a non-existent
graphical.target user environment, we overwrite the whole file and set
it to `default.target`.
Additionally, the service should be restarted when it fails and slow
down on its restart attempts (I kept 5 seconds for this one, since it is
not as time critical as others -- no one cares if windows only flash
5 seconds after starting the machine.)
Added (wishful) After components to many service units, in case I figure
out one day how to make a useful target for the systemd user mode.
Main issue the restart delay fixes is that services don't wait for X to
be ready on startup (which is bad if the application being started
requires X being ready to actually work.)
I have still not found a way to work around waiting for X being ready
other then the ugly delay hack (for systemd --user modules at least).
However, the delay can be --- in most cases --- smaller than 5 seconds.
All my machines start reasonably fast and have X up and running from
pressing login to staring at the wallpaper in a couple seconds at most.
If services don't start correctly and the error is X not being ready,
increase the startup delay once again.
Fixed bug when line in todo dropdown starts with `vim:`, `vi:`, or `:ex`
which would automatically be read by vim and tried to be set in the
editor. Removed modeline reading from vim to fix the bug, and since it
provides quite an attack vector anyway.
Added Limelight to its startup procedure to highlight the current to-do
paragraph.
Dropdown services need an X server to connect to and fail autostarting
if there's no available server.
HACK
Increasing their restart timer will alleviate this problem, *but* it
also means the dropdowns will start more slowly when closed by the user.
There should be another way to alleviate one issue (start automatically
after X is available) without exacerbating the other (restart when you
have been closed).