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.
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.
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.
$ time zsh -i -c exit
0.06s user 0.13s system 101% cpu 0.186 total
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')
After each login the current package list is saved to arch/pkglist.txt
as a backup.
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.
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.
Tilling window manager that rocks!
A simple X hotkey daemon that maps input events to command executions.
A utility that is used to generate the status bar at the bottom of the screen.
A utility to launch apps from the i3 desktop. [command]+[d] is bound to start it.
A keyboard-focused browser with a minimal GUI that allows you to surf the web without a mouse.
Fasted terminal emulator in the world.
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.
Turns the already great zsh shell into an 10x environment.
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
.
How to quit this editor?
A popular zsh prompt with async support.
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
Searching tool with a focus on speed.
Utility to watch file changes.
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.
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.
- 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)
Press Command + Z to toggle keebsheet.