FlipCTL — our GUI framework for embedded Linux systems
Subscribe to notifications of new posts:
You're subscribed
Oops! Please try again
Subscribe
Do you know why Flipper Zero is so popular? Not because of the little cute dolphin, but because you can use it right out of the box. If we made Flipper Zero in a Proxmark3-like form factor without a screen (no offense, Iceman), it would only be used by a small group of hardcore professionals. We all love simple, clear things: press a button and get results.<br>Before Flipper Zero, no one really cared about intuitive interfaces of niche devices for geeks. Everyone was building separate hardware and a companion app for user interface. NO ONE WANTS TO CREATE PIXEL-PERFECT INTERFACES for small screens - it's a pain, even for us. But we've become pretty good at it, and we believe we can contribute to the industry by creating a universal graphical interface framework. Since we were doing this for Flipper One anyway, we decided to open it up for others to use in their own projects.<br>In this post:<br>FlipCTL: our GUI framework for embedded systems, which can be used on any Linux device.<br>Why all existing interfaces for embedded systems suck.<br>Help us develop the right architecture for FlipCTL.<br>GUI — the main problem of all cyberdecks<br>It's impossible to use mini-computers with tiny screens because they all use a desktop interface designed for a mouse and a keyboardCyberdecks look cool, but they’re impossible to use. The main problem with all cyberdecks is their crappy interface. They usually just take a standard KDE/GNOME desktop, or even Windows, and try to pretend you can actually use it. No, you can’t. It’s bullshit. It’s impossible to hit a microscopic button on the screen using a touchscreen or tiny trackball, and plugging in a mouse is awkward.<br>Desktop vs small-screen optimized interface<br>In most cyberdecks, the controls are not designed for the user interface running on the device. The typical approach is to add some buttons and run a desktop interface that was built for a mouse and keyboard. That's the main problem.
0:00
/0:14
1×
Which interface do you find more user-friendly on a small screen?
Only major vendors can afford to develop controls and graphical interfaces together, with each designed around the other: game consoles, smartphones, televisions, and the like. This requires a dedicated team and long, thankless hours of work. You need to build a UX system and go through countless iterations of testing and improvement. DIY projects by enthusiasts typically don't have that luxury. We decided to try to change that, so any project can have a great graphical interface with little effort.<br>Why did we choose a grayscale display over a fancy color one?<br>The answer is that grayscale display is better in every way for system GUIs where color isn't needed. Just look at the comparison photo, and your questions will be answered.<br>The main advantages of a grayscale display:<br>Low power consumption — our display can be used without a backlight, as ambient light is reflected by the display's backing layer. In this mode, power consumption drops to just 14 mW. Color displays always require a backlight, and in bright outdoor conditions, you need to set the backlight level to maximum to keep the display readable. In this case, a similarly sized color display typically consumes 800–1000 mW.<br>Perfectly visible in direct sunlight — the brighter the sun, the better our grayscale display looks. Color displays, on the other hand, become increasingly difficult to read outdoors. We want our interface to be usable in real-world field conditions, not just on a desk for social media photos.<br>Less system load — to achieve truly high image quality on a color display, you need a VERY expensive, high-resolution display that requires significant computing resources and puts a strain on the system just to render the image. A color display would STILL lose out to our grayscale display in terms of contrast. Meanwhile, on a grayscale display, you can achieve high image quality even on low-power embedded systems.<br>Our custom LCD display<br>For Flipper One, we designed our own grayscale display with a custom resolution of 256×144 pixels. Displays of this type are no longer actively developed, and most off-the-shelf grayscale displays are limited to 128×64 pixels. Manufacturers are no longer willing to invest in this technology, so we put significant effort into developing the exact display we needed. As a result, we have a grayscale screen made using IPS technology.<br>What is FlipCTL?<br>FlipCTL is our attempt to create a universal GUI and physical controls (buttons, touchpad) that can be used in any project. It will work on all embedded Linux systems and be easily adapted to your needs. With FlipCTL, you don’t have to reinvent the user interface from scratch every time: you can just grab our framework and quickly implement a GUI for your project.
FlipCTL wraps existing console programs and system settings, and...