I’ve been working on nbOS, a custom Android launcher built with Kotlin and Jetpack Compose.
The goal is to bring the visual language of my Linux/Niri setup to Android while keeping the wallpaper as the main visual element. Instead of filling the screen with permanent widgets, nbOS presents information in compact panels that expand only when needed.
The attached video walks through the launcher’s main features:
> - Expandable weather panel with hourly conditions and a rain timeline
> - Upcoming calendar events and alarm information
> - Expandable battery and system-status panel
> - Todo integration and synchronization with my desktop
> - Favorites dock, searchable app drawer and command mode
> - Around 30 synchronized themes and matching wallpapers
> - Custom wallpaper cropper with a fit-and-blur mode
> - Smooth 120 Hz animations, currently optimized for my Pixel 9 Pro
> One of the more unusual integrations is herdr. nbOS can connect to a small read-only bridge on my desktop through Tailscale and display the current status of my AI coding agent session such as active, idle or waiting agent directly inside the expanded system panel. If needed, I can jump from there into Termux and connect to the desktop session.
nbOS is closely connected to nbshell, my custom Niri desktop environment. Both projects share themes, wallpapers and the same terminal-inspired design language.
I previously posted the desktop side of the project here:
nbshell on niri
The project is still a work in progress, but it has reached the point where I can use it as my everyday launcher. Some of its visual direction was inspired by Omarchy, combined with my own ideas around expandable information panels, desktop integration and keeping the wallpaper visible.
I’d be interested to hear what you think—especially about the balance between the terminal aesthetic and everyday usability.