Replace placeholders with real configs, port Zsh to Fish
- starship.toml: rainbow p10k-style prompt with powerline segments - ghostty: JetBrains Mono, TokyoNight theme, clipboard settings - zellij: tokyo-night-custom theme, Alt keybinds, Fish as default shell - fastfetch: custom colors (magenta/blue), full module list with battery - fish config.fish: ported from zsh — starship, zoxide, direnv, fzf, zellij auto-attach on ghostty, all aliases (eza, bat, docker, ansible, uv), addalias/listalias functions, fastfetch on login - .chezmoiignore: servers skip ghostty, zellij, fastfetch; source reference dirs (laptop/, manjaro/) excluded from deployment
This commit is contained in:
parent
4a83ebee49
commit
288102ab46
@ -2,7 +2,11 @@
|
||||
{{ if eq .machine_type "server" }}
|
||||
dot_config/ghostty
|
||||
dot_config/zellij
|
||||
dot_config/fastfetch
|
||||
{{ end }}
|
||||
|
||||
# Source reference files — not deployed
|
||||
laptop/
|
||||
manjaro/
|
||||
README.md
|
||||
LICENSE
|
||||
|
||||
51
dot_config/fastfetch/config.jsonc
Normal file
51
dot_config/fastfetch/config.jsonc
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
|
||||
"logo": {
|
||||
"type": "auto",
|
||||
"color": {
|
||||
"1": "magenta",
|
||||
"2": "blue"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"separator": " ➜ ",
|
||||
"color": {
|
||||
"separator": "green",
|
||||
"keys": "blue",
|
||||
"title": "magenta"
|
||||
}
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"type": "title",
|
||||
"color": {
|
||||
"user": "magenta",
|
||||
"at": "white",
|
||||
"host": "blue"
|
||||
}
|
||||
},
|
||||
"separator",
|
||||
"os",
|
||||
"host",
|
||||
"kernel",
|
||||
"uptime",
|
||||
"packages",
|
||||
"shell",
|
||||
"terminal",
|
||||
"de",
|
||||
"wm",
|
||||
"theme",
|
||||
"icons",
|
||||
"font",
|
||||
"cursor",
|
||||
"cpu",
|
||||
"gpu",
|
||||
"memory",
|
||||
"disk",
|
||||
"localip",
|
||||
"battery",
|
||||
"locale",
|
||||
"break",
|
||||
"colors"
|
||||
]
|
||||
}
|
||||
@ -1,8 +1,5 @@
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# │ PLACEHOLDER — replace with your actual Fish config │
|
||||
# │ This file is managed by Chezmoi. │
|
||||
# │ Edit the source: chezmoi edit ~/.config/fish/config.fish│
|
||||
# └──────────────────────────────────────────────────────────┘
|
||||
# Fish shell configuration
|
||||
# Ported from Zsh config — Fish + Starship + Zellij + Ghostty stack
|
||||
|
||||
if status is-interactive
|
||||
|
||||
@ -12,28 +9,57 @@ if status is-interactive
|
||||
# ── Navigation ──────────────────────────────────────────
|
||||
zoxide init fish | source
|
||||
|
||||
# ── direnv ──────────────────────────────────────────────
|
||||
direnv hook fish | source
|
||||
|
||||
# ── fzf ─────────────────────────────────────────────────
|
||||
# fzf.fish plugin handles Ctrl+R (history) and Ctrl+F (files)
|
||||
set -gx FZF_DEFAULT_OPTS "--height 40% --layout=reverse --border --info=inline"
|
||||
|
||||
# ── Aliases ─────────────────────────────────────────────
|
||||
alias ls "eza --icons --group-directories-first"
|
||||
alias ll "eza -la --icons --group-directories-first --git"
|
||||
alias lt "eza --tree --level=2 --icons"
|
||||
alias cat "bat --paging=never"
|
||||
alias catp "bat"
|
||||
# ── Zellij auto-attach ──────────────────────────────────
|
||||
# Auto-attach to default session when opening a new Ghostty terminal
|
||||
if test -z "$ZELLIJ" -a "$TERM" = "xterm-ghostty"
|
||||
zellij attach --create default
|
||||
end
|
||||
|
||||
# Git
|
||||
# ── Aliases: files ──────────────────────────────────────
|
||||
alias ls "eza --icons"
|
||||
alias ll "eza -lah --icons"
|
||||
alias lt "eza --tree --level=2 --icons"
|
||||
alias cat "bat"
|
||||
alias catp "bat --paging=always"
|
||||
|
||||
# ── Aliases: git ────────────────────────────────────────
|
||||
alias gs "git status"
|
||||
alias gd "git diff"
|
||||
alias gl "git log --oneline -20"
|
||||
alias gp "git pull"
|
||||
|
||||
# Docker
|
||||
# ── Aliases: docker ─────────────────────────────────────
|
||||
alias dc "docker compose"
|
||||
alias dps "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
|
||||
alias dps 'docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
|
||||
alias dlog "docker logs -f"
|
||||
alias dcup "docker compose up -d"
|
||||
alias dcdown "docker compose down"
|
||||
alias dlogs "docker compose logs -f"
|
||||
|
||||
# Safety nets
|
||||
# ── Aliases: ansible ────────────────────────────────────
|
||||
alias ap "ansible-playbook"
|
||||
alias av "ansible-vault"
|
||||
|
||||
# ── Aliases: python/uv ──────────────────────────────────
|
||||
alias pysync "uv sync"
|
||||
alias pyrun "uv run"
|
||||
alias pyshell "uv run ipython"
|
||||
|
||||
# ── Aliases: clipboard ──────────────────────────────────
|
||||
alias xc "xclip -selection clipboard"
|
||||
|
||||
# ── Aliases: misc ───────────────────────────────────────
|
||||
alias fetch "fastfetch"
|
||||
alias neofetch "fastfetch"
|
||||
|
||||
# ── Safety nets ─────────────────────────────────────────
|
||||
alias rm "rm -i"
|
||||
alias mv "mv -i"
|
||||
alias cp "cp -i"
|
||||
@ -41,6 +67,9 @@ if status is-interactive
|
||||
# ── Environment ─────────────────────────────────────────
|
||||
set -gx EDITOR vim
|
||||
set -gx VISUAL vim
|
||||
set -gx COLORTERM truecolor
|
||||
|
||||
# Suppress Fish greeting
|
||||
set -g fish_greeting
|
||||
|
||||
# ── System Info (login shells only) ─────────────────────
|
||||
@ -49,3 +78,18 @@ if status is-interactive
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
# ── Custom functions ────────────────────────────────────────
|
||||
|
||||
# Quick alias management (like addalias from zsh)
|
||||
function addalias --description "Add a persistent alias"
|
||||
set -l name $argv[1]
|
||||
set -l cmd $argv[2..-1]
|
||||
echo "alias $name \"$cmd\"" >> ~/.config/fish/conf.d/custom_aliases.fish
|
||||
source ~/.config/fish/conf.d/custom_aliases.fish
|
||||
echo "Added: $name"
|
||||
end
|
||||
|
||||
function listalias --description "List custom aliases"
|
||||
cat ~/.config/fish/conf.d/custom_aliases.fish 2>/dev/null; or echo "No custom aliases yet"
|
||||
end
|
||||
|
||||
@ -1,33 +1,8 @@
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# │ PLACEHOLDER — replace with your actual Ghostty config │
|
||||
# │ This file is managed by Chezmoi. │
|
||||
# │ Edit the source: chezmoi edit ~/.config/ghostty/config │
|
||||
# └──────────────────────────────────────────────────────────┘
|
||||
|
||||
# Font
|
||||
font-family = JetBrainsMono Nerd Font
|
||||
font-size = 14
|
||||
|
||||
# Theme — pick one and uncomment, or paste your custom palette below
|
||||
# theme = catppuccin-mocha
|
||||
# theme = tokyo-night
|
||||
# theme = dracula
|
||||
# theme = gruvbox-dark
|
||||
|
||||
# Window
|
||||
font-family = JetBrains Mono
|
||||
font-size = 13
|
||||
theme = TokyoNight
|
||||
window-padding-x = 8
|
||||
window-padding-y = 4
|
||||
window-decoration = auto
|
||||
|
||||
# Cursor
|
||||
cursor-style = block
|
||||
cursor-style-blink = true
|
||||
|
||||
# Shell — Fish is set as login shell by Ansible, Ghostty inherits it
|
||||
# shell-integration = fish
|
||||
|
||||
# Scrollback
|
||||
scrollback-limit = 10000
|
||||
|
||||
# Clipboard
|
||||
window-padding-y = 8
|
||||
copy-on-select = clipboard
|
||||
clipboard-read = allow
|
||||
clipboard-write = allow
|
||||
|
||||
@ -1,74 +1,188 @@
|
||||
# ┌──────────────────────────────────────────────────────────┐
|
||||
# │ PLACEHOLDER — replace with your p10k-style config │
|
||||
# │ This file is managed by Chezmoi. │
|
||||
# │ Edit the source: chezmoi edit ~/.config/starship.toml │
|
||||
# │ │
|
||||
# │ NOTE: Starship reads from ~/.config/starship.toml │
|
||||
# │ Chezmoi maps this file there via the directory layout. │
|
||||
# └──────────────────────────────────────────────────────────┘
|
||||
|
||||
command_timeout = 1000
|
||||
add_newline = true
|
||||
# ~/.config/starship.toml
|
||||
|
||||
# --- 1. THE ASSEMBLY LINE ---
|
||||
format = """
|
||||
$username\
|
||||
$hostname\
|
||||
[╭─](white)[ ](bg:#9A348E)\
|
||||
$os\
|
||||
[](fg:#9A348E bg:#0087FF)\
|
||||
$directory\
|
||||
[](fg:#0087FF bg:#00D700)\
|
||||
$git_branch\
|
||||
$git_commit\
|
||||
$git_state\
|
||||
$git_status\
|
||||
[](fg:#00D700)\
|
||||
$fill\
|
||||
[](fg:#86BBD8)\
|
||||
$python\
|
||||
$golang\
|
||||
$nodejs\
|
||||
$rust\
|
||||
$golang\
|
||||
$java\
|
||||
$scala\
|
||||
[](fg:#06969A bg:#86BBD8)\
|
||||
$docker_context\
|
||||
$cmd_duration\
|
||||
[](fg:#33658A bg:#06969A)\
|
||||
$time\
|
||||
[ ](bg:#33658A)\
|
||||
$status\
|
||||
$line_break\
|
||||
$character"""
|
||||
$character\
|
||||
"""
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold green)"
|
||||
error_symbol = "[❯](bold red)"
|
||||
|
||||
[directory]
|
||||
truncation_length = 4
|
||||
truncation_symbol = "…/"
|
||||
truncate_to_repo = true
|
||||
style = "bold cyan"
|
||||
|
||||
[git_branch]
|
||||
format = "[$symbol$branch(:$remote_branch)]($style) "
|
||||
# --- 2. PART DEFINITIONS ---
|
||||
[fill]
|
||||
symbol = " "
|
||||
style = "bold purple"
|
||||
|
||||
# OS Module (Purple Block)
|
||||
[os]
|
||||
disabled = false
|
||||
style = "fg:#ffffff bg:#9A348E"
|
||||
format = '[$symbol]($style)'
|
||||
|
||||
[os.symbols]
|
||||
Windows = " "
|
||||
Macos = " "
|
||||
Linux = " "
|
||||
Arch = " "
|
||||
Ubuntu = " "
|
||||
Fedora = " "
|
||||
Debian = " "
|
||||
Mint = " "
|
||||
# UPDATED: Correct Manjaro logo
|
||||
Manjaro = " "
|
||||
|
||||
# Directory Module (Blue Block)
|
||||
[directory]
|
||||
style = "fg:#ffffff bg:#0087FF"
|
||||
format = '[ $path ]($style)'
|
||||
truncation_length = 3
|
||||
truncation_symbol = "…/"
|
||||
|
||||
# Git Branch Module (Green Block)
|
||||
[git_branch]
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#00D700"
|
||||
format = '[ $symbol$branch(:$remote_branch) ]($style)'
|
||||
truncation_length = 20
|
||||
truncation_symbol = "…"
|
||||
|
||||
# Git Status Module (detailed status)
|
||||
[git_status]
|
||||
format = '([\[$all_status$ahead_behind\]]($style) )'
|
||||
style = "bold red"
|
||||
style = "fg:#000000 bg:#00D700"
|
||||
format = '[$all_status$ahead_behind ]($style)'
|
||||
conflicted = "⚔️ "
|
||||
ahead = "⇡${count} "
|
||||
behind = "⇣${count} "
|
||||
diverged = "⇕⇡${ahead_count}⇣${behind_count} "
|
||||
untracked = "?${count} "
|
||||
stashed = "📦${count} "
|
||||
modified = "!${count} "
|
||||
staged = "+${count} "
|
||||
renamed = "»${count} "
|
||||
deleted = "✘${count} "
|
||||
|
||||
# Git Commit (shows current commit)
|
||||
[git_commit]
|
||||
style = "fg:#000000 bg:#00D700"
|
||||
format = '[ #$hash$tag ]($style)'
|
||||
commit_hash_length = 7
|
||||
only_detached = true
|
||||
|
||||
# Git State (rebase, merge, etc)
|
||||
[git_state]
|
||||
style = "fg:#ffffff bg:#FF0000"
|
||||
format = '[\($state( $progress_current/$progress_total)\)]($style)'
|
||||
rebase = "REBASING"
|
||||
merge = "MERGING"
|
||||
revert = "REVERTING"
|
||||
cherry_pick = "CHERRY-PICKING"
|
||||
bisect = "BISECTING"
|
||||
am = "AM"
|
||||
am_or_rebase = "AM/REBASE"
|
||||
|
||||
[python]
|
||||
format = '[${symbol}(${version} )(\($virtualenv\) )]($style)'
|
||||
symbol = " "
|
||||
# UPDATED: Switched from emoji to Nerd Font
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($virtualenv )($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[golang]
|
||||
format = "[$symbol($version )]($style)"
|
||||
symbol = " "
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[gradle]
|
||||
style = "bg:#86BBD8"
|
||||
format = '[ $symbol ($version) ]($style)'
|
||||
|
||||
[haskell]
|
||||
symbol = " "
|
||||
style = "bg:#86BBD8"
|
||||
format = '[ $symbol ($version) ]($style)'
|
||||
|
||||
[java]
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[julia]
|
||||
symbol = " "
|
||||
style = "bg:#86BBD8"
|
||||
format = '[ $symbol ($version) ]($style)'
|
||||
|
||||
[nodejs]
|
||||
format = "[$symbol($version )]($style)"
|
||||
symbol = " "
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[nim]
|
||||
symbol = " "
|
||||
style = "bg:#86BBD8"
|
||||
format = '[ $symbol ($version) ]($style)'
|
||||
|
||||
[rust]
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[scala]
|
||||
symbol = " "
|
||||
style = "fg:#000000 bg:#86BBD8"
|
||||
format = '[ $symbol($version) ](fg:#000000 bg:#86BBD8)'
|
||||
|
||||
[docker_context]
|
||||
format = "[$symbol$context]($style) "
|
||||
symbol = " "
|
||||
only_with_files = true
|
||||
# UPDATED: Added standard Docker icon
|
||||
symbol = " "
|
||||
style = "fg:#ffffff bg:#06969A"
|
||||
#format = 'via [🐋 $context](blue bold)'
|
||||
format = '[ $symbol$context ](fg:#ffffff bg:#06969A)'
|
||||
#format = "via [⬢ $context](bold blue) "
|
||||
#detect_files = ["Dockerfile", "docker-compose.yml", ".dockerenv"]
|
||||
#disabled = false
|
||||
|
||||
[cmd_duration]
|
||||
min_time = 2_000
|
||||
format = "[$duration]($style) "
|
||||
#[docker_context]
|
||||
#format = 'via [🐋 $context](blue bold)'
|
||||
|
||||
[username]
|
||||
show_always = false
|
||||
format = "[$user]($style)@"
|
||||
|
||||
[hostname]
|
||||
ssh_only = true
|
||||
format = "[$ssh_symbol$hostname]($style) "
|
||||
ssh_symbol = "🌐 "
|
||||
[time]
|
||||
disabled = false
|
||||
time_format = "%R"
|
||||
style = "fg:#FFFFFF bg:#33658A"
|
||||
format = '[ $time ]($style)'
|
||||
|
||||
[status]
|
||||
disabled = false
|
||||
style = "(fg:#ffffff bg:#FF0000)"
|
||||
format = '[](fg:#FF0000 bg:#33658A)[ ✘ $status ](fg:#ffffff bg:#FF0000)'
|
||||
|
||||
|
||||
# The Prompt Arrow
|
||||
[character]
|
||||
success_symbol = '[╰─](white) '
|
||||
error_symbol = '[╰─](white) '
|
||||
|
||||
#[status]
|
||||
#disabled = false
|
||||
#style = "(fg:#ffffff bg:#FF0000)"
|
||||
#format = '[](fg:#FF0000 bg:#33658A)[ ✘ $status ]($style)'
|
||||
|
||||
@ -1,26 +1,63 @@
|
||||
// ┌──────────────────────────────────────────────────────────┐
|
||||
// │ PLACEHOLDER — replace with your actual Zellij config │
|
||||
// │ This file is managed by Chezmoi. │
|
||||
// │ Edit the source: chezmoi edit ~/.config/zellij/config.kdl │
|
||||
// └──────────────────────────────────────────────────────────┘
|
||||
|
||||
// Theme — uncomment one or define custom below
|
||||
//theme "catppuccin-mocha"
|
||||
// theme "dracula"
|
||||
//theme "tokyo-night"
|
||||
themes {
|
||||
tokyo-night-custom {
|
||||
fg "#a9b1d6"
|
||||
bg "#1a1b26"
|
||||
black "#32344a"
|
||||
red "#f7768e"
|
||||
green "#ad8ee6"
|
||||
yellow "#e0af68"
|
||||
blue "#7aa2f7"
|
||||
magenta "#ad8ee6"
|
||||
cyan "#449dab"
|
||||
white "#787c99"
|
||||
orange "#ff9e64"
|
||||
}
|
||||
}
|
||||
theme "tokyo-night-custom"
|
||||
|
||||
// Default shell
|
||||
default_shell "fish"
|
||||
|
||||
// UI
|
||||
pane_frames true
|
||||
default_layout "compact"
|
||||
|
||||
// Mouse
|
||||
mouse_mode true
|
||||
|
||||
// Copy
|
||||
// Copy behavior
|
||||
copy_on_select true
|
||||
|
||||
// Scrollback
|
||||
scroll_buffer_size 10000
|
||||
// Scrollback buffer (lines per pane)
|
||||
scroll_buffer_size 50000
|
||||
|
||||
// Mouse support
|
||||
mouse_mode true
|
||||
|
||||
simplified_ui false
|
||||
|
||||
// Mirror session (all connected clients see the same view)
|
||||
mirror_session true
|
||||
|
||||
// Pane frames (borders around panes)
|
||||
pane_frames true
|
||||
|
||||
// Auto-create layouts directory
|
||||
auto_layout true
|
||||
|
||||
// Session serialization (persist layout on exit)
|
||||
session_serialization true
|
||||
|
||||
// Idle timeout for status bar hints (milliseconds)
|
||||
scrollback_lines_to_serialize 10000
|
||||
|
||||
keybinds {
|
||||
shared {
|
||||
unbind "Ctrl p" "Ctrl t" "Ctrl n" "Ctrl h" "Ctrl s" "Ctrl o" "Ctrl q" "Ctrl g"
|
||||
bind "Alt p" { SwitchToMode "pane"; }
|
||||
bind "Alt t" { SwitchToMode "tab"; }
|
||||
bind "Alt n" { SwitchToMode "resize"; }
|
||||
bind "Alt h" { SwitchToMode "move"; }
|
||||
bind "Alt s" { SwitchToMode "scroll"; }
|
||||
bind "Alt o" { SwitchToMode "session"; }
|
||||
bind "Alt q" { Quit; }
|
||||
bind "Alt g" { SwitchToMode "locked"; }
|
||||
}
|
||||
locked {
|
||||
unbind "Ctrl g"
|
||||
bind "Alt g" { SwitchToMode "normal"; }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user