Skip to content
/ dotfiles Public

Command-line lovers unite! I'm sharing my dotfiles, so you don't have to be me and spend years tweaking configuration files for the best developer experience. Enjoy!

Notifications You must be signed in to change notification settings

wunki/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

A carefully crafted collection of configuration files for Fish, Tmux, Ghostty, Helix, Zed and more, optimized for cross-platform use.

MIT License

Features

  • Cross-platform compatibility: Works on macOS, Linux, and FreeBSD
  • Theme support: Custom themes for terminals and editors including Lackluster (dark) and Zenbones (light)
  • Modern tools: Configuration for cutting-edge tools like Ghostty terminal and Zed editor
  • Shell enhancements: Fish shell with useful abbreviations, functions, and OS-specific configurations
  • Development optimized: Tmux with sensible defaults and theme switching

Components

Component Description
Fish Shell with good defaults and easy to configure
Zsh Alternative shell with platform-specific configurations
Tmux When editing remote I use Tmux to save sessions and manage windows
Ghostty Modern GPU-accelerated terminal emulator
Helix A post-modern text editor written in Rust
Zed High-performance, multiplayer code editor

Neovim

Neovim with Telescope

While not directly configured in this repository, my dotfiles include support for terminal-based editors and tools, complementing my development workflow. The Tmux configuration works particularly well with Neovim for remote editing sessions.

Clickable Stacktraces (nvim:// URL Handler)

This setup enables clicking file links in your browser (e.g., Phoenix error pages) to open them directly in the correct Neovim instance.

How it works:

  1. nvs starts Neovim with a socket at /tmp/nvim-$SESSION_NAME
  2. Clicking nvim://file/... URLs opens files in that instance
  3. Automatically switches tmux session/pane and focuses Ghostty

Setup:

  1. Run make bin to install the handler scripts
  2. Install the URL handler app (located at ~/Applications/Nvim URL Handler.app after first setup)
  3. Add to your project's .mise.toml:
[env]
_.source = "~/.local/bin/mise-tmux-session"
PLUG_EDITOR = "nvim://file/__FILE__:__LINE__?tmux-session={{ env.TMUX_SESSION_NAME }}"
  1. Start Neovim with nvs (instead of nvim) in your tmux session

Prerequisites

  • Git
  • Make
  • A package manager (Homebrew on macOS, apt/dnf on Linux)

Installation

Clone this repository:

git clone https://github.com/petar/dotfiles.git
cd dotfiles

Use the Makefile to install specific components:

# Install all configurations
make

# Install specific components
make fish
make zsh
make tmux
make helix
make ghostty
make zed

Shell Setup

Common Tools (Both Fish and ZSH)

These tools enhance both shells and should be installed first:

brew install eza         # Modern ls replacement (aliased to ls)
brew install bat         # Modern cat replacement (aliased to cat)
brew install fzf         # Fuzzy finder

Fish Setup

  1. Install Fisher (plugin manager):
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
  1. Install plugins:
fisher install jorgebucaran/autopair.fish
fisher install jethrokuan/z
fisher install PatrickF1/fzf.fish
fisher install IlanCosman/tide@v6
  1. Configure Tide prompt:
tide configure

ZSH Setup

  1. Install tools:
brew install zoxide      # Directory jumping (use 'z' command)
brew install direnv      # Per-directory environment variables
brew install mise        # Version manager for dev tools
brew install gitu        # Terminal UI for git (aliased to 'gu')
  1. Clone ZSH plugins:
mkdir -p ~/.zsh
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.zsh/zsh-autosuggestions
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ~/.zsh/fast-syntax-highlighting
git clone https://github.com/hlissner/zsh-autopair.git ~/.zsh/zsh-autopair
git clone https://github.com/sindresorhus/pure.git ~/.zsh/pure

Customization

These dotfiles are organized to be easily customizable:

  • OS-specific configurations are isolated in separate files (darwin.fish, linux.fish, freebsd.fish)
  • Theme switching is supported in Tmux and Ghostty
  • Each tool has its own directory for clean separation of concerns
  • Secrets are kept in separate files (secrets.fish) that are not tracked by git

Troubleshooting

Common issues and solutions:

  • Symlinks not created: Ensure you have proper permissions in your home directory
  • Fish plugins not working: Make sure Fisher is installed and run the plugin install commands
  • Theme not applying: Check that the theme files are properly linked and your terminal supports the colors
  • OS-specific configs not loading: Verify that the OS detection in the configs matches your system

License

MIT

About

Command-line lovers unite! I'm sharing my dotfiles, so you don't have to be me and spend years tweaking configuration files for the best developer experience. Enjoy!

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •