FlipCTL
flipper's universal control interface todo make a proper flipctl logo flipctl is a lightweight gui framework for embedded and headless linux systems , designed as a modern replacement for traditional hmi solutions originally built for flipper one, it runs on any linux system โ from servers and routers to single board computers โ with no desktop environment required the core idea instead of running a desktop gui (gnome, kde) on a tiny screen, flipctl provides a pixel rendered, navigation friendly interface โ similar in spirit to nmtui or midnight commander, but graphically richer and hardware aware the problem it solves existing hmi solutions have several pain points require a running graphical environment (xorg, wayland) โ unusable on headless servers, routers, or embedded devices desktop uis are awkward to navigate with a d pad or joystick cli tools have no unified wrapper โ running something like ping or nmap interactively requires a keyboard and terminal existing control panels are complex to install and configure the vision apt install flipctl โ and everything works on any linux system, with or without a display, flipctl should be immediately useful plug in the flipctl control board via usb, run the service, and you instantly have a working hmi โ no xorg, no desktop, no configuration supported frontends flipctl is designed around a renderer agnostic core, allowing the same interface and plugins to be displayed across multiple input/output frontends flowchart lr core\["flipctl core daemon\<br/>(input ยท routing ยท plugin api)"] core > f1\["flipper one\<br/>256ร144 lcd"] core > cb\["flipctl control board\<br/>usb / spi / uart"] core > tui\["tui\<br/>react + ink"] core > web\["web ui\<br/>react (browser)"] core > app\["desktop app\<br/>react (native)"] frontend description flipper one the primary target device is an arm linux computer with a built in 256ร144 px lcd and physical controls includes boot menu functionality as part of the flipctl package flipctl control board a compact standalone module with a screen and buttons, connecting via usb, spi, or uart โ designed to add a physical hmi to any embedded system, server, single board computer, or router tui (terminal ui) a pseudo graphical interface rendered in any linux terminal โ usable locally or over ssh, similar to nmtui or midnight commander may be built using react + ink for component based terminal rendering web ui a browser based interface served by the flipctl daemon โ renders the same layout and navigation accessible from any device on the network can share the same react codebase as the desktop app desktop app a native desktop application for linux, useful for development, testing, or general use on a full workstation can share the same react codebase as the web ui hardware flipctl control board todo add picture of flipctl control board a compact rectangular device built around a central 256ร144 px lcd screen with 64 shades of gray (6 bits per pixel) it connects to any linux machine via usb or spi , turning headless servers, routers, or embedded systems into machines with a physical hmi โ no desktop environment required screen resolution 256 ร 144 px depth 6 bit grayscale (64 shades) input controls below the screen โ 5 app defined buttons (left to right) flipper one controls button default role escape exit app / cancel / go back view help, tooltips, toggle view mode power opens power overlay (sleep, backlight, reboot); hold = hardware shutdown regardless of system state edit edit fields, switch view types run confirm / ok / next step / start the power button is intercepted at the microcontroller level โ it works even if the os is frozen, similar to a hardware power button on a standard pc left of the screen โ touchpad a small touchpad for scrolling through long lists navigating the on screen keyboard quick directional input (left / right / up / down) right of the screen โ 5 way d pad standard directional navigation up / down / left / right / center (ok) below the d pad โ app switcher shows all running applications and allows switching between them โ similar to a double tap home button on older phones right of the d pad โ back button returns to the previous screen; functionally mirrors escape in most contexts top of the device โ ptt (push to talk) a programmable button originally designed for walkie talkie use (press and hold to transmit audio) on flipper one it may serve secondary ui functions like screen lock this button is flipper one specific and will likely not be present on the standalone flipctl control board out of the box dashboard once installed, flipctl provides immediately useful information without any plugins cpu load & uptime disk usage network configuration system reboot / shutdown software architecture rendering approach the 256ร144 px screen requires pixel level rendering , which standard tui libraries (ncurses, etc ) cannot provide the proposed solution is an html/css rendering engine running as a background daemon โ a lightweight browser based renderer that draws menus, popups, and ui components the key principle data and ui logic are separated from the renderer the same data can be displayed differently depending on the frontend pixel rendered on the lcd character rendered in a terminal (react + ink) html in a browser (react) core daemon + plugin system flipctl runs as a system daemon with a plugin architecture the core daemon handles input, routing, rendering communication, and the plugin api plugins are wrappers around cli tools or services, written in any language plugin / wrapper bindings developers can write wrappers in whatever language they prefer python โ e g , a wrapper for nmap or nginx stats bash โ quick scripts for simple tools rust, node js, go โ for performance critical or complex plugins example a ping plugin presents a menu to enter a host/ip, runs the underlying ping command, and displays live output โ all navigable with the d pad example plugins ping ยท nmap ยท traceroute ยท nginx status ยท iptables ยท disk manager summary flipctl is equal parts software framework and hardware platform โ a universal, headless friendly hmi layer for linux, designed for the flipper one but useful for any embedded or server system its install and run simplicity and language agnostic plugin system make it a practical tool for anyone who needs a physical or remote interface without the overhead of a full desktop environment
Have a question?
Our support team and an awesome community will get you an answer in a flash. Please leave your questions in English.
To ask a question or participate in discussions, you'll need to authenticate first.