From fe21fc486a63953086aa3701f29840eee42f47f7 Mon Sep 17 00:00:00 2001 From: nojhan Date: Tue, 18 Oct 2022 23:42:47 +0200 Subject: [PATCH] feat(jobs/sensors): add warning thresholds --- README.md | 30 + dotmatrix.theme | 114 +- liquidprompt_dotmatrix_design.odt | Bin 19069 -> 20379 bytes liquidprompt_dotmatrix_design.svg | 3444 ++++++++++++++++------------- 4 files changed, 2036 insertions(+), 1552 deletions(-) diff --git a/README.md b/README.md index a9da9f3..e8ce85f 100644 --- a/README.md +++ b/README.md @@ -213,6 +213,36 @@ Number of unpulled remote commits above which the prompt should use the warning Number of modified lines above which the prompt should use the warning color to display the "commit" section. +**DOTMATRIX_DETACHED_THRESHOLD** *integer = 3* + +Number of detached jobs above which the prompt should use the warning color. + + +**DOTMATRIX_RUNNING_THRESHOLD** *integer = 3* + +Number of running jobs above which the prompt should use the warning color. + + +**DOTMATRIX_STOPPED_THRESHOLD** *integer = 3* + +Number of stopped jobs above which the prompt should use the warning color. + + +**DOTMATRIX_BATTERY_THRESHOLD** *integer = $((LP_BATTERY_THRESHOLD/2))* + +Percentage below which the prompt should use the warning color. + + +**DOTMATRIX_TEMP_THRESHOLD** *integer = $((LP_TEMP_THRESHOLD*2))* + +Temperature above which the prompt should use the warning color. + + +**DOTMATRIX_LOAD_THRESHOLD** *integer = $((_LP_LOAD_THRESHOLD+(_LP_LOAD_CAP-_LP_LOAD_THRESHOLD)/2))* + +Load percentage above which the prompt should use the warning color. + + **DOTMATRIX_ENABLE_HISTORY** *boolean = 1* Enable the history sections displayed on the right side of the middle line. diff --git a/dotmatrix.theme b/dotmatrix.theme index 79b6c97..80a95de 100644 --- a/dotmatrix.theme +++ b/dotmatrix.theme @@ -30,7 +30,16 @@ _lp_dotmatrix_theme_activate() { DOTMATRIX_VCS_BEHIND_THRESHOLD=${DOTMATRIX_VCS_BEHIND_THRESHOLD:-5} DOTMATRIX_VCS_DIFF_THRESHOLD=${DOTMATRIX_VCS_DIFF_THRESHOLD:-300} - DOTMATRIX_MARK_ERROR=${DOTMATRIX_MARK_ERROR:-⚠} + DOTMATRIX_DETACHED_THRESHOLD=${DOTMATRIX_DETACHED_THRESHOLD:-3} + DOTMATRIX_RUNNING_THRESHOLD=${DOTMATRIX_RUNNING_THRESHOLD:-3} + DOTMATRIX_STOPPED_THRESHOLD=${DOTMATRIX_STOPPED_THRESHOLD:-3} + + DOTMATRIX_BATTERY_THRESHOLD=${DOTMATRIX_BATTERY_THRESHOLD:-$((LP_BATTERY_THRESHOLD/2))} + DOTMATRIX_TEMP_THRESHOLD=${DOTMATRIX_TEMP_THRESHOLD:-$((LP_TEMP_THRESHOLD*2))} + # Use prefixed _LP_* variables, which are integers. + DOTMATRIX_LOAD_THRESHOLD=${DOTMATRIX_LOAD_THRESHOLD:-$((_LP_LOAD_THRESHOLD+(_LP_LOAD_CAP-_LP_LOAD_THRESHOLD)/2))} + + DOTMATRIX_MARK_ERROR=${DOTMATRIX_MARK_ERROR:-" "} # Sets of characters DOTMATRIX_VARIANT=${DOTMATRIX_VARIANT:-"dotmatrix"} @@ -310,6 +319,7 @@ _lp_dotmatrix_theme_prompt() { #################################################################### local has_notes=0 + local has_warns=0 __dotmatrix_make_sep_side "" side="${dotmatrix_sep}" @@ -320,23 +330,41 @@ _lp_dotmatrix_theme_prompt() { local battery= if _lp_battery_color ; then - __dotmatrix_make_field "$lp_battery" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} - battery="${dotmatrix_field}${LP_MARK_BATTERY}" - has_notes=$((has_notes+1)) + if [[ $lp_battery -le "$DOTMATRIX_BATTERY_THRESHOLD" ]]; then + __dotmatrix_make_field "$lp_battery" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + battery="${dotmatrix_field}${LP_MARK_BATTERY}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "$lp_battery" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} + battery="${dotmatrix_field}${LP_MARK_BATTERY}" + has_notes=$((has_notes+1)) + fi fi local load= if _lp_load_color ; then - __dotmatrix_make_field "$lp_load" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} - load="${dotmatrix_field}${LP_MARK_LOAD}" - has_notes=$((has_notes+1)) + if [[ $lp_load -ge "$DOTMATRIX_LOAD_THRESHOLD" ]]; then + __dotmatrix_make_field "$lp_load" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + load="${dotmatrix_field}${LP_MARK_LOAD}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "$lp_load" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} + load="${dotmatrix_field}${LP_MARK_LOAD}" + has_notes=$((has_notes+1)) + fi fi local temperature= if _lp_temperature_color ; then - __dotmatrix_make_field "$lp_temperature" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} - temperature="${dotmatrix_field}${LP_MARK_TEMP}" - has_notes=$((has_notes+1)) + if [[ $lp_temperature -ge "$DOTMATRIX_TEMP_THRESHOLD" ]]; then + __dotmatrix_make_field "$lp_temperature" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + temperature="${dotmatrix_field}${LP_MARK_TEMP}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "$lp_temperature" ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} + temperature="${dotmatrix_field}${LP_MARK_TEMP}" + has_notes=$((has_notes+1)) + fi fi __dotmatrix_make_sep_soft ${DOTMATRIX_COLOR_SEP_DARK[@]+"${DOTMATRIX_COLOR_SEP_DARK[@]}"} @@ -352,15 +380,19 @@ _lp_dotmatrix_theme_prompt() { fi # jobs: detached / running / stopped - __dotmatrix_make_sep_plug ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} - local djc_plug="${dotmatrix_sep}" local detached_sessions= if _lp_detached_sessions ; then if [[ -n "${lp_detached_sessions}" && "${lp_detached_sessions}" -gt 0 ]] ; then - __dotmatrix_make_field "${lp_detached_sessions}d" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} - detached_sessions="${dotmatrix_field}" - has_notes=$((has_notes+1)) + if [[ "${lp_detached_sessions}" -ge "${DOTMATRIX_DETACHED_THRESHOLD}" ]]; then + __dotmatrix_make_field "${lp_detached_sessions}d" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + detached_sessions="${dotmatrix_field}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "${lp_detached_sessions}d" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} + detached_sessions="${dotmatrix_field}" + has_notes=$((has_notes+1)) + fi fi fi @@ -368,18 +400,38 @@ _lp_dotmatrix_theme_prompt() { local stopped_jobs= if _lp_jobcount ; then if [[ -n "${lp_running_jobs}" && "${lp_running_jobs}" -gt 0 ]] ; then - __dotmatrix_make_field "${lp_running_jobs}&" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} - running_jobs="${dotmatrix_field}" - has_notes=$((has_notes+1)) + if [[ "${lp_running_jobs}" -ge "${DOTMATRIX_RUNNING_THRESHOLD}" ]]; then + __dotmatrix_make_field "${lp_running_jobs}&" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + running_jobs="${dotmatrix_field}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "${lp_running_jobs}&" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} + running_jobs="${dotmatrix_field}" + has_notes=$((has_notes+1)) + fi fi if [[ -n "${lp_stopped_jobs}" && "${lp_stopped_jobs}" -gt 0 ]] ; then - __dotmatrix_make_field "${lp_stopped_jobs}z" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} - stopped_jobs="${dotmatrix_field}" - has_notes=$((has_notes+1)) + if [[ "${lp_stopped_jobs}" -ge "${DOTMATRIX_STOPPED_THRESHOLD}" ]]; then + __dotmatrix_make_field "${lp_stopped_jobs}z" ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + stopped_jobs="${dotmatrix_field}" + has_warns=$((has_warns+1)) + else + __dotmatrix_make_field "${lp_stopped_jobs}z" ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} + stopped_jobs="${dotmatrix_field}" + has_notes=$((has_notes+1)) + fi fi fi + lp_terminal_format ${DOTMATRIX_COLOR_FAIR[@]+"${DOTMATRIX_COLOR_FAIR[@]}"} + if [[ $has_warns -gt 0 ]]; then + __dotmatrix_make_sep_plug ${DOTMATRIX_COLOR_WARN[@]+"${DOTMATRIX_COLOR_WARN[@]}"} + else + __dotmatrix_make_sep_plug ${DOTMATRIX_COLOR_NOTE[@]+"${DOTMATRIX_COLOR_NOTE[@]}"} + fi + local djc_plug="${dotmatrix_sep}" + __dotmatrix_make_sep_soft ${DOTMATRIX_COLOR_SEP_LITE[@]+"${DOTMATRIX_COLOR_SEP_LITE[@]}"} declare -a drs=($detached_sessions $running_jobs $stopped_jobs) if [[ ${#drs[@]} -gt 0 ]] ; then @@ -419,7 +471,7 @@ _lp_dotmatrix_theme_prompt() { lp_terminal_format ${DOTMATRIX_COLOR_DARK[@]+"${DOTMATRIX_COLOR_DARK[@]}"} fi - __dotmatrix_make_sep_last "$has_notes" + __dotmatrix_make_sep_last "$has_warns" "$has_notes" header+="$dotmatrix_sep" # Right-align the $side with spaces. @@ -1155,16 +1207,22 @@ __dotmatrix_make_sep_mid() { # color __dotmatrix_make_sep_last() { # no arg local lp_terminal_format - local has_notes="${1:-0}" - if [[ $has_notes -gt 0 ]] ; then - lp_terminal_format -3 -1 0 0 -3 -1 - dotmatrix_sep="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+0]}${NO_COL}" + local has_warns="${1:-0}" + local has_notes="${2:-0}" + lp_terminal_format -3 -1 0 0 -3 -1 + dotmatrix_sep="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+0]}${NO_COL}" + if [[ $has_warns -eq 0 && $has_notes -gt 0 ]] ; then # Use the background of COLOR_NOTE as a foreground here. lp_terminal_format ${DOTMATRIX_COLOR_NOTE[1]} dotmatrix_sep+="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+1]}${NO_COL}" else - lp_terminal_format -3 -1 0 0 -3 -1 - dotmatrix_sep="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+0]}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+1]}${NO_COL}" + if [[ $has_warns -gt 0 ]]; then + # Use the background of COLOR_WARN as a foreground here. + lp_terminal_format ${DOTMATRIX_COLOR_WARN[1]} + dotmatrix_sep+="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+1]}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+1]}${NO_COL}" + else + dotmatrix_sep="${lp_terminal_format}${DOTMATRIX_ENDS[_LP_FIRST_INDEX+0]}${NO_COL}" + fi fi } diff --git a/liquidprompt_dotmatrix_design.odt b/liquidprompt_dotmatrix_design.odt index 94b76934f4836555ac6b5d12b3ff333f17a7dc1d..e77809bcafaf9f8d9e2ba99d0302da4225fcce5a 100644 GIT binary patch delta 18356 zcmcG#WmFzfuQ2-HF2x;MDDLj=?)p&N-JQWH?(XgscXx`rySqbM3f#WuJ7?YVt^51t zPqLG&%w98Dlk6n>Eg2#!4+2G54hk9z1cC>F&}&o^P-LP0gW^9Y)2}{Bv{cmYJ z+kZ~C^{~tZB|F*&LUl~tj)ris4&NfC(AufvQ7yXUj3O)UkY8xgQt2wCXI3fNDnL^G2`_ z8pOAW*6Dl0D%x3-gdX)2L7V%~O?T%?Pw$z*QT*$>ZGXct1Hg{T(v@i=w53eqX8~M4 zwzW#xJX?94!^+iQwnoep(fdK40+#iX=i`-=p>43Jj1u!b=i5!AX+sz1Q7e_K9ggCR z*zw?0>QKi9ljf(aUiczBoDOp!+*3GyB=X@Ege%3+!jP%Od34J=^2SMmBtcYq81wLR z=x}tR7>T=0K+#kk32^X1&oxaa(Tb!Gnp^Fcdyf`!xH~6&=Rt9VYCF8^?MilwHE|8i zLnQb1`qg|PZe7;Kbx6FChT*ti*?QOc8hgUiuup0A{N`WVxP+fb&ohBIQ8@_yURW_t zKzD4~CR;`?1Pl{hk!esEpkbxiR=A9qv~hJV5)MHhZ#AaU zYC&p|a{>^O+e`j$&te^anxu#3*r=yezG*26Wvj;uhv7N#bk_1mZ;Ym;C~*P$d#*pl zEXDE65u{zJ`|)%O<4)Zw2tWU%DZ^#`N;t;8f-;UVi-O6?4AbskbLZ_g$TE>f4?w3W zt)#4`H>uQ2pFE&F#E~jbRhB(@cb~uOGf51kg{Hdqu(h_iJ3DJm0ln4kz3yA9va+r9 zOD|fL6&m)--r7-sOLOAa5AI`FjH;}nC6kHE4pBXOewXxK%bJF(ZiAiQiWg8Yw$WB* zZ*e-Mk8#30Rh!vhjh)2R99!H{U<7VUiX_96Zg2hf(eIt3?>i8A!yB#ooz(`H?N2Jv z51+*kO=crAvIDnwnMJVrOpiv&k)IFd5)?vRPz0j$zyC=_=w|zU5K=Mlcj>|x>J?2BbH2`9uPd7AmC}q zS2?(kR{+n?B+(f$VyKE0aN=YA8_t-OQZ;KEr--!#R56j7o`DldpO7WeUFffy>Wz7K zW~lO}$z+E^pbq2HyQ#)SEC2~n5LjMw8W>&!$672P${rSariPe^-*e*M!$a#!M??& z3iYa|hl~0Fb^P^?_m7F>>QR&@(m0CBuP+Wy^QL)SS3d8dRR;AhmFX>;n)8E5w)X5hXJ(*#Bu5Pg38o_f4(?_g`fJUNq|4fMA(@v8)rOdw_*lp zBIvdJgLr(4yJG__h1Ctd=Jl}@3@R7Z{v8=VemeH4D%*vQ!^^kuIPgd-mwsY1jM+r`eewA@veY`2b$B!Oy3Eccu8~@|eu@k%kSR71P`F^&#qx;#z-GP=C0c61*8G^#2X$m59)i zcc(c){j3GtGlh)YjLqX;L=m5MFOa25bE~tjvApw >e(A_Y2=6GE=$g$f%a-b=fX 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 ZmP1h#gFIX&uhS8q-0CmDcES}T0|4rhAs+w$ diff --git a/liquidprompt_dotmatrix_design.svg b/liquidprompt_dotmatrix_design.svg index b1eb1dc..4ce4f3f 100644 --- a/liquidprompt_dotmatrix_design.svg +++ b/liquidprompt_dotmatrix_design.svg @@ -4,9 +4,9 @@ + id="clipPath2076"> + id="path2074" /> + inkscape:cx="236.09984" + inkscape:cy="733.97616" + inkscape:current-layer="g2068" /> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + id="tspan602">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - + id="g606"> - - - - + id="tspan608"> - + id="g612"> ls -al + + + + id="tspan620">┃ + + + + git - ± + id="tspan634"> + id="tspan640">━ + + + + + + + + + + + + + + + + ± + id="g676"> + + + + id="tspan684"> + id="path688" /> + id="g690" /> + id="path692" /> + id="g694"> + + id="tspan696">➒ + id="path700" /> - - + id="g702" /> + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path704" /> + id="g706"> + id="tspan708"> + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path712" /> - - - + id="g714" /> + d="M 68.9,650.039 H 88.15 V 660.089 H 68.9 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path716" /> + id="g718"> - - - - - - - - - - main + id="tspan720">main + id="path724" /> + id="g726"> : + id="tspan728">: + id="path732" /> + id="g734"> feat + id="tspan736">feat + id="path740" /> + id="g742"> + id="tspan744">╱ - - v0.1 - - - + id="path748" /> + sodipodi:role="line" + id="tspan752">v0.1 + + id="g758" /> + + id="tspan762"> + + + + + + + + + + + + + + + id="path792" /> + id="g794"> + + + id="path800" /> + id="g802"> + + id="tspan804">- + id="path808" /> + id="g810"> + - - - - + id="tspan816">⑳ + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path820" /> + id="g822"> - - - - - - - - - - + id="tspan824"> + id="path828" /> + id="g830" /> + + + + + + + + + + + + + id="path856" /> + id="g858"> + id="tspan860">╱ + id="path864" /> + id="g866"> - - - - - - - - - - - - detached + id="tspan868">detached + id="path872" /> + id="g874"> + id="tspan876"> + id="path880" /> + id="g882" /> - - 20s - - - + id="path884" /> - - - - - - - 125 + id="tspan888">20s + + id="g894" /> + + id="tspan898"> - + id="g902"> + + + + + id="tspan912"> + + id="g918"> ├┘ └┬┘ ├┘└──┬──┘└─┬──┘└─┬┘└─┬─┘ ├┘└───┬───┘└┬┘└┬┘└───┬───┘ └┬─┘ └┬─┘ ├┘ + id="tspan920">125 + id="g924"> │ VCS push!│ │bookmark │ commit! │ stash │ head st. Runtime│ sudo + id="tspan926"> + itnet upstream branch tag diff untracked error - - - ssh - - - txt│ guest FQDN chroot shorten - - - ├┐┌┴┐┌──┴───┐ ┌────┴─────┐┌┴┐ ┌┴┐ - - - - - T + id="tspan934"> + id="g938" /> + + + + + + + + + +  + id="tspan960">── + id="g964"> + sodipodi:role="line" + id="tspan966">┘ └ - + id="g970"> + id="tspan972">─ + + + + + + - rycieos - - - - + id="tspan990">┘ - - - + id="g994"> host.fq.dn + id="tspan996">├┘ └┬┘ ├┘└──┬┘└─┬──┘└─┬┘└─┬─┘ ├┘└───┬───┘└┬┘└┬┘└───┬───┘└┬─┘ └─┬─┘ ├┘ last most + id="g1000"> │ VCS push!│ │bookmark │ commit! │ stash │ head st. Runtime │ sudo + + + itnet commits branch tag diff untracked error + + + ssh + + + txt│ guest FQDN chroot shorten + + + ├┐┌┴┐┌──┴───┐ ┌────┴─────┐┌┴┐ ┌┴┐ + + + + +  + id="tspan1036">T - - - - - - - - - - ~ + id="tspan1042"> - + id="g1046"> + id="tspan1048"> + d="M 24.1,538.939 H 28.85 V 548.989 H 24.1 Z" + style="fill:#333;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1052" /> + id="g1054"> code + id="tspan1056">█ + d="M 28.9,538.939 H 62.55 V 548.989 H 28.9 Z" + style="fill:#007ffe;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1060" /> + id="g1062"> + id="tspan1064">rycieos + d="M 62.6,538.939 H 67.35 V 548.989 H 62.6 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1068" /> + id="g1070"> + id="tspan1072"> + d="M 67.4,538.939 H 72.15 V 548.989 H 67.4 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1076" /> + id="g1078" /> + + + id="tspan1084">host.fq.dn - files + id="tspan1090">   + id="tspan1096"> + id="tspan1104">█ + - - + id="g1110" /> + - - - pyenv + id="tspan1116">~ + + id="g1122"> - - - ━━━━ + id="tspan1124">╱ + + + code + + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + id="tspan1140">╱ + sodipodi:role="line" + id="tspan1148">… + sodipodi:role="line" + id="tspan1156">╱ + sodipodi:role="line" + id="tspan1164">files - + id="g1168"> 1 + sodipodi:role="line" + id="tspan1170">  + + id="tspan1178">  - - - - └┬┘ - - - shell-level - - - Tag - - - │ telnet chroot + RO - - - ├┐┌─┴─┐ ┌─┴──┐ - - - - - T - - - + id="tspan1184">━ + + + + + pyenv + + + + + + ━━━━ + + + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + + + + + + + + +  - - - + id="tspan1238">█ + d="M 14.4,518.739 H 19.15 V 528.789 H 14.4 Z" + style="fill:#ffd800;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1242" /> + + 1 + + id="tspan1252"> - + id="g1256"> nojhan + id="tspan1258"> - + id="g1262" /> + + sodipodi:role="line" + id="tspan1266">└┬┘ - - - + id="g1270"> shell-level + + + Tag + + + │ telnet chroot + RO warning recall too much + + + ├┐┌─┴─┐ ┌─┴──┐ ┌┴┐ ┌─┴─┐ + + + + + host - - - - - -  + id="tspan1300">T - - - - + id="tspan1306"> - - + id="g1310"> +  + ~ + id="tspan1318"> + id="tspan1326">█ code + id="tspan1334">nojhan + id="tspan1342"> - - + id="g1348" /> + d="M 72.2,427.839 H 96.25 V 437.889 H 72.2 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1350" /> + id="g1352"> + id="tspan1354">host + + + - here + id="tspan1366">   - - - - - - 15:20:34 - - - GIT ━ - - - + id="tspan1372"> + + id="g1378"> + + + + + + devtoolset-8 + id="tspan1392">~ + + + + + - - - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + id="tspan1408">code + id="path1412" /> + id="g1414"> - - - - - - + sodipodi:role="line" + id="tspan1416">╱ + d="M 178.2,427.839 H 187.85 V 437.889 H 178.2 Z" + style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1420" /> + id="g1422"> + + + d="M 187.9,427.839 H 197.45 V 437.889 H 187.9 Z" + style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1428" /> + + + + + + here + + id="tspan1446"> - + id="g1450"> ± - - - - - - - - - - main - - - - -   + id="tspan1452"> - └┬┘ - + id="g1456" /> + id="g1458"> proxy - - - Generic example: - - - - X - - - + sodipodi:role="line" + id="tspan1460"> + id="path1464" /> + + + + + + + + 3d + + + + + + + + + + 15:20:34 + + + GIT ━ + + + + + + devtoolset-8 + + id="tspan1524"> - + id="g1528"> + sodipodi:role="line" + id="tspan1530">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + id="path1534" /> + id="g1536"> + id="tspan1538"> - - - + id="g1542"> + id="tspan1544"> - + id="g1548"> + id="tspan1550"> + d="M 17.6,407.639 H 22.35 V 417.689 H 17.6 Z" + style="fill:#ddd;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1554" /> + id="g1556" /> + + + + + + + id="tspan1570">± + d="M 36.9,407.639 H 41.65 V 417.689 H 36.9 Z" + style="fill:#ddd;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1574" /> + id="g1576"> + id="tspan1578"> + d="M 41.7,407.639 H 46.45 V 417.689 H 41.7 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1582" /> + id="g1584" /> + d="M 46.5,407.639 H 65.65 V 417.689 H 46.5 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1586" /> + id="g1588"> ~ + sodipodi:role="line" + id="tspan1590">main + d="M 65.7,407.639 H 70.45 V 417.689 H 65.7 Z" + style="fill:#d0d0d0;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1594" /> - + id="g1596" /> + id="tspan1600"> - + id="g1604"> code + id="tspan1606"> + d="M 80.1,407.639 H 84.85 V 417.689 H 80.1 Z" + style="fill:#ffd800;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1610" /> + id="g1612" /> + + + id="tspan1618">+ + d="M 89.7,407.639 H 97.65 V 417.689 H 89.7 Z" + style="fill:#ffd800;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1622" /> + id="g1624"> liquidprompt - - - + id="tspan1626">➁ + d="M 97.7,407.639 H 102.45 V 417.689 H 97.7 Z" + style="fill:#ffd800;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1630" /> + id="g1632"> + id="tspan1634">╱ + d="M 102.5,407.639 H 120.15 V 417.689 H 102.5 Z" + style="fill:#ffd800;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1638" /> + id="g1640"> theme + id="tspan1642">-⁺ + - + + + + id="tspan1658"> - + id="g1662"> dotmatrix + id="tspan1664">└┬┘ └───┬───┘ + id="g1668">   + id="tspan1670">proxy too much - - - + id="g1674"> 15:20:34 + id="tspan1676">Generic example: + ━━━━━━━━━━━━━━ + id="tspan1684">X ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + id="tspan1690">█ + id="tspan1698"> + id="tspan1706">█ + id="tspan1714"> - ± - + id="g1720" /> + + id="g1724"> + id="tspan1726"> + + id="tspan1734">█ - - + id="g1740"> - - - - - - - - - - - - dotmatrix + id="tspan1742">⌂ + d="M 48.1,326.839 H 52.85 V 336.889 H 48.1 Z" + style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1746" /> - + id="g1748"> + id="tspan1750"> + + id="g1756" /> + + + id="tspan1762">~ + d="M 62.5,326.839 H 67.25 V 336.889 H 62.5 Z" + style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path1766" /> + id="g1768" /> + + + + + + code + + + + + + + sodipodi:role="line" + id="tspan1798">liquidprompt + + + - - + + + + theme + + + + + + + + dotmatrix + + + + id="tspan1840"> + + +  + + +  + + + + + + + + + + 5d + + + + + + + + + + 15:20:34 + + + ━━━━━━━━━━━━━━ + + + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + + + + + + + + + + + + + + + ± + + + + + + + + + + + + + + + + + + + + + + + + dotmatrix + + + + + + + + + + + + + + + + + + + + + id="path2028" /> + id="g2030" /> + id="path2032" /> + id="g2034"> + id="tspan2036">✞ + id="g2040"> + id="tspan2042"> + id="g2046" /> + id="g2048">  + id="tspan2050"> + id="g2054"> + id="tspan2056"> + id="g2060"> ⚀⚁⚂⚃⚄⚅ + id="tspan2062">⚀⚁⚂⚃⚄⚅