Skip to content

codemedian/dotfiles

Repository files navigation

dotfiles 🛠️

My macOS development environment dotfiles, managed with GNU Stow.

🏗️ Structure

This repository uses a package-based structure. Each folder at the root (e.g., git/, nvim/, zsh/) is a "package" that mirrors the $HOME directory layout.

  • git/: Git configuration (~/.config/git/config)
  • nvim/: Neovim (v0.11+) with lazy.nvim (~/.config/nvim/)
  • tmux/: Tmux with gruvbox-based theme sync (~/.config/tmux/)
  • vim/: Legacy Vim configuration (~/.config/vim/)
  • zsh/: Zsh configuration with ZDOTDIR set to ~/.config/zsh/
  • macos-theme-sync/: Automatic terminal theme switching based on macOS system appearance.

🚀 Installation

Prerequisites

Setup

  1. Clone the repository:

    git clone https://github.com/codemedian/dotfiles.git ~/Projects/dotfiles
    cd ~/Projects/dotfiles
  2. Run the installation script:

    ./install.sh

The script will:

  • Symlink all configuration files into your $HOME.
  • Ensure required directories exist.
  • Register and load the macOS theme-sync LaunchAgent.

🌓 macOS Theme Sync

The macos-theme-sync package provides:

  • A Swift listener (listener.swift) that observes OS-level theme changes reactively via DistributedNotificationCenter.
  • A Shell script (sync.sh) that:
    • Updates Terminal.app settings.
    • Synchronizes Tmux themes instantly.
    • Writes a state file for Neovim to watch via vim.uv.new_fs_event for seamless background refreshes.
    • Signals Vim instances to update their background instantly using SIGUSR1.

🛠️ Maintenance

To add a new configuration, create a package folder following the same structure and run ./install.sh. Stow will automatically manage the symlinks.

About

Linux Dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors