Commit graph

78 commits

Author SHA1 Message Date
Marty Oehme 29cb20efcb
bootstrap: Add pipx managed package installation
Packages managed through pipx (and pipx itself) are now also
installed in the initial process. They are marked as coming
from 'P' source in the package TSV. There is a special field
for these packages which declares any injections made by pipx
which will also automatically get injected into the pipx
environment on installation.
2023-06-08 13:05:01 +02:00
Marty Oehme bfe7e7790c
bootstrap: Change yay to paru for pkg installation 2023-06-08 13:03:27 +02:00
Marty Oehme 79910b8bf1
bootstrap: Fix package installer file path 2023-06-08 13:02:45 +02:00
Marty Oehme 60b89b6d30
githook: Fix showing pkgs in commit message
Quick fix to show difference in committed and installed
packages in the commit editor window again.
Due to Arch moving the base-devel package from a group
to a meta-package we can not just remove all packages
that are in the group anymore - it will simply error
out instead. This removes the check and thus provides
a quick and dirty fix for the time being.
2023-06-07 10:29:25 +02:00
Marty Oehme bce5675795
bootstrap: Remove unclutter package
Removed long overdue unclutter package which is used on
X11 but we switched to wayland around two years ago
now. For this setup, the river window manager takes
care of hiding and showing the mouse pointer.
2023-06-07 10:27:17 +02:00
Marty Oehme 88336a433a
bootstrap: Disable system USB mouse wakeups
My (un-branded) usb mouse prevented the system from going into
suspend/hibernation by sending intermittent wakeup signals.

This system configuration option simply disables the device from sending
those wakeup signals. Used with superuser stow installation method.
2023-03-22 11:53:08 +01:00
Marty Oehme a16e0eead7
wezterm: Add cursive italics
Set up wezterm to continue to use Iosevka for everything *except*
italics (in all weights) which will instead be displayed by the Victor
font.
This ultimately results in cursive fonts for italics and Iosevka for
everything else, very pretty.
2023-03-22 11:14:25 +01:00
Marty Oehme a276251aa7
bootstrap: Update stable packages 2023-03-21 18:52:50 +01:00
Marty Oehme b52ecda093
terminal: Change timg for viu 2023-03-21 18:26:32 +01:00
Marty Oehme f1b218da95
bootstrap: Update stable packages 2023-03-07 11:10:03 +01:00
Marty Oehme b800d8f1eb
desktop: Add flavours program to set colors
Switching from my custom, brittle, styling implementation `styler` to
the wonder `flavours` program which does exactly the same only with more
clarity, faster and - I would presume - more stable.
2023-03-07 11:09:47 +01:00
Marty Oehme 3d4199d743
bootstrap: Add systemd suspend-then-hibernate configuration 2023-02-28 11:23:40 +01:00
Marty Oehme 4eb6ac772b
bootstrap: Update package lists 2023-02-11 17:29:55 +01:00
Marty Oehme 1bcab1d5e7
bootstrap: Add Dockerfile to stow ignored files
Dockerfile would accidentally get placed in the home directory instead
of being ignored like the rest of bootstrap files.
2023-01-16 22:25:35 +01:00
Marty Oehme df724c20ba
bootstrap: Add testing Dockerfile to bootstrap
Added Dockerfile which sets up a simple archlinux test environment for
the dotfiles/bootstrap process/playing around.

Will simply build a simple archlinux machine with a single user.
2023-01-16 18:50:50 +01:00
Marty Oehme 1a05ea8445
bootstrap: Split packages into stable and testing lists
Split the lists into two, with testing getting automatically updated on
packages added (and removed, but only if the package to be removed is
*not* in stable packages already).

