Compare commits

35 Commits
Author SHA1 Message Date
xavier 4f004fee15 feat(rc): Improve fzf configuration 2026-07-22 23:29:41 +02:00
xavier 2d8b9a5309 feat(profile): use existing helpers to manage profile files (just like rc ones) 2026-07-22 22:19:07 +02:00
xavier ee5e92e0a4 feat(profile): change LANG value to something more standard 2026-07-22 22:17:50 +02:00
xavier 32c0b021c5 feat(rc): Add preference for starship prompt over powerline-go 2026-07-16 19:00:51 +02:00
xavier f2c78152cc feat(rc): Add support for vivid tool to beautify LS_COLORS 2026-07-16 18:54:01 +02:00
xavier 7e007b5b0d feat(rc): Fix prompt choice 2026-07-16 18:47:44 +02:00
xavier 76ce8a4758 feat(rc): Add support for vivid tool 2026-07-15 19:36:34 +02:00
xavier e8eba3619a feat: Move prefered apps logic from profile.d to rc.d
Without this, mise is not yet activated when evaluating the prefered
apps scripts and mise installed apps are considered not installed (for
exemple nvim for the EDITOR variable)
2026-07-14 18:20:41 +02:00
xavier d6290589cf feat: Remove inputrc file that is now managed by chezmoi 2026-07-14 00:31:42 +02:00
xavier e40045aa99 feat: Improve way to determine and set the path containing the bash config
Before this:
The bash config repo needed to be cloned in ~/.bash/ to work properly

