Desktop - juniorterin/fliperOS GitHub Wiki

LXDE desktop

GroovyArcade's LXDE: full lxde with openbox-lxde, panel at the bottom (menu, file manager, terminal, tasks, CPU, volume, tray, network, clock), no compositor, no DPMS or screensaver, Sans 10 font and the Video Setup orientation. The wallpaper is /usr/share/fliperos/wallpaper.jpg (config/wallpaper.jpg, a pixel-art city at night), stretched to the screen, which is 4:3 in every CRT mode. Everything in the Dracula theme (see below).

Terminal: Alacritty. lxterminal and xterm (the system's default terminal, with bitmap fonts the image doesn't even have) didn't draw Gum's borders; they were removed, and the terminal in the panel, the menu and FliperOS Setup is Alacritty, which always works in UTF-8 and draws borders and blocks by itself, without depending on the font. Dracula theme with the console palette (config/lxde/alacritty/alacritty.toml), DejaVu Sans Mono, non-blinking cursor (blinking redraws the screen, which flickers in interlaced modes). The font size doesn't follow the DPI from the CRT's EDID (it would give 50 DPI or less): fliperos-lxde exports WINIT_X11_SCALE_FACTOR=1. Since the lxde metapackage depends on lxterminal, the image installs its components one by one.

App Store: GNOME Software with the Flatpak plugin and Flathub as a source, in the menu (System Tools) and on the panel as App Store: Ubuntu packages and Flatpak apps (emulators, games, programs). Ubuntu 24.04's App Center depends on snap, which isn't in the image. No automatic update downloads and no welcome screen (config/fliperos-software.gschema.override): disk and network activity in the middle of a game hurts latency, for the same reason the apt timers are masked. Installing asks for the user's password (fliperos), through lxpolkit.

Disks on the desktop: every disk is mounted by itself, at boot and when it is plugged in (a second hard disk, a USB stick, a Windows partition), in /media/fliperos/<label>, and gets a hard disk icon on the desktop to open it. The mount is done by udisks2 as the fliperos user, so FAT, exFAT and NTFS disks belong to the user (NTFS through the kernel's ntfs3): a udev rule (config/99-fliperos-disks.rules) starts fliperos-automount@<device>.service for each file system, and config/fliperos-automount leaves out what is already mounted, swap, encrypted, LVM and RAID volumes, and system partitions (EFI, Windows recovery and reserved). A polkit rule (config/50-fliperos-udisks.rules) lets the user mount, unmount and eject internal disks without a password; formatting and partitioning still ask for it. The icons come from PCManFM (show_mounts=1) with gvfs, which also offers Unmount and Eject in the icon's menu. Nothing is mounted on the installation media, where a mounted disk couldn't be erased by the installer.

Browser and torrents: Falkon and Transmission ship in the image and appear in the menu (Internet) as Falkon (browser) and Transmission (torrent): fliperos-rootfs.sh copies each package's entry to /usr/local/share/applications, which takes precedence, with the name changed in every language.

Emulators in the menu (Games): RetroArch, GroovyMAME, Flycast, PCSX2, Supermodel, Dolphin, OpenBOR, Model 2 and, once downloaded through the Setup, Fightcade 2, with the projects' own icons. GroovyMAME, Model 2 (SM2-Emu) and Fightcade don't bring one into the image, so their official icons come from config/icons; Supermodel has no icon of its own and gets a FliperOS monogram. None of them runs inside the desktop's X — RetroArch and GroovyMAME use KMS, the others start an Xorg of their own in the mode from the modes table (Emulators) —, so the shortcut (fliperos-launch) saves the request and closes the desktop (with a confirmation if there are open windows), fliperos-session opens the emulator on the CRT and, when it closes, the desktop comes back. An emulator that wasn't built (--skip-*) doesn't show in the menu. Model 2 always does: it is not compiled into the image, and the first click clones and builds it (Emulators). Steam and Heroic (GOG), once installed through Setup > System > Extras, also live in Games, but open inside the desktop itself. GroovyArcade's tools also ship: AntiMicroX and QJoyPad (controller as keyboard/mouse), xterm, htop, evtest, joy2key, hwinfo, lshw, read-edid, i2c-tools. FliperOS Setup lives in System Tools (and on the panel), like gasetup.desktop. The terminal uses the Dracula colors. Leaving the desktop goes back to the menu.

Screen Resolution (Preferences): changes the desktop resolution on the fly. The list is the resolutions of the monitor chosen in Video Setup, plus Other resolution... (any WIDTHxHEIGHT@HZ). Switchres computes the mode within the ranges of /etc/switchres.ini (switchres --calc, the same calculation the emulators use) and xrandr applies it, adjusting the screen size; the window opens maximized and follows the change. Without confirmation within 15 seconds, the previous resolution comes back. Use every time the desktop starts saves the mode in ~/.config/fliperos/desktop-mode, which fliperos-lxde applies when the desktop opens; choosing the boot resolution forgets the saved one. Only the desktop changes: the console, the setup and the frontends keep the Video Setup resolution. With an LCD monitor, the list is the modes from its EDID.

Dracula theme

Dracula is the theme of everything FliperOS draws:

Where How
Console and fliperos-setup VT palette (below) and Gum with its indices
LXDE — GTK 2/3 windows and programs official dracula/gtk theme, pinned by commit (fliperos-dracula.sh), with GTK 2's murrine/pixbuf engines
LXDE — Openbox borders and menus config/openbox-3/themerc (dracula/gtk has no Openbox theme), selected in lxde-rc.xml
LXDE — panel, background, terminal colors in config/lxde (lxpanel, pcmanfm, lxterminal)
Terminal (zsh) Oh My Zsh with the official dracula/zsh theme, both pinned by commit in /usr/local/share/oh-my-zsh (fliperos-dracula.sh), without automatic updates; ~/.zshrc is config/zshrc. On the Linux console the arrow and git's ✓/✗ become >, ok and * (the console font lacks those symbols)
RetroArch the Dracula theme built into RGUI (rgui_menu_color_theme = 17)
GroovyMAME UI colors (menus, game list, sliders) in /etc/fliperos/mame/ui.ini (config/mame-ui.ini, ARGB)

On the console

The Linux console only has 16 colors, and the background only accepts the first 8. The VT palette is reprogrammed with the Dracula tones at boot (/etc/vtrgb, applied by Ubuntu's setvtrgb.service, with config/vtrgb-dracula as a higher-priority alternative) and again by fliperos-setup; Gum's styles use the palette indices, not hexadecimal colors. That way the tube and a graphical terminal show the same thing. The console font (Lat15/Uni2) has the rounded borders, the bar blocks and the arrows the screens use.

⚠️ **GitHub.com Fallback** ⚠️