From 7000bde368b8ca56365877b3fb3d009e7f01c293 Mon Sep 17 00:00:00 2001 From: Xavier Logerais Date: Sat, 22 Aug 2026 00:19:55 +0200 Subject: [PATCH] feat(rc): Unify history tool selection (atuin/mcfly) with preference order Merge rc.d/mcfly and rc.d/atuin into rc.d/history, following the same preference-list + availability-check + fallback pattern as rc.d/prompt, so only one history tool is active at a time instead of both being initialized independently. Also normalize variable expansions in rc.d/prompt to consistently use ${var} braces. --- rc.d/history | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ rc.d/mcfly | 11 ----------- rc.d/prompt | 12 ++++++------ 3 files changed, 56 insertions(+), 17 deletions(-) create mode 100644 rc.d/history delete mode 100644 rc.d/mcfly diff --git a/rc.d/history b/rc.d/history new file mode 100644 index 0000000..be85be8 --- /dev/null +++ b/rc.d/history @@ -0,0 +1,50 @@ +#!/bin/bash + +# Customize shell history search + +# Indicate your preference order for history tools +# The first one found available will be used +MY_HISTORY_TOOLS="atuin mcfly" + +for tool in ${MY_HISTORY_TOOLS}; do + if (command -v "${tool}" &>/dev/null); then + USE_HISTORY_TOOL="${tool}" + break + fi +done + +case "${USE_HISTORY_TOOL}" in + +# https://atuin.sh/ +"atuin") + if (command -v atuin &>/dev/null); then + eval "$(atuin init bash)" + else + echo "${USE_HISTORY_TOOL} command not found" + fi + ;; + +# https://github.com/cantino/mcfly +"mcfly") + if (command -v mcfly &>/dev/null); then + export MCFLY_PROMPT="❯ " + export MCFLY_INTERFACE_VIEW=BOTTOM + export MCFLY_RESULTS=50 + export MCFLY_RESULTS_SORT=LAST_RUN + # export MCFLY_KEY_SCHEME=vim + export MCFLY_FUZZY=3 + eval "$(mcfly init bash)" + else + echo "${USE_HISTORY_TOOL} command not found" + fi + ;; + +*) + # Default sane bash history behavior + export HISTCONTROL=ignoreboth:erasedups + export HISTSIZE=10000 + export HISTFILESIZE=20000 + shopt -s histappend + ;; + +esac diff --git a/rc.d/mcfly b/rc.d/mcfly deleted file mode 100644 index 4c30022..0000000 --- a/rc.d/mcfly +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -if (command -v mcfly &>/dev/null); then - export MCFLY_PROMPT="❯ " - export MCFLY_INTERFACE_VIEW=BOTTOM - export MCFLY_RESULTS=50 - export MCFLY_RESULTS_SORT=LAST_RUN - # export MCFLY_KEY_SCHEME=vim - export MCFLY_FUZZY=3 - eval "$(mcfly init bash)" -fi diff --git a/rc.d/prompt b/rc.d/prompt index fc28674..8460667 100644 --- a/rc.d/prompt +++ b/rc.d/prompt @@ -4,11 +4,11 @@ # Indicate your preference order for prompt tools # The first one found available will be used -MY_PROMPTS="starship powerline-go" +MY_PROMPT_TOOLS="starship powerline-go" -for prompt in $MY_PROMPTS; do - if (command -v "$prompt" &>/dev/null); then - USE_PROMPT="$prompt" +for prompt in ${MY_PROMPT_TOOLS}; do + if (command -v "${prompt}" &>/dev/null); then + USE_PROMPT="${prompt}" break fi done @@ -30,7 +30,7 @@ case "${USE_PROMPT}" in 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) } - if [ "$TERM" != "linux" ]; then _prompt_command_add "_update_ps1"; fi + if [ "${TERM}" != "linux" ]; then _prompt_command_add "_update_ps1"; fi else echo "${USE_PROMPT} command not found" fi @@ -38,7 +38,7 @@ case "${USE_PROMPT}" in *) # Default simple prompt - if [ "$UID" -eq 0 ]; then + if [ "${UID}" -eq 0 ]; then export PS1='\[\e[01;31m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] ' else export PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[0m\] '