This way, I can always be sure that I have my stable setup in the
repository, but packages that I am temporarily testing have a place
without being forgotten and I can more easily change them around until
they find a place in stable or get thrown out.
2023-01-16 18:47:47 +01:00
Marty Oehme d56d0148f6
bootstrap: Fix initial package installation to work 2023-01-16 18:42:42 +01:00
Marty Oehme 01445aa3ed
lockscreen: Update script for new waylock version 2023-01-07 16:46:09 +01:00
Marty Oehme e9659a2829
bootstrap: Update package list 2023-01-07 15:27:17 +01:00
Marty Oehme 44f7c2e6ca
bootstrap: Update package list 2023-01-07 14:48:13 +01:00
Marty Oehme 5fce112927
bootstrap: Update packages 2022-12-20 23:02:56 +01:00
Marty Oehme 4b93568831
bootstrap: Update installed package list 2022-11-23 12:23:04 +01:00
Marty Oehme 28da05b696
mail: Add ics/calendar preview to neomutt
Added the automatic display of calendar events or ics files to neomutt,
using the mutt-ics script (available in AUR).

Will display start/end time and participants directly in mail body.
2022-11-23 12:13:54 +01:00
Marty Oehme a4f202184f
bootstrap: Update package list
Make pkg list conform more to current installation:

beets is not installed through pacman anymore. This is a temporary
measure to allow the easy use of beetcamp plugin which does not yet have
an aur package published and would need to be managed manually.
This way I can inject everything into a custom pipx-managed virtual
environment until a better solution comes along.

Removed hp printer drivers since I have not been near an HP printer for
a while.

Added gitui (as potential lazygit replacement) and fonts-cjk to be able
to display cjk characters on my machine (and finally stop having missing
squares displayed instead).

Added maestral and minidlna as ways of interacting with the outside
network, with minidlna allowing pretty easy media streaming to my tablet
and maestral being the best dropbox client I have ever seen.

toot was replaced by tut which is a really advanced tui mastodon client
and works very well for my purposes.

Waybar moved back to its pinned stable release version from being a git
version since I don't need its non-merged bleeding edge features anymore.

Yarn is explicitly installed so we have a global js manager for the few
programs I use once in a while.

Finally, zq is added for another way to inspect structured data
(mimicking jq which I struggled with for a couple of commands now) and I
want to learn it more in-depth.
2022-06-12 15:53:36 +02:00
Marty Oehme a08f2daafe
river: Add translation widget mapping
Added quick way to translate from anywhere with the Mod+Shift+T mapping.
Will open a bemenu window into which text to be translated can be input
(as well as any translation options) and will return in another bemenu
window. From there, selected text can be put on the clipboard for easy
pasting.

Internally uses a simple wrapper script for translate-shell on which the
translation is based.

Closes #12.
2022-05-02 16:08:30 +02:00
Marty Oehme 89c028c8d6
vifm: Add nsxiv as thumbnail previewer
Use <leader>t to start up nsxiv in thumbnail mode where it displays the
contents of the current directory.
You can do whatever you want with nsxiv, enlarge files with <Enter>,
flip them with | or - or delete them with D - the full bandwidth of
nsxiv is available.

If you mark pictures with m (or M) before exiting vifm will build a
custom filtered view containing only those files ready for further
filesystem operations with vifm.

Closes #11.

Also adds another layer of file previewer. If none of the other previewers
match (e.g. pdftotext for pdf, pandoc for docx, exa for directories, etc),
this viewer will be used and display the first couple hundred lines of a
file.

Essentially it means that unknown text files will be displayed using
this, but also binary files for which it displays the hexdump
automatically.
2022-05-01 01:20:12 +02:00
Marty Oehme 35eae9b32c
bootstrap: Add ly display manager
Added tui display manager to my system and I've been quite enjoying
using it, may come in handy as well if I ever want to have dual X11 and
Wayland setup or go back to a more rounded DE experience.

(Not that I intend to, but still enjoying the little style ly brings to
the boot screen.)
2022-04-30 21:02:04 +02:00
Marty Oehme cac0aee4ca
keyd: Update conf files to new 2.0 syntax
New config syntax uses [ids] section to select which input devices are
affected instead of file names, so we can have all settings (for
similarly set up keyboards) in a single default config file.

