Open-source project
thinktip/luci-theme-neobird avatar
thinktip/luci-theme-neobird

luci-theme-neobird: a phone-first LuCI theme for the lede fork

一个专门针对移动端优化的OpenWRT主题,基于luci-theme-material,全新的登录界面,沉浸式Webapp体验。

546 stars108 forksCSSApache-2.0

At a glance

What is it?
Neobird is a LuCI theme for Lean's OpenWrt fork, created by restyling the upstream theme into an Advancedtomato look with a bottom navigation bar, a simplified mobile layout, dark mode support and a home screen icon. The author is candid about its limits, since some plugin pages need the LuCI source itself to look right.
Who is it for?
luci-theme-neobird suits someone who runs OpenWrt as a bypass router and reaches it from a phone, since the theme is built around that case rather than around a desktop administration session. It does not suit you if you need plugin pages to render perfectly, because the theme is only styles and templates and cannot change the page structure that lives in the LuCI source, and it does not suit a commercial deployment while the Arlo logo is in place.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 173 days ago.
What is it written in?
Mainly CSS, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A theme built by someone who kept changing it

Neobird is a LuCI theme for OpenWrt, and the story of where it comes from is written in the README in the author's own words.

Six years ago, while using OpenWrt as a main router, the author took the luci-theme-material theme and restyled it into a look they preferred, an Advancedtomato style. They stopped using it as a main router after a short time and left the theme alone. Later, the lede firmware adopted a modified version of that theme as its default, and the author says both today's luci-theme-netgear and luci-theme-argon came from that same idea, though neither is a shape they actually liked. Other themes such as luci-theme-atmaterial were also derived from their stylesheet at the time, and some of them still exist in certain firmware images.

Then, more recently, the author started using OpenWrt as a bypass router again, changed the styling once more, grabbed a logo, a Netgear Arlo one, gave the result a name, and compiled it.

That history explains a lot about the theme. It is a personal restyling of a well known upstream theme rather than a ground-up design, it is aimed at the lede fork rather than at OpenWrt generally, and the author is explicit that it is for Lean's OpenWrt only, with the lede repository linked as the target.

The repository is Apache-2.0 licensed, the primary language is recorded as CSS, and the last push was on 2026-05-04. The tagged releases stop at v1.99 in January 2022, which tells you the compiled packages have not been rebuilt since, even though the source has moved on.

What the theme actually changes

The feature list is short and mobile-first, which is the point of the project.

It is optimised specifically for mobile, which suits using it on a phone as a web app. The author has modified many details in an attempt to keep the visuals consistent, with the honest caveat that because LuCI plugin development is not standardised, the page structure is messy in places and some small problems cannot be fixed.

The design is deliberately minimal, stripping complexity from the mobile side and hiding hints, with the warning that this may not suit a beginner, and suggesting the hint text be read with the phone turned sideways. There is a simple login screen, a bottom navigation bar, and an app-like immersive experience. It adapts to dark mode and follows the system switch automatically. There is a brand new app icon for the home screen shortcut, and the images are adapted for Retina displays.

The theme is not a reimplementation of LuCI. It is a stylesheet and a set of templates over the existing LuCI structure, which is why the same page-structure problem comes up with third party plugins.

The preview section in the README carries six screenshots, three labelled macOS and three labelled iOS, which gives a reasonable sense of the desktop appearance and the phone appearance side by side.

Getting the immersive mode, and the SSL catch

There is a short section on using it as a web app, and it is the part a reader who wants the app-like experience needs.

On mobile, iOS or iPadOS, you open the management interface in the browser and add it to the home screen. That is the whole of it for the basic case, and it gives you the home screen icon and the standalone layout.

For a fully immersive experience, with no browser navigation and no address bar, you need an SSL certificate, and the instruction is to apply for your own domain and certificate, install it and enable it. The reason for that requirement is stated plainly: without an SSL certificate, iOS and iPadOS will show the browser's top menu bar after opening a new page, for security reasons.

That is the sort of platform detail that decides whether a theme feels like an app or feels like a web page in a frame, and it is not something the theme can fix on its own.

The method is worth noting because it is a different mechanism from the bottom navigation bar and the hidden hints. The bottom bar and the simplified layout are CSS and template work. The immersive chrome comes from the platform treating the page as an installed application, and the platform's condition for that is a secure origin.

The known problems, stated by the author

There is a section on the current problems, and it is more useful than a feature list because it tells you where the theme will not work.

The first is about plugins. When used as a bypass router there are fewer plugins installed and fewer interfaces available, and where some images are not visible the author says they were too lazy to swap them and might change them in the future.

The second is the structural one, and it is the important caveat. Some plugins or pages cannot be made perfect with a stylesheet alone, because fixing them properly requires changing the underlying page structure, and that structure lives in the LuCI source rather than in the theme.

That is the fundamental limit of a theme, and it is stated rather than glossed. A stylesheet can change how a page looks and how it behaves in a browser, but it cannot add or remove the markup that a plugin's page is built from. The theme therefore works best on the pages LuCI itself generates and on plugins whose markup follows the same conventions.

