Skip to content

lonhattan007/public-dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Public Dotfiles

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.

Prerequisites

  • 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)

Manual Installation Roadmap

  • Put all of the dotfiles in the right directories.
  • This repo should be cloned in user's home directory (~)

Git and package managers

  • 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-keychain option in Mac/OSX so the SSH agent won't ask for the identity and passphrase later).
  • 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

Terminal stuffs:

  • 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

WM / DE setup:

  • 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/polybar folder with the ones in this repo; or: just install the fonts in this repo.
    • Monitor light control: my dotfiles use the light package, then add user to the video group

      sudo usermod -aG video $USER

Vim configuration:

  • 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

Tmux configuration:

  • Open Tmux and run <prefix> + I (prefix should be Ctrl + A)
  • Reload Tmux

Some bspwm notes

My bspwm configs come with some following keymaps:

  • Super + j, k moves between windows in a desktop
  • Super + arrow keys also moves between tiled windows in a desktop in their respective directions
  • Super + Shift + h, j, k, l switches windows in a desktop
  • Alt + (Shift) + Tab cycles through windows in the current desktop in monocle layout
  • Super + (Shift) + Tab cycles through active desktops
  • Super + n, p cycles through desktops, regardless of monitors
  • Super + ; (semicolon) moves to the next monitor
  • Super + : (colon) switches windows to the next monitor
  • Super + f triggers fullscreen mode
  • Super + t triggers tiled mode
  • Super + s triggers floating mode
  • Super + m triggers monocle layout
  • Super + $number switches to the $number-th desktop (0 for the 10th desktop)
  • Super + Shift + $number moves the focused window to the $number-th desktop
  • Alt + d launches Rofi launcher
  • Super + Shift + q or Alt + F4 kills the focused window
  • Super + l locks the screen
  • Super + Shift + e launches the powermenu
  • Super + Shift + r reloads the WM and its configurations

Some Nvim notes

  • 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.lua and null_ls.lua

Thanks to

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published