English · Русский · Playground — try the whole thing with no router
A LuCI theme for OpenWrt 23.05 and newer. No framework, luci-base is the only dependency.
23.05 is supported and gated like the rest: the same live checks run on a 23.05 router before every release. The one thing that release does not have is
ui.RangeSlider(it arrived in 24.10), so the Appearance sliders are the theme's own there — same markup, same behaviour.
wget -qO- https://raw.githubusercontent.com/VizzleTF/luci-theme-footstrap/main/install.sh | shThe script adds its own package feed and installs from it. After that the theme upgrades with the
router: apk update && apk upgrade (or opkg). Running it again upgrades the theme and prints what
it did — installed, upgraded from which version, or already current.
raw.githubusercontent.com is rate-limited per address, so if it answers 429 (a shared exit, CGNAT),
the same script is attached to every release and served from a CDN with no such budget — signed, so
it can be checked before it is run:
wget -qO- https://github.com/VizzleTF/luci-theme-footstrap/releases/latest/download/install.sh | shThen pick Footstrap in System → System → Language and Style, field "Design".
- Styles every page, stock or not — but never overwrites what an app styles itself
- Works on a phone, and installs to its home screen — icon, own window, no address bar
- Faster than bootstrap — the numbers are below
- Upgrades with the router, from the package feed
- Twenty-one appearance axes, applied instantly, in one tab
Time to first paint, same router, same pages.
| Page | bootstrap | footstrap |
|---|---|---|
| Wireless status | 271 ms | 54 ms |
| Interfaces | 374 ms | 111 ms |
| DNS | 329 ms | 108 ms |
| Firewall zones | 311 ms | 79 ms |
| 38-page run | 11 306 ms | 4933 ms |
| Requests/page | 15–47 | 0–7 |
Median page 3.03× faster, the whole run 2.29×. Router CPU for the same tour: 37.3 s against 18.4 s. Measured on real hardware, five runs — method and full data in docs/benchmark.md.
Developer documentation is in docs/ — architecture, the design system, the stylesheet build, the SPA router, packaging, the release runbook. Start with architecture.md for what the theme is, or conventions.md for the rules a patch has to follow.
Writing a luci-app? Read
how to style it so it works under any theme, and paste your CSS
into the devkit — token grid, component markup,
style checker.
