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.
`jed` allows editing the 'latest' (i.e. most recent, timewise) change we
can reach following the descendants of the current working copy.
In essence, this allows us to quickly jump to the head of whatever
branch we are on.
Similarly, `jet` goes to the newest descendant of the 'trunk' branch
(i.e. generally 'master' or 'main').
And `jel` just goes to the newest commit in general out of all commits
in the repo.
These have a lot of overlap and I might end up removing the latter two
if I am not using them much, which may be the case.
We use a custom zk indirection which ensures that any short alias for
interacting with the zk wiki will actually act on the globally assigned
wiki (by ensuring notebooks dir is "$WIKIROOT").
Local wiki requires the '$WIKIROOT' env var to be set, pointing to the
root of the (zk) wiki. So we only create associated aliases if the wiki
actually exists on a machine.
Changed into a function which takes the revision to set the bookmark to
as an argument. This should work without interfering much since the
bookmark name that the `bookmark set` function _usually_ takes as
argument is already given by the alias (always 'main') and thus we do
not have to manually provide other arguments.
It default to the current working copy just like the command and
otherwise can point to any change.
I have gotten more used to using `jw` to 'show' the current changes in
the working copy, and having `js` be _both_ status and show has become
more confusing than helpful. For now, we just revert it to be a simple
alias for the status command.
I have begun abandoning more commits recently, so this seems a good time
to introduce an alias for it. It is not _so_ common as to require a 1 or
2-letter alias so we can go with the mnemonic `jab` for jj abandon.
Adds a very simple 'githead' revset alias. This is not much simpler than
directly invoking `git_head()` but it will remind me in the future of
its existence.
The new log aliases follow one logic: small letters are default and
capital letters show 'all' changes. Thus, `j` defaults to showing the
simple log and `J` the same log but for all changes.
`jl` shows oneline logs, `JL` oneline logs for all changes.
`jlo` shows log summaries, `JLO` for all changes.
And finally `jloo` and `JLOO` show the details patches for each change.
This new alias setup provides four quick traversal options:
Moving ahead one commit (`jen` for edit next), backwards (`jep` for edit
previous), as well as doing the same but creating new 'working copies'
instead of going directly to a commit (`jenn` and `jepp`).
Currently `ji` (for jj insert) does a 'manual' `jj split` by creating an
empty commit underneath, squasing interactively and then moving back to
the original. All of that is done by the existing `jj split` command.
So we simply use it. I am keeping the `ji` alias for now, could still be
'jj insert' or 'jj spl(I)t' I suppose.
The note dir is in fact our `$WIKIROOT` so we set it to that by default.
Also took the chance and added a small 'cd' command into the note dir,
using `ncd`
For some reason (glow 2.0.0 release?) markdown preview with glow does
_not_ work anymore within my vifm. It regresses to showing errors all
over the place instead.
Make more extensive using of dataclasses for typing and simpler future
refactors.
The redirects 'plugin' is now a simple class which can be imported into
the configuration and is automatically active when instantiated. For
that to work it needs access to the qutebrowser python library but that
should hopefully be a given if wanting to have a qutebrowser plugin.
To make the default redirects active, simply import the class and
instantiate it:
```python
from fossredirect import Redirects
_ = Redirects()
```
This loads the defaults and activates them in qutebrowser. Try to go to
e.g. 'reddit.com' and it will automatically open in a libreddit
frontend.
To customize the redirects, provide a custom list of Services:
```python
from fossredirect import Redirects
_ = Redirects(services=[Service(source=["fromhere.com"], target=["tohere"])])
```
It works a little more flexibly now:
Redirects contains a list of Services.
Each service is a simple data container with the following:
```python
Service(
source=["list.of", "hosts.to", "redirect.com"],
target=["farside-redirect"]
)
```
The above redirects any of the source hosts to the far-side provided
target (in this case it would be
`farside.link/farside-redirect/<original-path>`).
However we can also specify 'custom' targets if farside does not have a
service that we want to redirect.
```python
Service(
source=["list.of", "hosts.to", "redirect.com"],
target=["my-redirected-host.org"],
custom_targets=True
)
```
This directly rewrites the host to
`https://my-redirected-host.org/<original-path>`.
Lastly, we can have custom preprocess/postprocess functions which fix
some more involved redirect:
```python
Service(
source=["list.of", "hosts.to", "redirect.com"],
target=["my-redirected-host.org"],
postprocess=lambda item: item
)
```
Be aware that the functions take 'QUrl' objects so you have to access
e.g. the actual host with `item.host()` before rewriting. Look at the
breezewiki rewrite function for an easy example.
By default, the log invocation now shows at least 5 ancestors of the
current working copy branch. This makes it much easier to get situated
to the current location for me - otherwise, if I just pushed my main
branch and thus there is the main bookmark just below my commit none of
the last couple changes are shown in the log. If there are fewer than 5
ancestors it will just show however many there were.
By passing the 'no-restart' argument as the first parameter of the river init
file, we can prevent program restarting which we do not want to have restarted
every time (e.g. kanshi, wlsunset, waybar, swayidle, etc)
By default these programs will still always be restarted. However, passing the
parameter means that if the program is already running, we do not restart it.
If the program is not yet running it will still be started like normally.
The functionality makes use of the `pidof` program, so on Arch it requires the
'procps-ng' package. This is by default installed as a requirement for the
'base' package group.
Reverted changes from earlier wallpaper switch.
Multi-output wallpaper setting was never particularly stable using swww.
Using swaybg we can directly call on the 'description' of the outputs
like we do in kanshi. This makes the interface way more stable than
hoping that 'DP-3' and or 'DP-5' are discovered first. Thus, we default
to use swaybg and my screens, but if the program is not found on the
system we can still fall back to swww.
Instead of aliasing the revset I am always using currently, we simply
set it to be the default for any log command. If we want a different
revset we can still supply it. Other aliases keep different revsets
(e.g. `jL` variants for `all()` revsets).