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 94b7693..e77809b 100644 Binary files a/liquidprompt_dotmatrix_design.odt and b/liquidprompt_dotmatrix_design.odt differ 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">⚀⚁⚂⚃⚄⚅