All checks were successful
CI / lint (pull_request) Successful in 30s
CI / validate-json (pull_request) Successful in 24s
CI / markdown-links (pull_request) Successful in 16s
CI / test (pull_request) Successful in 1m47s
CI / lint (push) Successful in 28s
CI / test (push) Successful in 1m56s
CI / validate-json (push) Successful in 24s
CI / markdown-links (push) Successful in 21s
Deploy site / deploy (push) Successful in 5s
Build ISO / build-iso (push) Successful in 20m27s
The logo vote on furtka.org closed with M 29 · R 13 (42 votes). - website/tools/brand-assets.py generates every brand file from the logo-assets.py geometry: favicons (small-size tier, accent with a dark-mode variant) for website / webinstaller / on-box UI, 180 px apple-touch-icon, 1200x630 default share card, 640x480 syslinux splash, and docs/brand/ (mark, small mark, lockups, 20-column console art) - website: header mark, favicon, touch icon, default og:image; /logo/ now shows the final result (static counts, winner highlighted, no voting UI or poll.js); homepage link reads 'meet our new logo' - webinstaller: M in the header + tab icon - on-box UI: .brand mark via CSS mask in brand red (not the UI's green), favicon on every page, brand line on the login page - console: M art above the text of /etc/issue on the installed box (furtka-welcome) and the live ISO (furtka-update-issue) - ISO: build.sh swaps releng's Arch splash for the Furtka one - README shows the lockup Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wq1hzUp4ZmCKHDuLKCnu73
54 lines
2.2 KiB
Bash
Executable file
54 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Regenerates /etc/issue so the live-ISO console tells the user which URL
|
|
# to open in their browser. Shows proksi.local (via avahi/mDNS) as the
|
|
# preferred URL and the raw IP as a fallback for networks where mDNS
|
|
# doesn't work.
|
|
#
|
|
# Runs at boot and then every few seconds from furtka-issue.timer, so the
|
|
# fallback line is *always* on screen: with the address once DHCP has
|
|
# handed one out, or with a "no IP yet" hint before that / when the cable
|
|
# is unplugged. Only rewrites + nudges agetty when the text actually
|
|
# changed, so the login prompt doesn't flicker on every tick.
|
|
set -u
|
|
|
|
issue=/etc/issue
|
|
|
|
mapfile -t ips < <(ip -4 -o addr show scope global 2>/dev/null | awk '{print $4}' | cut -d/ -f1)
|
|
|
|
new=$(
|
|
# Furtka mark (docs/brand/console-banner.txt, from brand-assets.py)
|
|
echo ' ▄▄▄▄▄▄▄▄'
|
|
echo ' ▄██████████▄'
|
|
echo ' █████▀▀▀▀▀▀███'
|
|
echo ' ████▀ ████'
|
|
echo ' ████ █████████'
|
|
echo ' ████ ████'
|
|
echo ' ████ ▄▄▄▄▄████'
|
|
echo ' ████ █████████'
|
|
echo ' ████ █████████'
|
|
echo ' ▀▀▀▀ ▀▀▀▀▀▀▀▀▀'
|
|
echo
|
|
echo " Open Furtka in a browser on another device on your network:"
|
|
echo
|
|
echo " http://proksi.local:5000 (easy — try this first)"
|
|
if ((${#ips[@]})); then
|
|
for ip in "${ips[@]}"; do
|
|
echo " http://${ip}:5000 (fallback if the first doesn't work)"
|
|
done
|
|
else
|
|
echo " (fallback: no IP address yet — waiting for the network."
|
|
echo " Check the cable / DHCP. This line updates by itself.)"
|
|
fi
|
|
echo
|
|
echo " Then follow the wizard to install Furtka on this machine."
|
|
echo " The install downloads packages, so this machine needs a network"
|
|
echo " cable with internet access. Wi-Fi is not set up automatically."
|
|
echo
|
|
echo " Need a shell? Log in as root (no password)."
|
|
echo
|
|
)
|
|
|
|
if [ "$new" != "$(cat "$issue" 2>/dev/null)" ]; then
|
|
printf '%s\n' "$new" > "$issue"
|
|
agetty --reload 2>/dev/null || true
|
|
fi
|