Files
jasonwitty ce6acec299 v2 release prep: installer, README, packaging, notes; retire the v1 scripts
Installer rewritten around a preflight: distro, package manager, display
manager, window manager, terminal, tmux, cargo, git, screen locker, touch
device, device permissions and free disk are all checked BEFORE anything is
installed, and the total cost is printed once for a single confirmation.
Prompts read /dev/tty so they still work when the script is piped from curl,
and fall back to defaults with a notice when there is no terminal at all.

Several "[ test ] && action" statements were set -e landmines: under set -e an
AND-OR list that ends up false aborts the script, so a box with no lightdm, no
i3 or nothing to install would have exited silently partway through detection
-- which is exactly the fresh-Debian case the installer exists for. Rewritten
as if-statements and verified against a stripped PATH with no tmux, cargo, git
or package manager present. Also fixed cargo detection reporting blank instead
of NOT INSTALLED: the status of `cargo --version | cut` is cut's, and cut
succeeds on empty input, so the fallback never fired.

Device access now defaults to a udev rule matching touchscreens only, rather
than the input group, which grants access to every input device including the
keyboard and needs a full logout.

README rewritten for someone who has not seen the project: what the photo
shows, the hardware, install, then a config built up step by step, each step
with the YAML and the resulting map. Every example is verified verbatim
against the binary, and every relative link resolves. The mechanism and the
reasoning move to notes/: DESIGN.md, HARDWARE-NOTES.md, V1-BASH.md, TODO.md.

cad/README.md was a verbatim copy of the one inside
geeekpi_rack_adapter_release_v1/, so every path in it -- including the
screenshot -- was broken from where it sits. Corrected to its own level, and
it now states once that the 9-inch screen, the 10-inch mini-rack mount and the
19-inch rack are three different measurements.

The v1 shell implementation is removed; it stays recoverable at tag v1.2 and
notes/V1-BASH.md carries the setting-by-setting migration table.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 13:08:42 -07:00

2.4 KiB

What v1 was

v1 was three POSIX shell scripts plus a .env file, installed to /usr/local/bin. Tagged v1.2git show v1.2 has the whole thing, and it still works.

  • socktop-rack built a tmux session: one window per group, one pane per host.
  • socktop-swipe next|prev|down|up walked a linear carousel, re-deriving its position from tmux on every single invocation.
  • socktop-gestures wrapped lisgd with the right arguments and enforced a single instance.
  • config.env at /usr/local/etc/socktop-swipe.env held SOCKTOP_GROUPS, SOCKTOP_AUX_CMD, TOUCH_DEV and the gesture tuning.

It worked well for a year on the rack display. What made it worth replacing:

  • The layout was hard-coded as one line. Groups ran left to right and that was the only shape available. The swipe-down "aux screen" existed because there was nowhere else to put a second kind of monitor — a special case bolted on, not a position in a layout.
  • Every new monitor type was another special case. SOCKTOP_AUX_CMD is a single command with no type, no parameters and no room for a second one.
  • The navigation logic could not be tested. It lived in a shell script that queried a live tmux server, so the only way to check a change was to install it on the display and swipe.

Migration

There is no converter — deliberately, for a project with one known deployment. The mapping is direct:

v1 v2
SOCKTOP_GROUPS="a b ; c d @even-vertical" one type: socktop screen per group, at "0x0", "0x1", …, with socktop_group and layout
SOCKTOP_AUX_CMD="… uptime-kuma-status URL" a type: uptime-kuma-status screen at "1x0"
SOCKTOP_BIN binaries: socktop:
TOUCH_DEV touch.device
SCREEN_W / SCREEN_H touch.width / touch.height
SWIPE_THRESHOLD / SWIPE_LENIENCY touch.threshold / touch.leniency
FINGER_COUNTS="1 2 3" touch.fingers: [1, 2, 3]
GESTURE_IN / GESTURE_OUT gestures.forward / gestures.back
GESTURE_AUX_IN / GESTURE_AUX_OUT gestures.down / gestures.up
the X Option "Ignore" rule touch.grab: true
remain-on-exit the pane keep-alive wrapper (see DESIGN.md)

Run ./uninstall.sh from a v1 checkout first, or remove /usr/local/bin/socktop-{rack,swipe,gestures} and /usr/local/etc/socktop-swipe.env by hand.