From 649cfe25b3e1a1703b9f83e2aeaaa6e8bd0f6008 Mon Sep 17 00:00:00 2001 From: Xavier Logerais Date: Wed, 22 Jul 2026 23:38:41 +0200 Subject: [PATCH] feat(zsh): Add support for zsh --- dot_zshrc | 25 +++ private_dot_config/starship-zsh.toml | 245 +++++++++++++++++++++++++++ private_dot_config/zsh/rc.d/fzf | 71 ++++++++ 3 files changed, 341 insertions(+) create mode 100644 dot_zshrc create mode 100644 private_dot_config/starship-zsh.toml create mode 100644 private_dot_config/zsh/rc.d/fzf diff --git a/dot_zshrc b/dot_zshrc new file mode 100644 index 0000000..6a1aaa7 --- /dev/null +++ b/dot_zshrc @@ -0,0 +1,25 @@ +# Set PATH +export PATH="${HOME}/.local/bin:${PATH}" + +# Activate mise +eval "$(mise activate zsh)" + +# Activate starship +export STARSHIP_CONFIG="${HOME}/.config/starship-zsh.toml" +eval "$(starship init zsh)" + +# Add some usefull tools +eval "$(zoxide init zsh)" + +# Add some usefull aliases +source "${HOME}/.config/bash/aliases.d/generic" +source "${HOME}/.config/bash/aliases.d/security" +source "${HOME}/.config/bash/aliases.d/vim" +source "${HOME}/.config/bash/aliases.d/git" +source "${HOME}/.config/bash/aliases.d/kubectl" +source "${HOME}/.config/bash/aliases.d/lsd" +source "${HOME}/.config/bash/aliases.d/bat" +source "${HOME}/.config/bash/aliases.d/lazygit" + +# Define prefered apps +source "${HOME}/.config/bash/rc.after.d/apps" diff --git a/private_dot_config/starship-zsh.toml b/private_dot_config/starship-zsh.toml new file mode 100644 index 0000000..2654621 --- /dev/null +++ b/private_dot_config/starship-zsh.toml @@ -0,0 +1,245 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +format = """ +$directory\ +[](fg:#769ff0 bg:#394260)\ +$git_branch\ +$git_commit\ +$git_status\ +$direnv\ +$mise\ +[](fg:#394260 bg:#212736)\ +$golang\ +$rust\ +$python\ +$nodejs\ +$docker_context\ +$kubernetes\ +$terraform\ +[](fg:#212736)\ +$character""" + +right_format = """ +[](fg:#a3aed2)\ +$time\ +[ ](fg:#a3aed2)\ +[](fg:#a3aed2)\ +$shell\ +$username\ +[](fg:#394260 bg:#a3aed2)\ +$os\ +[](bg:#394260 fg:#a3aed2)\ +$container\ +$hostname\ +""" + +[hostname] +disabled = false +ssh_only = false +style = "bg:#394260 fg:#a3aed2" +format = '[$ssh_symbol]($style)[  $hostname]($style)' +# detect_env_vars = ['!TMUX', 'SSH_CONNECTION'] +# trim_at = '.companyname.com' +# aliases = { "Max's MacBook Pro" = "home" } + +[container] +style = "bg:#394260 fg:#a3aed2" +format = '[ $symbol $name ]($style)' + +[os] +disabled = false +style = "bg:#394260 fg:#a3aed2" +format = "[ $symbol ]($style)" + +[username] +show_always = true +style_user = "bg:#a3aed2 fg:#212736" +style_root = "bg:#a3aed2 fg:#990000 bold" +format = '[  $user ]($style)' + +[shell] +disabled = false +bash_indicator = ' ' +zsh_indicator = ' ' +fish_indicator = '󰈺 ' +powershell_indicator = '_' +unknown_indicator = 'unknown shell' +style = "bg:#a3aed2 fg:#212736" +format = '[ $indicator[](fg:#394260 bg:#a3aed2)]($style)' + +[sudo] +disabled = false + +[directory] +disabled = false +style = "fg:#e3e5e5 bg:#769ff0" +format = "[  $path ]($style)" +truncation_length = 5 +truncation_symbol = "…/" +truncate_to_repo = false + +[git_branch] +disabled = false +symbol = "" +style = "fg:#769ff0 bg:#394260" +format = '[ $symbol $branch ]($style)' + +[git_commit] +disabled = false +tag_disabled = false +tag_symbol = '  ' +only_detached = true +style = "fg:#769ff0 bg:#394260" +format = '[ $hash $tag ]($style)' + +[git_status] +disabled = false +style = "fg:#769ff0 bg:#394260" +format = '[$all_status$ahead_behind]($style)' +ahead = '⇡${count}' +behind = '⇣${count}' +diverged = '⇕⇡${ahead_count}⇣${behind_count}' +up_to_date = '' +modified = '[$count󰷉 ](fg:yellow bg:#394260)' +staged = '[$count ](fg:green bg:#394260)' +deleted = '[$count ](fg:red bg:#394260)' +renamed = '[$count󱀱 ](fg:blue bg:#394260)' +untracked = '[$count󱀶 ](fg:gray bg:#394260)' +conflicted = '[$count󱪘 ](fg:red bg:#394260)' +stashed = '$count📦' # 󱁺  + +[direnv] +disabled = false + +[mise] +disabled = true + +[nodejs] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[bun] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[rust] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[golang] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[php] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[python] +symbol = "" +style = "bg:#212736" +format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)' + +[docker_context] +disabled = false +only_with_files = false +symbol = " " +style = "fg:#2560ff bg:#ffffff" +format = '[[](fg:#212736 bg:#ffffff) $symbol $context [](fg:#ffffff bg:#212736)]($style)' + +[kubernetes] +disabled = false +symbol = " " +style = "bg:#316ce6 fg:#a3aed2" +format = '[[](fg:#212736 bg:#316ce6) $symbol $context (\($namespace\))[](fg:#316ce6 bg:#212736)]($style)' + +[terraform] +disabled = false +symbol = " " +style = "bg:#1b1028 fg:#7b42bc" +format = '[[](fg:#212736 bg:#1b1028) [$symbol](fg:#7b42bc bg:#1b1028) $workspace [](fg:#1b1028 bg:#212736)]($style)' + +[time] +disabled = false +time_format = "%R" # Hour:Minute Format +style = "fg:#ffffff bg:#a3aed2" +format = '[  $time ]($style)' +# format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)' + +[character] +success_symbol = '[[](fg:#ddffdd)  [](fg:#ddffdd)](bg:#ddffdd fg:#00af5f) ' +error_symbol = '[[](fg:#ffddff) 󰚽 [](fg:#ffddff)](bg:#ffddff fg:#f44336) ' + +[os.symbols] +Windows = "󰍲" +Ubuntu = "󰕈" +SUSE = "" +Raspbian = "󰐿" +Mint = "󰣭" +Macos = "󰀵" +Manjaro = "" +Linux = "󰌽" +Gentoo = "󰣨" +Fedora = "󰣛" +Alpine = "" +Amazon = "" +Android = "" +AOSC = "" +Arch = "󰣇" +Artix = "󰣇" +EndeavourOS = "" +CentOS = "" +Debian = "󰣚" +Redhat = "󱄛" +RedHatEnterprise = "󱄛" +Pop = "" + +[directory.substitutions] +"Documents" = "󰈙 " +"Pictures" = " " +"Images" = " " +"Music" = " " +"Musique" = " " +"Movies" = "󰎁 " +"Films" = "󰎁 " +"Downloads" = " " +"Téléchargements" = " " +"Developer" = "󰲋 " + +# Nerdfont symbols +# 󰚽 󰗖 󰗠 󰅙 󰀨  󰅚 +#   ✓ ✗ ✔ ✘ +# ❬ ❭ ❮ ❯ ❰ ❱ ❲ ❳ ❴ ❵ +# ➛ ➜ ➝ ➞ ➢ ➣ ➤ + +# Powerline colorsheme (from powerline source file colorsheme.py) +# 0x000000, 0xc00000, 0x008000, 0x804000, 0x0000c0, 0xc000c0, 0x008080, 0xc0c0c0, 0x808080, 0xff6060, # 0 +# 0x00ff00, 0xffff00, 0x8080ff, 0xff40ff, 0x00ffff, 0xffffff, 0x000000, 0x00005f, 0x000087, 0x0000af, # 1 +# 0x0000d7, 0x0000ff, 0x005f00, 0x005f5f, 0x005f87, 0x005faf, 0x005fd7, 0x005fff, 0x008700, 0x00875f, # 2 +# 0x008787, 0x0087af, 0x0087d7, 0x0087ff, 0x00af00, 0x00af5f, 0x00af87, 0x00afaf, 0x00afd7, 0x00afff, # 3 +# 0x00d700, 0x00d75f, 0x00d787, 0x00d7af, 0x00d7d7, 0x00d7ff, 0x00ff00, 0x00ff5f, 0x00ff87, 0x00ffaf, # 4 +# 0x00ffd7, 0x00ffff, 0x5f0000, 0x5f005f, 0x5f0087, 0x5f00af, 0x5f00d7, 0x5f00ff, 0x5f5f00, 0x5f5f5f, # 5 +# 0x5f5f87, 0x5f5faf, 0x5f5fd7, 0x5f5fff, 0x5f8700, 0x5f875f, 0x5f8787, 0x5f87af, 0x5f87d7, 0x5f87ff, # 6 +# 0x5faf00, 0x5faf5f, 0x5faf87, 0x5fafaf, 0x5fafd7, 0x5fafff, 0x5fd700, 0x5fd75f, 0x5fd787, 0x5fd7af, # 7 +# 0x5fd7d7, 0x5fd7ff, 0x5fff00, 0x5fff5f, 0x5fff87, 0x5fffaf, 0x5fffd7, 0x5fffff, 0x870000, 0x87005f, # 8 +# 0x870087, 0x8700af, 0x8700d7, 0x8700ff, 0x875f00, 0x875f5f, 0x875f87, 0x875faf, 0x875fd7, 0x875fff, # 9 +# 0x878700, 0x87875f, 0x878787, 0x8787af, 0x8787d7, 0x8787ff, 0x87af00, 0x87af5f, 0x87af87, 0x87afaf, # 10 +# 0x87afd7, 0x87afff, 0x87d700, 0x87d75f, 0x87d787, 0x87d7af, 0x87d7d7, 0x87d7ff, 0x87ff00, 0x87ff5f, # 11 +# 0x87ff87, 0x87ffaf, 0x87ffd7, 0x87ffff, 0xaf0000, 0xaf005f, 0xaf0087, 0xaf00af, 0xaf00d7, 0xaf00ff, # 12 +# 0xaf5f00, 0xaf5f5f, 0xaf5f87, 0xaf5faf, 0xaf5fd7, 0xaf5fff, 0xaf8700, 0xaf875f, 0xaf8787, 0xaf87af, # 13 +# 0xaf87d7, 0xaf87ff, 0xafaf00, 0xafaf5f, 0xafaf87, 0xafafaf, 0xafafd7, 0xafafff, 0xafd700, 0xafd75f, # 14 +# 0xafd787, 0xafd7af, 0xafd7d7, 0xafd7ff, 0xafff00, 0xafff5f, 0xafff87, 0xafffaf, 0xafffd7, 0xafffff, # 15 +# 0xd70000, 0xd7005f, 0xd70087, 0xd700af, 0xd700d7, 0xd700ff, 0xd75f00, 0xd75f5f, 0xd75f87, 0xd75faf, # 16 +# 0xd75fd7, 0xd75fff, 0xd78700, 0xd7875f, 0xd78787, 0xd787af, 0xd787d7, 0xd787ff, 0xd7af00, 0xd7af5f, # 17 +# 0xd7af87, 0xd7afaf, 0xd7afd7, 0xd7afff, 0xd7d700, 0xd7d75f, 0xd7d787, 0xd7d7af, 0xd7d7d7, 0xd7d7ff, # 18 +# 0xd7ff00, 0xd7ff5f, 0xd7ff87, 0xd7ffaf, 0xd7ffd7, 0xd7ffff, 0xff0000, 0xff005f, 0xff0087, 0xff00af, # 19 +# 0xff00d7, 0xff00ff, 0xff5f00, 0xff5f5f, 0xff5f87, 0xff5faf, 0xff5fd7, 0xff5fff, 0xff8700, 0xff875f, # 20 +# 0xff8787, 0xff87af, 0xff87d7, 0xff87ff, 0xffaf00, 0xffaf5f, 0xffaf87, 0xffafaf, 0xffafd7, 0xffafff, # 21 +# 0xffd700, 0xffd75f, 0xffd787, 0xffd7af, 0xffd7d7, 0xffd7ff, 0xffff00, 0xffff5f, 0xffff87, 0xffffaf, # 22 +# 0xffffd7, 0xffffff, 0x080808, 0x121212, 0x1c1c1c, 0x262626, 0x303030, 0x3a3a3a, 0x444444, 0x4e4e4e, # 23 +# 0x585858, 0x626262, 0x6c6c6c, 0x767676, 0x808080, 0x8a8a8a, 0x949494, 0x9e9e9e, 0xa8a8a8, 0xb2b2b2, # 24 +# 0xbcbcbc, 0xc6c6c6, 0xd0d0d0, 0xdadada, 0xe4e4e4, 0xeeeeee # 25 diff --git a/private_dot_config/zsh/rc.d/fzf b/private_dot_config/zsh/rc.d/fzf new file mode 100644 index 0000000..3022b3b --- /dev/null +++ b/private_dot_config/zsh/rc.d/fzf @@ -0,0 +1,71 @@ +#!/bin/bash + +if (command -v fzf &>/dev/null); then + + # Shell integration + eval "$(fzf --zsh)" + + # Options par défaut + FZF_DEFAULT_OPTS="\ + --height 60% + --border rounded + --layout reverse + --highlight-line \ + --info=inline-right \ + --ansi \ + " + export FZF_DEFAULT_OPTS + + # Navigation vers un répertoire + FZF_ALT_C_OPTS="$( + cat <<'EOF' + --prompt '󰥨 ' + --pointer ❯ + --marker ✔ +EOF + )" + export FZF_ALT_C_OPTS + + # Selection de fichiers + FZF_CTRL_T_OPTS="$( + cat <<'EOF' + --prompt '󰈞 ' + --pointer ❯ + --marker ✔ + --preview="bat --color=always --style=-header {}" +EOF + )" + export FZF_CTRL_T_OPTS + + # Navigation dans l'historique + FZF_CTRL_R_OPTS="$( + cat <<'EOF' + --prompt ' ' + --pointer ❯ + --marker ✔ +EOF + )" + export FZF_CTRL_R_OPTS + + # Theme tokyonight + FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS} \ + --color=bg+:#283457 \ + --color=bg:#16161e \ + --color=border:#27a1b9 \ + --color=fg:#c0caf5 \ + --color=gutter:#16161e \ + --color=header:#ff9e64 \ + --color=hl+:#2ac3de \ + --color=hl:#2ac3de \ + --color=info:#545c7e \ + --color=marker:#ff007c \ + --color=pointer:#ff007c \ + --color=prompt:#2ac3de \ + --color=query:#c0caf5:regular \ + --color=scrollbar:#27a1b9 \ + --color=separator:#ff9e64 \ + --color=spinner:#ff007c \ + " + export FZF_DEFAULT_OPTS + +fi