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).
Git commits, on push, will be signed by default (just like my git
configuration itself) but *not* every change is signed since that is a
hassle with the working copy technically also being an ever changing
git commit.
Additionally, added a private-commit option which will refuse to push
commits beginning with 'wip: ' to any remote, which is not super useful
for my current use cases but also a nice feature and fun to experiment
with for the future.
The default log invoked when hitting `j` is now composed of the working copy history as well as all
ancestors, recent commits to visible heads and the trunk.
`jl` shows the same view, only as oneline commits.
Gets a pull request for the repo by directly fetching from the pull
folder of the repository. Works perfectly with github (should also work
with gitlab, and gitea/forgejo).
Searches for a remote called github or uses the default origin one.