dotfiles/README.org

6.3 KiB

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 and .config/shell. Among daily use are b, edit-*, help, yas and 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 is of interest, it contains lots of mappings to store files according to XDG and configuration for less and fzf.

.config

shell
shell aliases & functions grouped into a few different areas, focused on zsh but mostly usable with bash
zsh
zsh plugin configuration & custom completions
doom
Doom Emacs configuration with personalized snippets
ideavim, vifm, nvim
vi-related tools
git, yadm
version control

.local

scripts
lots of useful scripts, most have a short documentation header - including many essential git scripts

Package Setup (moving to Instalee)

By Size:

LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h

Copy list:

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

Basics: diffr fzf

Applications

utilities
youtube-dl dos2unix rlwrap
powertools
hexedit hexyl 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
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay
makepkg -si
aur recommendations
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

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

Issues

Manjaro Sway

  • zsh vim bindings don't work properly
  • clipboard sync does not work in Doom Emacs (fixed?)