The file itself needs to end in `.conf` instead of the old `.cfg` and
there is a slight difference in syntax between the old `C` and the new
`control` for mapping the control key. That is about it.
2022-04-27 13:50:08 +02:00
Marty Oehme 2216ba079d
bootstrap: Update package list 2022-04-27 13:03:43 +02:00
Marty Oehme 71c41ecbde
bootstrap: Update package list script
Takes simple options -h (show help), -v (verbose), -n (dry-run) when
started.

By default does not spam output of *all* recognized packages anymore but
simply prints a diff at the end. Old output can be enabled with `-v`
verbose option.

Diff is shown even if dry-run mode is enabled so that using dry-run by
default will show you a preview of what changed.
2022-04-27 13:00:09 +02:00
Marty Oehme b947493765
bootstrap: Update pkg list with python-docs
Added python-docs for offline python documentation availability, removed
long-overdue polybar package which I have not been using for a couple of
months.
2022-04-11 13:05:32 +02:00
Marty Oehme bd71cfc168
mail: Use new neomutt styling, extend html view 2022-03-19 11:36:28 +01:00
Marty Oehme 27cbf30da0
bootstrap: Fix stow linking new files
Forgot to update stow ignore list to include new package tsv file and
associated update script.
2022-03-10 22:46:45 +01:00
Marty Oehme 280fab6ad3
bootstrap: Switch package list to tsv
Package list is now a single tab separated list. That should make
several automations in the future much simpler.

The table is built as follows:
`Name   Description Source  Target`

with one line per package. Source denotes official repositories or AUR,
and target is kept for future potential of creating different
deployments per target automatically (e.g. different package list for
desktop and server, and so on).

There is an updater script `bootstrap/update_package_list.sh` which will
automatically populate the table, removing uninstalled packages, adding
new ones and (making its best attempt to be) keeping the selected
targets as they are.

The git commit hook comparing installed and committed packages has also
been rewritten to use the new table and be a little simpler overall.

Fixes #2.
2022-03-09 11:13:45 +01:00
Marty Oehme 0a9271ffe8
bootstrap: Update package list
Updated package list for March 2022.
Contains some small fixes for missing packages like transmission khal
and nsxiv that I have started using more heavily and removed some
redundancies, especially around the big X switch some time back.

Generally, no huge changes.

Fixes #1.
2022-03-08 22:57:36 +01:00
Marty Oehme 6fabac6cd8
kitty: Switch to kitty terminal emulator
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.
2022-01-16 15:18:07 +01:00
Marty Oehme bd37843102
Enable extensions for pass 2021-12-18 10:33:52 +01:00
Marty Oehme 8113508e6d
pass: Add wtype typer tool to pass-pick
Added wtype as the preferred alternative to ydotool for wayland setups
to the pass picking sript.
Still supports xdotool and ydotool.
2021-12-14 14:28:08 +01:00
Marty Oehme d78a27582c
bootstrap: Added new keyd keybard configuration
Added the same configuration for another external keyboard to the
config.
2021-12-04 11:22:25 +01:00
Marty Oehme 6ac552d3d5
Switch to wayland
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.
2021-11-30 22:30:07 +01:00
Marty Oehme 89d1402b3e
bootstrap: Update package list slightly 2021-11-23 19:08:16 +01:00
Marty Oehme f4c3944519
mail: Switch aerc for neomutt, simplify maildir
Made mail dir synchronization simpler - only a couple of important
directories will ever get synchronized to the local file system, but
still containing basically all important incoming mails.

Removed aerc and switched it for neomutt. aerc is very nice and needs
little to no configuration but neomutt is, as of this moment, just more
stable and mature. It opens quickly, never crashes, has a nice indexing
and quick e-mail handling behavior and is incredibly customizable.
Basically, once you put in some configuration effort, it is everything
aerc isn't --- and that is good, both have their reasons for existing.
It's just that mutt currently works better for me and will thus be the
e-mail reader of choice from now on.
2021-10-10 23:04:24 +02:00
Marty Oehme d0e083b6ab
nvim: Add efm languageserver
Added a general purpose languageserver to round out the language server
possibilities. For now only configured to take care of bash linting
(using shellcheck) and formatting, but can be extended to a variety of
other languages (even helping more prosaic forms like markdown and pandoc).
2021-08-18 23:10:50 +02:00
Marty Oehme 496522605f
X: Improve lockscreen handling
Added lockscreen trapping and media pausing for lockscreen.
When it is invoked `lockscreen`, all media will be attempted to be pause
and the system will be muted.
Then the lockscreen is engaged.
This should happen automatically when the screen shuts off or the system
suspends or hibernates and can be invoked manually, as before, with
super+x shortcut.
2021-07-28 14:41:02 +02:00
Marty Oehme bc046d02df
nvim: Switch to lua-based setup
nvim: Restructure lua config directory

