[Question] Which shell prompt do you use and why?

stepanzak@iusearchlinux.fyi to Linux@lemmy.ml – 117 points –

Hi. I've been using powerlevel10k for a long time, but a few days ago, I decided I wanted to customize it a bit. I opened the .p10k.zsh file, and I was shocked. It's really massive, with TONS of options. I've been digging through for a few hours already, and it's absolutely amazing how much you can customize it without actually programming anything. I was wondering what other people are using. So my questions are:

  • Do you customize your shell prompt?
  • If yes, do you use some framework or pre-made theme, or do you just configure it the vanilla way in your bashrc/zshrc/...
  • How is your experiences with it so far?
  • Share screenshot of your prompts, please (Sadly, my prompt is currently half done, so I can't really share it)
80

You are viewing a single comment

I designed this prompt shortly after I switched to Linux, I've been using it for a while, it has a few features like putting the exit code if it isn't 0, changing the hostname color if its detected that you are over ssh, changing the directory color to red if it isn't writeable, changing the prompt color to red if your euid is 0, and instead of printing I have no name! when your user does not have an entry in the passwd file, it will just print your uid in red. I also have a version that I wrote in C that works the same way with a subsitution shell, but it was harder to sync across all my devices when I made a change, so I rewrote it in posix shell that could be synced with just my .bashrc and work almost anywhere.

I don't know how to post a screenshot, sorry for the long paragraph, but here is the source code, feel free to share or do whatever with it!

#-----PS1-----#
BOLDRED="\001\033[1;31m\002"
BOLDBLUE="\001\033[1;34m\002"
BOLDPURPLE="\001\033[1;35m\002"
BOLDCYAN="\001\033[1;36m\002"
BOLDGREEN="\001\033[1;32m\002"
COLORRESET="\001\033[0m\002"
CURSOR_BLINK="\001\033[5 q\002"
INFO_COLOR=$BOLDGREEN
SUPERUSER_COLOR=$BOLDRED
NORMALUSER_COLOR=$BOLDCYAN
SSH_COLOR=$BOLDPURPLE
__shellprompt ()
{
        if [ "$(id -u)" = 0 ]; then
                PROMPT_COLOR=$SUPERUSER_COLOR
                PROMPT_EMBLEM='#'
        else
                PROMPT_COLOR=$NORMALUSER_COLOR
                PROMPT_EMBLEM='$'
        fi
        # [user@hostname]
        printf "%b%s%b" "${PROMPT_COLOR}[${INFO_COLOR}" "$(whoami 2>/dev/null || (printf "%b%s" "${BOLDRED}" "UID:$(id -u)"))" "${PROMPT_COLOR}@"
        if [ -n "${SSH_TTY}" ] || [ -n "${SSH_CLIENT}" ]; then
                printf "%b" "$SSH_COLOR"
        else
                printf "%b" "$INFO_COLOR"
        fi
        printf "%s%b" "$(hostname)" "${PROMPT_COLOR}]"
        # :
        printf "%b" "${COLORRESET}:"
        # (/pwd)
        printf "%b" "${PROMPT_COLOR}("
        if [ -w "$PWD" ]; then
                printf "%b" "${INFO_COLOR}"
        else
                printf "%b" "${BOLDRED}"
        fi
        if [ -n "$HOME" ] && [ "$HOME" != "/" ] && { [ "$PWD" = "$HOME" ] || [ "$PWD" != "${PWD#"$HOME/"}" ]; }; then
                printf "%s" "~${PWD#"$HOME"}"
        else
                printf "%s" "${PWD}"
        fi
        printf "%b" "${PROMPT_COLOR})${COLORRESET}"
        # :(EXITCODE)
        if [ "$1" != 0 ]; then
                printf "%b" "${COLORRESET}:"
                printf "%b%s%b" "${PROMPT_COLOR}(${BOLDRED}" "${1}" "${PROMPT_COLOR})${COLORRESET}"
        fi
        # ->$
        # ->#
        printf "%b" "\n${PROMPT_COLOR}->${PROMPT_EMBLEM} ${COLORRESET}${CURSOR_BLINK}"
}
export PS1='$(__shellprompt $?)'
#-----PS1-----#
1 more...