feat: Unified Global Animation Engine & Live Configuration#78
Merged
Conversation
- Introduced a global `Anim` singleton (`src/theme/Anim.qml`) encapsulating all animation tokens (durations, easings, colors) to replace hardcoded values across the codebase. - Created `~/.config/Brain_Shell/src/user_data/animation_prefs.json` and tied it to a Quickshell `FileView` inside the `Anim` singleton, allowing users to toggle animation preferences (`slide`, `parallax`, `none`) and adjust duration speeds (`speed_multiplier`) at runtime. - Extensively refactored popup architectures (`ClockCard`, `AudioControl`, `NetworkPopup`, `Dashboard`) to utilize a single-slide engine state machine. - Integrated custom `parallax` transition behaviors leveraging synchronized `opacity` fading and slower positional displacement for inactive pages. - Resolved dynamic resizing overlap bugs in `Dashboard.qml` by unifying the tab transitions to a single, container-level `transitionProgress` mechanism instead of decoupled individual behaviors. - Eliminated `ReferenceErrors` across QML files by enforcing proper ID bindings in inline signals and fixing unresolved dependency paths. - Removed legacy `animIdx` multipliers and scattered `<Property>Animation` bindings globally.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR introduces a massive overhaul to the shell's animation and transition architecture. It replaces hard-coded, disconnected bindings with a centralized, efficient
Animsingleton engine, and introduces a robust live-reloading configuration system.Type of Change
Key Changes
animation_prefs.jsonand tied it to a QuickshellFileView. Modifying"style","speed_multiplier", or"curve"inside the JSON instantly updates the entire shell without needing a reboot.speed_multiplierthat dynamically scales all UI and transition speeds proportionally. Added a curatedcurveproperty to instantly change the "physics" of the shell (smooth,spring,cinematic,linear).Dashboard,AudioControl,NetworkPopup, andClockCardto eliminate the glitchyanimIdxsystem. They now use a streamlinedisCurrent/wasCurrentengine that natively supports custom transitions like Parallax opacity cross-fadingDashboard.qmlresizing visual overlap glitch. Replaced decoupled slide animations with a singular, synchronizedtransitionProgresscycle, preventing any gaps or overlaps when jumping between tabs of varying widths.ReferenceErrorsacross QML files by enforcing explicit component ID bindings inonRunningChangedblocks and fixing versionless Qt6 Quickshell imports.Testing Checklist