Restructured lua setting files, so that plugin settings are in clearly
labelled as such files, and the base files are just there --- the base
directory.

This should also lay the ground work for modularizing plugins, so that
we can enable/disable plugin groups as we need them.

----------

nvim: Remove ale linter and formatter

Removed ale from plugins.
Linting is being taken care of by lsp and treesitter plugins and
formatting by formatter.nvim.

Added all filetypes ale took care of to formatting on save.

----------

nvim: Replace wiki.vim with zettelkasten.nvim

Removed lerlvag's `wiki.vim` from plugin list.
Though I love it and loved using it, by now it clutters up the list and
the basic functionality I need it provided by zettelkasten.nvim.
(That being linking, following links, and quickly opening a central file).

I may still come back to it at some point, but for now I am happy with
the new setup.

----------

nvim: Add toggleterm and lazygit integration

Added toggleterm plugin, integrating a very quick access to the neovim
terminal (`<leader>=` mapping).

Additionally, added a command to quickly call up a lazygit floating
windows with the same plugin. `<leader>G` will open a git management
window in which you can stage, remove, commit, push, pull and more.

----------

nvim: Replace surround, sneak; Add treesitter, dial

Replaced vim-sneak with lightspeed lua plugin, which accomplishes
similar to the same goal, with a little more flexibility (can also be
used to replicate other vim plugins like e.g. easymotion).
For now I am using it as a straight replacement, with the same fF/tT
functionality stretching over multiple lines, and quick sS 2-letter
jumps to any location ahead/back.
The highlighting is noticeably more stable and faster. For now it is set
to always highlight the next 5 occurences of a letter, wherever they
are. Lastly, it does not -- so the lightspeed author -- change the
buffer in any way which is what happened with sneak (due to vimscript
limitations) and which can and did confuse things like treesitter and
the lsp integration.

Replaced vim-surround with a lua-equivalent surround.nvim. This one I am
less sure about, the lua pluging, while working, still carries some bugs
and does not seem as thoroughly tested. It still has problems with
surrounding stuff with e.g. `*` and does not deal well with some
quotation situations. I will try to keep using it and perhaps find the
time to contribute to some of the issues instead of going back at first
however, purely since I am a much bigger fan of the plugin existing in
luascript.

Replaced vim-peekaboo with registers, another switch to a lua plugin,
which also functions slightly differently however. I much prefer the lua
plugins display of register contents which simply appear as a dropdown,
compe-like, and I can either paste with the correct symbol choice as
always, or by scrolling through it as if it is an autocomplete choice.

Added dial.nvim which slightly extends the functionality of ^a and ^x
number in-/decreases. It should barely be noticeable in normal operation
but now the combination can be used to change dates, alphabet
characters, hex codes and some more. Most prominently, I am using it for
date manipulation.

Added a couple of treesitter related plugins:
treesitter-context shows the context the cursor is currently in if the
beginning of this context goes off-screen, e.g. the function beginning
or current class being edited. Works for nested contexts.
treesitter-textsubjects allows selecting units of codes by going up the
tree branches. So, first you select an argument, then the whole argument
chain, then the function definition, then the whole function, then the
containing class, and so on. It is quite natural, however, I have so far
only made it work for visual selection, so not as a motion target.
Still, very useful - works with `v.` and can be repeated with `.`.
Lastly, ts-context-commentstring improves the correct selection of
commenting type for commenting plugins (i.e. my `gcc` mapping), by
making use of treesitter where available. Can even do multi-language
files like vue, react, or tsx modules with html, css and javascript
interweaved.

