Personal configuration files for a productive development environment on macOS and Linux. Heavily customized for keyboard-driven workflow with Vim keybindings, tmux, and extensive automation.
git clone --depth=1 https://github.com/shitcoding/dotfiles ~/.dotfiles
cd ~/.dotfiles
make magic- Oh My Zsh framework with custom plugins
- Powerlevel10k theme for a beautiful, informative prompt
- Plugins:
git,history-substring-search,zsh-autosuggestions,zsh-fzf-history-search,F-Sy-H - pyenv and nvm integration for Python and Node.js version management
- Extensive custom aliases for productivity (see below)
Files:
zsh/.zshrc→~/.zshrczsh/.zshrc_macos→ macOS-specific configurationzsh/oh-my-zsh/custom/aliases-pub.zsh→ Custom command aliaseszsh/oh-my-zsh/custom/aliases-pub-macos.zsh→ macOS-specific aliaseszsh/oh-my-zsh/custom/env-pub.zsh→ Environment variableszsh/oh-my-zsh/custom/env-pub-macos.zsh→ macOS-specific environment variablespowerlevel10k/.p10k.zsh→~/.p10k.zsh
Fast, GPU-accelerated terminal emulator with:
- Custom Gruvbox-inspired color scheme
- 90% opacity for aesthetics
- MesloLGS Nerd Font for icon support
- Maximized startup
- 10,000 lines of scrollback history
File: alacritty/alacritty.yml → ~/.config/alacritty/alacritty.yml
Alternative terminal emulator configuration
File: kitty/kitty.conf
Comprehensive tmux configuration with:
- Ctrl-A prefix (instead of default Ctrl-B)
- Vim-style keybindings for navigation (
hjkl) - Alt+hjkl for quick pane switching (no prefix)
- Alt+1-9 for window switching (no prefix)
- Ctrl-Space to switch to last window
- Custom Gruvbox-inspired color scheme
- Mouse support enabled
- Plugins via TPM:
tmux-sensible- sensible defaultstmux-yank- system clipboard integrationtmux-resurrect- save/restore sessionstmux-fzf- fuzzy finder integration
- Resurrect support for:
vim,nvim,lvim,htop,btop,nvitop,lazygit
Files:
tmux/.tmux.conf→~/.tmux.conftmux/.tmux.conf.macos→ macOS-specific configuration
Classic Vim configuration with extensive plugins via vim-plug:
- Gruvbox color scheme
- NERDTree with icons and syntax highlighting
- YouCompleteMe for code completion
- FZF for fuzzy file finding
- vim-airline with minimalist theme
- vim-surround, targets.vim, emmet-vim
- vim-numbertoggle - hybrid/absolute line numbers
- Custom keybindings:
- Space as leader key
- H/L for line beginning/end
- Ctrl-hjkl for split navigation
- g1-g9 for tab switching
- Emacs-like shortcuts in command mode
- Persistent undo
- Russian keyboard layout support
File: vim/.vimrc → ~/.vimrc
Neovim IDE layer with extensive customization:
- VSCode color scheme with transparency
- Custom keybindings matching Vim configuration
- J/K for buffer tab navigation
- Extensive LSP configuration:
- Python: Pyright, flake8, black/blue, debugpy
- SQL: sqlls with custom config
- Bash, Dockerfile, YAML, CSS, and more
- Plugins:
persistence.nvim- session managementtrouble.nvim- diagnostics viewernvim-spectre- search and replacevenv-selector- Python virtual environment selectornvim-colorizer- hex color visualizationmason-tool-installer- auto-install LSPs/formatters
- Custom Telescope bindings for fuzzy finding
- DAP (Debug Adapter Protocol) for Python
Files:
lvim/config.lua→ LunarVim main configlvim/codedarker.lua→ Custom color schemelvim/htmldjango.vim→ Django template support
Sophisticated keyboard customizations:
- Caps Lock → Escape when tapped, Ctrl when held
- Left Cmd → Mission Control (F3) when pressed alone
- Ctrl → Hyper key (⌃⌥⇧⌘) for additional shortcuts
- Double Left Shift → Caps Lock
- Emacs-like text editing (Ctrl-a/e/b/f/w/u/d) system-wide
- Excludes terminals, Vim, Obsidian, Firefox
- Ctrl-hjkl → Arrow keys (except in terminals/Vim)
- Cmd-hjkl → Tmux pane switching in terminals
- Ctrl-b → Backspace (except in terminals)
- Preserves Ctrl-Cmd-H/L/K for BetterTouchTool integration
File: karabiner/karabiner.json
Automation and window management:
- Cmd-0 → Switch to last space/desktop on built-in display
File: hammerspoon/init.lua
Vim-like file manager configuration
File: vifm/vifmrc
- Tridactyl extension configuration for Vim-like browsing
- Custom
userChrome.cssfor UI modifications
Files:
firefox/tridactylrcfirefox/userChrome.css
- IdeaVim configuration for Vim emulation
- Custom keymap exports
Files:
jetbrains/.ideavimrcjetbrains/ide_keymaps.zip
TUI for Docker management
File: lazydocker/config.yml
Vim mode configuration for note-taking
File: obsidian/.obsidian.vimrc
Custom GNOME settings
File: gnome/gnome-settings.ini
l, la # eza (modern ls)
bat # batcat (cat with syntax highlighting)
ping # prettyping (prettier ping)dcmp # docker compose
dcst, dcrm # docker stop, docker rm
dcps # docker ps --alltmr # Launch tmux, restore last session, attach to mainmkd # mkdir -p
cpr # cp -r
cpwd, c # Copy current directory path to clipboard
cpls # Copy file/directory absolute path to clipboarddnow # Current date (DD-MM-YYYY)
dtnow # Current datetime (DD-MM-YYYY_HH-MM)
qrstring # Generate QR code in terminal
yo # Send desktop notification# Arch Linux
pac, pacs, pacr
# Debian/Ubuntu
sai, sau, sar # apt install, update, remove
sni, snu # nala (better apt) install, upgradev # lvim (LunarVim)
lg # lazygit
ldc # lazydocker
py, pym # python3, python3 -m
pcd # Remove __pycache__ directoriesrestart-gnome # Restart GNOME Shell
restart-sound # Restart PipeWire/audio
fxrndr # Fix external display scaling./arch_install_tools.shAutomated installation of common development tools
./ubuntu_install_tools.shAutomated installation of common development tools
./install.shCopies dotfiles to appropriate locations (basic setup)
- Vim keybindings in: shell, tmux, browsers, file managers, IDEs, note-taking apps
- Consistent navigation across all tools (hjkl)
- H/L for line beginning/end across editors
- Extensive keyboard shortcuts minimize mouse usage
- System-wide Emacs-like text editing shortcuts
- Quick workspace/window switching via Karabiner
- Tmux integration with terminal-level shortcuts
- Modern CLI tools (eza, bat, prettyping, fzf)
- Python development: pyenv, virtual envs, LSP, formatters, linters
- Docker workflows with lazydocker
- Git workflows with lazygit
- Session persistence in tmux and Neovim
- Separate configurations for macOS and Linux
- Platform-specific aliases and environment variables
- Conditional tool usage based on availability
- Gruvbox-inspired color scheme across all tools
- Transparent backgrounds where supported
- Nerd Fonts for consistent iconography
- Custom status lines and prompts
zsh- Shelloh-my-zsh- Zsh frameworkpowerlevel10k- Zsh themetmux- Terminal multiplexervimorneovim- Text editor
alacrittyorkitty- Terminal emulatorfzf- Fuzzy findereza- Modern ls replacementbat- Cat with syntax highlightingprettyping- Better pingpyenv- Python version managernvm- Node.js version managerlazygit- Git TUIlazydocker- Docker TUIkarabiner-elements- Keyboard customizer (macOS)hammerspoon- Automation tool (macOS)
- MesloLGS Nerd Font - For icon support
- macOS - Primary platform with full support
- Linux (Arch, Ubuntu/Debian) - Full support
- Wayland/Xorg - Both supported
- Karabiner: Ctrl-b as backspace (except terminals)
- Karabiner: Emacs text editing bindings
- Karabiner: Cmd-hjkl for tmux pane switching
- Zsh: soundcloud-dl (scdl) alias
- Zsh: Go directory moved to hidden
.go - Tmux: macOS-specific configuration
- Hammerspoon: Cmd-0 to switch to last space
These are personal dotfiles, but feel free to fork and adapt them to your needs!
MIT
Best configs for best tools (by my mom's rating)