____ __ ____ ____ __ __ ____ ____
( \ / \(_ _)( __)( )( ) ( __)/ ___)
) D (( O ) )( ) _) )( / (_/\ ) _) \___ \
(____/ \__/ (__) (__) (__)\____/(____)(____/
###########
# about # custom linux config files
# author # xero <x@xero.nu>
# └author # blangguth <dev@langguth.io>
# code # https://github.com/blangguth/dotfiles
###########
in use
------
bash > .bashrc with git prompt, .profile and aliases
feh > image viewer themes
git > global git config and aliases
gtk > gtk 2, 3 and 4 theme, icon and font settings
mc > midnight commander settings, panels, user menu and dracula skin
polybar > status bar config
urxvt > terminal settings, xft and dracula colors in .Xresources
vim > neobundle plugins and dracula color scheme
xmonad > xmonad wm config, helper scripts and stack build files
xsession > .xsessionrc starts urxvtd and xmonad, xmonad starts polybar, .xserverrc
not in use on this machine (mostly inherited from xero)
-------------------------------------------------------
fonts > configs for gohu and other bitmap fonts
fun > term color, sys info, and other misc scripts
pacman > pacman colors and progress bar animations (arch only)
ranger > file manager with image previews and z3bra theme
ryu-login > ryu ansi art for /etc/issue tty login
ssh > remote ssh server keep alive
sys > system automation scripts
themes > mod of the cathexis dark theme for gtk/qt/xfce
tmux > terminal multiplexer with custom status bar
zsh > zshell settings, aliases, and custom prompts
assets (flat folders, do not stow)
----------------------------------
figlet > custom 3d font
previews > screenshots of xero's original setups
wallpaper > desktop background images
personal linux config files, forked from xero/dotfiles and managed with gnu stow, a small symlink farm manager. every top level folder is a package that mirrors the home directory, so vim/.vimrc ends up as ~/.vimrc. the files stay versioned in one place and are linked into position with a single command.
- os: debian
- shell: bash
- window manager: xmonad with polybar
- terminal: urxvt in daemon/client mode
- launcher: dmenu via yeganesh
- editor: vim
- file manager: midnight commander
- colors: dracula (
#282A36,#BD93F9)
stow is available through your package manager.
sudo apt-get install stowsudo pacman -S stowbrew install stow
by default stow creates symlinks in the parent directory of where you run it. so this setup assumes the repo is located at ~/dotfiles and that all stow commands run inside that directory. otherwise use the -d flag with the repo location.
to install a package run stow with the folder name as the only argument:
stow vim
use the -t (target) flag to link files somewhere else. ryu-login and pacman target the root of the filesystem:
sudo stow -t / ryu-login
note: stow will not replace a real file. if a file already exists in the target location stow refuses to link it. move the file out of the way first, and compare it with the repo copy before you do. don't use --adopt, it overwrites the repo copy with the file from your home directory.
this applies here to ssh: ~/.ssh/config is a real file on this machine and stays out of the repo, the repo copy is only a stub. also ~/.config/mc/menu is a hand made link to mc.menu, stow mc would not create it.
some programs write to linked files. mc rewrites ini when it exits, so a diff in that file is expected and doesn't need a commit. theme switchers can replace a gtk settings.ini with a real file, ls -l shows whether it's still a link.
clone the repo into your home directory
cd ~
git clone https://github.com/blangguth/dotfiles.git
enter the dotfiles directory
cd dotfiles
preview what a package would do, this changes nothing
stow -n -v vim
install a package
stow vim
uninstall a package
stow -D vim
this repo only holds configs. a fresh debian install needs a few more things before the desktop works.
packages
sudo apt-get install stow vim mc xmonad polybar rxvt-unicode suckless-tools feh scrot alsa-utils xbacklight x11-xserver-utils network-manager-applet keychain colordiff net-tools
stack builds xmonad against the x11 headers:
sudo apt-get install libx11-dev libxft-dev libxinerama-dev libxrandr-dev libxss-dev
tools outside the package manager
- stack and yeganesh in
~/.local/bin - nvm in
~/.nvm, thennvm alias default 26 - rustup for
~/.cargo/env - homebrew in
/home/linuxbrew/.linuxbrew - the git prompt:
git clone https://github.com/blangguth/bash-git-prompt.git ~/.bash-git-prompt
.bashrc falls back to a plain prompt without bash-git-prompt and skips keychain, brew, nvm and ~/.cargo/env when they're missing, .profile does the same for nvm and ~/.cargo/env. keychain also needs ~/.ssh/id_rsa.
theme, icons and fonts
- the dracula gtk theme in
~/.themes/Dracula - the tela icon theme: run
./install.sh draculain a clone of it, thengsettings set org.gnome.desktop.interface icon-theme Tela-dracula-dark - fonts: SauceCodePro Nerd Font for urxvt, polybar and dmenu, with DejaVu Sans Mono and DejaVu Sans as fallbacks, Noto Sans for gtk
first start
.xsessionrc starts the xmonad binary directly, so build it before the first login and link it for xmonad --restart:
xmonad --recompile
mkdir -p ~/.local/bin
ln -s ~/.xmonad/xmonad-x86_64-linux ~/.local/bin/xmonad
the config is xmonad/.xmonad/xmonad.hs, the mod key is super. it builds with stack (ghc 9.4.7 from lts-21.12, xmonad 0.18.1 from hackage), so stack.yaml and xmonad-config.cabal have to stay next to it.
rebuild and restart after a change:
xmonad --recompile && xmonad --restart
the scripts in bin/ are expected on the PATH as ~/.xmonad/bin.
plugins are managed with neobundle, which is part of this repo. all other plugins are downloaded into vim/.vim/bundle/, which is ignored by git. add new ones as NeoBundle lines in vim/.vimrc.