Gentleman.Dots is designed to be highly customizable. This guide will walk you through the most common customization options and show you how to make the configuration truly yours.
Configuration Structure
The main configuration files are organized in the following structure:
~ /.config/
├── nvim/ # Neovim configuration
├── alacritty/ # Alacritty terminal
├── wezterm/ # WezTerm terminal
├── kitty/ # Kitty terminal
├── ghostty/ # Ghostty terminal
├── tmux/ # Tmux configuration
├── zellij/ # Zellij configuration
├── fish/ # Fish shell
├── nushell/ # Nushell configuration
└── starship.toml # Starship prompt
Terminal Emulator Customization
Alacritty Theme Modification
The default theme uses Kanagawa Wave colors. To customize, edit ~/.config/alacritty/alacritty.toml:
[ colors . primary ]
background = "#1F1F28" # Change to your preferred background
foreground = "#DCD7BA" # Change to your preferred foreground
[ colors . normal ]
black = "#1F1F28"
red = "#E46876"
green = "#98BB6C"
yellow = "#DCD478"
blue = "#7FB4CA"
magenta = "#957FB8"
cyan = "#6A9589"
white = "#DCD7BA"
For a complete color scheme change, modify both [colors.normal] and [colors.bright] sections to maintain consistency across regular and bright colors.
Font Configuration
The configuration uses IosevkaTerm Nerd Font by default. To change the font:
[ font ]
size = 16 # Adjust font size
[ font . normal ]
family = "IosevkaTerm NF" # Change to your preferred Nerd Font
Opacity and Window Settings
[ window ]
option_as_alt = "Both"
opacity = 0.96 # Adjust from 0.0 (transparent) to 1.0 (opaque)
Shell Customization
Starship Prompt Configuration
The Starship prompt is configured in ~/.config/starship.toml. Here’s how to customize key elements:
Change the Prompt Format
Edit the format string to add or remove elements: format = """\
($directory)\
$os\
$git_branch\
$fill\
$nodejs\
$rust\
$golang\
$php\
$bun\
$java\
$c\
$conda\
$zig\
$cmd_duration\
$time\
\n $character\
"""
Customize the Color Palette
The Gentleman palette is defined with Kanagawa-inspired colors: [ palettes . gentleman ]
text = "#F3F6F9"
red = "#CB7C94"
green = "#B7CC85"
yellow = "#FFE066"
blue = "#7FB4CA"
mauve = "#A3B5D6"
pink = "#FF8DD7"
teal = "#7AA89F"
peach = "#DEBA87"
Configure Programming Language Indicators
Show or hide language versions: [ nodejs ]
symbol = ""
format = '[[ $symbol ($version) ](fg:green)]($style)'
disabled = false # Set to true to hide
[ rust ]
symbol = ""
format = '[[ $symbol ($version) ](fg:red)]($style)'
disabled = false
Zsh Customization
The Zsh configuration uses Oh-My-Zsh with Powerlevel10k. Key customization points in ~/.zshrc:
# Add custom paths
export PATH = " $HOME /.local/bin: $HOME /.cargo/bin: $PATH "
# Set default editor
export EDITOR = "nvim"
export VISUAL = "nvim"
# Custom aliases
alias fzfbat = 'fzf --preview="bat --theme=gruvbox-dark --color=always {}"'
alias fzfnvim = 'nvim $(fzf --preview="bat --theme=gruvbox-dark --color=always {}")'
# Custom LS_COLORS
export LS_COLORS = "di=38;5;67:ow=48;5;60:ex=38;5;132:ln=38;5;144"
After modifying .zshrc, run source ~/.zshrc or restart your terminal to apply changes.
Nushell Customization
Nushell uses a different configuration approach. Edit ~/.config/nushell/config.nu:
# Custom color scheme
$env .LS_COLORS = (
"di=38;2;146;162;213:" + # Directories: lavender blue
"fi=38;2;201;199;205:" + # Regular files: light gray
"ln=38;2;172;161;207:" + # Symbolic links: lilac gray
"ex=38;2;133;181;186:" + # Executable files: blue-green
"or=38;2;234;131;165" # Broken links: intense pink
)
# Custom theme
let dark_theme = {
separator : "#54546D"
header : "#7E9CD8_bold"
bool : "#D27E99"
int : "#54546D"
filesize : "#6A9589"
duration : "#98BB6C"
}
Neovim Customization
Changing Keybindings
Custom keymaps are defined in ~/.config/nvim/lua/config/keymaps.lua:
keymaps.lua
Custom Example
-- Custom save function
vim . keymap . set ( "n" , "<C-s>" , ":lua SaveFile()<CR>" , { desc = "Save file" })
-- Tmux navigation
vim . keymap . set ( "n" , "<C-h>" , nvim_tmux_nav . NvimTmuxNavigateLeft )
vim . keymap . set ( "n" , "<C-j>" , nvim_tmux_nav . NvimTmuxNavigateDown )
vim . keymap . set ( "n" , "<C-k>" , nvim_tmux_nav . NvimTmuxNavigateUp )
vim . keymap . set ( "n" , "<C-l>" , nvim_tmux_nav . NvimTmuxNavigateRight )
-- Oil file explorer
vim . keymap . set ( "n" , "-" , "<CMD>Oil<CR>" , { desc = "Open parent directory" })
-- Obsidian shortcuts
vim . keymap . set ( "n" , "<leader>oc" , "<cmd>ObsidianCheck<CR>" , { desc = "Obsidian Check" })
vim . keymap . set ( "n" , "<leader>on" , "<cmd>ObsidianNew<CR>" , { desc = "Create New Note" })
Switching AI Assistants
Gentleman.Dots supports multiple AI assistants. All are managed in ~/.config/nvim/lua/plugins/disabled.lua:
Only enable ONE AI plugin at a time to avoid conflicts and keybinding issues.
return {
{
"NickvanDyke/opencode.nvim" ,
enabled = true , -- OpenCode (default)
},
{
"yetone/avante.nvim" ,
enabled = false , -- Avante
},
{
"CopilotC-Nvim/CopilotChat.nvim" ,
enabled = false , -- Copilot Chat
},
{
"olimorris/codecompanion.nvim" ,
enabled = false , -- Code Companion
},
{
"coder/claudecode.nvim" ,
enabled = false , -- Claude Code
},
}
To switch AI assistants:
Disable Current Plugin
Set enabled = false for the currently active AI plugin
Enable Desired Plugin
Set enabled = true for the AI plugin you want to use
Restart Neovim
Close and reopen Neovim to apply changes
Adding Custom Plugins
To add a new plugin, create a file in ~/.config/nvim/lua/plugins/:
return {
"username/plugin-name" ,
dependencies = { "required-plugin" },
config = function ()
require ( "plugin-name" ). setup ({
-- Your configuration here
})
end ,
keys = {
{ "<leader>mp" , "<cmd>MyPluginCommand<cr>" , desc = "My Plugin" },
},
}
LazyVim automatically loads all files in the lua/plugins/ directory. No need to explicitly require them.
Color Scheme Customization
The default color scheme is Kanagawa. To change it, edit ~/.config/nvim/lua/plugins/colorscheme.lua:
return {
{
"rebelot/kanagawa.nvim" ,
priority = 1000 ,
config = function ()
require ( "kanagawa" ). setup ({
theme = "wave" , -- Options: wave, dragon, lotus
background = {
dark = "wave" ,
light = "lotus"
},
transparent = false , -- Set to true for transparent background
dimInactive = true ,
colors = {
theme = {
all = {
ui = {
bg_gutter = "none"
}
}
}
},
})
vim . cmd ( "colorscheme kanagawa" )
end ,
},
}
Window Manager Customization
Tmux Configuration
The Tmux configuration is in ~/.tmux/tmux.conf. Key customization areas:
# Change prefix key (default: Ctrl+a)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Split windows with v and d
bind v split-window -h -c "#{pane_current_path}"
bind d split-window -v -c "#{pane_current_path}"
# Enable mouse support
set -g mouse on
# Status bar position
set -g status-position top # Change to 'bottom' if preferred
# Kanagawa theme
set -g @plugin 'Nybkox/tmux-kanagawa'
set -g @kanagawa-theme 'Kanagawa'
set -g @kanagawa-plugins "git cpu-usage ram-usage"
Add custom keybindings to your tmux.conf: # Floating terminal window
bind-key -n M-g if-shell -F '#{==:#{session_name},scratch}' {
detach-client
} {
display-popup -d "#{pane_current_path}" -E "tmux new-session -A -s scratch"
}
# Kill all other sessions
bind K confirm-before -p "Kill all other sessions? (y/n)" "kill-session -a"
# Reload configuration
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
After modifying, reload with: tmux source-file ~/.tmux.conf
Switching to Zellij
If you prefer Zellij over Tmux, the configuration includes easy switching:
For Zsh Users
Edit ~/.zshrc: WM_VAR = "/ $ZELLIJ " # Changed from /$TMUX
WM_CMD = "zellij" # Changed from tmux
For Fish Users
Edit ~/.config/fish/config.fish: if not set -q ZELLIJ # Changed from TMUX
zellij # Changed from tmux
end
For Nushell Users
Edit ~/.config/nushell/config.nu: let MULTIPLEXER = "zellij" # Changed from "tmux"
let MULTIPLEXER_ENV_PREFIX = "ZELLIJ" # Changed from "TMUX"
Environment Variables
Add custom environment variables to your shell configuration:
Zsh (.zshrc)
Fish (config.fish)
Nushell (env.nu)
export OBSIDIAN_PATH = "/path/to/your/notes" # For Obsidian integration
export PROJECT_PATHS = "/home/username/projects" # For project navigation
export EDITOR = "nvim"
export VISUAL = "nvim"
Advanced Customizations
Custom Installation Script Modifications
The install-linux-mac.sh script can be customized before running:
# Change default terminal emulator choice
terminal_choice = $( select_option "Choose terminal:" "Alacritty" "WezTerm" "Kitty" "Ghostty" )
# Change default shell choice
shell_choice = $( select_option "Choose shell:" "Nushell" "Fish" "Zsh" )
# Change default window manager
window_manager = $( select_option "Choose window manager:" "Tmux" "Zellij" )
Obsidian Vault Configuration
Configure your Obsidian vault path in ~/.config/nvim/lua/plugins/obsidian.lua:
return {
"epwalsh/obsidian.nvim" ,
opts = {
workspaces = {
{
name = "personal" ,
path = "/path/to/your/notes" , -- Change this
},
},
templates = {
folder = "templates" ,
date_format = "%Y-%m-%d" ,
time_format = "%H:%M" ,
},
},
}
FZF Custom Configuration
Customize fuzzy finder behavior in your shell config:
export FZF_DEFAULT_COMMAND = "fd --hidden --strip-cwd-prefix --exclude .git"
export FZF_DEFAULT_OPTS = "
--height 40%
--layout=reverse
--border
--color=fg:#DCD7BA,bg:#1F1F28,hl:#7FB4CA
--color=fg+:#C8C093,bg+:#223249,hl+:#7AA89F
--color=info:#E6C384,prompt:#E46876,pointer:#98BB6C
"
Next Steps
Troubleshooting Learn how to diagnose and fix common issues
Contributing Contribute your customizations back to the project