* Dotfiles
Welcome to Janek's dotfiles,
thousands of lines of handcraft shell code
to make the live of a linux sysadmin
and developer easier!

I mainly use Arch Linux,
currently with the KDE desktop environment with tiling extension
with the intention of moving a proper tiling WM (Awesome or Sway) soon.

This config is opinionated,
but currently deployed on multiple machines
including some other eager users
who run Manjaro Sway.
Thus I am progressively generalising it.

If you are not one of those,
you can safely skip the following section.
** Usage
Here are some basic commands you should remember:
- ~u~ to upgrade everything (works on arch-based systems with topgrade installed and any debian-based system, with safeguards to ensure upgrade stability even on longtime dormant machines)
- yas  :: interactively install software packages
- yar  :: interactively uninstall software packages
- loc  :: quickly find a file on your system, case-insensitive
- loca :: do a deep search for a file on the whole system, case-insensitive
- loce :: find a file/directory with exact name match
- moul :: mount a device interatively (unmount with ~umoul~)
*** Mounting Manually
To mount a device,
first check ~ds~ ([d]isk [s]tats, a prettification of ~lsblk --fs~)
and find your device,
then call ~moul~ with the respective name or label,
e.g. ~moul my-usb~ or ~moul sdc2~.
This will mount the device and jump to the mounted directory.

As long as you are in the device directory
you can unmount it simply by calling ~umoul~,
otherwise provide the argument used above again.
* Overview
If you are looking to snag some of my handy tools,
focus on [[./.local/bin/scripts][.local/bin/scripts]] and [[./.config/shell][.config/shell]].
Among daily use are ~b~, ~edit-*~, ~help~, [[./.config/shell/arch][~yas~]]
and [[https://github.com/ajeetdsouza/zoxide][zoxide]]-based ~d~ / ~di~
which in turn use ~zfz~, ~zf~ and ~locz~.

~ex~, ~m~, ~moul~, ~grpr~ / ~rpl~, ~s~, ~sd~, ~tl~ are also commonly used conveniences.

Below is an overview of the structure
** Home
I am trying to keep my home clean,
but some files unfortunately cannot be moved.
Out of these, only [[.zprofile][.zprofile]] is of interest,
it contains lots of mappings to store files according to XDG
and configuration for ~less~ and ~fzf~.
** .config
- [[.config/shell][shell]] :: shell aliases & functions grouped into a few different areas, focused on zsh but mostly usable with bash
- [[.config/zsh][zsh]] :: zsh plugin configuration & custom completions
- [[.config/doom][doom]] :: [[https://github.com/hlissner/doom-emacs][Doom Emacs]] configuration with personalized snippets
- ideavim, vifm, nvim :: vi-related tools
- git, yadm :: version control
** .local
- [[.local/bin/scripts][scripts]] :: lots of useful scripts,
  most have a short documentation header -
  including many essential git scripts
* Package Setup (moving to [[https://git.jfischer.org/xeruf/instalee][Instalee]])
: pacman -Qe | cut -d\  -f1 | xclip -selection clipboard
- dotfiles :: yadm
  : yadm clone --bootstrap git@git.jfischer.org:xeruf/dotfiles.git
  : yadm clone --bootstrap https://git.jfischer.org/xeruf/dotfiles.git
  Run ~bootstrap~ after starting ZSH
** Applications
- utilities :: youtube-dl dos2unix rlwrap
- powertools :: hexedit hexyl [[https://lftp.yar.ru/][lftp]] glances zsh-doc pacman-contrib
- multitools :: ffmpeg imagemagick pandoc
- documents :: pdftk java-commons-lang
- music :: mpd mpc ncmpc vlc phonon-qt5-vlc mpdris2
  : mkdir -p ~/.local/state/mpd && systemctl --user enable --now mpd mpDris2
#+begin_src sh YAY for AUR
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay
makepkg -si
#+end_src
- aur recommendations :: [[https://github.com/mookid/diffr][diffr]] tldr++ sc-im espanso-bin timg audiowaveform python-dictcc dragon-drop
- bluetooth :: bluez bluez-utils pulseaudio-bluetooth
- git tools :: git-bug git-lfs git-crypt git-remote-gcrypt github-cli
- pass :: pass pass-otp pass-extension-tail pass-clip
  -> interesting: pass-steam, pass-autotype, pass-file, pass-qr, pass-ssh, pass-rotate
- ssh :: openssh sshfs lemonade-git
- sync :: syncthing syncthingtray
  : sudo systemctl enable --now syncthing@$USER
- productivity :: activitywatch-bin jrnl
- personal aur utils (only useful with dotfiles) :: bat-extras neovim-symlinks stderred-git
- needs extra setup :: rdictcc-git
- experiments :: kakoune
** Graphical
- fonts :: fontpreview noto-fonts noto-fonts-emoji ttf-dejavu adobe-source-code-pro-fonts texlive-myriadpro-git
- music management :: puddletag beets picard ffmpegthumbnailer sox
  : sudo npm install -g bpm
- health :: stretchly-xeruf-git redshift acpilight light
  : scu enable --now redshift
  -> https://www.reddit.com/r/linuxquestions/comments/pm1bxn/setting_brightness_on_amd_ryzen_7_5800h_with
*** Desktop
- xorg :: xorg-xserver xorg-xkill xorg-setxkbmap xorg-xinit xterm xclip xprintidle light
- wayland :: sway azote dex
- kde :: okular spectacle
- kde desktop :: plasma-desktop plasma-nm breeze systemsettings ktorrent dolphin kdeplasma-addons kinfocenter partitionmanager kdeconnect kwallet-pam kwalletmanager ksshaskpass bluedevil
*** Emacs
emacs emacs-pdf-tools-git
texlive-core texlive-latexextra texlive-most-doc
context-bin
: git clone --depth 1 https://github.com/hlissner/doom-emacs ${XDG_CONFIG_HOME:-$HOME/.config}/emacs && ${XDG_CONFIG_HOME:-$HOME/.config}/emacs/bin/doom -y install
- mail :: offlineimap mu
*** [[id:firefox][Firefox]] Addons
**** Password management
***** Pass - the unix password manager
Store all kinds of secrets in plain text
https://addons.mozilla.org/firefox/addon/passff
: passff-host
***** MasterPassword - the stateless password manager
> Keep different passwords for every site you log into without having to remember anything but a single master password.
> And without the risk of your getting your password list stolen.
https://addons.mozilla.org/firefox/addon/masterpassword-firefox
**** [[https://addons.mozilla.org/en-US/firefox/collections/15727735/integration?collection_sort=-popularity][System Integration]]
**** [[https://addons.mozilla.org/en-US/firefox/collections/15727735/privacy?collection_sort=-popularity][Privacy]]
* Issues
** Manjaro Sway
- zsh vim bindings don't work properly
- clipboard sync does not work in Doom Emacs (fixed?)
