Omarchy Server Edition
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 715 448" font-family="ui-monospace,'Cascadia Mono','DejaVu Sans Mono',Menlo,Consolas,monospace" font-size="13">
|
||||
<title>Omarchy Server login splash mockup</title>
|
||||
<rect x="1" y="1" width="713" height="446" rx="10" fill="#0e0e14" stroke="#414868" stroke-width="2"/>
|
||||
<text x="22" y="34.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="51.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7"> ▄▄▄</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="68.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7"> ▄█████▄ ▄███████████▄ ▄███████ ▄███████ ▄███████ ▄█ █▄ ▄█ █▄</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="85.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="102.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="119.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ▄███▄▄▄███ ▄███▄▄▄██▀ ███ ▄███▄▄▄███▄ ███▄▄▄███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="136.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ▀███▀▀▀███ ▀███▀▀▀▀ ███ ▀▀███▀▀▀███ ▀▀▀▀▀▀███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="153.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ███ ███ ██████████ ███ █▄ ███ ███ ▄██ ███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="170.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="187.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7"> ▀█████▀ ▀█ ███ █▀ ███ █▀ ███ ███ ███████▀ ███ █▀ ▀█████▀</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="204.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7"> ███ █▀</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="221.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="238.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#414868"> ══════════════════════════════════════════════════════════════════════════════════</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="255.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#bb9af7">OMARCHY SERVER</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#c0caf5">quattro</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#565f89">node </tspan><tspan fill="#c0caf5">«horizon»</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#c0caf5">10.0.0.7</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#c0caf5">tty1</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="272.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#414868"> ══════════════════════════════════════════════════════════════════════════════════</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="289.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="306.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">UPTIME </tspan><tspan fill="#a9b1d6">14d 03h</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">LOAD </tspan><tspan fill="#a9b1d6">0.12</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">MEM </tspan><tspan fill="#a9b1d6">3.1/32G</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">DISK </tspan><tspan fill="#a9b1d6">214G free</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">KERNEL </tspan><tspan fill="#a9b1d6">7.1.8-arch1</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="323.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="340.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#9ece6a">● </tspan><tspan fill="#a9b1d6">12 services up</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#9ece6a">● </tspan><tspan fill="#a9b1d6">4 containers up</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">▲ </tspan><tspan fill="#a9b1d6">2 updates ready</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#0db9d7">✓ </tspan><tspan fill="#a9b1d6">backup 22m ago</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="357.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="374.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">Last call: </tspan><tspan fill="#a9b1d6">Fri Aug 14 22:10 from 10.0.0.12</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#a9b1d6">3 callers today</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="391.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="408.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">Press </tspan><tspan fill="#e0af68">[ENTER]</tspan><tspan fill="#565f89"> for the main menu, </tspan><tspan fill="#e0af68">[SPACE]</tspan><tspan fill="#565f89"> to drop to a shell </tspan><tspan fill="#7aa2f7">▮</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="425.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.9 KiB |
@@ -0,0 +1,26 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 715 380" font-family="ui-monospace,'Cascadia Mono','DejaVu Sans Mono',Menlo,Consolas,monospace" font-size="13">
|
||||
<title>Omarchy Server BBS home menu mockup</title>
|
||||
<rect x="1" y="1" width="713" height="378" rx="10" fill="#0e0e14" stroke="#414868" stroke-width="2"/>
|
||||
<rect x="22.0" y="39.0" width="670.8" height="17.0" fill="#7aa2f7"/>
|
||||
<rect x="45.4" y="124.0" width="343.2" height="17.0" fill="#292e42"/>
|
||||
<text x="22" y="34.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="51.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#0e0e14"> OMARCHY SERVER ▪ MAIN MENU</tspan><tspan fill="#0e0e14"> </tspan><tspan fill="#0e0e14">node «horizon» ▪ 22:14 </tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="68.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="85.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">┌─ </tspan><tspan fill="#bb9af7">MAIN</tspan><tspan fill="#414868"> ─────────────────────────────────────┐</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">┌─ </tspan><tspan fill="#bb9af7">SYSTEM</tspan><tspan fill="#414868"> ─────────────────────────┐</tspan></text>
|
||||
<text x="22" y="102.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Host </tspan><tspan fill="#a9b1d6">horizon</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="119.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[S]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">STATUS</tspan><tspan fill="#565f89"> ........ </tspan><tspan fill="#a9b1d6">vitals ▪ btop</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Uptime </tspan><tspan fill="#a9b1d6">14d 03h</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="136.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[D]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">DOCKER</tspan><tspan fill="#565f89"> ........ </tspan><tspan fill="#a9b1d6">4 containers</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Load </tspan><tspan fill="#a9b1d6">0.12 0.09 0.04</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="153.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[V]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">SERVICES</tspan><tspan fill="#565f89"> ...... </tspan><tspan fill="#a9b1d6">12 running</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Memory </tspan><tspan fill="#7aa2f7">▓▓▓░░░░░░░</tspan><tspan fill="#a9b1d6"> 3.1/32G</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="170.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[U]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">UPDATE</tspan><tspan fill="#565f89"> ........ </tspan><tspan fill="#a9b1d6">2 available</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Disk </tspan><tspan fill="#7aa2f7">▓▓▓▓▓▓░░░░</tspan><tspan fill="#a9b1d6"> 214G free</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="187.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[L]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">LOGS</tspan><tspan fill="#565f89"> .......... </tspan><tspan fill="#a9b1d6">journal</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#565f89"> Net </tspan><tspan fill="#a9b1d6">10.0.0.7</tspan><tspan fill="#565f89"> ▪ </tspan><tspan fill="#9ece6a">ufw on</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="204.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[B]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">BACKUP</tspan><tspan fill="#565f89"> ........ </tspan><tspan fill="#a9b1d6">✓ 22 min ago</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">└──────────────────────────────────┘</tspan></text>
|
||||
<text x="22" y="221.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[N]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">NETWORK</tspan><tspan fill="#565f89"> ....... </tspan><tspan fill="#a9b1d6">firewall ▪ dns</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="238.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[T]</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">THEME</tspan><tspan fill="#565f89"> ......... </tspan><tspan fill="#a9b1d6">tokyo night</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">┌─ </tspan><tspan fill="#bb9af7">MOTD</tspan><tspan fill="#414868"> ───────────────────────────┐</tspan></text>
|
||||
<text x="22" y="255.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> Welcome back, sysop.</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="272.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[Q]</tspan><tspan fill="#c0caf5"> QUIT TO SHELL</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> 2 updates await your</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="289.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan><tspan fill="#a9b1d6"> leisure.</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">│</tspan></text>
|
||||
<text x="22" y="306.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">└────────────────────────────────────────────┘</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#414868">└──────────────────────────────────┘</tspan></text>
|
||||
<text x="22" y="323.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="340.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[↑↓]</tspan><tspan fill="#565f89"> select </tspan><tspan fill="#e0af68">[ENTER]</tspan><tspan fill="#565f89"> open </tspan><tspan fill="#e0af68">[hotkey]</tspan><tspan fill="#565f89"> jump </tspan><tspan fill="#e0af68">[Q]</tspan><tspan fill="#565f89"> shell</tspan><tspan fill="#565f89"> sysop@horizon ▪ node 1</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="357.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1,22 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 715 329" font-family="ui-monospace,'Cascadia Mono','DejaVu Sans Mono',Menlo,Consolas,monospace" font-size="13">
|
||||
<title>Omarchy Server update screen mockup</title>
|
||||
<rect x="1" y="1" width="713" height="327" rx="10" fill="#0e0e14" stroke="#414868" stroke-width="2"/>
|
||||
<rect x="22.0" y="39.0" width="670.8" height="17.0" fill="#7aa2f7"/>
|
||||
<text x="22" y="34.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="51.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#0e0e14"> OMARCHY SERVER ▪ UPDATE</tspan><tspan fill="#0e0e14"> </tspan><tspan fill="#0e0e14">node «horizon» ▪ 22:15 </tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="68.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="85.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">Synchronizing package databases</tspan><tspan fill="#565f89"> ............ </tspan><tspan fill="#9ece6a">done</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="102.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">Snapshot taken</tspan><tspan fill="#565f89"> ........................... </tspan><tspan fill="#0db9d7">pre-update 2026-08-16 22:15</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="119.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="136.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#c0caf5">4 packages to upgrade:</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="153.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="170.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">linux</tspan><tspan fill="#565f89"> 7.1.8 </tspan><tspan fill="#e0af68">→ 7.1.9</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">openssh</tspan><tspan fill="#565f89"> 10.0 </tspan><tspan fill="#e0af68">→ 10.1</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="187.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">restic</tspan><tspan fill="#565f89"> 0.18 </tspan><tspan fill="#e0af68">→ 0.19</tspan><tspan fill="#a9b1d6"> </tspan><tspan fill="#a9b1d6">caddy</tspan><tspan fill="#565f89"> 2.10 </tspan><tspan fill="#e0af68">→ 2.11</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="204.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="221.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#7aa2f7">▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░</tspan><tspan fill="#c0caf5"> 63%</tspan><tspan fill="#565f89"> downloading </tspan><tspan fill="#a9b1d6">linux-7.1.9</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="238.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="255.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#565f89">Reboot needed after this one — the kernel is in the batch.</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="272.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="289.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"> </tspan><tspan fill="#e0af68">[ENTER]</tspan><tspan fill="#565f89"> continue </tspan><tspan fill="#e0af68">[V]</tspan><tspan fill="#565f89"> view changelog </tspan><tspan fill="#e0af68">[ESC]</tspan><tspan fill="#565f89"> back to menu</tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
<text x="22" y="306.0" xml:space="preserve" textLength="670.8" lengthAdjust="spacingAndGlyphs"><tspan fill="#a9b1d6"></tspan><tspan fill="#a9b1d6"> </tspan></text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
@@ -0,0 +1,85 @@
|
||||
# Plan: Omarchy Server — a headless edition with a BBS front door
|
||||
|
||||
Revision 1.
|
||||
|
||||
## Problem
|
||||
|
||||
Omarchy's taste — opinionated defaults, a curated TUI toolbox, one-command updates with snapshots, themes everywhere — stops at the desktop. There is no story for the second machine most Omarchy users have: the home-lab box, the VPS, the closet server running Docker. Ubuntu has Server; Arch has a wiki and an afternoon of yak-shaving. People who want "Omarchy for servers" today either drag the entire Hyprland/GUI stack onto a headless machine or hand-strip it and lose the update pipeline.
|
||||
|
||||
And every server distro greets you the same dreary way: `Last login: ...` and a blinking cursor. A machine you *dial into* deserves a front door with character. Omarchy Server boots to a console, runs over SSH, and greets an interactive login like an old-school BBS: ANSI wordmark, node status, callers today, and a hotkey home menu that opens into the TUIs Omarchy already ships. The aesthetic isn't decoration bolted on — terminal-first is the whole product, so the terminal experience *is* the identity.
|
||||
|
||||
## Shape
|
||||
|
||||
A second edition built from this same repo — not a fork, not a mode toggle:
|
||||
|
||||
- No Hyprland, no Quickshell, no GUI packages. Boots to a getty on the console; SSH is the primary access and is on from first boot (key-only).
|
||||
- A curated server package set: the existing CLI (`omarchy ...`), the TUI toolbox (btop, lazygit, lazydocker, lazyjournal), Docker + compose, ufw, snapper snapshots, the same update/migration pipeline. The backup plan (`plans/backup.md`) applies minus the shell panel; the dots plan (`plans/dots.md`) gets its best use case — syncing your configs between desktop and server.
|
||||
- The BBS layer: a themed pre-login `/etc/issue`, a login splash, and a home menu (`omarchy-server-menu`) that works like a BBS door system — pick an entry, the tool takes the full screen, quitting it drops you back at the menu. `[Q]` is always a real shell.
|
||||
|
||||
## Rejected approaches
|
||||
|
||||
- **A fork repo**: permanent drift; every bin/ fix would need double maintenance. The dots plan's reasoning against wrapping third-party tools applies to wrapping ourselves.
|
||||
- **A web admin panel** (Cockpit and friends): a second attack surface listening on a port, a second UI toolkit to theme, and not Omarchy's soul. The terminal is the product; SSH is the transport we already secured.
|
||||
- **"Server mode" toggle on an installed desktop**: uninstalling a GUI stack in place is a migration minefield in both directions. Edition is chosen at install time; changing your mind is a reinstall (dots + backup make that cheap).
|
||||
- **A compiled TUI framework** (bubbletea, ratatui) for the menu: a new toolchain for v1's needs. The repo's idiom is bash + gum, which is already themeable and already everywhere; revisit only if the menu outgrows it.
|
||||
- **archinstall server profile**: Omarchy has its own installer and offline mirror; the edition is a package-set and provisioning variant of that pipeline, not a different installer.
|
||||
|
||||
## What it looks like
|
||||
|
||||
Mockups, generated from the repo's own `logo.txt` wordmark and the tokyo-night `colors.toml` — every theme restyles all three screens.
|
||||
|
||||
The login splash — pre-menu, both on the console and over SSH:
|
||||
|
||||