After this:
The bash config repo can be move anywhere (for exemple in
~/.config/bash).
The create-links.bash helper is adapted to this new behaviour.
So you can clone anywhere and call create-links.bash from anywhere. Then
the symbolic links in your home should be good and the config would load
correctly.
2026-07-13 12:44:45 +02:00
Xavier Logerais 6f7aec9147 feat(libs): Improve colors lib 2025-11-21 19:44:12 +00:00
Xavier Logerais c4a93c7647 feat(rc): Smart titles for tmux windows 2025-11-21 19:43:35 +00:00
Xavier Logerais 8d98936961 feat: Add fzf-git as 3rd party module 2025-11-21 19:42:04 +00:00
xavier 5f8997f418 chore(rc): fzf integration config spacing rework 2025-11-03 01:34:40 +01:00
xavier 693d20f2cf feat(aliases): Improve aliases for kitty 2025-11-03 01:33:44 +01:00
xavier db981696b6 fix: activate mise early
because some tools set in rc.d (like fzf, ...) depends on it
2025-11-03 01:24:52 +01:00
xavier 594a212ebc chore(rc): rework fzf integration config 2025-11-01 12:53:41 +01:00
xavier 8fef2338eb feat(aliases): Add aliases for kitty 2025-10-24 12:48:22 +02:00
xavier ea9139f77f feat(completion): Add autocompletion for tea
`tea` is the command line tool for Gitea.
2025-10-02 22:41:47 +02:00
xavier 15a56af2c8 chores(completion): spaces 2025-10-02 22:40:57 +02:00
xavier a56929aa8b feat(aliases): Add some aliases for cd 2025-09-28 19:03:11 +02:00
xavier 526e6cae26 feat(functions): Add a function to start and log into the devenv container 2025-09-28 17:55:51 +02:00
xavier 1a003a9d72 feat(bashrc): Add management for functions 2025-09-28 17:55:51 +02:00
xavier 2b51dfd554 feat(bashrc): remove z.sh third party library
Better use zoxide (See https://github.com/ajeetdsouza/zoxide).
(It is available with mise. Just `mise use -g zoxide`.)
2025-09-28 17:52:54 +02:00
xavier d078a852df fix(profile): fix keychain inheritance 2025-09-28 17:50:30 +02:00
Xavier Logerais 2aaf279c9e feat(libs): Prise en compte de tmux dans la fonction term_change_title 2025-03-27 11:35:46 +00:00
Xavier Logerais 5b0012ffc1 feat(rc): Ajout du support de fzf 2025-03-21 09:37:27 +00:00
Xavier Logerais af4fb0e5fa feat(rc): Ajout de l'outil zoxide 2025-03-15 22:37:34 +00:00
xavier 8fc95d8e90 feat(completion): Ajout de la completion pour l'outil chezmoi 2025-03-13 00:20:24 +01:00
xavier a5dd0be77c feat(aliases): Ajout d'un alias pour lsd
Ajout de l'alias lt pour `lsd --tree` qui est un équivalent de la
commande `tree`.
2025-03-13 00:20:24 +01:00
xavier 981430eef1 feat(completion): Amélioration de la complétion pour mise 2025-03-13 00:20:24 +01:00
xavier c7be86ecb6 fix: fix submodule directory 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier 611bab8f2f feat: Add 3rd party libs 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier 333a7d8b46 feat: Ajout des répertoires rc.before.d et rc.after.d 2025-03-13 00:20:24 +01:00
Xavier Logeraisandxavier c53e964ce9 feat: Améliore la gestion pour sourcer le contenu des sous-répertoires (*.d) 2025-03-13 00:20:24 +01:00
32 changed files with 429 additions and 125 deletions
+9
View File
@@ -0,0 +1,9 @@
[submodule "3rd-party/z"]
path = 3rd-party/z
url = https://github.com/rupa/z.git
[submodule "3rd-party/complete-alias"]
path = 3rd-party/complete-alias
url = https://github.com/cykerway/complete-alias.git
[submodule "3rd-party/junegunn/fzf-git.sh"]
path = 3rd-party/junegunn/fzf-git.sh
url = https://github.com/junegunn/fzf-git.sh
Vendored Submodule
+1
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
function basedir() {
(cd "$(dirname \"$-2\")" && pwd)
}
function _source_file_if_exists() {
if [ -r "$1" ]; then
test -n "$DEBUG_BASHRC" && echo "-- Sourcing file $1"
source "$1"
fi
}
function _source_dir_files() {
if [ -d "$1" ]; then
test -n "$DEBUG_BASHRC" && echo "-- Sourcing files in directory $1"
# Safe loops for empty dirs
shopt -s nullglob
for file in "$1"/*; do
if [ -e "$file" ]; then
test -n "$DEBUG_BASHRC" && echo " * sourcing file $file"
source "$file"
fi
done
# Restore option nullglob to normal
shopt -u nullglob
fi
}
# Source : https://superuser.com/questions/39751/add-directory-to-path-if-its-not-already-there
_path_add() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
PATH="${PATH:+"$PATH:"}$1"
fi
}
_prompt_command_add() {
if [ -n "$1" ] && [[ ":$PROMPT_COMMAND:" != *":$1:"* ]]; then
PROMPT_COMMAND="${PROMPT_COMMAND:+"$PROMPT_COMMAND;"}$1"
fi
}
+4 -2
View File
@@ -1,5 +1,7 @@
alias cdrepo='cd ~/Repositories/' alias cdrepo='cd ~/Repositories/'
alias cdgitlab='cd ~/Repositories/Gitlab'
alias cdgithub='cd ~/Repositories/Github' alias cdgithub='cd ~/Repositories/Github'
alias cdgl=cdgitlab alias cdgitlab='cd ~/Repositories/Gitlab'
alias cdgitea='cd ~/Repositories/Gitea'
alias cdgh=cdgithub alias cdgh=cdgithub
alias cdgl=cdgitlab
alias cdgt=cdgitea
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# [ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh"
if [ -n "${KITTY_INSTALLATION_DIR}" ]; then
alias ssh="kitty +kitten ssh"
alias icat="kitty +kitten icat"
fi
+2 -1
View File
@@ -2,5 +2,6 @@
if (command -v lsd &> /dev/null) if (command -v lsd &> /dev/null)
then then
alias ls=lsd alias ls='lsd'
alias lt='lsd --tree'
fi fi
+43 -5
View File
@@ -1,12 +1,50 @@
#!/bin/bash #!/bin/bash
if [ -f "$HOME"/.nix-profile/etc/profile.d/hm-session-vars.sh ]; then if [ -f "${HOME}"/.nix-profile/etc/profile.d/hm-session-vars.sh ]; then
source "$HOME"/.nix-profile/etc/profile.d/hm-session-vars.sh source "${HOME}"/.nix-profile/etc/profile.d/hm-session-vars.sh
fi fi
if [ -f "$HOME"/.bash/profile ]; then source "$HOME"/.bash/profile; fi # Define the path to the directory of this file if not already set
if [ -d "$HOME"/.bash/profile ]; then for file in "$HOME"/.bash/profile/*; do source "$file"; done; fi if [ -z "${BASH_CONFIG_DIR}" ]; then
if [ -d "$HOME"/.bash/profile.d ]; then for file in "$HOME"/.bash/profile.d/*; do source "$file"; done; fi # Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
# Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
(cd "$(dirname "${target}")" && pwd -P)
}
BASH_CONFIG_DIR=$(get_script_dir)
fi
# Source some helpers functions
source "${BASH_CONFIG_DIR}/_helpers.bash"
_source_file_if_exists "${BASH_CONFIG_DIR}/profile"
_source_dir_files "${BASH_CONFIG_DIR}/profile"
_source_dir_files "${BASH_CONFIG_DIR}/profile.d"
# This file is sourced by bash for login shells. The following line # This file is sourced by bash for login shells. The following line
# runs your .bashrc and is recommended by the bash info pages. # runs your .bashrc and is recommended by the bash info pages.
+70 -21
View File
@@ -11,37 +11,86 @@ if [[ $- != *i* ]]; then
return return
fi fi
# Safe loops for empty dirs # DEBUG_BASHRC=true
shopt -s nullglob
# Define the path to the directory of this file if not already set
if [ -z "${BASH_CONFIG_DIR}" ]; then
# Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
# Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
(cd "$(dirname "${target}")" && pwd -P)
}
BASH_CONFIG_DIR=$(get_script_dir)
fi
# Source some helpers functions
source "${BASH_CONFIG_DIR}/_helpers.bash"
# Source custom libs # Source custom libs
if [ -d "$HOME"/.bash/libs ]; then for lib in "$HOME"/.bash/libs/*.bash; do source "$lib"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/libs
# Source 3rd party libs if they exists
_source_file_if_exists "${BASH_CONFIG_DIR}/3rd-party/complete-alias/complete_alias"
_source_file_if_exists "${BASH_CONFIG_DIR}/3rd-party/junegunn/fzf-git.sh/fzf-git.sh"
# Early customization # Early customization
if [ -d "$HOME"/.bash/rc.before.d ]; then for file in "$HOME"/.bash/rc.before.d/*; do source "$file"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/rc.before.d
# Source rc.d/* # Source rc.d/*
if [ -d "$HOME"/.bash/rc.d ]; then for file in "$HOME"/.bash/rc.d/*; do source "$file"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/rc
_source_dir_files "${BASH_CONFIG_DIR}"/rc.d
# Source functions definitions
_source_file_if_exists ~/.bash_functions
_source_file_if_exists "${BASH_CONFIG_DIR}"/functions
_source_dir_files "${BASH_CONFIG_DIR}"/functions
_source_dir_files "${BASH_CONFIG_DIR}"/functions.d
# Source alias definitions # Source alias definitions
if [ -f "$HOME"/.bash_aliases ]; then source "$HOME"/.bash_aliases; fi _source_file_if_exists ~/.bash_aliases
if [ -f "$HOME"/.bash/aliases ]; then source "$HOME"/.bash/aliases; fi _source_file_if_exists "${BASH_CONFIG_DIR}"/aliases
if [ -d "$HOME"/.bash/aliases ]; then for file in "$HOME"/.bash/aliases/*; do source "$file"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/aliases
if [ -d "$HOME"/.bash/aliases.d ]; then for file in "$HOME"/.bash/aliases.d/*; do source "$file"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/aliases.d
# Source bash completion definitions
# TODO: Améliorer cette partie pour éviter les erreurs quand aucun fichier n'existe
for file in /etc/bash*completion /etc/profile.d/bash*completion*; do source "$file"; done
_source_file_if_exists ~/.bash_completion
_source_file_if_exists "${BASH_CONFIG_DIR}"/completion
_source_dir_files "${BASH_CONFIG_DIR}"/completion
_source_dir_files "${BASH_CONFIG_DIR}"/completion.d
_source_dir_files ~/.nix-profile/share/bash-completion/completions
if (command -v _complete_alias &>/dev/null); then if (command -v _complete_alias &>/dev/null); then
for alias in $(alias -p | awk '{print $2}' | awk -F= '{print $1}'); do complete -o default -F _complete_alias "$alias"; done for alias in $(alias -p | awk '{print $2}' | awk -F= '{print $1}'); do complete -o default -F _complete_alias "$alias"; done
fi fi
# Source bash completion definitions
for file in /etc/bash*completion /etc/profile.d/bash*completion*; do source "$file"; done
if [ -f "$HOME"/.bash_completion ]; then source "$HOME"/.bash_completion; fi
if [ -f "$HOME"/.bash/completion ]; then source "$HOME"/.bash/completion; fi
if [ -d "$HOME"/.bash/completion ]; then for file in "$HOME"/.bash/completion/*; do source "$file"; done; fi
if [ -d "$HOME"/.bash/completion.d ]; then for file in "$HOME"/.bash/completion.d/*; do source "$file"; done; fi
# Late customization # Late customization
if [ -d "$HOME"/.bash/rc.after.d ]; then for file in "$HOME"/.bash/rc.after.d/*; do source "$file"; done; fi _source_dir_files "${BASH_CONFIG_DIR}"/rc.after.d
# Restore option nullglob to normal
shopt -u nullglob
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v chezmoi &>/dev/null); then
source <(chezmoi completion bash)
fi
-1
View File
@@ -1,4 +1,3 @@
#!/bin/bash #!/bin/bash
if (command -v flux &>/dev/null); then if (command -v flux &>/dev/null); then
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
if (command -v mise &>/dev/null); then if (command -v mise &>/dev/null); then
source <(mise completion bash) source <(mise completion bash --include-bash-completion-lib)
fi fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v tea &>/dev/null); then
source <(tea completion bash)
fi
+38 -6
View File
@@ -1,11 +1,43 @@
#!/bin/bash #!/bin/bash
cd $HOME || exit 1 # Define the path to the directory of this file if not already set
if [ -z "${BASH_CONFIG_DIR}" ]; then
# Define a function to get the real path of a script
# (works for most cases : either sourced script or executed script, posix shells)
get_script_dir() {
local target
# Si appelé depuis un script (Bash), on regarde qui a appelé la fonction (${BASH_SOURCE[1]})
# Si la fonction est exécutée directement dans le terminal, on se rabat sur ${BASH_SOURCE[0]} ou ${0}
if [ -n "${BASH_SOURCE}" ]; then
if [ "${#BASH_SOURCE[@]}" -gt 1 ]; then
target="${BASH_SOURCE[1]}"
else
target="${BASH_SOURCE[0]}"
fi
elif [ -n "${ZSH_VERSION}" ]; then
target="${(%):-%x}"
else
target="${0}"
fi
CONFDIR=.bash # Résolution des liens symboliques POSIX
while [ -L "${target}" ]; do
local link
link=$(readlink "${target}")
case "${link}" in
/*) target="${link}" ;;
*) target="$(dirname "${target}")/${link}" ;;
esac
done
ln -sf $CONFDIR/bash_profile .bash_profile (cd "$(dirname "${target}")" && pwd -P)
ln -sf $CONFDIR/bashrc .bashrc }
ln -sf $CONFDIR/bash_logout .bash_logout BASH_CONFIG_DIR=$(get_script_dir)
fi
ln -sf $CONFDIR/inputrc .inputrc cd "${HOME}" || exit 1
ln -sf "${BASH_CONFIG_DIR}"/bash_profile .bash_profile
ln -sf "${BASH_CONFIG_DIR}"/bashrc .bashrc
ln -sf "${BASH_CONFIG_DIR}"/bash_logout .bash_logout
ln -sf "${BASH_CONFIG_DIR}"/inputrc .inputrc
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
function devenv() {
local status
# Get LXC container status
status=$(lxc info devenv | yq .Status)
# Start container if not running
if [ "${status}" != "RUNNING" ]; then lxc start devenv; fi
# Rename tmux window if inside tmux
if [ -n "$TMUX" ]; then tmux rename-window "devenv"; fi
# Login as user xavier
lxc exec devenv -- login -f xavier
}
-65
View File
@@ -1,65 +0,0 @@
# Include system config file
$include /etc/inputrc
# do not bell on tab-completion
set bell-style none
# Disable display of ^C
set echo-control-characters off
# Completion options
set show-all-if-ambiguous on
set show-all-if-unmodified on
# History
"\e[A": history-search-backward
"\e[B": history-search-forward
# backword/forward during search history
"\eq":backward-search-history
"\es":forward-search-history
# Alt+w Alt+x for beginning/end of line
"\ew":"\C-a"
"\ex":"\C-e"
# prepend "tail -f " with Ctrl+Alt+f
"\e\C-f":"\C-atail -f "
"\ef":"\C-atail -f "
# prepend "sudo " with Ctrl+Alt+s
"\e\C-s":"\C-asudo "
"\es":"\C-asudo "
# prepend "yes | " with Ctrl+Alt+y
"\e\C-y":"\C-ayes | "
"\ey":"\C-ayes | "
# append " | grep" with Ctrl+Alt+g
"\e\C-g":"\C-e | grep "
"\eg":"\C-e | grep "
# append " | head" with Ctrl+Alt+h
"\e\C-h":"\C-e | head"
"\eh":"\C-e | head"
# append " | tail" with Ctrl+Alt+t
"\e\C-t":"\C-e | tail"
"\et":"\C-e | tail"
# append " | more" with Ctrl+Alt+m
"\e\C-m":"\C-e | more"
"\em":"\C-e | more"
# append " | less" with Ctrl+Alt+l
"\e\C-l":"\C-e | less"
"\el":"\C-e | less"
# we can add \C-m add the end to validate command too
#"\e\C-m":"\C-e | less\C-m"
# prepend "man " with F1 and validate
"\e[11~":"\C-aman \C-m"
# Launch commands with <F2> then letter
"\e[12~i":"\C-k\C-uirssi\C-m"
"\e[12~m":"\C-k\C-umutt\C-m"
+13
View File
@@ -64,6 +64,18 @@ function echo_error { >&2 echo -e "\e[00;01;31;49m ${*}\e[39;49;00m"; }
function echo_success { >&2 echo -e "\e[00;01;32;49m ${*}\e[39;49;00m"; } function echo_success { >&2 echo -e "\e[00;01;32;49m ${*}\e[39;49;00m"; }
function echo_failed { >&2 echo -e "\e[00;01;31;49m✖ ${*}\e[39;49;00m"; } function echo_failed { >&2 echo -e "\e[00;01;31;49m✖ ${*}\e[39;49;00m"; }
function echo_verbose {
if [ -n "${VERBOSE}" ]; then
echo_faint "${*}" >&2
fi
}
function echo_debug {
if [ -n "${DEBUG}" ]; then
echo_faint "🐛 ${*}" >&2
fi
}
function echo_demo { function echo_demo {
echo_bold bold echo_bold bold
echo_faint faint echo_faint faint
@@ -77,4 +89,5 @@ function echo_demo {
echo_error error echo_error error
echo_success success echo_success success
echo_failed failed echo_failed failed
DEBUG=true echo_debug debug
} }
+2 -3
View File
@@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
function term_change_title function term_change_title {
{
case $TERM in case $TERM in
# Change the window title of X terminals # Change the window title of X terminals
xterm* | rxvt* | urxvt* | Eterm) xterm* | rxvt* | urxvt* | Eterm)
@@ -9,7 +8,7 @@ function term_change_title
;; ;;
# Change the window title of screen terminals # Change the window title of screen terminals
screen*) screen* | tmux*)
echo -ne "\033k${1}\033\\" echo -ne "\033k${1}\033\\"
;; ;;
esac esac
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
if (command -v keychain &>/dev/null); then if (command -v keychain &>/dev/null); then
eval "$(keychain --eval --noask ~/.ssh/{id_ed25519,id_rsa_native})" eval "$(keychain --inherit any --quiet --noask ~/.ssh/id_{rsa,ed25519})"
fi fi
+1 -1
View File
@@ -1,4 +1,4 @@
#!/bin/bash #!/bin/bash
# Define prefered LANG # Define prefered LANG
export LANG=fr_FR.utf8 export LANG=fr_FR.UTF-8
View File
View File
View File
View File
+71
View File
@@ -0,0 +1,71 @@
#!/bin/bash
if (command -v fzf &>/dev/null); then
# Shell integration
source <(fzf --bash)
# 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
+15 -6
View File
@@ -2,28 +2,37 @@
# Customize the prompt # Customize the prompt
USE_PROMPT=powerline-go # Indicate your preference order for prompt tools
# The first one found available will be used
MY_PROMPTS="starship powerline-go"
case "$USE_PROMPT" in for prompt in $MY_PROMPTS; do
if (command -v "$prompt" &>/dev/null); then
USE_PROMPT="$prompt"
break
fi
done
case "${USE_PROMPT}" in
# https://starship.rs/
"starship") "starship")
if (command -v starship &>/dev/null); then if (command -v starship &>/dev/null); then
# echo "Using $USE_PROMPT prompt"
eval "$(starship init bash)" eval "$(starship init bash)"
else else
echo "$USE_PROMPT command not found" echo "${USE_PROMPT} command not found"
fi fi
;; ;;
# https://github.com/justjanne/powerline-go
"powerline-go") "powerline-go")
if (command -v powerline-go &>/dev/null); then if (command -v powerline-go &>/dev/null); then
# echo "Using $USE_PROMPT prompt"
function _update_ps1() { function _update_ps1() {
PS1=$(powerline-go -jobs "$(jobs -p | wc -l)" -error $? -modules "ssh,host,wsl,user,cwd,direnv,venv,perms,git,jobs,exit,root" -modules-right "docker,docker-context,kube,terraform-workspace,termtitle" -newline) PS1=$(powerline-go -jobs "$(jobs -p | wc -l)" -error $? -modules "ssh,host,wsl,user,cwd,direnv,venv,perms,git,jobs,exit,root" -modules-right "docker,docker-context,kube,terraform-workspace,termtitle" -newline)
} }
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_ps1"; fi if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_ps1"; fi
else else
echo "$USE_PROMPT command not found" echo "${USE_PROMPT} command not found"
fi fi
;; ;;
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
# Function to update terminal/tmux title
_update_terminal_title() {
local kubecontext dir gitrepo gitremote icon title
# Detect Kubernetes context (if kubectl is available)
if [ -n "${KUBECONFIG}" ]; then
if command -v kubectl >/dev/null 2>&1; then
kubecontext=$(kubectl config current-context 2>/dev/null)
if [ -n "$kubecontext" ]; then
title="󱃾 ${kubecontext}"
fi
fi
fi
# If no title is already set, check if we're in $HOME
if [ -z "${title}" ] && [ "$PWD" = "$HOME" ]; then
title="󱂵 ~"
fi
# If we're in a git repo display repo name with a nice icon
if [ -z "${title}" ] && gitrepo=$(git rev-parse --show-toplevel 2>/dev/null); then
dir=$(basename "${gitrepo}")
# Detect host from remote URL
gitremote=$(git remote get-url origin 2>/dev/null)
case "${gitremote}" in
*github.com*) icon="" ;; # nf-fa-github
*gitlab.com*) icon="" ;; # nf-fa-gitlab
*gitea*) icon="" ;; # nf-linux-gitea
*) icon="" ;; # nf-dev-git
esac
title="${icon} ${dir}"
fi
# Set the title in tmux or terminal window
if [ -n "${title}" ]; then
if [ -n "$TMUX" ]; then
tmux rename-window "${title}"
else
printf '\033]0;%s\007' "${title}"
fi
fi
}
# Add the function to the PROMPT_COMMAND variable to have regular updates
if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_terminal_title"; fi
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# INFO:
#  vivid is a generator for the LS_COLORS environment variable that controls the colorized output of ls, tree, fd, bfs, dust and many other tools.
# ➜ https://github.com/sharkdp/vivid
# 💡Use command `vivid themes` to see available themes
if (command -v vivid &>/dev/null); then
THEME=tokyonight-moon
LS_COLORS="$(vivid generate ${THEME})"
export LS_COLORS
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
if (command -v zoxide &>/dev/null); then
eval "$(zoxide init bash)"
fi