----------

nvim: Add code formatter

Added code formatter in lua, right now supporting python, cpp,
javascript, lua, rust.
More can very easily be added.

I am not sure if this plugin supports the formatting of code within
snippets in another file format (lukas-reineke/format.nvim does support
this, but seems not-maintained).

----------

nvim: Add tmux, snippet completion

Added (for real this time) tmux adjacent buffer completion.

Added vsnip completion through compe: Invoke a completion (shown in
compe with snippet preview) through <cr> or <space-cr> and then use
<tab> and <s-tab> to go back and forth through the completable positions
for the respective snippet.

Many default snippets included through the community repository of
friendly-snippets.

----------

nvim: Improve compe completion, Add outline view

Added outline view to neovim, similar to the well-known vista.vim
plugin. Can be opened (and closed again) with <leader>o mapping, simply
mnemonic for 'outline'.

Added unicode symbols (invoked with '\') and tmux adjacent buffers
to compe completion sources.

----------

nvim: Add zen writing mode in lua

Switched from goyo to TrueZen.nvim in looking for a lua replacement of
zen writing modes. The F11 shortcut remains the same, additionally using
F10 shortcut to enter a less drastic minimal mode.

----------

nvim: Switch keymaps to lua format

Using cartographer to make setting keymaps easy.

----------

nvim: Add tmux Navigator lua replacement

----------

nvim: Add autopairs, zen writing lua plugins

Switch goyo and autopairs to make use of lua plugins.

Moved most of the plugin setup code from a custom and manually updated
array being called from init.lua, to their respective plugin
installations in plugins.lua (so, wherever the plugin is installed also
contains the call of the configuration code).

This should hopefully reduce duplication a little and may prepare for
the lua plugin setups to end up in plugins directory of neovim.

----------

nvim: Add lua statusline, base16, async grep

Added galaxyline in an initial iteration which is probably overloaded
but integrates well with the also moved over to lua base16 colorschemes.
For now, it is possible to, at any point, simply call the `:lua
B16theme('themename')` command to change the colorscheme of both neovim
itself and the galaxyline with it.

The statusline, as of now, includes the activated mode (of course), the
filename being edited, the edit state (whether changed from last save,
or read-only), the current git branch if any, as well as the amount of
added, modified, and deleted lines from current git commit. On the right
hand side it contains the lsp status (if connected), the amount of
errors and warnings in current file, the filetype currently recognized
for the file, as well as the usual cursor position in the window.

Added some small other things, including an asynchronous fuzzy-backed
full-text search through telescope, which should hopefully make
full-text searching much more responsive than before; updated the
version of indentline to the correct one; and disabled some unused vim
built-in plugins.
2021-07-27 10:12:33 +02:00
Marty Oehme 8d399ed872
bootstrap: Update package index
Begin updating package index to be somewhat more current for the
portable installation.
2021-07-10 23:51:48 +02:00
Marty Oehme 65b8fd4820
polybar: Add pop-up calendar to date module
Added calendar (using gsimplecal) which appears on left-clicking the
date module. Previous long date format switching has been moved to
right-click.

Under the hood, the official date module has been exchanged with a
custom script which simply replicates the functionality but allows
arbitrary commands to be executed on interactions with the module (since
it is now a script module).
2021-07-08 10:39:34 +02:00
Marty Oehme c9c0490cbf
xdg: Move xdg media directories
Moved all directories with media contents (pictures, videos, music) to a
single coherent media directory.
2021-04-18 13:04:59 +02:00
Marty Oehme f4400da743
repo: Update linting for 4-spaced shell scripts 2021-04-04 20:52:52 +02:00
Marty Oehme 9142cb245e
taskwarrior: Add taskopen to package list
taskopen still needs to be configured and tested, but is added to the
package list for now, so I don't forget.

Specifically, it at the very least needs to be configured following the
xdg directory configuration model.
2021-02-19 16:54:39 +01:00