|
||||
|
||||
The home menu — hotkeys on the left, live vitals and MOTD on the right; every entry opens an existing Omarchy TUI or command as a full-screen "door" and returns here on exit:
|
||||
|
||||

|
||||
|
||||
A door in action — `[U]` runs the standard `omarchy-update` pipeline, snapshot first, in BBS dress:
|
||||
|
||||

|
||||
|
||||
## Design
|
||||
|
||||
### Edition mechanics
|
||||
|
||||
- The installer writes the edition (e.g. `/etc/omarchy-edition`), read by a new `omarchy-edition` helper with quiet predicates in the `hw-` tradition (`omarchy-edition-server`, exit-code interface) so scripts and migrations can gate.
|
||||
- `install/omarchy-server.packages` is a hand-curated subset of `omarchy-base.packages` — subtraction, not a parallel list that drifts: keep the CLI, TUIs, docker, networking, security, and theming plumbing; drop compositor, shell, GUI apps, audio/bluetooth/printing stacks, fonts beyond the console.
|
||||
- Migrations and refresh commands that touch GUI surfaces gate on edition; everything else (pacman, snapper, CLI, themes' terminal side) runs identically. One update pipeline, two editions.
|
||||
|
||||
### First boot
|
||||
|
||||
The existing provisioning flow, server flavor: hostname, user, then straight into `omarchy-setup-security-sshd --gh-keys <user>` (the unattended path already exists), ufw enabled with rate-limited SSH, password authentication off, optional Tailscale, optional static IP. The machine is reachable and safe before the first login greeting ever renders.
|
||||
|
||||
### The BBS front door
|
||||
|
||||
- **Pre-login**: a themed `/etc/issue` — compact logo, hostname, IP — so even the getty says who's answering.
|
||||
- **Greeting**: interactive login shells (tty or ssh-with-pty only — never scp/sftp/rsync/exec sessions, never non-interactive shells, never inside tmux attach) run the splash: wordmark, edition/host/node line, vitals, service/container/update/backup counts, last call and callers today (from wtmp), then ENTER for the menu or any other key for a shell. `omarchy server greet <splash|menu|off>` sets whether login lands on the splash, jumps straight to the menu, or skips it all — per-user state, instant to change, and the greeting must never block a slow machine's login (vitals gather with a hard timeout; the menu renders with stale counts rather than making you wait).
|
||||
- **Menu**: `omarchy-server-menu`, bash + gum. Entries route to what already exists — Status → btop, Docker → lazydocker, Services → a gum-driven systemctl list, Update → `omarchy-update`, Logs → lazyjournal, Backup → the backup plan's CLI status/actions, Network → ufw + interface status, Theme → `omarchy-theme-set`, Quit → shell. The menu is a launcher with a status pane, not a reimplementation of any tool.
|
||||
- **Flavor, tasteful and default-on**: node number (session count), callers today, sysop framing, MOTD from `~/.config/omarchy/motd`. All output degrades to ASCII-and-16-colors when `TERM=linux` or the terminal can't do better; the art never breaks a dumb terminal.
|
||||
|
||||
### Theming
|
||||
|
||||
`themes/*/colors.toml` already defines everything the three screens need. A small bridge renders a theme into ANSI/truecolor escape palettes consumed by the splash, menu, and issue file; `omarchy-theme-set` on server applies the terminal-side targets it already knows (btop, starship, bat) plus the BBS palette. Switching themes restyles the whole front door — the mockups above are just tokyo-night.
|
||||
|
||||
### Relationship to the other plans
|
||||
|
||||
- **backup**: same engine, CLI, timer, and state file; the panel's job is done by the menu's Backup entry and the splash's status line. The plan's systemd user units run fine in a lingering or logged-in server session; server enables lingering so timers fire without an interactive login.
|
||||
- **dots**: push your desktop's configs, pull them on the server — the multi-machine sync design's second machine is exactly this box.
|
||||
|
||||
## Rollout
|
||||
|
||||
- Phase 1 (this repo): `omarchy-edition` + predicates, `install/omarchy-server.packages`, edition gating in migrations/refresh commands, `omarchy-server-menu` + greeting + issue generation, theme bridge, `server` group in `GROUP_DESCRIPTIONS`.
|
||||
- Phase 2 (coordinated): ISO/installer work in the ISO pipeline repo — a Server choice at install (or a separate slim ISO; open question), provisioning flow, offline mirror subset.
|
||||
- Docs: a manual section for Omarchy Server (install, first boot, the menu, greet settings, headless conventions); `docs/` reference for edition gating so future migrations know the rule.
|
||||
- Tests: greeting guards are the safety-critical bit — shell.d tests that non-interactive shells, scp/sftp, and `ssh host command` never see the menu; menu routing smoke tests; edition-predicate tests; CLI metadata via `omarchy commands --check`. Visual checks of splash/menu on a real console and over ssh per the visual-verification skill's spirit, adapted to a VM TTY.
|
||||
|
||||
## Open questions
|
||||
|
||||
1. One ISO with a Server install type vs a separate slim server ISO — the offline mirror for the desktop edition is large, and a server ISO could be a fraction of it.
|
||||
2. Default server software beyond Docker: ship a web server (caddy) and let Install > Service grow server entries, or keep the base truly minimal and make everything opt-in?
|
||||
3. Whether the splash-vs-menu-vs-off default should differ for console vs SSH logins (console boxes are often headless appliances; SSH is where the BBS lands).
|
||||
4. Console glyph strategy on `TERM=linux`: ship a PSF console font with box-drawing coverage, or lean entirely on the ASCII fallback?
|
||||
5. Does the desktop edition get the menu as `omarchy bbs` — an easter egg that doubles as the demo?
|
||||
6. Naming: "Omarchy Server" is the descriptor; is there appetite for a BBS-flavored brand on the greeting itself ("Omarchy BBS — est. 2025"), or does that overcook it?
|
||||
Reference in New Issue
Block a user