diff --git a/deploy/pi-gen/stage-betterframe-client/01-install-kiosk/01-run-chroot.sh b/deploy/pi-gen/stage-betterframe-client/01-install-kiosk/01-run-chroot.sh index 782cfe6..9c0199d 100755 --- a/deploy/pi-gen/stage-betterframe-client/01-install-kiosk/01-run-chroot.sh +++ b/deploy/pi-gen/stage-betterframe-client/01-install-kiosk/01-run-chroot.sh @@ -106,47 +106,29 @@ plymouth-set-default-theme betterframe || true CURSOR_DIR=/usr/share/icons/betterframe-empty/cursors install -d -m 755 "$CURSOR_DIR" install -m 644 /tmp/bf-files/cursor.theme /usr/share/icons/betterframe-empty/cursor.theme -# Generate a 1x1 transparent X cursor for every standard cursor name. -# xcursorgen reads a config file and produces the binary Xcursor format. -# If xcursorgen is available (from x11-apps), use it; otherwise create -# a minimal raw Xcursor binary (header + 1px transparent image). -printf '1 0 0 /tmp/bf-transparent.png\n' > /tmp/bf-cursor.cfg -convert -size 1x1 xc:transparent /tmp/bf-transparent.png 2>/dev/null \ - || python3 -c " -import struct,sys -# Minimal 1x1 RGBA PNG -sys.stdout.buffer.write(b'\\x89PNG\\r\\n\\x1a\\n' + bytes([ - 0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,6,0,0,0,31,21,196,137, - 0,0,0,10,73,68,65,84,120,156,98,0,0,0,2,0,1,226,33,188,51, - 0,0,0,0,73,69,78,68,174,66,96,130])) -" > /tmp/bf-transparent.png -if command -v xcursorgen >/dev/null 2>&1; then - for name in default left_ptr arrow watch hand2 text xterm top_left_corner \ - top_right_corner bottom_left_corner bottom_right_corner sb_h_double_arrow \ - sb_v_double_arrow fleur crosshair question_arrow; do - xcursorgen /tmp/bf-cursor.cfg "$CURSOR_DIR/$name" 2>/dev/null || true - done -else - # Minimal Xcursor binary: magic + header + 1x1 ARGB image (4 bytes, all 0) - python3 -c " -import struct, sys, os -magic = b'Xcur' -header = struct.pack('/dev/null || true -fi -rm -f /tmp/bf-cursor.cfg /tmp/bf-transparent.png + 'fleur','crosshair','question_arrow','x_cursor','pirate', + 'sb_left_arrow','sb_right_arrow','sb_up_arrow','sb_down_arrow', + 'top_side','bottom_side','left_side','right_side']: + with open(os.path.join('$CURSOR_DIR', name), 'wb') as f: + f.write(data) +" # Set as system default cursor theme update-alternatives --install /usr/share/icons/default/index.theme x-cursor-theme \ /usr/share/icons/betterframe-empty/cursor.theme 100 2>/dev/null || true diff --git a/server/src/plugins/service-admin-http/routes-admin.ts b/server/src/plugins/service-admin-http/routes-admin.ts index bf3c822..4529262 100644 --- a/server/src/plugins/service-admin-http/routes-admin.ts +++ b/server/src/plugins/service-admin-http/routes-admin.ts @@ -1770,45 +1770,98 @@ export function registerAdminRoutes(app: H3, deps: AdminDeps): void { // WS auth: browser sends session cookie automatically on WS upgrade. // Coordinator WS endpoint validates via resolveSession. return htmlPage(`Terminal: ${kiosk.name} -
- ← ${kiosk.name} + ← ${kiosk.name} - - + + Disconnected
- +