Skip to content

fefa4ka/dotfiles

 
 

Repository files navigation

Dotfiles Setup

Configuration files for ZSH, Neovim, TMUX, Kitty, Alacritty, and macOS window management.

Overview

This dotfiles repository provides:

  • Shell environment (ZSH) with custom plugins and prompt
  • Terminal multiplexer (TMUX) with session persistence
  • Text editor (Neovim) with IDE-like features
  • Terminal emulators (Kitty, Alacritty) with theme support
  • Window management (Yabai, skhd) for macOS tiling
  • Light/dark theme switching across applications
  • AI integration with LLM tools and aider

Setup Options

There's 3 ways in which you can use this, depending on how much you think you'll be customizing.

One of the key features is that this implementation stays in sync across all your machines. So depending on how much you'd like to customize your configuration, you have a few options:

  • Little Customization: Just clone this repo and jump to Installation.

  • Mild Customization: Fork this repo, and clone your own fork. Keep an eye on this repo for bugfixes and other improvements that you'd like to incorporate into your fork. Then jump to Installation.

  • Most Customization: Building your own dotfiles from scratch! Read through these docs, watch the video above, star this repo, and create your own dotfiles! You can add this repository as a git module and source the parts you like.

    If you're unsure, just read the docs, watch the video, clone this repository, and jump to Installation.

Installation

Once the repo is cloned, execute the deploy script:

./deploy

This script guides you through the following:

  1. Checks for and installs required packages (zsh, neovim, tmux, etc.)
  2. Installs optional helpful packages (exa, bat, fzf, etc.)
  3. Sets zsh as your default shell (if not already)
  4. Backs up your existing configuration files
  5. Initializes git submodules for plugins
  6. Sets up symbolic links for all configuration files
  7. Installs Neovim plugins using Lazy package manager
  8. Installs global npm and pip packages for development

Prerequisites

  • Git
  • A supported package manager (apt, brew, pacman, dnf, etc.)
  • Admin/sudo access for installing packages

Post-Installation

After installation:

  1. Restart your terminal or run zsh
  2. Open Neovim to complete plugin installation
  3. Check tmux with tmux new or tmux attach

Summary of Features

Core Components

ZSH Configuration

  • Custom prompt with contextual plugins
  • Auto-suggestions and syntax highlighting
  • Enhanced history management and searching
  • Vi-mode for command line editing
  • Directory navigation shortcuts
  • Custom aliases and functions

Neovim (Text Editor)

  • Modern Lua-based configuration
  • Language Server Protocol (LSP) integration
  • Syntax highlighting and code formatting
  • Git integration with signify
  • Code completion and snippets
  • Distraction-free writing mode

TMUX (Terminal Multiplexer)

  • Session persistence with tmux-resurrect
  • Mouse support for selection and scrolling
  • Custom status bar with system information
  • Automatic theme switching (light/dark)
  • Vim-style keybindings for navigation
  • Clipboard integration

Terminal Emulators

  • Kitty and Alacritty configurations
  • Consistent themes across terminals
  • Custom font settings with Nerd Fonts
  • GPU acceleration for performance

Window Management (macOS)

  • Yabai for tiling window management
  • skhd for keyboard shortcuts
  • Spacebar for status information
  • Custom workspace layouts
  • Multi-display support

Tools and Utilities

  • vifm file manager configuration
  • ranger file browser with image previews
  • Theme switching between light/dark modes
  • Custom scripts for common workflows
  • AI integration with aider and LLM tools

ZSH Keybindings

Keybinding Action
Ctrl-o Open file with fzf
Ctrl-u Navigate up directory
Ctrl-g Go to directory with fzf
Ctrl-p Edit file in Neovim with fzf
Ctrl-s Prefix command with sudo
Ctrl-n Open notes

Terminal Applications

Keybinding Application
Cmd-Return Launch terminal
Cmd-Shift-Return Launch browser
Cmd-F or RCmd-Return Launch vifm file manager
Cmd-V Launch Neovim

Helper Applications

Keybinding Helper
Cmd-Shift-U Serial port utilities
Cmd-Shift-M Tmux session manager
Cmd-Shift-Y Y.VM manager
Cmd-Shift-H "How Do I" helper
Cmd-Shift-@ Reminder utility
Cmd-Shift-# Quick note

Window Management

Keybinding Action
Alt-[Zz] Toggle fullscreen/section fullscreen
Alt-b Toggle status bar
Meh-R (Ctrl-Alt-Shift-R) Reload yabai, skhd, spacebar
Alt-x Mirror on x-axis
Alt-y Mirror on y-axis
Alt-o Toggle split orientation
Alt-Shift-[hjkl] Move window in direction
Alt-Cmd-[hjkl] Resize window
Alt-Ctrl-[hjkl] Warp window in direction
Alt-Shift-[qw] Move window to adjacent space
Alt-Shift-Space Toggle float for window
Alt-[Ff] Toggle float for space
Alt-s Toggle sticky window
Alt-t Toggle topmost window
Alt-p Toggle PIP mode (sticky+topmost)
Alt-Shift-Cmd-[hjkl] Fill left/center/full/right
Ctrl-[123] Focus display 1/2/3
Ctrl-Cmd-[qw] Focus prev/next display
Ctrl-Shift-[123] Move space to display 1/2/3
Alt-[1-9] Select space 1-9
Ctrl-Shift-[qw] Move space backward/forward
Cmd-Shift-c Create new space
Cmd-Alt-c Create space and move window to it
Cmd-Shift-w Destroy current space

Neovim Keybindings

Keybinding Action
<Space> Leader key
q[abc] Record macro into register a, b, or c
H Show documentation for symbol under cursor
[c ]c Navigate between git hunks
[g ]g Navigate between diagnostics
<leader>i Git blame
<leader>hp Preview git hunk
<leader>hs Stage git hunk
<leader>hu Undo git hunk
Ctrl-K Format selected code

Plugins

ZSH Plugins

TMUX Plugins

Theme Switching

The dotfiles support automatic theme switching based on macOS appearance settings, as well as manual toggling between light and dark themes. This affects:

  • Terminal colors (Kitty, Alacritty)
  • TMUX appearance
  • Neovim colorscheme
  • System appearance

To manually switch themes, use the switch_theme script or press appropriate keybinding.

Troubleshooting

Common Issues

  1. Terminal colors look wrong

    • Ensure terminal supports 24-bit color
    • Check $TERM is set correctly (tmux-256color)
    • Try reloading theme: kitty_reload or switch_theme
  2. Fonts missing icons

    • Install Nerd Fonts via deploy script
    • Check terminal is using a Nerd Font
  3. Keybindings not working

    • For yabai/skhd: run skhd --restart and yabai --restart
    • For tmux: check prefix key is backtick (`)
    • For zsh: check if keybinding conflicts with terminal app
  4. LSP servers not working

    • Run :LspInfo in Neovim to check status
    • Install missing language servers manually
    • Check if language server is in PATH

Getting Help

For more help or to report issues, please open an issue on the GitHub repository.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Vim Script 48.7%
  • Lua 22.4%
  • Shell 18.8%
  • Python 8.7%
  • Ruby 1.1%
  • Dockerfile 0.3%