I have been using wayland for about three months now and the 'missing
things' roadmap has been shrinking steadily. There are still some
little things that are annoying, most concerning old xwayland or Gnome
applications such as when I have to make use of Zotero or Element -- all
GUI applications that I would prefer not to use anyway.
Otherwise it's a very pleasant experience and *extremely* solid. I don't
remember any crashes, it feels relatively light weight, multi-monitor
works without any hick-ups and I really can't complain.
I will for the foreseeable future stay with wayland, since it works so
well for me. My riverwm setup will still need some tinkering here and
there to make use of some of its nice features and not just pretend to
be using i3 again. Lastly, I will need to peruse my settings and find
left-over x11 things that will inevitably be hiding in this repository.
All doable things and that makes me happy.
Added simple plugin for some highlighting of criticmarkup.
Criticmarkup is a neat way of doing 'track-changes' in markdown. It's a
bit cumbersome to read just the way it is when there's a lot of changes
however and this plugin helps immensely with that.
There is also a github gist out there which helps using pandoc to turn
Microsoft Word tracked changes into criticmarkup formatted markdown.
Amazing to work with through vim instead of the annoying Office suites!
Though the idea is not bad, I've never used rofi-surfraw in any capacity
and it just clutters up the repository.
Picom was necessary for X11 but is not anymore for wayland, so it's out
as well.
Quickly put up a file server in the current directory by typing `serve`
and the rest is figured out automatically.
Makes use of `sfz`, `gossa`, `rossa` in that order to set up the file
server.
Fix sh module packages to make more extensive use of the exist program
that also ships with the sh module.
Simplifies intent of the code and makes it much easier to read.
Updated code to be able to run a password command chosen individually,
as well as a post-password command.
Used in this instance to `pass open` a password store in a coffin/tomb
before actually trying to read passwords out of it.
The autostart function would accidentally start multiple new graphical
sessions in one terminal when connected to the machine over sshd.
This should fix multiple starts while keeping the old functionality and
speed of checking intact.
Using the `gcd` alias to checkout the development branch switches to, if
no `development` branch is found, the `staging` branch of a repository
automatically instead.
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.
Added some simple aliases that were missing from the vi → vim → neovim
chain.
Can be useful for the odd moment when one does not know which exact vim
is installed.
Added pass-pick external repository. Factored out the program from this
repository into its own development repository from which it is pulled
as a submodule for these dotfiles.
Finally added a which-key like extension.
This one is a lua implementation of the old Emacs idea, but comes with
pretty sane defaults and seems less difficult to set up.
So much so that, even out of the box, it seems somewhat useful by
containing explanations of default vim bindings and showing the target
for all mark jumps. (e.g. `g`` or `g'`).
Finally made the switch from the lua surround plugin of my choice to
sandwich -- it provides sane defaults, needs little to no setup, and
comes with a pretty alright default mapping method:
`sa<object><something>` to add surroundings to object
`sr<oldsurround><newsurround>` to replace surroundings (including
`srb<new>` for automatically figuring out what to replace)
`sd<surround>` to delete existing.
Simple and efficient, should make the cut in my estimation.
Added oscyank plugin which allows, through the `:OSCYank` command, to
put stuff into your local clipboard from *anywhere*, even through remote
ssh sessions and so on.
Requires a supported terminal emulator but honestly, most semi
well-known ones are on the list already.
Recently, galaxyline created some troubles in the setup. Lualine is much
much easier to configure and, since I don't need some of the more
advanced features of galaxyline anyway, I can just use the simple setup
it offers.
If ever those features become necessary again I can presumably just
reintroduce them based on the old galaxyline setup that got removed in
this commit.
Added interactive python repl commands with two plugins:
Sending repl snippets over with vim-slime and interacting with python
(notebook-like) snippets in the editor with vim-ipython-cell.
Cells are simply demarcated by `## ` at the beginning of a line, though
they can have other syntaxes as well, e.g. `# %% `.
By default slime sends its commands over to the last used tmux pane so
it is easy to set up a split coding/repl-ing session.
Interaction mappings all center around <leader>c + another key.
You can send a simple cell with `<leader>cc` or `<leader>C`,
single lines or selections with `<leader>cs`.
You can switch between cells with `]c` `[c` and insert new ones
below/above existing ones with `<leader>co` `<leader>cO` respectively.
Switched out the deprecated nvim-compe for nvim-cmp and re-added most of
the plugins that the earlier one supported.
The handling is very similar and it supports the same snippet engine
(vsnip in this case).
Moved border snapping/aligning to a quicker key combination
(mod+ctrl+hjkl) and instead move rivercarro layout changes t the more
inaccessible extra moving mode (alt+r).
Added notification dismissal and recovery key binds to river key
bindings. This is necessary since in wayland dunst can't just
receive key presses anymore.
The new key binds are:
```
Mod+N - dismiss 1 notification
Mod+Shift+N - dismiss all notifications
Mod+Control+N - display last dismissed notification(s) again
```
Added script for downloading videos with ytdl or any of its derivatives.
The script is adapted from one in my rapberry pi setup which serves
videos remotely, and makes some hardcoded assumptions that might not be
the best for all situations.
Added archive script which takes a file and puts a hardlink to it into
an arbitrary archival folder. This means even if the original file is
deleted its data stays on disk because of its hardlinked archive
version.
Added ways of navigating the command mode similar to unix readline or
fzf lists.
^N / ^P will get you up and down the history / completion options
^J / ^K will get you up the last typed commands
^U / ^A / ^E / ^F / ^B / ^H manipulate the caret on the commandline.
The fontconfig in use previously accidentally got deleted amidst the X
leftovers. This reinstates it and streamlines it a tiny bit.
Still uses Iosevka as the default mono font, Heuristica and Noto Sans as
the serif and sans-serif respectively and adds the fantasy and comic
families.
Also takes over wholly the font hinting and aliasing settings, since
they work very well on my machine.
Added a simple wayland configuration.
Currently set up simple wayland configuration based on river window
manager and waybar.
Rivercarro is the layout manager, being the same in principle as rivertile,
the default layout manager for river, only it comes with smart gaps
(gaps turn off if there is only one window open)
and monocle mode (give one window all space).
Runs `keyd` in the background to replace the old `xcape` capslock switching
(capslock is escape and if held control).
Uses `swaybg` to set a wallpaper.
Added powermenu and lockscreen scripts.
Improved lockscreen script to detect and work for wayland.
Moved old rofi mode 'powermenu' to more general powermenu script,
which works with any rofi-like selector (dmenu, bemenu, wofi, etc.)
Loses some of its design quality but since it was wonky anyway,
and I rarely see the menu,
we could repurpose its functionality for a more general powermenu
concept.
Currently hardcoded for `bemenu` but can be easily swapped and possibly
even extended back to rofi.
Fixed file upload link sharing to clipboard.
Updated rofi-pass to pass-pick.
Made rofi-pass universal and less integrated to rofi - that's also the
reason for the name change.
`pass-pick` works with rofi (default), bemenu or dmenu. In theory it
should also work with any other picker that contains a stdin listing
function similar to dmenu.
It has been definitely tested both on rofi and bemenu.
The best user experience still reigns on rofi, where available keys are
displayed on the picker and the keys themselves make the most sense.
But all functions can be reached from bemenu as well, though the key
mappings are more arbitrary and can not be changed as in rofi.
The autofilling tool works with both xdotool and ydotool, so should work
both on X11 and on Wayland. Ydotool ideally requires its daemon to be
running, otherwise some of the typing may get gut off. Otherwise no
change should be necessary.
Updated qutebrowser open_download for bemenu.
Updated download opening script to work with both rofi and bemenu.
Prefers original rofi implementation but works with both, and can be set
to use a custom dmenu-like file picker as well.
Add brightnessctl and removed custom audio / brightness scripts since they
became unnecessary.
Updated bootstrap script to include system files:
With `keyd` taking its configuration from the `/etc` directory and not
home, a second stow stage was necessary. These stow files are in a
module called `system-packages` inside the top-level `bootstrap` stow
package.
They will not be installed by the default dotfile stow invocation but
have been integrated as an extra step into the install script.
Installing this module requires sudo privileges!
Switched vifm überzug to sixel graphics rendering.
überzug relies on X11 functionality to work, while sixel does not.
Unfortunately, alacritty does not work with sixel graphics yet, only
foot does (somewhat).
Waybar currently runs the gruvbox dark soft color scheme.
Added the old polybar archupdates script to waybar and extended it to
output json format with additional metadata that waybar can read.
Can still output the old plaintext format that polybar expects.
Added a wireguard connection to waybar,shows if currently
connected to either a wireguard or tun VPN service.
If so, shows an icon in the waybar - that can be hovered over to show
the full assigned IP address.
Added an upcoming event display to waybar,
a simple event indicator to show upcoming events on the calendar, on
hovering over it the tooltip lists all upcoming events.
Added `screenshot` script to take simple screenshots and
rectangle region shots of the current output.
Can be invoked through the river shortcut PrintScr:
`PrintScr` - Fullscreen screenshot
`Mod+PrintScr` - Region screenshot
`Shift+PrintScr` - Fullscreen screenshot and file upload
`Mod+Shift+PrintScr` - Region screenshot and file upload
Extended `sharefile` to take paths through stdin and make
use of `fd` if it is found on the system.
Added simple script `task-overdue-prompt` which checks for overdue tasks
(*not* tasks to be done 'today') and display a skull if there are any.
Intended for prompt use, it is currently still too slow to be used as
such. But there may still be uses other than that so it is included for now.
Updated notmuch to only be available for full-text search. Removed
complete afew configuration.
Added msmtp as mail sending agent.
Added structured neomutt configuration with custom bindings, built for
my personal gmail account, without any plaintext passwords revealed,
etc.
This is a reasonably well working mail setup,
which should provide a stable starting point for further refinements.
Additionally, added some functionality to `mail-check` script:
Allowed user to choose sync target for each run, by
passing in mbsync target (group/channel/..) as the argument.
Also, allows setting password file to use for script through env var,
and made imapfilter location less hard-coded to my system.
`tim` is intended as a quick support alias for timewarrior.
If invoked without any arguments, `tim` will print out a simple summary
of all tasks accomplished (for the day by default). It will also print
their ids for simple subsequent modification tasks.
If, however, invoked with additional arguments, `tim` will pass anything
along to timewarrior so anything happens as usual if invoked like this.
Thus, `tim` functions as a quick look into the day's timesheet or a
shorter alternative to the `timew` command.
For git versions that support it, the aliases will use the newer
`switch` instruction instead of `checkout` for its use cases.
Creating a new branch through `gcb` is for example done by
`git switch -c` instead of the older `git checkout -b`.
Additionally streamlined git version checking to be a little faster and
to unify its approach on posix sh, bash and zsh instead of utilizing
individual checking functions.
Added another building block program. This program will be required
going forward in other modules. `version_at_least` takes two version
numbers and returns true if the second is higher than the first.
That means primarily it is useful to check if a program fulfills a
minimum required version, e.g.: `version_at_least 2.1 $(my_program -v)`.
Will be primarily useful for git version checking in the near future.
It has a second possibility of checking for ordered version numbers
passed in but this is of less use. Check source for more information.
Timewarrior now looks for its data directory in `XDG_CONFIG_HOME`
instead of the home directory. This is a little better than nothing, but
does not separate the configuration and data files from each other yet.
Data *should* be lying in `XDG_DATA_HOME` but the data directory can not
be separated since it relies on a single env var `TIMEWARRIORDB`.