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)
  • Hellfire103@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    1
    ·
    edit-2
    1 year ago

    I use Zsh with the Oh My Zsh! framework, and I use a different theme depending on which subuserland I’m in, by customising ~/.zshrc. For example, I use the gentoo theme on Debian and its derivatives, agnoster on NixOS, darkblood on Arch, strug for Mageia, apple on my macOS device, aussiegeek on FreeBSD, and gallifrey on OpenBSD. Different themes helps me remember which package manager to use and which distro-specific commands will work.

    I’ll send some screenshots in a bit, when I boot up my PC.

    I like Zsh because of its tab completion and command history. I also quite like its plugins.

    Before anyone asks, I have tried Fish before, and I prefer Zsh. I have tried configuring Bash before, and I prefer Zsh. I have played with Ksh and Tcsh on BSD, and I prefer Zsh. I used PowerShell a long time ago, and I prefer Zsh.

  • z3bra@lemmy.sdf.org
    link
    fedilink
    arrow-up
    6
    ·
    1 year ago

    I’m on the boring side…

    PS1="% "
    

    I like it though, it gives me more room for commands !

    • stepanzak@iusearchlinux.fyiOP
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      1 year ago

      Most of the pre-built prompts have two lines to give enough space for commands. The first line has all the info, and the second line is something like your prompt. If your prompt works for you, it’s great, though.

  • nbailey@lemmy.ca
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    I use plain old bash with the plain old .bashrc that ships with Debian. I’ll bolt on a git-branch-aware function into the prompt here and there, but that’s about it.

    Why? I ssh into a few dozen machines most days and my shitty little lizard brain can’t deal with everything being different on each box. So as much as I appreciate zsh, powerline plug-ins, all that glitzy stuff, I’ll be a late adopter when it comes to plain old Debian stable…

    • thelastknowngod@lemm.ee
      link
      fedilink
      arrow-up
      0
      arrow-down
      1
      ·
      1 year ago

      This was me until the kubernetes transition occurred. Now I ssh into nothing unless it’s a personal box. I’ve become a zsh convert.

      • InputZero@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        I’ve been casually transitioning to kubernetes and zsh, but I’m just too comfortable with bash and my os running on bare metal. (He says with more than half his apps switched to containers.) It’s simple, effective, and is always available. I should take the plunge, someday.

        • thelastknowngod@lemm.ee
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          FWIW, once I got deep enough into it, the thought of going back to the old way seemed like a crazy idea. I don’t want to manage servers like that again if it can be avoided. YMMV.

  • theshatterstone54@feddit.uk
    link
    fedilink
    arrow-up
    5
    arrow-down
    1
    ·
    1 year ago

    Currently, I use starship, but I have considered switching to a regular PS1 or similar setup, it’s just that I can’t get the colours right when using PS1.

  • Guenther_Amanita@feddit.de
    link
    fedilink
    arrow-up
    5
    arrow-down
    1
    ·
    edit-2
    1 year ago

    I just use the default fish without any modifications.

    To be fair, I don’t use the terminal that often.

    Even for my homeserver, I access most stuff (containers, updates, etc.) graphically with CasaOS (a web interface), and as a more “casual” PC user, I work with the tools given by my DE. I don’t do much fancy stuff.

    And when I really need the CLI, fish is alright for me. It’s simple, has sane defaults, and feels (thanks to the automatically activated spell check and completion) very efficient for me.

    Bash isn’t bad, but feels a bit lackluster. Zsh may be better, but requires too much configuration for what it’s worth for me.

    • PseudoSpock@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      1 year ago

      You’ll want to start toning your skills with Bash and other POSIX shells like AT&T ksh, zsh, and dash if you ever wish to do serious scripting for work… either that, or start learning Python. That is, unless you already have those under your belt. Apology in advance if you already do… I just couldn’t understand switching to Fish after already having those skills. If you do, and you then switched to Fish, what was the benefit of that? Just curious.

  • sebastiancarlos@lemmy.sdf.org
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    .bashrc:

    # Prompt
    # "Make it simple, just the dollar sign"
    # "Say no more, fam"
    # - if error code is not 0, then prepend [N] where N is the error code
    # - if user is root, use red and #
    blue='\e[34m'
    red='\e[31m'
    bold='\e[1m'
    reset='\e[0m'
    PS1='$( status=$?; [ $status -ne 0 ] && echo "[$status] ")\['"$blue""$bold"'\]$\['"$reset"'\] '
    
    if [[ $EUID -eq 0 ]]; then
      PS1='$( status=$?; [ $status -ne 0 ] && echo "[$status] ")\['"$red""$bold"'\]#\['"$reset"'\] '
    fi
    

    .inputrc:

    # vi mode, change to 'emacs' here if you prefer
    set editing-mode vi
    
    # vi INSERT prompt
    set vi-ins-mode-string "\1\e[30;44m\2 INS \1\e[0m\2 "
    
    # vi NORMAL prompt
    set vi-cmd-mode-string "\1\e[30;47m\2 NOR \1\e[0m\2 "
    
  • 30p87@feddit.de
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    1 year ago

    As I use bash basically for everything, I wanted my prompt to be as basic as possible (No newlines, fixed format) and compatible across my PC, Laptop as well as server and Pi via SSH.
    Therefore, it’s a simple __prompt_command function in my .bashrc (nearly) everywhere.
    It’s structured as:

    1. Terminal/TTY number in orange
    2. Username in green (for roots .bashrc it’s red)
    3. Hostname in green
    4. Current working dir in blue
    5. Current git branch in yellow (if in a git repo)
    6. Exit code in red (if not 0)

    Looks like this: 1000011281

    I used some prompt generator to get the variables and colors right, and then wrapped parts in if-then where needed.
    The result is:

    __prompt_command() {
        local EXIT="$?"
        PS1="\[\033[38;5;216m\](\l)\[$(tput sgr0)\] \[$(tput sgr0)\]\[\033[38;5;85m\]\u@\H\[$(tput sgr0)\]:\[$(tput sgr0)\]\[\033[38;5;68m\][\w\[$(tput sgr0)\]"
        local GIT_BRANCH="$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/')"
        if ! [[ -z "$GIT_BRANCH" ]]; then
            PS1+=":\[$(tput sgr0)\]\[\033[38;5;142m\]${GIT_BRANCH}\[$(tput sgr0)\]"
        fi
        PS1+="\[\033[38;5;68m\]]\[$(tput sgr0)\]"
        if [ $EXIT != 0 ]; then
            PS1+=":\[$(tput sgr0)\]\[\033[38;5;1m\]${EXIT}\[$(tput sgr0)\]"
        fi
        PS1+="\\$ \[$(tput sgr0)\]"
    }
    

    In practice I use every aspect of it. The terminal number is useful for sorting, the username is needed especially when handling e.g. git or db servers with specific users, and one has a terminal as the user, one as root and one as normal user. Hostname is obviously important with multiple ssh sessions open all the time (especially without terminal emulator titles). Typing pwd all the time would be very tedious, as I only move around my system in bash, so having it in the prompt is nice. If I am in a git repo I also need to know the branch and otherwise it’s not displayed anyway. Quickly identifying silently failed commands is tedious, especially because issuing one command overwrites $? again, so ‘logging’ it if necessary is nice.

  • chayleaf@lemmy.ml
    link
    fedilink
    arrow-up
    3
    arrow-down
    1
    ·
    edit-2
    1 year ago

    I use fish + tide

    I tried zsh+p10k before fish+tide, but zsh felt annoying in subtle ways that weren’t fixable with (existing) plugins, so I switched back to fish, but installed tide to mimic my previous p10k theme.

  • esm@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    There are two usability tweaks that I would find it hard to live without: (1) red prompt on last-command failure, and (2) highlight what I type, dehighlight output:

    Reason for 1 is obvious, 2 is more subtle: it helps my eye scan scrollback and identify what I’ve typed, which is what I’m scanning for 90% of the time.

    Implementations vary, here’s how I do it in zsh:

    1. PS1='%(?.%K{cyan}%F{white}.%B%K{red}%F{white})XX%b%k%f %(?.%F{cyan}.%F{red})yyy%k%b%F{yellow}%(!.#.$)%f '. Duplication is evil, but AFAIK necessary because the conditional (error check) is %(? and I highlight both parts of my two-part prompt. Suggestions welcome for removing the duplication.
    2. zle_highlight=("default:fg=white") (on a Solarized Dark term, where the default fg color is light gray. Adjust to fit your needs).
  • Pixel@lemmy.sdf.org
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I used to color my prompt depending on which server I was connected to (ssh), and a different color scheme for prod, dev and local. But that was a long time ago and the script is buried somewhere, also I don’t stay ssh’d to nearly as many places as I did back then. But I did like it, I’d use it now if I had it.