Major Rewrite and performance changes
Pre-releaseChangelog
[0.6.0] - 2026-06-04
Animation System
- Implemented a complete Material 3 (M3) motion and animation framework with core animation engine providing easing curves, duration presets, and keyframe support
- Defined motion design tokens following the M3 specification (duration, easing, delay constants)
- Integrated the animation system into widget rendering pipelines across all shell components
- Rewrote the animation manager with improved interpolation, completion callbacks, and shared animation state
- Applied animated transitions to: dock tooltips, OSD overlays, taskbar state changes, app drawer popups, power modals, calendar popups, media player popups, volume mixer popups, VPN popups, weather popups, battery/clock/media/weather/workspaces/Bluetooth widget paints, settings panels, wallpaper transitions, and button/slider/toggle interactions
- Added layout caching and measurement scratch utilities for efficient animation frame rendering
- Added animated pill-style slot rendering support
- Replaced all instantaneous visibility toggles with animated transitions (fade, slide, scale)
Compositor Backend Rewrite (Multi-Compositor Architecture)
-
MangoWM Window Manager:
- Full workspace management overhaul with complete rewrite
- Rewrote keyboard and output backend for the new architecture
- Added runtime with IPC integration, event loop, and compositor lifecycle management
- Added comprehensive MangoWM documentation detailing architecture, IPC protocol, and configuration
- Implemented compositor-level power management (shutdown, reboot, logout, suspend via logind)
-
Hyprland Backend:
- Added runtime with socket-based IPC, event handling, and window management
- Added event handler for Hyprland IPC signals (workspace change, window open/close, urgent, fullscreen)
- Added keyboard layout management via Hyprland
- Added output/monitor management
- Added workspace tracking and manipulation
- Added toplevel window mapping protocol for window-to-workspace association
- Added window identification and matching
- Added new Wayland protocol for focus grabbing
-
Sway Backend:
- Added IPC runtime with socket communication
- Added keyboard layout management
- Added output management
- Added workspace tracking
-
Niri Backend:
- Added compositor runtime
- Added keyboard support
- Added output support
- Added workspace management
-
Triad Backend:
- Added compositor runtime
- Added keyboard support
- Added output support
- Added workspace management
-
Ext-Workspace Protocol Backend:
- Added support for the wlr-ext-workspace-unstable-v1 protocol
- Implemented workspace creation, removal, reordering, and naming
-
Compositor Abstraction Layer:
- Added IPC abstraction over compositor communication channels
- Added virtual interface for keyboard management
- Added virtual interface for workspace management
- Added runtime compositor detection (Hyprland, Sway, Niri, MangoWM, Triad)
- Restructured Wayland registry for dynamic compositor feature registration
DBus Services Restructuring
- Relocated all DBus service implementations to a dedicated DBus layer for clean separation of concerns:
- Bluetooth (service and agent)
- Keyring/secret service
- MPRIS (player and album art)
- NetworkManager (service, secret agent, type definitions)
- Notifications service
- System tray (host, manager, SNI icons, stream icons, environment filter, context menu)
- UDisks2 drive service
- Added GNOME/KScreen global shortcuts DBus service
- Added Bluetooth pairing agent implementation
- Significantly rewrote NetworkManager service to fix VPN connection state tracking, secret agent integration, and connection activation
File Structure Refactoring
- Renamed and reorganized numerous core files across the codebase to improve naming consistency and logical grouping
- Reorganized widget files into dedicated subdirectories by component type (battery, clock, media, weather, spacer, widget bar, shared utilities, app drawer, start menu)
- Removed all dock-specific component files that were refactored into shared components (dock calendar popup, control center, spotlight, tray, weather popup, volume mixer, workspace strip)
Desktop Widgets System
- Full Desktop Widget System with:
- Widget host container with dynamic placement, resize, and configuration
- Interactive calendar widget with month navigation and event indicators
- Analog and digital clock display
- Full media player widget with album art, playback controls, and progress
- System monitor widget showing CPU, memory, disk, and network usage graphs with real-time data
- Current conditions and forecast weather display
- Enhanced weather visualization with animated backgrounds
- Compositing layer for widget rendering
- Widget positioning, size, and visibility preferences
- Audio visualization data reader (CAVA integration) for visualizers
- Merged desktop widgets with the desktop experience layer
- Updated settings UI for widget configuration
Settings Application
-
Hyprland Settings Tab - Comprehensive Hyprland configuration covering:
- General settings (mod key, sensitivity, gaps, borders, cursor behavior, gestures, tearing)
- Input configuration (keyboard layout, touchpad, mouse, scroll behavior)
- Key binding management with modmask, keycode, dispatcher, and argument editing
- Decoration settings (rounding, opacity, blur, shadows, dimming, colormatrix)
- Animation configuration with per-style settings (fade, slide, windows, workspaces, border)
- Layout settings (dwindle/master/top, orientation, gap offsets, split options)
- Dwindle layout specifics (pseudo mode, no_gaps_when_only, force_split)
- Master layout specifics (new window position, master factor, smart resizing)
- Rendering settings (explicit sync, direct scanout, vsync, cursor, power optimization)
- Miscellaneous (disable_autoreload, XWayland, render ahead, NVIDIA, VRR)
- Scrolling configuration (scroll method, fingers, edge, axis)
-
Power Settings Tab - Power management with suspend, hibernate, power button action, and idle timeout
-
Time Settings Tab - Timezone selection, clock format (12h/24h), date format, NTP sync, manual time/date
-
Keyboard Settings Tab - Layout/variant selection with preview, repeat rate/delay sliders, compose key config
-
Accounts Tab - User account management, avatar change, password change
-
Bluetooth Tab - Device scanning, pairing, connection management, device removal
-
Themes Tab (rewritten) - Complete theme management with preview thumbnails, import/export, color scheme selection
-
Desktop Tab - Desktop icon layout, show/hide icons, snap-to-grid, icon size
-
Dock Tab - M3-styled dock configuration (position, size, autohide, behavior)
-
Icons Tab - Icon theme selection with preview
-
Bing Wallpaper Tab (rewritten) - Daily wallpaper with region selection, resolution, download management
-
Monitors Tab (updated) - DRM probing, GPU detection, layout editor improvements
-
Night Light Tab - Blue light filter with schedule, temperature slider, brightness
-
UI Layout Tab (rewritten) - Panel/dock layout configuration
-
Wallpaper Tab (rewritten) - Selection with thumbnails, solid colors, gradients
-
Workspaces Tab - Workspace layout and behavior configuration
-
Notification Tab (updated) - Per-app notification blocking, do-not-disturb, popup position
-
Default Apps Tab (updated) - Application association per MIME type
-
Launcher Tab (updated) - App drawer and launcher preferences
-
Network Tab (updated) - WiFi, wired, and VPN connection management with VPN add dialog rewritten
-
Sound Tab (rewritten) - Per-app audio volume, input/output device selection, mute
-
Taskbar Tab - Taskbar behavior, grouping, pinning, appearance
-
Settings serialization rewritten with JSON-based persistence for all new tabs
-
Reactive event-driven settings application with debouncing
M3 UI Framework
- Complete Material 3 UI component library including:
- Core framework: Animation engine, flexbox-style layout, focus ring, glyph rendering, typography label, separator, spacer, state layer (hover/focus/pressed)
- Controls: Banner, bottom app bar, bottom sheet, full button system (filled, tonal, outlined, text, elevated, icon), card (elevated/filled/outlined), carousel, checkbox with indeterminate state, chip (input/choice/filter/action/assist), date picker, dialog, floating action button, text input, navigation bar/drawer/rail, radio button group, search bar, dropdown select, slider (continuous/discrete/range), snackbar, tab bar (fixed/scrollable), time picker, toggle switch, top app bar
- Design tokens: Color (primary, secondary, tertiary, error, neutral, variant surfaces), elevation levels 0-5, motion duration/easing, shape corner radius, spacing scale, typography scale (display, headline, title, body, label)
- Builder pattern for constructing component trees
- Dynamic color palette generation implementing material_color_utilities in C++
- Integrated M3 theming across all settings panels (60+ tabs migrated to M3-styled rendering)
- Added color scheme fallback palette for when theme resolution fails
- Updated theme system with M3 color scheme integration and dynamic palette switching
App Drawer and Start Menu
- Split the monolithic app drawer into separate app drawer and start menu components
- App Drawer:
- Grid layout with alphabetical sorting and category filtering
- Overlay rendering with performance optimizations (cached icon surfaces, dirty region tracking)
- Per-app entry rendering with icon caching, hover states, and launch handling
- Power action execution (shutdown, restart, logout, suspend)
- Power confirmation modal dialog
- Usage tracing for most-frequently-used app sorting
- Desktop entry enumeration with parsing and caching
- Gesture zone definitions for drawer activation
- Popup menu rendering
- Start Menu:
- Grouped app categories with search filtering and pinned/frequent apps
- Activation zone definitions
- Launchpad:
- Complete rewrite with folder creation/management, drag-to-folder, pin-to-dock support
- Search bar with real-time filtering
- Folder maker icon for quick folder creation
- Persistent folder state across sessions
- Layer surface management with dirty-region tracking for performance
- Real-time app search with relevance scoring
- Fixed launchpad not persisting user-created folders between sessions
- Fixed launchpad bad performance (throttled re-rendering, icon cache optimization)
- Added right-click context menu for folder creation and app pinning
- Overview:
- Complete workspace overview with window preview thumbnails via screencopy
- Overview rendering with animated workspace transitions
- Window Picker - Window selection interface for task switching
Taskbar
- Full taskbar rewrite with:
- Window grouping by application ID with expandable group popups
- Visual state indicators (active, urgent, minimized, focused)
- Progress bar overlay for window progress (file transfers, downloads)
- Drag-and-drop reordering of pinned and running applications
- Right-click context menu (close all, minimize all, pin, unpin)
- Animated hover and active state transitions
- Startup notification integration (launch feedback)
- Configurable position (top, bottom), size, and behavior
- Mini panel mode - compact taskbar variant for vertical panels
- Fixed icons not setting on configuration reload
- Settings tab with grouping, pinning, and appearance options
Dock
- Core dock implementation with persistent pinned app storage, drag-to-pin, running app indicators
- Rewritten input handling with gesture support (swipe up for app drawer, swipe left/right for workspace switch)
- Widget bar for rendering battery, clock, Bluetooth, media, VPN, workspaces, and weather slots
- Hover/tooltip popup picking with directional awareness and edge cases
- Persistent pinned application storage with serialization
- Animated tooltip rendering with position adjustment
- Dynamic dock positioning (horizontal/vertical, edge snapping)
- Fixed dock exclusive zone calculation for proper window avoidance
- Fixed desktop right-click menu activation
- Added trash/discard drop target on dock
- Removed monolithic dock app drawer and control center implementations (11,000+ lines deleted, refactored into shared components)
Control Center
- M3-styled control center with quick settings toggles
- Comprehensive popup with notifications, volume, brightness, media player, network, Bluetooth, and settings shortcuts
- Hit testing and layout calculation with direction-aware expansion
- Panel geometry management
- State management for toggles, sliders, and active panels
- Added VPN section with connection status display
Power Menu
- Full power menu implementation with animated dialog:
- Power actions: Shutdown, Reboot, Suspend, Hibernate, Logout, Lock Screen
- Confirmation dialog with customizable timeout
- Keyboard shortcut integration
- DBus logind integration for system-level power actions
- Modal confirmation overlay with M3 styling:
- Action type icons and labels
- Cancel and confirm buttons with focus management
- Escape key to dismiss
- Fixed power buttons now actually execute system power actions via logind
- Fixed power menu UI input blocking issue
Lock Screen
- Wayland session lock protocol implementation:
- Full-surface lock screen rendering with blurred background
- Password input field with visibility toggle
- Date/time display
- Media playback controls on lock screen
- Keyboard shortcut for instant lock
- Pointer/keyboard event routing for lock screen
- Integrated ext-session-lock-v1 Wayland protocol
System Tray
- Relocated tray implementation from dock into standalone module:
- Tray host surface management
- Tray item registration, icon updates, menu management
- StatusNotifierItem icon rendering with attention icon support
- XDG environment filter for tray
- Tray item context menu rendering
- Animated icon streaming support
- Separated tray functionality from dock into standalone module
Keyboard
- Keyboard layout management infrastructure:
- Applies keyboard layout, variant, and options via libxkbcommon
- Integrated with compositor backends through abstraction interface
- Multi-layout support with per-window layout tracking
- Compose key configuration
- Typing delay and speed configuration
- Virtual keyboard support via input method protocol
IPC Service
- Unix domain socket IPC server:
- Command/response protocol for external tools to interact with Event Horizon
- Commands: workspace management, window focus, power actions, settings query/modify
- JSON-based message format
- Command-line IPC client utility
Night Light
- Gamma-based blue light filter:
- Configurable color temperature (3500K-6500K)
- Schedule-based auto-activation (sunset to sunrise)
- Smooth transition animation on enable/disable
- Settings tab integration
- Added wlr-gamma-control-unstable-v1 protocol support
Wallpaper
- Wallpaper rendering engine with:
- Dynamic wallpaper switching with crossfade animation
- Solid color, gradient, and image wallpaper support
- Bing daily wallpaper download and caching
- Thumbnail generation and caching for fast preview
- Configuration application with color scheme extraction from wallpaper
- Optimized image decoding with JPEG (libjpeg-turbo), PNG, WebP support
- Async thumbnail generation service
- Removed legacy desktop widgets overlay (widgets now rendered in the desktop layer directly)
Vulkan/Rendering
- Major Vulkan rendering overhaul:
- Proper swapchain recreation on output resize
- Image layout transition management
- Synchronization with timeline semaphores
- Custom Vulkan pipeline for M3 UI rendering
- Optimal buffer allocation with dedicated GPU memory priority
- Vulkan destruction queue with deferred resource cleanup
- CPU-side Cairo fallback buffer for non-GPU rendering
- Shared memory buffer pool optimization
- Wayland surface extension protocol support
Icon Cache
- Complete icon cache overhaul:
- Multi-theme lookup following XDG icon theme specification
- SVG rendering with cairo and librsvg
- PNG/WebP direct loading
- Lazily-populated LRU cache with configurable size limits
- Fallback icon chain with parent theme traversal
- Hard-coded fallback for common application icons
- Memory-efficient surface sharing
Performance Optimizations
- Startup Time: Reduced startup time by approximately 98% through lazy initialization, deferred DBus connections, parallel service loading, and postponed UI rendering until after first frame
- Memory/RAM: Significant RAM reduction (~40%) via:
- Icon cache size limits and LRU eviction
- Shared memory pool reuse for Vulkan buffers
- Bundled asset lazy-loading (fonts, icons, images)
- Removing unused bundled assets
- Efficient surface damage tracking to avoid full redraws
- Reduced texture atlas fragmentation
- App Drawer Performance: Cached app icon surfaces with dirty-region-only redraws, reduced layout calculations
- Launchpad Performance: Throttled search with debouncing, lazy folder loading, cached folder previews
- Taskbar Speed: Optimized window state diffing, reduced paint operations with clip regions
- Toggle Instant Response: Synchronous state change with deferred visual animation
- Media Player: Reduced album art polling frequency, cached art surfaces
- General Optimization: Added performance benchmarking framework, optimized memory usage across all widget types, reduced string allocations, pool allocator for small objects
Crash Fixes and Stability
- Popup Surface Crash: Fixed crash when destroying popup surfaces with active damage regions; added null-buffer commit pattern before destroy to prevent compositor from retaining a reference to the destroyed surface
- Workspace Switch Crash: Fixed null pointer dereference in workspace backend when switching workspaces rapidly; added surface existence validation before focus operations
- General Crashes:
- Fixed segfault in desktop layer when toplevel is destroyed during animation
- Fixed use-after-free in notification toast timer
- Fixed crash on empty workspace list
- Fixed crash in overview when window closed during rendering
- Fixed crash in OSD when output removed
- Fixed crash in taskbar when pinned app executable missing
- Fixed crash in dock when foreign toplevel removed
- Fixed crash in wallpaper renderer when image fails to decode
- UI Fallback Colors: Fixed theme color fallback chain - now properly cascades from M3 palette to system theme to hardcoded fallback palette
- Icon Reload: Fixed icons not updating when theme or color scheme changes at runtime
- Polkit Typing Issue: Fixed text input handling in PolicyKit authentication dialog (key event propagation and focus)
- Power Menu Input Block: Fixed input region calculation preventing click-through on power menu backdrop
- VPN Connection Stability: Fixed VPN connection state tracking with proper phase transitions
Build System
- Meson Build:
- Integrated all new compositor backends as optional build targets
- Added build options: embed_assets, jpeg, polkit_agent, native_march, release_omit_frame_pointer
- Added M3 framework compilation units
- Added DBus service source files in dedicated directories
- Added tomlplusplus as a subproject dependency
- New Build Options:
embed_assets- Embed asset files into binary (default: false)jpeg- JPEG decoding support via libjpeg-turbo (default: false)polkit_agent- PolicyKit authentication agent (default: false)native_march- Architecture-specific optimizations (default: false)release_omit_frame_pointer- Frame pointer omission in release builds (default: true)
- PKGBUILD:
- Version bumped from 0.2.0 to 0.6.0
- Added dependencies: libjpeg-turbo, librsvg, libdrm, polkit
- Updated build dependencies with new requirements
- Added install targets for desktop files and icons
CI/CD
- GitHub Actions:
- Complete CI pipeline with build, test, and artifact publishing
- Multi-distribution builds (Arch Linux via pacman, Ubuntu/Debian via apt)
- Dependency caching for faster builds
- Automated release artifact upload with versioned filenames
- Added liblz4-devel dependency for both apt and pacman package managers
- Added binutils installation step
- Upgraded action versions for upload and download artifacts
- Removed redundant release steps and consolidated package upload process
- CircleCI: Added alternative CI pipeline with multi-architecture build matrix
Wayland Protocols
- Added new protocol specifications: hyprland-focus-grab, hyprland-toplevel-mapping, wlr-gamma-control
- Added protocol implementations: ext-foreign-toplevel-list, ext-session-lock, wlr-screencopy, wlr-gamma-control, virtual-keyboard, ext-idle-notify
- Implemented protocol auto-detection and dynamic registration
Miscellaneous
- Clipboard: Rewrote clipboard implementation with proper Wayland data device protocol, MIME type filtering, and offer caching
- Notifications: Toast notification system rewritten with action buttons, urgency levels, timeout management, and position configuration
- Audio Visualizer: PipeWire audio data reader for waveform visualization
- Bundled Fonts: Embedding Material Symbols font and other icon fonts directly
- Memory Monitor: Accurate memory usage reporting from system status
- Desktop Archive: Desktop file archive and compression for backup
- Open With Dialog: "Open with" dialog for file association management
- RF Kill Switch: Monitoring for Bluetooth and WiFi radio state
- Thread Pool: Reusable thread pool for asynchronous operations
- Battery Widget: Battery status widget with icon, percentage, and charging state, integrating with UPower via D-Bus
- Bluetooth Widget: Bluetooth status widget with device list, connection state, and toggle
- VPN Popup: VPN connection management popup with status, connect/disconnect, and configuration
- Weather Widget: Enhanced with animated conditions, multi-day forecast, and location detection
- Workspace Widget: Rewritten with animated transitions, improved multi-monitor support, and touchpad gesture integration
- Media Widget: Rewritten with album art, playback position slider, and per-app media control
- Calendar Popup: Updated with event indicators and month navigation
- Volume Mixer Popup: Updated with per-app audio stream control and output device selection
- Media Player Popup: Full media player popup with playback controls
- Settings Widget Drag: Drag-and-drop widget reordering in settings
- Widget Picker: Desktop widget type selection dialog
- Matugen Integration: Enhanced Material You color generation with external template support
- Screen Recording: Screencopy PNG capture for screenshot functionality
- Idle Inhibitor: Prevent idle/suspend during fullscreen video playback
- File Chooser Dialog: Native file chooser dialog implementation
- Dialog Base: Reusable dialog infrastructure for all modal dialogs
- Debug/Diagnostics: Structured diagnostic logging, performance benchmarking framework, Wayland event loop diagnostics
- Translations: Internationalization framework setup
