If you're looking for yet-another-dotfile repo, you've come to the right place! My current development environment uses the following components:
- Windows Subsystem for Linux
- Microsoft Terminal or wsltty
- tmux
- neovim
- lightweight git aliases
- zshell + powerlevel10k
Note that this configuration is fairly opinionated and most of it is not well documented.
This configuration makes heavy use of git submodules --- be sure to run git submodule update --init --recursive
after installation.
See section Fresh Installation for information about quickly getting a new system up-to-speed.
The most interesting bits to others would probably be:
- My tmux config files
- My shell config files
- My dircolors config files
I have a keybinding alt + shift + I
which I use to force tmux into an ignore
mode. In this mode, tmux will directly pass-through all keystrokes to the underlying
program except for alt + shift + I
which undoes ignore mode.
This is useful for nested tmux sessions, because:
- It allows the user to switch back and forth between local and remote tmux sessions in a single keypress.
- It allows the user to work in a nested tmux session without typing the prefix-key twice every time a tmux-command is used remotely.
Underneath the /shell
directory I have a unified shell init file shellrc
for bash and zsh usage.
I configure terminal colors using the base16-shell
repo and associated shell scripts;
the great thing is that this solution does not depend on Xresources
or any other non-shell config file.
As long as your terminal supports changing colors by escape codes, this method will work.
Dircolors is a system to configure color pretty-printing when listing files using the ls
command.
Unfortunately, due to wonky permission mappings, when accessing the windows filesystem from linux, most standard dircolors choices look quite bad.
To rememdy this, I collected a variety of free color scripts and modified a free test script so that I could compare various choices.
This script can be found under dircolors/test
.
If installing a new WSL distribution, my recommended approach is to use LxRunOffline. To use LxRunOffline, first download the tool. Then, in an elevated Windows command prompt, run the following steps:
-
Install the distribution
LxRunOffline.exe i -n <distro_name> -d <distro_filesystem_directory> -f <distro_filesystem_tarball>
-
Use
wsl
to set the versionwsl.exe --set-version <distro_name> 2
-
(Recommended) Set systemd emulation in
/etc/wsl.conf
to make working with standard Linux services easier:wsl.exe -d <distro_name> -e bash -c "echo -e '[boot]\nsystemd=true' >> /etc/wsl.conf"
-
Finally, once the system has been configured with a proper user, set the default user for subsequent WSL invocations:
LxRunOffline.exe su -n <distro_name> -v <uid>
Note:
<uid>
is almost always1000
.
When installing on a fresh system, there are a couple post-installation steps:
-
After cloning, this repository should be moved to
$HOME/.config
-
After cloning, run
git submodule update --init --recursive
to grab all submodules -
Check the
meta/install
directory for both:- distribution specific install scripts
- the
link
script which setups symlinks in$HOME
for various configuration files