~evybongers/dotfiles

Just my dotfiles

d5d224a [waybar] Simplify playerctl.py

3 days ago

b4b4518 [ansible] Make ansible XDG basedir compliant

14 days ago

#Dotfiles

These are my dotfiles, not much more to say.

#Requirements

No additional software is needed to make use of these dotfiles. However, most environment variables are set through environment.d(5) and when the user session isn't started through systemd, 30-systemd-environment-d-generator is invoked to set these environment variables.

  • EDITOR is set to vim
  • PAGER is set to less
  • gbt is used to render the zsh prompt if it's installed

fonts

ohmyzsh plugins

A few plugins are activated by default:

  • dotenv
  • git
  • vi-mode
  • zsh-autosuggestions

Several other plugins are loaded if the relevant commands are found in $PATH:

  • bazel
  • docker
  • docker-compose
  • gcloud
  • gh
  • gpg-agent
  • kubectl
  • terraform
  • virtualenvwrapper

Required software for graphical environments listed below

#Installation

alias home="git --work-tree=${HOME} --git-dir=${HOME}/.files.git"

home init &&
home remote add origin https://git.sr.ht/~evybongers/dotfiles &&
home fetch &&
home reset --hard origin/main &&
home branch -m main &&
home submodule update --recursive --init &&
home branch --set-upstream-to=origin/main main &&
home remote set-url --push origin git@git.sr.ht:~evybongers/dotfiles

#GnuPG agent

These dotfiles configured aliases and shell environment in such a way that most software these dotfiles apply to adhere to the [XDG Base Directory specification][xdg-base-dir]. For GnuPG agent specifically, this results in unusable systemd units because GnuPG uses [a predictable subdirectory][gnupg-socket-dir] for the sockets.

xdg-base-dir gnupg-socket-dir

The socket directory name is based on a hash the GnuPG home directory, which is part of this dotfiles and therefore depends on the user's home directory. As a result, the only way to have function systemd sockets for GnuPG, is by manually specifying them:

GNUPG_SOCKET_DIR="$(gpgconf --list-dirs socketdir)"
systemctl --user enable dirmngr@${GNUPG_SOCKET_DIR}.socket
systemctl --user enable gpg-agent-browser@${GNUPG_SOCKET_DIR}.socket
systemctl --user enable gpg-agent-extra@${GNUPG_SOCKET_DIR}.socket
systemctl --user enable gpg-agent-ssh@${GNUPG_SOCKET_DIR}.socket
systemctl --user enable gpg-agent@${GNUPG_SOCKET_DIR}.socket

#Graphical environments

To make use of configured features, some additional software needs to be installed as well.

  • sway (SwayWM)
  • waybar (status bar)
    • pydbus (custom modules: darkmode and spotify)
  • swayidle and swaylock (lock screen)
  • wlogout (shutdown/restart helper)
  • wofi (launcher)
  • pactl (libpulse; audio controls)
  • brightnessctl (screen brightness control)
  • wob (overlay bar)
  • playerctl (media controls)
  • blueman-applet (bluetooth tray icon)
  • grim (screenshot utility, optional)
    • jq (filtering visible windows)
    • slurp (select screen region)
    • swappy (screenshot editor)
  • kanshi (dynamic output configuration)
  • darkman (dark and light mode switching)
    • geoclue (determining location)
  • batsignal (battery warnings)