Skip to content

pjvds/dotfiles

Repository files navigation

dotfiles

This repostory contains 10 years of dotfile history with various configurations. Currently I'm running Arch Linux with the tilling window manager bspwm. Most applications are configured with a dark theme called monokai in combination with the purple tints of the dracula theme.

Topical

These dotfiles follow the Low Coupling, High Cohesion principle. An example of this is that the hotkey daemon (sxhkd) doesn't know all the bindings of all applications. In other words, the hotkeys daemon configuration is not directly coupled to all applications that want a binding. Instead a application can express it's hotkey configuration in its own file (topic/hotkeys) that will be sources by the hotkey daemon.

Modules

There's a few special files in the hierarchy.

  • bin/: Anything in bin/ will get added to your $PATH and be made available everywhere.
  • module/login: Executed then the windows manager is loaded.
  • module/preinit.zsh: Sourced before any init scripts are loaded.
  • module/init.zsh: Sourced before any ZSH plugin or zinit is loaded.
  • module/postinit.zsh: Sourced after all init scripts loaded.
  • module/aliases.zsh: Sourced after all init scripts loaded.
  • module/hotkeys: Sourced by the hotkey daemon sxhkd.
  • module/install.zsh: Any file named install.sh is executed when you run script/install. This script should be idempotent.

Features

Blazing fast shell start time

$ time zsh -i -c exit
0.06s user 0.13s system 101% cpu 0.186 total

Blazing fast editor start time

72ms startup time for my favorite editor.

$ vim --startuptime /dev/stdout +qall
times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.026  000.026: --- NVIM STARTING ---
000.168  000.142: event init
000.336  000.168: early init
000.376  000.040: locale set
000.422  000.046: init first window
000.876  000.454: inits 1
000.893  000.017: window checked
000.898  000.005: parsing arguments
001.392  000.078  000.078: require('vim.shared')
001.486  000.031  000.031: require('vim._meta')
001.492  000.093  000.062: require('vim._editor')
001.496  000.209  000.037: require('vim._init_packages')
001.501  000.394: init lua interpreter
003.903  002.402: expanding arguments
003.993  000.091: inits 2
004.321  000.327: init highlight
004.328  000.007: waiting for UI
072.649  000.091  000.091: require('vim.inspect')

Package list

After each login the current package list is saved to arch/pkglist.txt as a backup.

Ly

A display manager (or login manager) that is displayed at the end of the boot process. It allows me to switch between different window managers like i3 and bspwm.

display manager Ly

Qutebrowser

Press Command + Q to launch the qutebrowser profile picker. This allows you to pick a profile for the browser, comparable to Firefox Containers but at process level instead of tabs.

Profiles are identified by different border colors. Here is an example of 3 browser instances each running a different profile identified by a per profile border color.

per profile border color

bspwm

Tilling window manager that rocks!

sxhkd

A simple X hotkey daemon that maps input events to command executions.

polybar

A utility that is used to generate the status bar at the bottom of the screen.

polybar

rofi

A utility to launch apps from the i3 desktop. [command]+[d] is bound to start it.

qutebrowser

A keyboard-focused browser with a minimal GUI that allows you to surf the web without a mouse.

alacritty

Fasted terminal emulator in the world.

zsh

A modern shell most closely resembles Korn shell. Despite being over 20 years old it is considered new. Famous for command completion, path expansion and replacement. It is a Bash drop in replacement.

oh-my-zsh

Turns the already great zsh shell into an 10x environment.

z

Utility to jump to directies. It records all your directory changes and lets you jump to them. For example, z code will jump to /home/pjvds/code.

vim

How to quit this editor?

starship

A popular zsh prompt with async support.

ncspot

A commandline ncurses client for spotify. Think ncmpc but for the popular streaming service spotify. &previous;

  • Press « to skip to previous track
  • Press shift + « to seek -10 seconds
  • Press » to skip to next track
  • Press shift + » to seek +10 seconds

the silver searches

Searching tool with a focus on speed.

reflex

Utility to watch file changes.

AUR package maintainance

I'm maintaining a few dozen AUR packages for Arch Linux. A daily CRON job runs on github action to discover out dated packages.

I recently get questions on what tools I use to automate my workflow, so here is the list:

  • aurpublish to install githooks for package repostory.
  • updpkgsums to perform an in place update of the checksums.
  • nvchecker to check for new versions (config).
  • nvcmp to compare version state files from nvchecker.
  • nvtake <pkg_name> to accept the new version.

There is also a github action running that checks for new version everyday so I don't miss updates.

Keyboard

My daily driver is a 40% ortholiniar split keyboard that allows me to move keys towards my fingers, instead of moving my fingers to the keys. With this keyboard my fingers never travel more than a single key in any direction.

Specs

  • Typeau .40 Planck Edition (site)
  • OLKB Planck PCB Rev 6.1 (site)
  • Matt3o /dev/tty keycaps with MT3 profile (site)
  • Gateron Silent Clear (Linear | 4.0mm travel | 35g Actuation) (site)
  • Krytox 205g0 lube for the switches and stabalizers
  • TX switch films 0.125mm (site)
  • ZealPC Stabilizers v2 (site)

Keebsheet

Press Command + Z to toggle keebsheet.

keyboard layout

homebridge-epex-spot