Held back a little by the issue that you can't really set aliases
conditionally (yet?) in nushell, which is kind of fundamental to my
zsh/sh alias setup. If a program exists, we add some nice aliases -- if
not, we simply degrade gracefully and don't add anything.
PR to track issue:
https://github.com/nushell/nushell/issues/5068
For some reason the regular 'cat' completion does not work, perhaps
because it is regularly aliased to 'bat' on my systems. This manually
fixes it with a spec alias for carapace
(https://carapace-sh.github.io/carapace-bin/spec/run.html#alias)
Should find a better implementation over time but for now this is a
simple workaround. I do _not_ know how it interacts with systems when no
'bat' command is found.
Fixes #1ef7570.
We implement our own autostart-aware lsp register function. Any lsp
which has the option {autostart=false} set at their config root will be
not automatically enabled and can instead be enabled on demand.
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.
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.
Serve alias (now also with a more appropriately named file) will now
look for miniserve before any other static file serve program. I also
replaced sfz with miniserve in my installed programs. That is because
sfz has been unmaintained for a long time and miniserve completely
fulfills all my needs while still being maintained and recommended.
When invoking top it will automatically alias to a selection of newer
system monitoring software instead, using the first preferred
application it finds (e.g. bottom over btop++ over gotop over glances
and so on, ending with regular top).
While I never disliked tmux I have not been using it for absolute ages
now, ever since starting to multiplex with wezterm. Wezterm can (at
least with my current setup) *not* replace all tmux functionality -
especially running multiple sessions in a detachable way on a remote
server - but I have never needed those in a long time now.
Detachable sessions I can create instead with `abduco`.
`mcd` will, similarly to `md` create a directory and all the necessary
top-level directories but, unlike `md`, afterwards also enter the
created directory for the current shell.
Added simple function to clear the screen but additionally re-run the
last executed command.
Mirroring my clear screen alias `cl`, this one is executed with `cll`
(clear-and-last) currently.
It comes in useful for me every now and again because I sometimes just
need a quick way to get rid of 'clutter' on my terminal (e.g. running
multiple rg invocations after each other, or diffs, or anything that
spews a bunch of stuff on screen and I want to find specific things
afterwards).
I am very used to running `cl` and then the second to last history item.
This makes those additional keystrokes unnecessary.
When switching the current buffer to the Zettelkasten index page
(`<leader>ni`), we now also switch the working directory to the
corresponding notes directory.
Image nvim works mostly well (slow on wezterm but that will always be the case
with kitty protocol for now as far as I know).
Would love to be able to toggle images on/off dynamically but I don't see a
way to accomplish that now. (or really, get to any option of the plugin).
Molten itself also works well - the output is displayed more nicely than for
the Magma plugins and everything continues working mostly well (or rather,
just as wonky as I had it set up on my older magma install :)
For now, the molten - image.nvim integration seems to not work at all -
it simply errors out when it would produce an image as output. No clue why
and it also complains about the wrong image provider (which I have taken from
the molten readme). No time to bugfix now but maybe at some point.
To do - find a much better way of installing the image.nvim required
luarock magick - done manually with hardcoded path in setup now
Also extended the old `py` alias to a full-blown script which will in
addition to detecting the python repl also find any running molten
session for the current directory (i.e. any running jupy kernel) and let
the user choose the right one if there is multiple. Will then default to
starting a kernel-aware repl environment (euporia or jupyter-console).
Added a very simple `-c` option which lets you choose python command to
run manually.
Simple wrapper for xdg-open functionality. Simply refers
to xdg-open except if there exists mimeo on the system
which it will refer to instead.
So, a simple preference modificator for mimeo over
xdg-open since that is my preference too.
Also gave it a short name so I can do open whenever I
want and don't have to tax my left hand with tying xdg.
Since we generally want color in our less output, and
no paging if there is only one page we can should be
able to enable these regardless of situation.
Since we switched to viu, we should also have qr
make use of it. Renamed the function to
qrurl to make its purpose clearer (sending
a simple file location/string/url via qr code)
and to distinguish it from programs like qrcp
which actually start a server and send a file
through qr.
For anything markdown or that gets displayed as markdown
(e.g. docx files) in the vifm preview, we now use glow
or bat to display a nicely styled and colored version.
For glow I added a script which tries to detect the
current terminal background between dark/light to
correctly set the color scheme.
Replaced or extended all default references to zathura with
sioyek so it will automatically take on any tasks meant
for pdf reading. With the current configuration, hardly a
change should be noticed.
fasd is unmaintained and slower than zoxide. The transferral
was painless. I imported my old database and can continue as
before. It does not care about files but that is completely
fine for me. Same `z` invocation as before. Has the
'interactive' mode on `zi` which is also completely fine.
Removed the test-if-it-exists create-if-not cycle of manual xdg
intervention on every shell startup since it created mostly nothing but
problems so far.
It especially gets in the way of creating network filesystem mappings in
the home folder with hangups, freezes, and blocking automounts whenever
a new shell session is opened.
With the switch from jabref/zotero/pubs to papis for library management,
We can now also have nested libraries. This allows me to have 'themed'
libraries in different sub-folders (e.g. one for my academic study, one
for my old university readings, one for computer science, and so on) and
still keep referring to their containing folder as a 'main'
comprehensive library.
As such I moved the library bibtex file into the main library folder and
let it be created from all sub-libraries.
Moved the location of the gopath environment variable to point to the
user's cache to it can be cleaned more easily when cleaning cache and
also does not litter the project directory.
Whereas before there was a giant script (which worked well enough)
looking for and activating necessary ssh agents, all of it has been
replaced with a single invocation of the gpg-agent - which I have turned
into an ssh-enabled agent through its configuration file.
That means, first: I can massively simplify the looking for ssh agents
and since I am using fixed credentials (private keys supplied through
ssh host configurations) for most servers anyway it should not disrupt
my workflow and, second: I can use my private gpg key to log in to
servers if I set it up correctly.
Add a simple alias to quickly use distrobox with `db` alias, and modify
pure prompt initialization slightly so that it displays a hostname when
in a distrobox container (akin to operating from ssh or normal container
usage).
HACKY implementation makes use of both an internal pure prompt api
(see here https://github.com/sindresorhus/pure/issues/585)
and a distrobox env var that I am not sure how exposed it is either.
Powerlevel10k uses a similar method though, so maybe it is fine
(see here 33916e91a7/internal/p10k.zsh (L8336)).
I rewrote and extended the nsxiv-rifle script recently, and this change
now: removes the old script, adds the new one as a submodule into the
repository and links a working binary into the path.
The new script is essentially still just an image grabber-and-opener,
but supports more image viewers, is a little more advanced and can for
example replace arbitrary parts of urls (and is documented a little more
nicely).
Make qutebrowser use new script and remove leftover references to
nsxiv-rifle. Qutebrowser also gets a third option of viewing images, now
there are:
,i -> open selected link in imageviewer
,I -> open current page in imageviewer
,<C-i> -> open selected image in imageviewer
Podman rebels if it finds an explicitly set DOCKER_CONFIG file pointing
to a non-existent (due to using podman) configuration file. Since we are
not using docker anyway, this removes the env var.
When setting the environment variable EDITOR in the shell, ensure that
the editor being set is actually available: It first tries nvim, then
falls back to micro, then nano (one of which really every distribution
should have).
Python complains if you point it to a different configuration file (as
we do with the changes to XDG directories) but it doesn't exist. So, we
simply check for its existence and create it if necessary when setting
up an environment.
Added shell aliases for 'image listings' which aims to mimic the `ls`
command in a very simple way.
Invoke it via `il` to display a grid of all images residing in current
directory. Images are being detected not by their extension but by
running a `file` operation on, so in very large directories this might
take a little (though, your terminal will probably buckle under the
weight of displaying thousands of images anyway, so use with care).
`IL` provides the same functionality but recurses into an arbitrary
amount of subdirectories. Very useful to get an overview of a certain
directory and its children but, again, think for a second before using
since this could easily spew thousands of pictures into your term.
Opens basically any path, local or remote in nsxiv.
Can take multiple paths to open all of them.
Additionally, alias whichever version of the image viewer is available
on the system as `iv`, using `nsxiv-rifle`, `nsxiv`, `sxiv` in order of
preference.
The XDG BASE DIRECTORY spec now includes a provision for 'state' stuff,
that does not quite fit into either the permanent nature of
XDG_DATA_HOME, nor into the impermanence and deletable nature of
XDG_CACHE_HOME - i.e. longer running logs or history files. Things you
don't necessarily need backed up at all times, but things that should
also not change every time the tmpfs is flushed, should you run your
.cache directory under one.
More here: https://teddit.net/r/linux/comments/ny34vs/new_xdg_state_home_in_xdg_base_directory_spec/
and here: https://wiki.debian.org/XDGBaseDirectorySpecification#state