#!/usr/bin/env bash # vim:syntax=sh:ts=4 # ----- PROMPT COLOURS ----- # fgcolor () { #echo "\\[\\033[38;5;"$1"m\\]" echo "\033[38;5;${1}m" } fgtcolor () { echo "\033[38;2;$1;$2;$3m" } bgcolor () { #echo "\\[\\033[48;5;"$1"m\\]" echo "\033[48;5;${1}m" } # This is Solaris bash compatible, so we cannot use + here for "at least once) but instead use the # stupid old asterisk (*). Well, here hetting "no digits" practically won't hurt. MYUID="$(id|sed 's/.*uid=\([0-9]*\).*/\1/g')";export MYUID # ...because "empty" will hit the "any" condition in the end :) OSMAJVER="$(grep '^VERSION_ID' /etc/os-release|awk -F= '{print $NF}'|sed 's/"//g'|awk -F\. '{print $1}')" case "$MYUID" in 0) FGC1="fgcolor 88" case "$OSNAME" in debian) # Debian 12 = emerald if [ "$OSMAJVER" -ge 12 ];then FGC3="fgcolor 36";FGC2="fgtcolor 155 15 64" else FGC3="fgcolor 38";FGC2="fgcolor 155 15 64" fi ;; arch) FGC2="fgcolor 24";FGC3="fgcolor 240";; redhat) FGC1="fgcolor 23";FGC2="fgcolor 88";FGC3="fgcolor 203";; fedora) FGC1="fgcolor 160";FGC2="fgcolor 88";FGC3="fgcolor 203";; # with the advent of Rocky, we'll match the time to SUSE's blue and the hostname to # the colour of Geeko: #*suse|aix) FGC2="fgcolor 22";FGC3="fgcolor 41";; *sles*) FGC2="fgcolor 22";FGC3="fgcolor 83";; *suse*) FGC2="fgcolor 30";FGC3="fgcolor 83";; aix) FGC2="fgcolor 238";FGC3="fgcolor 83";; *centos*) FGC2="fgcolor 25";FGC3="fgcolor 208";; *solaris) FGC2="fgcolor 31";FGC3="fgcolor 124";; ubuntu) if [ "$OSMAJVER" -ge 22 ];then if printf "%b" "$TERM"|grep -P 'xterm|256' > /dev/null;then FGC2="fgcolor 89";FGC3="fgcolor 208" else FGC2="fgcolor 53";FGC3="fgcolor 184" fi else FGC2="fgcolor 130";FGC3="fgcolor 215" fi ;; rasp*) FGC2="fgcolor 253";FGC3="fgcolor 126";; rocky) FGC2="fgcolor 22";FGC3="fgcolor 41";; *) FGC2="fgcolor 240";FGC3="fgcolor 244";; esac if [ -n "$TERMUX_APK_RELEASE" ]; then if [ "$TERMUX_APK_RELEASE" == "F_DROID" ]; then FGC2="fgcolor 27";FGC3="fgcolor 35" fi fi ;; *) FGC2="fgcolor 253" case "$OSNAME" in debian) if [ "$OSMAJVER" -ge 12 ];then FGC1="fgtcolor 155 15 64";FGC3="fgcolor 36" else FGC1="fgtcolor 155 15 64";FGC3="fgcolor 38" fi ;; arch) FGC1="fgcolor 24";FGC3="fgcolor 239";; redhat) FGC1="fgcolor 23";FGC3="fgcolor 88";; fedora) FGC1="fgcolor 88";FGC3="fgcolor 203";; #*suse|aix) FGC1="fgcolor 22";FGC3="fgcolor 41";; *sles*) FGC1="fgcolor 22";FGC3="fgcolor 83";; *suse*) FGC1="fgcolor 30";FGC3="fgcolor 83";; aix) FGC1="fgcolor 238";FGC3="fgcolor 83";; *centos*) FGC1="fgcolor 25";FGC3="fgcolor 208";; *solaris) FGC1="fgcolor 31";FGC3="fgcolor 124";; ubuntu) if [ "$OSMAJVER" -ge 22 ];then if printf "%b" "$TERM"|grep -P 'xterm|256' > /dev/null;then FGC1="fgcolor 89";FGC3="fgcolor 208" else FGC1="fgcolor 53";FGC3="fgcolor 184" fi else FGC1="fgcolor 130";FGC3="fgcolor 215" fi ;; rasp*) FGC1="fgcolor 53";FGC3="fgcolor 126";; rocky) FGC1="fgcolor 22";FGC3="fgcolor 41";; *) FGC1="fgcolor 240";FGC3="fgcolor 244";; esac if [ -n "$TERMUX_APK_RELEASE" ]; then if [ "$TERMUX_APK_RELEASE" == "F_DROID" ]; then FGC1="fgcolor 27";FGC3="fgcolor 35" fi fi ;; esac # HYPERVISOR LAYER 8 SOFTWARE if pveversion > /dev/null 2>&1;then FGC1="fgcolor 236";FGC3="fgcolor 130" fi # make it possible to draw user-defined colours # shellcheck disable=SC1090,SC1091 [ -r "${BBD}/prompt.bash.local" ] && source "${BBD}/prompt.bash.local" # ----- USER SEP. AND HOSTNAME ----- # UHSEP="@" [ -n "$TMUX_PANE" ]&&UHSEP="[T]" [ -n "$BYOBU_WINDOW_NAME" ]&&UHSEP="[B]" [ "$(hostname -s)" == "monitoring" ]&&PHN="$(hostname -f)"||PHN="$(hostname -s)" # ----- ASSEMBLE THE PROMPT COMMAND ADDITION ----- # __prompt_command() { local EXIT="$?" if [ "$EXIT" -lt 10 ];then local EXIT2="00$EXIT" elif [ "$EXIT" -lt 100 ];then local EXIT2="0$EXIT" else local EXIT2="$EXIT" fi case "$MYUID" in 0) PS1="\\# \[$(tput bold)\]\[$($FGC1)\]\\u\[$($FGC2)\]@$PHN \[$($FGC3)\]\\w \[$(tput sgr0)\]" ;; *) PS1="\\# \[$(tput bold)\]\[$($FGC1)\]\t \[$($FGC2)\]\\u$UHSEP\[$($FGC3)\]$PHN \\w \[$(tput sgr0)\]" ;; esac if command -v __git_ps1 >/dev/null 2>&1;then PS1+="$(__git_ps1 "%s ")";fi if [ "$EXIT" -eq 0 ];then PS1+="\[\033[0;32m\]# " elif [ "$EXIT" -eq 255 ]||[ "$EXIT" -eq 127 ];then PS1+="\[\033[0;33m\]$EXIT2 # " elif [ "$EXIT" -eq 130 ];then PS1+="\[\033[0;35m\]$EXIT2 # " else PS1+="\[\033[0;31m\]$EXIT2 # " fi PS1+="\[\033[0m\]" } # ----- ADD __prompt_command() TO $PROMPT_COMMAND ----- # if ! printf "%b" "$PROMPT_COMMAND" | grep '__prompt_command' >/dev/null;then case "$TERM" in # adding in "screen" because tmux xterm|xterm-color|xterm-256color|rxvt*|screen-256color|screen) if [ -n "$PROMPT_COMMAND" ];then export PROMPT_COMMAND="__prompt_command;${PROMPT_COMMAND}" else export PROMPT_COMMAND="__prompt_command" fi ;; *) if [ -n "$PROMPT_COMMAND" ];then export PROMPT_COMMAND="__prompt_command;${PROMPT_COMMAND}" else export PROMPT_COMMAND="__prompt_command" fi ;; esac fi # ----- HISTORY SUBMISSION IN $PROMPT_COMMAND ----- # if ! printf "%b" "$PROMPT_COMMAND"|grep 'history -a' >/dev/null;then if [ -n "$PROMPT_COMMAND" ];then export PROMPT_COMMAND="$PROMPT_COMMAND;history -a;history -c;history -r" else export PROMPT_COMMAND="history -a;history -c;history -r" fi fi 3em 0;width:15em;margin:0 auto;text-align:center;}*/ #links ul li {padding:0.2em 0 0.3em 2em;margin:0.1em 0 0.1em 0;width:19em;} #links ul li:nth-child(2n) {float:right;} #links ul li:nth-child(4n) {background:rgba(80,80,80,0.1);} #links ul li:nth-child(2n+1) {float:left;} #links ul li:nth-child(4n-1) {background:rgba(80,80,80,0.1);} #links:after {clear:both;content:" ";display:block;} #teamspeak_srv {background-color:rgba(225,245,220,0.7);} #teamspeak_srv>div.content {margin:0 auto;font-size:13px;width:29.5em;font-family:"Telex","Helvetica Neue",Helvetica,Arial,sans-serif;} #teamspeak_srv div.copy { display:none!important; } #teamspeak_srv .content:last-child { margin-bottom:2em; } aside#ts3remark {margin-top:4em;font-size:66%;text-align:center;font-style:italic;} #validate { transform: rotate(45deg); /*-webkit-transform: rotate(45deg); /*FUCK YOU CHROME, SAFARI AND OPERA*/ /*-ms-transform: rotate(45deg); /*FUCK YOU INTERNET EXPLORER 9 AND BELOW*/ position:fixed;bottom:0;left:0;text-align:center;text-transform:lowercase;width:100%;margin-left:-45.666%;margin-bottom:1.666em; } #validate > p {margin:0;font-weight:bold;} #validate a {text-decoration:none;} #validate a:hover{text-decoration:none;} #validate > p:first-child {/*background:#0092bf;*/color:white;border-top:1px solid;border-color:#058;background:rgba(0,126,178,.8);} #validate > p:nth-child(2) {/*background:#90c140;*/color:white;border-bottom:1px solid;border-color:#591;background:rgba(124,178,54,.8);} #validate > p a { color:white;display:inline-block;padding:0.3em 25px 0.3em 0.3em;box-sizing:content-box;height:100%; background-size:auto 24px; } #validate > p:first-child a { background:transparent url('/flags/html5.png') right center no-repeat scroll; } #validate > p:nth-child(2) a { background:transparent url('/flags/css3.png') right center no-repeat scroll; } #validate > p span:last-child {display:none;} /*#validate > p:last-child a {color:#3e7000;} #validate > p:last-child a:hover {color:#c9910e;}*/ /*#mail h2:before {content:"\2709\fe0f\000a";display:block;font-size:4em;}*/ #mail h2:before {content:"\2709";display:block;font-size:4em;} #mail,#philosophy,#hots {text-align:justify;} #mail h2:before, #philosophy h2:before,#hots h2:before { font-family:"Elusive Icons"; display:block;font-size:3em;font-weight:normal; } #mail h2:before {content:"\e6e1";} #mail .remark,#philosophy .remark,#hots .remark {font-size:80%;margin-top:2em;font-style:italic;} #mail strong,#philosophy strong {color:#a00;} /*#philosophy h2:before {content:"\262f\fe0f\000a";display:block;font-size:4em;}*/ #philosophy h2:before {content:"\262f";} #hots h2:before { content:" "; background:transparent url('//lirion.de/heroes-of-the-storm.svg') center center; background-size:1.5em 1.5em; width:1.5em;height:1.5em;text-align:center;margin:0 auto;padding:0;display:block; } #hots p#hotslogs {text-align:center; margin:0 auto;margin-bottom:1em;} #rebuild {text-decoration:blink;color:#30c000;} #os-releases {/*width:66.6%;*/margin-left:2em;} #os-releases th {text-align:left;} #os-releases tr:nth-child(2n-1) td {background-color:#bcd1c1;} #os-releases tr td,#os-releases tr th {padding:0 0.75em;} #os-releases tr td.hash {font-family:"DejaVu Sans Mono",Monospace,monospace,serif;font-size:90%;} #nowww { position:fixed;top:4em;right:1em;margin:0;padding:0; background:transparent url('/assets/no_www.png') bottom right no-repeat; background-size:80px auto;width:80px;height:80px; } #nowww a { display:block;margin:0;padding:0; width:80px;height:80px; } #nowww a span {display:none;} div.markdown-body p:last-child { padding-bottom:1.5em; } div#cgit {margin-bottom:2em;} @keyframes fadeDown { 0% { opacity: 0; transform: translateY(-20px); } 100% { opacity: 1; transform: translateY(0); } } .fadeDown, header { animation:fadeDown 1s ease; } /* jekyll */ header.post-header { margin-top: 0.1337em; } .post h1 { font-size:2.1337em; text-align: left; } .post h1+p { text-align: left; } ul.post-list { background: #f0f0f0; list-style: none; padding-inline-start: 0; padding: 0.8em; } ul.post-list li { padding:0.4em; } ul.post-list li:nth-child(2n-1) { background-color:#ffffff; } ul.post-list li span.post-meta { font-weight: bold;font-style: oblique;font-size:100%; } ul.post-list li span.post-meta:after { content: ':'; } ul.post-list li h3 { font-size: 100%;font-weight: normal; display: inline; margin-left: 1em; font-family: "Telex","Helvetica Neue",Helvetica,Arial,sans-serif; border-bottom: none; } ul.post-list li h3 a { text-decoration: none; } nav.blog-nav { background: transparent; position: static; border: none; } .blog-nav .nav-trigger { display:none; } .blog-nav .menu-icon { display:none; } .post-content table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse; border: 1px solid #d0d0d0; } .post-content table tr:nth-child(odd) { background-color: #e0e0e0; } .post-content table tr:nth-child(even) { background-color: #f0f0f0; } .post-content table th, table td { padding: 10px 15px; } .post-content table th { background-color: #f0f0f0; border: 1px solid #dedede; border-bottom-color: #c9c9c9; } .post-content table td { border: 1px solid #e8e8e8; } .blog-nav a.page-link { text-decoration: none; font-size:110%; border-left: 1px solid; border-right: 1px solid; margin-left: 0.1em;margin-right:0.1em; padding-left:0.7331em;padding-right: 0.7331em; display: inline-block; } .blog-nav a.page-link:first-child { margin-left: 0; border-left: 0; } .blog-nav a.page-link:last-child { margin-right: 0; border-right: 0; } figure.highlight { margin: 0 auto; margin-left: 1em; padding: 0.666em; } figure.highlight pre { margin-top: 0; margin-bottom: 0; overflow-x: auto; overflow-y: hidden; } figure.highlight pre code, code.highlighter-rouge { font-size: 0.8em; } article.post div.post-content, #tocw { background: rgba(251,255,253,0.6); padding: 0.666em; } main.page-content a, footer.site-footer a { text-decoration: none; color: #169b62; font-weight: 550; } main.page-content a:hover, footer.site-footer a:hover, main.page-content a:active, footer.site-footer a:active { color: #ff883e; } .highlight { background: #e8fff0; } #tocw ol { list-style-type: decimal; counter-reset: item; padding-left: 10px; } #tocw ol li { display: block; } #tocw > ol > li { padding-left: 0.5em; } #tocw > ol > li > ol > li { padding-left: 0.666em; } #tocw > ol > li > ol > li > ol > li { padding-left: 1.337em; } #tocw ol li:before { content: counters(item, ".") ". "; counter-increment: item } /*main.page-content h2:before { content: counter(heading)". "; counter-increment: heading; } main.page-content h2 { counter-reset: subheading; } main.page-content h3:before { content: counter(heading)"." counter(subheading)". "; counter-increment: subheading; }*/ /** * Syntax highlighting styles */ .highlight { background: #fff; } .highlighter-rouge .highlight { background: #eef; } .highlight .c { color: #998; font-style: italic; } .highlight .err { color: #a61717; background-color: #e3d2d2; } .highlight .k { font-weight: bold; } .highlight .o { font-weight: bold; } .highlight .cm { color: #998; font-style: italic; } .highlight .cp { color: #999; font-weight: bold; } .highlight .c1 { color: #998; font-style: italic; } .highlight .cs { color: #999; font-weight: bold; font-style: italic; } .highlight .gd { color: #000; background-color: #fdd; } .highlight .gd .x { color: #000; background-color: #faa; } .highlight .ge { font-style: italic; } .highlight .gr { color: #a00; } .highlight .gh { color: #999; } .highlight .gi { color: #000; background-color: #dfd; } .highlight .gi .x { color: #000; background-color: #afa; } .highlight .go { color: #888; } .highlight .gp { color: #555; } .highlight .gs { font-weight: bold; } .highlight .gu { color: #aaa; } .highlight .gt { color: #a00; } .highlight .kc { font-weight: bold; } .highlight .kd { font-weight: bold; } .highlight .kp { font-weight: bold; } .highlight .kr { font-weight: bold; } .highlight .kt { color: #458; font-weight: bold; } .highlight .m { color: #099; } .highlight .s { color: #d14; } .highlight .na { color: #008080; } .highlight .nb { color: #0086B3; } .highlight .nc { color: #458; font-weight: bold; } .highlight .no { color: #008080; } .highlight .ni { color: #800080; } .highlight .ne { color: #900; font-weight: bold; } .highlight .nf { color: #900; font-weight: bold; } .highlight .nn { color: #555; } .highlight .nt { color: #000080; } .highlight .nv { color: #008080; } .highlight .ow { font-weight: bold; } .highlight .w { color: #bbb; } .highlight .mf { color: #099; } .highlight .mh { color: #099; } .highlight .mi { color: #099; } .highlight .mo { color: #099; } .highlight .sb { color: #d14; } .highlight .sc { color: #d14; } .highlight .sd { color: #d14; } .highlight .s2 { color: #d14; } .highlight .se { color: #d14; } .highlight .sh { color: #d14; } .highlight .si { color: #d14; } .highlight .sx { color: #d14; } .highlight .sr { color: #009926; } .highlight .s1 { color: #d14; } .highlight .ss { color: #990073; } .highlight .bp { color: #999; } .highlight .vc { color: #008080; } .highlight .vg { color: #008080; } .highlight .vi { color: #008080; } .highlight .il { color: #099; }

git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/.bash/prompt.bash
Commit message (Expand)AuthorAgeFilesLines
* Distinguish between Leap and others (Tumbleweed), current colouring from offi...v1.0.0H. P. 2024-05-251-2/+12
* fix: root colouring for Debian < 12v0.9.5H. P. 2023-05-061-1/+1
* New colours for Debian > 12 and derivativesH. P. 2023-05-061-4/+38
* + termuxH. P. 2023-04-081-0/+10
* fix: non-SLE suse did not apply anywhereH. P. 2023-04-081-2/+2
* +pvev0.9.4H. P. 2022-07-261-1/+5
* syntax errorH. P. 2022-03-231-1/+1
* distinguish rel from fedora, adopting the rh corporate turquois