The section on other things carries a request that is worth quoting in spirit: you are free to modify it for your own use or keep optimising and sharing it, but if you want to share an improved version, please confirm your own aesthetic judgement repeatedly, to be sure you are not making a mess of the result.

There is also a usage restriction, and it is a real one. The logo is taken from Arlo, so it must not be used for commercial purposes, and the author notes they may change the logo at some point in the future. And the last line is a blanket disclaimer: there are many LuCI plugins, non-standard plugins may display badly, and no guarantee is made.

Compiling it, and the package structure it produces

The project documents how to build the theme yourself, into the lede tree:

code
cd lede/package/lean  
rm -rf luci-theme-neobird  
git clone https://github.com/thinktip/luci-theme-neobird.git  
cd ~/lede/
make menuconfig #choose LUCI->Theme->Luci-theme-neobird  
make -j1 V=s

The sequence is to move into the lean package directory of a lede checkout, remove any previous copy of the theme, clone this repository over it, return to the lede root, select the theme through the configuration menu under LUCI, then Theme, then Luci-theme-neobird, and finally build. The build uses make with a single job and verbose output, which is the usual combination when you want to see what went wrong.

The repository is a LuCI theme package, and the top level shows the expected structure: a Makefile, an htdocs directory for the web assets, a luasrc directory for the Lua templates, a preview directory holding the screenshots, and a root directory for the files installed into the device. There is also a .gitignore and the LICENSE file.

The Makefile is the standard OpenWrt package recipe. It includes the top-level rules file and the LuCI package macro, which is what tells the build system how to install the theme into the firmware image and how to produce the ipk package. The two header comments carry the GNU General Public License notice, which is the standard text that the LuCI build tooling expects at the top of a package Makefile.

The package metadata then sets the pieces the build system reads:

code
include $(TOPDIR)/rules.mk

LUCI_TITLE:=Neobird Theme
LUCI_DEPENDS:=
PKG_VERSION:=2.0
PKG_RELEASE:=202202260758

include $(TOPDIR)/feeds/luci/luci.mk

# call BuildPackage - OpenWrt buildroot signature

The title is what appears in the package list, the version is 2.0, and the release string is a timestamp rather than a number, which is the OpenWrt convention so that every build produces a distinct package name. The LUCI_DEPENDS line is empty, meaning the theme depends on nothing else, which is what you would expect of something that is only styles and templates.

The comment above the LuCI include says it is the call to BuildPackage, the OpenWrt buildroot signature, and that is the point at which the package is actually created. The release tags show what that produces: files named luci-theme-neobird with the version and release appended and the all architecture suffix, so luci-theme-neobird_1.99-202201272020_all.ipk.

Editorial conclusion

luci-theme-neobird suits someone who runs OpenWrt as a bypass router and reaches it from a phone, since the theme is built around that case rather than around a desktop administration session. It does not suit you if you need plugin pages to render perfectly, because the theme is only styles and templates and cannot change the page structure that lives in the LuCI source, and it does not suit a commercial deployment while the Arlo logo is in place. Before you build it, note the release history stops at v1.99 from January 2022 while the source tree has moved on since, so the compiled package you produce will not match the tags, and read the limitations section first because the plugin caveat is the one that decides whether the theme is usable for your setup.

Frequently asked questions

What is luci-theme-neobird and what is it based on?

It is a LuCI theme for OpenWrt, created by restyling luci-theme-material in an Advancedtomato style. It is aimed at Lean's OpenWrt, the lede fork, rather than at OpenWrt in general, and the author credits the same styling idea behind luci-theme-netgear and luci-theme-argon.

How do I get the app-like immersive experience on iOS and iPadOS?

Open the management interface in the browser and add it to the home screen. For a fully immersive experience with no browser navigation and no address bar you also need an SSL certificate, applying for your own domain and certificate and enabling it, because without one iOS and iPadOS show the browser's top menu bar after opening a new page for security reasons.

What are the known limitations of luci-theme-neobird?

Some plugins and pages cannot be made to look right with a stylesheet alone, because fixing them requires changing the underlying page structure, which lives in the LuCI source rather than in the theme. When used as a bypass router there are fewer plugins and interfaces, and some images are missing. The author also notes that non-standard plugins may display badly and makes no guarantee, and that the Arlo logo must not be used commercially.

How do I compile luci-theme-neobird myself?

In a lede checkout, move into package/lean, remove any previous luci-theme-neobird directory, clone this repository over it, return to the lede root, select the theme under LUCI, Theme, Luci-theme-neobird in make menuconfig, and then run make with a single job and verbose output. The package Makefile sets PKG_VERSION to 2.0 and a timestamped PKG_RELEASE, and the resulting ipk is named luci-theme-neobird with the version and release appended.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. thinktip/luci-theme-neobird on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/thinktip-luci-theme-neobird.svg)](https://hysenlabs.com/projects/thinktip-luci-theme-neobird)

Was this useful?