first commit
This commit is contained in:
46
run.sh
Executable file
46
run.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
# run.sh — build, ensure the keyboard is accessible, and launch the web editor.
|
||||
#
|
||||
# On the first run it asks for your doas password once to install a udev rule
|
||||
# (and fix the current device node). After that, access is persistent and no
|
||||
# password is needed. Pass extra flags through to hhkb-web, e.g. ./run.sh -open=false
|
||||
set -u
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "[1/3] building hhkb-web…"
|
||||
go build -o hhkb-web ./cmd/hhkb-web || { echo "build failed"; exit 1; }
|
||||
|
||||
# Locate the HHKB (USB vendor 04fe) hidraw nodes.
|
||||
node=""
|
||||
for n in /dev/hidraw*; do
|
||||
[ -e "$n" ] || continue
|
||||
if grep -q 000004FE "/sys/class/hidraw/${n##*/}/device/uevent" 2>/dev/null; then
|
||||
node="$n"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$node" ]; then
|
||||
echo "[2/3] no HHKB detected (is it plugged in?) — starting anyway."
|
||||
elif [ -r "$node" ] && [ -w "$node" ]; then
|
||||
echo "[2/3] keyboard already accessible — no password needed."
|
||||
else
|
||||
echo "[2/3] granting access (doas password needed once)…"
|
||||
doas sh -c '
|
||||
mkdir -p /etc/udev/rules.d
|
||||
printf "%s\n" "KERNEL==\"hidraw*\", ATTRS{idVendor}==\"04fe\", MODE=\"0660\", GROUP=\"input\"" \
|
||||
> /etc/udev/rules.d/70-hhkb.rules
|
||||
udevadm control --reload-rules
|
||||
udevadm trigger
|
||||
for n in /dev/hidraw*; do
|
||||
grep -q 000004FE "/sys/class/hidraw/${n##*/}/device/uevent" 2>/dev/null \
|
||||
&& chgrp input "$n" && chmod g+rw "$n"
|
||||
done
|
||||
true
|
||||
' && echo " done — rule installed, future runs need no password." \
|
||||
|| echo " setup failed; the editor will show the access banner."
|
||||
fi
|
||||
|
||||
pkill -x hhkb-web 2>/dev/null || true # stop any previous instance so the new build is served
|
||||
echo "[3/3] http://127.0.0.1:8080"
|
||||
exec ./hhkb-web "$@"
|
||||
Reference in New Issue
Block a user