Skip to main content
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:
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:
alacritty.toml
[font]
size = 16  # Adjust font size

[font.normal]
family = "IosevkaTerm NF"  # Change to your preferred Nerd Font

Opacity and Window Settings

alacritty.toml
[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:
1

Change the Prompt Format

Edit the format string to add or remove elements:
starship.toml
format = """\
($directory)\
$os\
$git_branch\
$fill\
$nodejs\
$rust\
$golang\
$php\
$bun\
$java\
$c\
$conda\
$zig\
$cmd_duration\
$time\
\n$character\
"""
2

Customize the Color Palette

The Gentleman palette is defined with Kanagawa-inspired colors:
starship.toml
[palettes.gentleman]
text = "#F3F6F9"
red = "#CB7C94"
green = "#B7CC85"
yellow = "#FFE066"
blue = "#7FB4CA"
mauve = "#A3B5D6"
pink = "#FF8DD7"
teal = "#7AA89F"
peach = "#DEBA87"
3

Configure Programming Language Indicators

Show or hide language versions:
starship.toml
[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:
.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:
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:
-- 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.
disabled.lua
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:
1

Disable Current Plugin

Set enabled = false for the currently active AI plugin
2

Enable Desired Plugin

Set enabled = true for the AI plugin you want to use
3

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/:
my-plugin.lua
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:
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:
tmux.conf
# 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:
1

For Zsh Users

Edit ~/.zshrc:
WM_VAR="/$ZELLIJ"  # Changed from /$TMUX
WM_CMD="zellij"    # Changed from tmux
2

For Fish Users

Edit ~/.config/fish/config.fish:
if not set -q ZELLIJ  # Changed from TMUX
  zellij              # Changed from tmux
end
3

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:
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:
install-linux-mac.sh
# 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:
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

Build docs developers (and LLMs) love