feat: switch from ttyd to real kitty via Xpra HTML5

Replaced the tmux+ttyd web terminal with actual kitty running through
Xpra's HTML5 streaming. Full GPU rendering, native kitty tabs/splits,
persistent sessions, and multi-client support.
This commit is contained in:
Mortdecai
2026-03-26 18:32:12 -04:00
parent 94eb19aa76
commit 8f3f2cae4c
5 changed files with 170 additions and 206 deletions
+30
View File
@@ -0,0 +1,30 @@
[Unit]
Description=Kitty terminal via Xpra HTML5 (kitty.sethpc.xyz)
After=network.target
[Service]
Type=simple
User=rdp
Group=rdp
WorkingDirectory=/home/rdp
Environment=XDG_RUNTIME_DIR=/run/user/1002
ExecStart=/usr/bin/xpra start \
--bind-ws=0.0.0.0:7681 \
--start="kitty" \
--html=on \
--no-notifications \
--no-pulseaudio \
--no-mdns \
--no-printing \
--sharing=yes \
--readonly=no \
--no-daemon
ExecStop=/usr/bin/xpra stop :0
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
-29
View File
@@ -1,29 +0,0 @@
[Unit]
Description=ttyd web terminal (kitty.sethpc.xyz)
After=network.target
[Service]
Type=simple
User=rdp
Group=rdp
ExecStartPre=/bin/bash -c "/usr/bin/tmux kill-session -t kitty 2>/dev/null; sleep 0.5; /usr/bin/tmux new-session -d -s kitty -x 120 -y 40"
ExecStart=/usr/local/bin/ttyd \
--port 7681 \
--interface 0.0.0.0 \
--index /opt/ttyd/index-with-toolbar.html \
--writable \
--check-origin \
--max-clients 5 \
--ping-interval 30 \
--client-option titleFixed=sethpc.xyz \
--client-option fontSize=18 \
--client-option fontFamily=monospace \
--client-option enableSixel=true \
/usr/bin/tmux attach-session -t kitty
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target