A system monitor
- Plugin settings infrastructure in PluginManager with config/plugin_settings.cfg storage, manifest [settings] sections, CRUD API, plugin_setting_changed signal - Per-tile refresh intervals: 100ms base tick, per-tile update_interval_ms metadata, dynamic tween durations clamped to refresh window - Settings menu (PopupPanel) with General/Plugins/About tabs, plugin activation toggles, per-plugin settings cog buttons - Plugin settings popup (PopupPanel) with dynamic UI from setting definitions (SpinBox/CheckBox/LineEdit), auto-save on change - Modal behavior: exclusive = true on settings windows - Touch-friendly sizing: enlarged close buttons, cog buttons, controls, spacing - Red corner close button redesign with rounded corners, hover/pressed states - Split system_monitor into local_system_monitor (CPU, Memory) and test plugins - Plugin activation/deactivation with layout preservation |
||
|---|---|---|
| addons | ||
| assets | ||
| autoload | ||
| config | ||
| plugins | ||
| scenes | ||
| scripts | ||
| shaders | ||
| themes | ||
| .gitignore | ||
| AGENTS.md | ||
| generate_noise.py | ||
| main.gd | ||
| main.tscn | ||
| project.godot | ||
| README.md | ||
V Panel
A fancy status monitor built with the Godot Engine. V stands for the Roman numeral 5 — a nod to my online handle, Fifthdread.
Overview
V Panel is a visually rich, real-time status monitoring dashboard built entirely in Godot. Designed to be both functional and aesthetically polished, it serves as a showcase for Godot's UI capabilities outside of gaming — custom shaders, smooth animations, reactive layouts, and system integration.
Features
- Animated splash screen — Fullscreen splash with "V" and "Panel" text using Orbitron variable font. Font-size zoom animation via
tween_methodwith overshoot (TRANS_BACK), then crossfades to dashboard with no black flash. - Responsive grid dashboard — Fixed
grid_columns/grid_rows(settable via @export). Square cells, centered layout. Drag-and-drop to rearrange. - Variable-size modules — Modules can span multiple grid cells (1×1, 2×1, 2×2, etc.). Drag edges/corners to resize interactively.
- Shader-based vial fill — Each module uses a custom
vial_fill.gdshaderinstead of progress bars. Features sum-of-sines water surface with edge-damped meniscus, wave distortion, ripple rings, swirl, HSV colour shifting, top-down lighting, sparkle effects, 3D subsurface scattering, gaussian surface foam, and wave-slope specular highlights. - Shader preset system — Long-press (500ms) or double-click any module to open an action menu with 7 visual presets (Vivid Vial, Emerald Deep, Lava Flow, Neon Dream, Deep Purple, Rainbow Swirl, Frostbite).
- Plugin architecture — Tiles are defined as plugins under
plugins/*/plugin.cfg. Each plugin declares metadata, tile definitions, and optional settings. Tile IDs scoped as{plugin_id}/{tile_id}. - Plugin settings — Per-plugin configurable values stored in
config/plugin_settings.cfg. Settings defined in manifest[settings]section (int/float/bool/string types with min/max constraints). - Per-tile refresh intervals — Each tile has its own configurable refresh interval (default 1000ms). Base tick runs at 100ms, tiles refresh only when their interval elapses.
- Animation scaling — Tween durations dynamically clamp based on each tile's refresh interval to prevent animation from outlasting the update window.
- Layout persistence — Named layouts saved/restored as INI files in
config/layouts/. Grid dimensions (columns/rows) stored per-layout. Auto-saves on drag/resize. - Settings menu — Modal popup with General, Plugins, and About tabs. Plugin activation toggles, per-plugin settings popups with dynamic UI controls.
- Plugin activation — Plugins can be deactivated from Settings → Plugins tab. Deactivation saves layout, removes tiles. Reactivation places tiles at saved positions if cells are free.
- INI-based configuration — Uses Godot's built-in
ConfigFileclass for human-friendly.cfgfiles.config/default.cfgfor shipped defaults,config/config.cfgfor user overrides (gitignored). - Live system monitoring — Reads CPU usage from
/proc/statand memory usage from/proc/meminfoon Linux. Extensible module system for adding new collectors. - Smooth animations — All fill level transitions use tweens with cubic easing.
Modules
| Module | Plugin | Data Source | Description |
|---|---|---|---|
| CPU | local_system_monitor |
/proc/stat |
Real-time CPU usage percentage |
| Memory | local_system_monitor |
/proc/meminfo |
Real-time memory usage percentage |
| Testing | test |
N/A (cycles 0–100%) | Shader visual testing with stepped fill levels |
Controls
- Drag module — Click and drag to rearrange modules on the grid
- Resize module — Click and drag any edge or corner to resize (snaps to cell grid)
- Action menu — Long-press (500ms hold) or double-click a module to open settings, info, remove, and theme presets
- Add tile — Long-press empty grid space to add new tiles
- Settings — Press ⚙ in action menu for settings menu with plugin management
Project Status
Version 0.1.0-alpha. Plugin architecture, settings framework, layout persistence, per-tile refresh intervals, and animation scaling are implemented. More system modules (disk, network) are planned.
License
TBD