this post was submitted on 21 Oct 2023
117 points (96.8% liked)

Linux

48033 readers
780 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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)
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 13 points 1 year ago (1 children)

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-----#