Instead of finding the notebook at the wikiroot, we directly change the
current working dir to the notebook for the runtime of the zk command.
This has a couple advantages: Any other commands executed will also pick
up the correct directory, and creating notes in a specific directory
also just _works_ by giving a directory in the notes dir even if we are
somewhere else.
Added a new state which should fix the icon spacing issues:
When we have no upcoming events or upcoming events but none today, we
only display the icon and so we do not add any additional spacing.
(This is alt state `event` or `no-event`)
Only if we have an upcoming event today (alt state `event-today`) are we
printing it directly on the status bar and only then should be have
additional spacing. So we have an icon (the same as for event) with the
correct spacing so that whether there is text on the statusbar or not,
we space correctly.
On my current voidlinux system I have no access to elogind and riverwm
will just be restarted when I exit it (since it is watched over by a
user service).
My session is started by the display manager 'greetd' (which in turn
runs tuigreet but that is not important here). So, to log out of the
session - we do a search for the 'greetd' process and if we find it we
search its _child_ processes which are the ones that we can kill without
being a super user.
If we kill the right process here, the session will close (since the
'watched' process exits and greetd just takes over again). This would be
a little easier if we started riverwm through greetd directly but I like
this indirection for stability (automatic service restarts), flexibility
(I can stop the riverwm service independent of my session), and adaption
(we can use Turnstile environment variables between my session
services).
So we just close all the processes that are children of greetd --
perhaps we accidentally catch a process which is _not_ the root session
process run by greetd but we'll kill it nevertheless since all child
processes might stop greetd from taking over (and they would be closed
anyway when ending the session afaik).
I have no linger enabled on my system so far (user processes staying
enabled after log-out) and I do not know how that would interact with
this method.
Running pass-pick (or other gpg requiring software) through river was
not correctly accessing the gpg agent since being managed by runit user
service did not point them to the correct gpg agent socket.
This commit fixes it using keychain as auxiliary software to manage a
session-long gpg agent process which is also exported into the turnstile
environment so other runit services can make use of it.
While there are errors that pop up when inserting text (_each time_), it
is still much preferable to the unbearable slowdowns that happen after a
while when running it in XWayland mode.
Accidentally hitting q was just a little too common for me so now at
least I will have to accidentally hit two keys at once.
Regular q is completely ignored.
So far, we used the external `setxkbmap` tool to map the compose key to
the 'menu' button (AltGr on my keyboard). With this I am able to type
äöü€ß.
Now using the built-in option in riverctl which I just discovered, so we
rely on fewer external programs.
Also setting the keyboard itself to 'us(altgr-intl)' which I _think_ I
had enabled before. If it turns out not, well, can always change back to
us layout with a single line.
Since 612b92d1 we are matching private commits case insensitively, we
should also match default commit search insensitively by default.
This changes the alias to search without caring for the case. We do not
have an equivalent alias for case sensitive search, and I will only add
one if I need the specificity often enough to warrant an extra alias.
Summary logs are changed to a little nicer presentation (from --summary
to 'builtin_log_compact_full_description' template).
Oneline logs have a changed order. Keep the revID as first thing, but
then show bookmarks/tags/head and descriptions. Only afterwards
show email, timesatmp, commitID since I am less interested in them
generally when viewing oneline commits (to get an overview of the last
changes and my current position).
Passing them through as individual arguments on the commandline.
Previously quoting would pass them through as a single argument, making
it not work correctly.
Could switch to using bash arrays for this (to make it more robust
against word-splitting) but a) I prefer the portability of sh for such a
simple script and b) there _should_ never be a time when we pass through
anything that has weird word-splitting issues. Either the location is
passed through or the times.
We load the 'run-help' function to quickly show us documentation for the
command under cursor when we enter vi mode and then hit 'K'.
This mimics the actual vim setup where K will generally show
documentation/hover info/help as well.
The command invocation requires an 'even amount of arguments' which I
don't fully understand but have no time to read into and fix currently,
so it just gets another superfluous 'run-help' tacked on at the end.
The xdg-compliance function would check on shell startup if we have a
file mentioned by 'PYTHONSTARTUP' and create it if not.
However, if there is no env var in the shell calling for this at all it
would still try to create a file at an 'empty' path, so this obviously
won't work.
Added a check that we even have the variable to do work.
swayidle is now also presented as a user service managed by runit on
voidlinux. It comes with the same defaults as before (300 seconds to
lockscreen, 600 seconds to screen dimming and 900 seconds before
suspending).
Additionally the lockscreen script has been updated to correctly tell a
wayland from a non-wayland session without logind being available on the
system, though it still defaults to using loginctl if it finds it.
The service runs as swayidle in the user services directory and can be
confirured using a 'conf' file which would be placed in the 'swayidle'
service directory. Timeouts can be set with `time_to_lockscreen`,
`time_to_screendim` and `time_to_suspend`.
Keeps using the known systemctl commands for voidlinux environments (or
other environments that have access to the `systemctl` command).
For voidlinux it instead uses the commands `poweroff`, `reboot`, `zzz`
and `ZZZ` (which are the same script). Works fairly naively for now and
does no checking if the commands exist or work. Runs required commands
as sudo so ideally the user or group has access to a passwordless
implementation of the commands.
Internally `jnb` runs `jj new -B@` so that it simply always insert a change
directly before the current working copy.
Likewise with `jna` for inserting after current. (Which is still
somewhat helpful since by default `jj new` will create a branch in the
tree if the new change is not the leaf node)
If `vsv` void service manager program is on the system, we also point it
to our own user service directory and make it accessible as `usv` user
service manager.
Fixed quoting so that we can now also search for things which would have
a meaning in jj, e.g. `jlf 'WIP:'` (jj would pick up the ':' and
complain before).
Switching to runit (and turnstiled, which in turn activates user-local
runit service supervision) we can now have river run supervised by our
service manager quite easily.
We make use of this, but have to take care to export the
river-established wayland variables (DISPLAY, WAYLAND_DISPLAY) back into
the user environment for other processes since river will not be the
one responsible for spawning them anymore.
On finishing the service (i.e. exiting the process), we ensure
that the variables get removed from the environment again so it is not
polluted in the future.
Additionally, we load the (default for void runit) 'turnstile-ready'
service which can define core user services that need to exist before
others on login, and the session-local dbus service which river and
other programs will make use of. It is marked as essential with
turnstile-ready.
Since wezterm on wayland is an older release (does not track nightlies,
so currently last release is 2024023, a year old) it does not work as
well with wayland as I would hope.
There are two major issues:
- Cursor errors whenever a mouse pointer is above the window (can be
partly fixed with the xcursor_theme option, though still erroring when
hovering over links).
- Constant errors that inactive text input is sending updates in river
logs.
Until those are fixed, or I jump to a nightly version, we keep it
xwayland.
I have not used (most) of these services in a long time. This makes the
unlinking more official. Also paves the way for setting up simple
runit-managed user services.
This repo is not including the binary 'ziggy' files. They are used for
clipboard management and subtitle downloading, which I personally do not
need.
We are including the uosc repo as a sparsely checked-out submodule
repository now, symlinking it into place.
It might be a little buggy and I am not sure how jj deals with it but
time will tell.
A concise explanation of the idea can be found here:
<https://gist.github.com/ZhuoyunZhong/2c08c8549616e03b7f508fea64130558>
WIP: Add UOSC as submodule
Updated plugins. Forced blink.cmp to stay on version 0.11.x since 0.12.x
versions have a new `exact` match comparator which breaks my config.
See <https://github.com/Saghen/blink.cmp/releases/tag/v0.12.0>.
This is perhaps a bug in the interaction with the nvim-cmp compatibility
layer, but for now we can just pin back the version until it is fixed.
Requires bug-id to be passed and toggles the corresponding bug open or
closed (`gbo <bug-id>`). Otherwise just passes through any arguments to
the `git-bug bug status` command.
The alias `gb` will list all bugs (or allows to query for them) by
default. But if only a single argument is provided, and that argument is
a bug id then it shows the bug.
This allows a nice workflow like:
```sh
$ gb
# -> returns list of bugs, pick one from it
$ gb <bug-id>
# -> returns detailed description of bug
```
Just run `sc <diagnosis number>` and you will instantly be beamed to the
correcsponding shellcheck wiki error page.
E.g. `sc 3001` will transport you to 'In POSIX sh, process substitution
is undefined'.
Always call `bat` when we invoke `cat`. There is not ever a time when I
want to use the bog standard `cat` in preference to `bat`.
However, on the very slight off-chance there is, we still have a
fallback alias on `rcat` which invokes 'raw' cat instead.
By default we use the 'zr' plugin manager for zsh. It is quick and
painless and takes managing the plugins across two environments not our
problem anymore.
This is a temporary adjustment to start pipewire as a user process when
river starts up, targeting my new voidlinux installation. Ideally, we
want to have runit user services up and running and being responsible
for maintaining a running pipewire instance but until that is set up we
can simply start it with river.
Prefer regular 'Iosevka' font in most cases, not the highly specific
'Iosevka Nerd Font'. This may break some things back in Archlinux-land
but it is required for iosevka to be correctly displayed in Voidlinux,
and, to be honest, also feels more clean than using such a highly
specialized font for everything.
Additionally, we generally make use of both where possible, defaulting
to the more specific 'Nerd Font' family variant but falling back to
regular old Iosevka.
One exception is 'wezterm' which, though it nicely includes a font
fallback option (and a very configurable one at that), _always_ produces
a warning when the first font in a fallback list is not found -- even
when the specific 'warn_about_missing_glyphs' option is ticked. No clue
why but for now this works well enough for me.