This repo includes dotfiles for my Linux bspwm setup, used alongside the Cinnamon Desktop Environment.
Currently operating and tested on Linux Mint 21.2 (Ubuntu 22.04 based). I have only used Debian based distros
so if you're on a non-Debian-based one, forgive me if you're using others. The configs fit my workflow, so feel free
to tweak it to fit yours.
- Shell: zsh, oh-my-zsh, starship
- Terminal: kitty
- SCM: git
- WM: bspwm
- Compositor: picom
- Status bar: polybar
- Menu launcher: rofi
- Noti-daemon: dunst
- Text editor: neovim nightly (> 0.10)
- Terminal multiplexer: tmux (optional)
- tpm (tmux plugin manager, optional)
- OS fetch: treefetch (requires Cargo, optional)
- Put all of the dotfiles in the right directories.
- This repo should be cloned in user's home directory (
~)
-
Install git:
Debian/Ubuntu/Linux Mint/Pop! OS:
sudo apt install git
-
Create and add SSH key to Github profile
- Use
ssh-add <path to ssh key file>(--apple-use-keychainoption in Mac/OSX so the SSH agent won't ask for the identity and passphrase later).
- Use
-
Python3 & pip (might be shipped with some distros):
Debian/Ubuntu/Linux Mint/Pop! OS:
sudo apt install python3 python3-pip python3-venv
-
Javascript/Typescript & nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash nvm install 'lts/*'
-
Rust & cargo:
curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh sudo apt install cargo
-
Lua:
Debian/Ubuntu/Linux Mint/Pop! OS:
sudo apt install lua5.3
-
Cargo packages:
cargo install --git https://github.com/angelofallars/treefetch cargo install git-delta
-
Additional packages from github: oh-my-zsh + zsh plugins, vim-plug + vim plugins, tpm + tmux plugins, cbonsai, pfetch, gotop, spicetify, etc.
-
oh-my-zsh:
chsh -s $(which zsh) # requires re-login to take effect sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
-
vim-plug:
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' -
tmux plug-in manager:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm tmux source ~/.tmux.conf
-
-
Fonts: JetBrainsMono NerdFont (get from the NerdFont's repo), feather and iosevka NerdFont (get from this repo's installation or assets)
-
Mouse cursors: Volantes cursor - follow this instruction
-
Icons: Fluent-red-dark, Nordzy
-
Themes: Sweet, Eleganse (Cinnamon)
-
polybar: follow this instruction
- Themes setup: follow this instruction, then replace the
~/.config/polybarfolder with the ones in this repo; or: just install the fonts in this repo.
- Themes setup: follow this instruction, then replace the
-
Monitor light control: my dotfiles use the
lightpackage, then add user to thevideogroupsudo usermod -aG video $USER
-
-
Install some dependencies for neovim:
Debian/Ubuntu/Linux Mint/Pop! OS:
sudo apt install xclip wl-copy wl-paste latexmk texlive texlive-lang-other
Other OS-independent package managers:
pip install neovim black cargo install stylua npm install -g prettier tree-sitter-cli
-
Open Vim and run
:PI -
Reload Vim
- Open Tmux and run
<prefix> + I(prefix should beCtrl + A) - Reload Tmux
My bspwm configs come with some following keymaps:
Super + j, kmoves between windows in a desktopSuper + arrow keysalso moves between tiled windows in a desktop in their respective directionsSuper + Shift + h, j, k, lswitches windows in a desktopAlt + (Shift) + Tabcycles through windows in the current desktop in monocle layoutSuper + (Shift) + Tabcycles through active desktopsSuper + n, pcycles through desktops, regardless of monitorsSuper + ; (semicolon)moves to the next monitorSuper + : (colon)switches windows to the next monitorSuper + ftriggers fullscreen modeSuper + ttriggers tiled modeSuper + striggers floating modeSuper + mtriggers monocle layoutSuper + $numberswitches to the $number-th desktop (0 for the 10th desktop)Super + Shift + $numbermoves the focused window to the $number-th desktopAlt + dlaunches Rofi launcherSuper + Shift + qorAlt + F4kills the focused windowSuper + llocks the screenSuper + Shift + elaunches the powermenuSuper + Shift + rreloads the WM and its configurations
- This nvim configuration also works on Windows (at least Windows 11)
- I have lots of custom keymaps, check them out with
WhichKey - Plugins are listed in
plugins.lua - Each time you change the colorscheme, it is saved to a cache file for loading in the next times
- If Nvim is called in a tmux session, its colorscheme will be catppuccin and themes won't be cached. This is because tmux uses catppuccin and currently I don't know how to dynamically change tmux themes.
- To automatically install some favored LSPs, linters, formatters, uncomment them in
lsp_options.luaandnull_ls.lua
- @adi1090x and his polybar-themes for the template and many presets I use in my polybar configs.
- chist@machine's Neovim-from-scratch and @craftzdog's nvim config for in my Neovim configs reference.
- @catppuccin's colorscheme for the theming in my configs