44r0n7 7e95b7f95f fix: stabilize preview update flows and hud ordering
This folds the recent preview update fixes onto shared apply helpers,
keeps HUD order stable after profile restore, and drops the unstable drag
path that was still causing native crashes while navigating away.
2026-03-31 17:23:13 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00
2026-03-30 23:06:06 -04:00

MangoTune

MangoTune is a GTK4 + libadwaita desktop configurator for MangoHud on Linux.

It focuses on correctness and maintainability over ad-hoc editing: schema-aware validation, config-layer conflict visibility, and comment-preserving writes.

Recent UX direction:

  • Dashboard-first landing screen instead of a plain settings browser
  • Managed live preview using MangoTunes built-in Studio renderer
  • Companion mangotune-preview renderer for a dedicated studio-style preview scene
  • Dashboard controls for Studio load, FPS cap, VSync, and runtime tuning
  • Dashboard controls for Studio preview window width/height
  • Socket-driven studio preview reloads without touching the users real config
  • One-click starter presets for minimal, competitive, balanced, and streamer-style overlays
  • Sidebar search plus collapsed-by-default deeper sections so the first-run shell feels less crowded
  • Workspace-status card for save state, validation summary, runtime info, and quick actions
  • Accordion-style sidebar sections and safer studio-preview refresh behavior
  • Common appearance tuning controls up front, with advanced pages still available in the sidebar
  • A custom control-deck shell for the main deep settings pages instead of untouched stock preferences layouts
  • Inline layer-conflict inspection instead of a second popup window
  • Dashboard profile save, restore, and delete actions

Why use MangoTune instead of GOverlay

  • Strong option validation across MangoHud types and value ranges
  • Config layer resolver showing which value wins (global, per-app, env, app-local)
  • Safer writes with backup and atomic replacement behavior
  • Managed live preview using the built-in Studio renderer without forcing you to save first
  • Native Rust + GTK4/libadwaita app with predictable behavior

Install

Distro package (when available)

Use your distribution package manager for mangotune.

Build from source

Requirements:

  • Rust stable toolchain
  • GTK4 and libadwaita development packages
  • glib-compile-schemas

Build and run:

cargo run

Release build and install:

cargo build --release
sudo make install

Config priority model

MangoTune follows MangoHud's effective config layering. Higher priority overrides lower priority:

  1. MANGOHUD_CONFIG / MANGOHUD_CONFIGFILE (environment)
  2. App-local MangoHud.conf
  3. Per-app XDG config (~/.config/MangoHud/<app>.conf)
  4. Global XDG config (~/.config/MangoHud/MangoHud.conf)
  5. Compiled defaults

Use the Layer Conflicts page to inspect shadowed values and winning layers.

Live preview

From the dashboard, start a live preview window using MangoTunes built-in Studio renderer.

How it works:

  • MangoTune writes your current in-memory config to a temporary preview-only file
  • It launches the Studio preview against that temporary file
  • Reload/restart lets you iterate on appearance settings without touching your saved config
  • The dashboard tunes the Studio renderer directly: load factor, FPS cap, VSync, particle density, VRAM pressure, and pause state
  • The dashboard tunes Studio preview window width/height
  • Studio preview changes are written to a temporary config and sent into the preview over its control socket
  • The dashboard preview status auto-refreshes and failed hot reloads fall back to restart more safely
  • Preview sessions temporarily force the HUD visible even if your saved config uses no_display
  • Docked preview windows now clamp back inside the screen instead of disappearing off the edge more easily
  • Right-aligned HUD previews now get extra width and skip side-docking so the overlay is less likely to vanish off-screen

Environment set by launcher:

  • MANGOHUD=1
  • MANGOHUD_CONFIGFILE=<temporary preview config path>

Studio preview behavior:

  • direct-process tracking so live preview reload/restart targets the real preview app
  • dashboard-driven load/FPS/VSync defaults that are passed into the preview at launch
  • socket API for runtime load/FPS/VSync/config reload commands
  • advanced runtime controls for particle density, VRAM pressure, and pause state

mangotune-preview also supports standalone use:

cargo run --bin mangotune-preview

Standalone preview examples:

MANGOHUD=1 \
MANGOHUD_CONFIGFILE=/tmp/mangotune-preview.conf \
MANGOTUNE_SOCKET=/tmp/mangotune-preview.sock \
MANGOTUNE_PREVIEW_SCENE=motion \
MANGOTUNE_PREVIEW_LOAD=2.5 \
MANGOTUNE_PREVIEW_FPS_CAP=500 \
cargo run --bin mangotune-preview

Notes:

  • 0 FPS cap means uncapped
  • standalone preview needs a graphical session (DISPLAY or Wayland variables available)
  • standalone control happens through the Unix socket declared in MANGOTUNE_SOCKET

Contributing

  • Run formatting and checks before proposing changes:
cargo fmt
cargo clippy --all-targets -- -D warnings
cargo test
  • Keep behavior aligned with the planning docs in docs/plan/.
  • Add tests for parser, validation, resolver, integrations, and launcher changes.

License

MangoTune is licensed under the MIT License. See LICENSE.

Dependency licenses are documented in THIRD_PARTY_LICENSES.md.

S
Description
No description provided
Readme MIT 2.9 MiB
Languages
Rust 93.1%
CSS 4.3%
Python 1.6%
Shell 0.8%
Makefile 0.2%