Compare commits

..

3 Commits

Author SHA1 Message Date
Chris Wanstrath
30b76c5ff6 ignore bundle.js in searches 2025-10-02 13:00:21 -07:00
Chris Wanstrath
2a73d5630b focus when ready 2025-10-02 13:00:07 -07:00
Chris Wanstrath
c5eabe4a4d silence install script 2025-10-02 12:56:57 -07:00
4 changed files with 32 additions and 22 deletions

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"search.exclude": {
"**/node_modules": true,
"**/bundle.js": true
}
}

View File

@ -5,6 +5,8 @@
set -euo pipefail
quiet() { "$@" > /dev/null 2>&1; }
SERVICE_NAME="nose-pluto"
SERVICE_FILE="$(dirname "$0")/${SERVICE_NAME}.service"
SYSTEMD_PATH="/etc/systemd/system/${SERVICE_NAME}.service"
@ -12,20 +14,20 @@ BUN_SYMLINK="/usr/local/bin/bun"
BUN_REAL="$HOME/.bun/bin/bun"
echo ">> Updating system libraries"
sudo apt-get update
sudo apt-get install -y libcap2-bin
sudo apt-get install -y avahi-utils
quiet sudo apt-get update
quiet sudo apt-get install -y libcap2-bin
quiet sudo apt-get install -y avahi-utils
echo ">> Ensuring bun is available in /usr/local/bin"
if [ ! -x "$BUN_SYMLINK" ]; then
if [ -x "$BUN_REAL" ]; then
sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
quiet sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
echo "Symlinked $BUN_REAL -> $BUN_SYMLINK"
else
echo ">> Installing bun at $BUN_REAL"
sudo apt install unzip
curl -fsSL https://bun.com/install | bash
sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
quiet sudo apt install unzip
quiet curl -fsSL https://bun.com/install | bash
quiet sudo ln -sf "$BUN_REAL" "$BUN_SYMLINK"
echo "Symlinked $BUN_REAL -> $BUN_SYMLINK"
fi
else
@ -33,34 +35,34 @@ else
fi
echo ">> Setting CAP_NET_BIND_SERVICE on $BUN_REAL"
sudo setcap 'cap_net_bind_service=+ep' "$BUN_REAL"
/usr/sbin/getcap "$BUN_REAL" || true
quiet sudo setcap 'cap_net_bind_service=+ep' "$BUN_REAL"
quiet /usr/sbin/getcap "$BUN_REAL" || true
echo ">> Installing systemd unit to $SYSTEMD_PATH"
sudo cp "$SERVICE_FILE" "$SYSTEMD_PATH"
sudo chown root:root "$SYSTEMD_PATH"
sudo chmod 644 "$SYSTEMD_PATH"
quiet sudo cp "$SERVICE_FILE" "$SYSTEMD_PATH"
quiet sudo chown root:root "$SYSTEMD_PATH"
quiet sudo chmod 644 "$SYSTEMD_PATH"
echo ">> Reloading systemd daemon"
sudo systemctl daemon-reload
quiet sudo systemctl daemon-reload
echo ">> Enabling $SERVICE_NAME to start at boot"
sudo systemctl enable "$SERVICE_NAME"
quiet sudo systemctl enable "$SERVICE_NAME"
echo ">> Starting (or restarting) $SERVICE_NAME"
sudo systemctl restart "$SERVICE_NAME"
quiet sudo systemctl restart "$SERVICE_NAME"
echo ">> Giving NOSE reboot access"
echo "nose ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/sbin/reboot" | sudo tee /etc/sudoers.d/nose-reboot
sudo chmod 440 /etc/sudoers.d/nose-reboot
echo "nose ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/sbin/reboot" | sudo tee /etc/sudoers.d/nose-reboot > /dev/null
quiet sudo chmod 440 /etc/sudoers.d/nose-reboot
echo ">> Enabling kiosk mode"
mkdir -p ~/.config/labwc
quiet mkdir -p ~/.config/labwc
cat > ~/.config/labwc/autostart <<'EOF'
chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost
EOF
echo ">> Done! Rebooting!"
systemctl status "$SERVICE_NAME" --no-pager -l
sudo nohup reboot >/dev/null 2>&1 &
exit 0
quiet systemctl status "$SERVICE_NAME" --no-pager -l
quiet sudo nohup reboot >/dev/null 2>&1 &
exit 0

View File

@ -7,6 +7,7 @@ import { resize } from "./resize"
import { autoScroll } from "./scrollback"
import { sessionId } from "./session"
import { send } from "./websocket"
import { focusInput } from "./focus"
export const commands: string[] = []
@ -27,6 +28,7 @@ export const browserCommands: Record<string, (...args: string[]) => void | Promi
document.body.dataset.mode = mode
resize()
autoScroll()
focusInput()
},
reload: () => window.location.reload(),
}

View File

@ -5,7 +5,7 @@ import { cmdInput } from "./dom"
export function initFocus() {
window.addEventListener("click", focusHandler)
setTimeout(() => focusInput(), 10)
focusInput()
}
export function focusInput() {