Skip to content

Repository files navigation

dotfiles

My dotfiles: i3wm, Vim, tmux, zsh, termite.

Stow is a symlink farm manager program which takes distinct sets of software and/or data located in separate directories on the filesystem, and makes them all appear to be installed in a single directory tree.

Arch Linux:

yay -Sy stow

I use stow to have all dotfiles on ~/.dotfiles under version control git.

Cloning the repo

I recommend to clone the repo on ~/.dofiles directory

git clone git@github.com:Sergi030/dotfiles.git .dotfiles

I3

  1. Install I3 and dependencies
yay -Sy i3-gaps i3blocks pavucontrol ttf-font-awesome ttf-font-awesome-4 alsa-utils flameshot rofi playerctl

VIM

  1. Install vim
yay -Sy vim
  1. Install Vundle:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  1. Stow VIM config
cd ~/.dotfiles && stow VIM && cd -
  1. Install Vundle PLugins
vim +PluginInstall +qall
  1. Install last requierements
# Install ctags, cmake
yay -Sy ctags cmake

# Complete the installation of YouCompleteMe
cd .vim/bundle/YouCompleteMe/ && ./install.py --all && cd -

Termite

  1. Install termite
yay -Sy termite
  1. Install requiered Fonts:
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd ..
rm -rf fonts
  1. Stow termite
cd ~/.dotfiles && stow TERMITE && cd -

ZSH

  1. Install ZSH
yay -Sy zsh
  1. Install ohmyzsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  1. Stow ZSH
rm ~/.zshrc && cd ~/.dotfiles && stow ZSH && cd -
  1. Make ZSH the default shell
chsh -s /bin/zsh

TMUX

My Tmux configuration is from gpakosz

  1. Install tmux
yay -Sy tmux
  1. Stow TMUX
cd ~/.dotfiles && stow TMUX && cd -

Hyprland

  1. Install Hyprland and the session programs
sudo apt install -y hyprland waybar swww wl-clipboard cliphist hypridle hyprlock kanshi dunst rofi brightnessctl
  1. Stow Hypr

~/.config/systemd/user must exist first, otherwise stow folds the whole systemd tree into a symlink and no other unit can ever be added to it.

mkdir -p ~/.config/systemd/user
cd ~/.dotfiles && stow Hypr && cd -
  1. Enable the session services

The session is run by systemd, not by exec-once. hyprland.conf starts a single unit, hyprland-session.target, which pulls in graphical-session.target; every service below hangs off that and is restarted automatically if it dies. Stow only symlinks the unit files — enabling them is separate state, so do it once per machine:

systemctl --user daemon-reload
systemctl --user enable kanshi.service waybar.service swww.service \
    wl-clip-persist.service cliphist-text.service cliphist-image.service \
    hypridle.service hyprpolkitagent.service

Then log out and back in, or start it in place:

systemctl --user start hyprland-session.target
  1. Checking on it
systemctl --user list-units 'kanshi*' 'waybar*' 'swww*' 'cliphist*' 'hypridle*'
journalctl --user -u kanshi -e        # why a service died

Gotcha: stow folds drop-in directories, and systemd ignores them

systemd does not follow a symlinked foo.service.d directory, and it fails silentlysystemctl --user show <unit> -p DropInPaths just comes back empty and the packaged defaults apply. If stow folds hypridle.service.d into a single symlink, every override in it is quietly dropped.

Keep the .service.d directories real so stow only symlinks the .conf files inside them:

mkdir -p ~/.config/systemd/user/{hypridle,waybar,hyprpolkitagent}.service.d
cd ~/.dotfiles && stow Hypr
systemctl --user show waybar -p DropInPaths   # must NOT be empty

Note that kill -9 does not catch this: SIGKILL counts as a failure, so a unit left on the packaged Restart=on-failure still comes back and looks healthy. Test with kill -TERM (a clean exit) to tell on-failure and always apart.

To add another autostart program, write a unit with PartOf=graphical-session.target / WantedBy=graphical-session.target and enable it — do not add exec-once lines to hyprland.conf, as those are unsupervised and stay dead once the program crashes.

VSCODE

Stows settings.json and keybindings.json into ~/.config/Code/User/.

~/.config/Code/User must already exist as a real directory before stowing, otherwise stow folds it into a symlink and VS Code's entire state directory (History/, globalStorage/, workspace databases) ends up inside this repo.

cd ~/.dotfiles && stow VSCODE && cd -

snippets/.gitignore only exists to keep the otherwise-empty snippets/ directory tracked; stow skips it, since .gitignore is on stow's default ignore list.

About

My dotfiles: i3wm, Vim, tmux, zsh, termite.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Used by

Contributors

Languages