Skip to content

feat: full-window liquid glass and fluidmorphism support for Lniri - #11

Merged
Chintanpatel24 merged 1 commit into
mainfrom
lbubble
Sep 15, 2026
Merged

Chintanpatel24 merged 1 commit into
mainfrom
lbubble

Conversation

@Chintanpatel24

Copy link
Copy Markdown
Member

Overview

This PR adds full-window fluidmorphism and liquid-glass compositor effect support (specifically tailored for Lniri, Niri, Hyprland, and other Wayland compositors). Previously, only the file view content area was semi-transparent, leaving the sidebar, toolbar, status bar, and inverse rounded corners as solid opaque blocks that occluded compositor background shaders.

Key Changes

  • Semantic Layered Container Colors (src/qml/theme/Theme.qml):
    • chromeBackground: containerColor(mantle, 0.75) for window chrome (sidebar, toolbar, status bar, and corner cutouts).
    • contentBackground: containerColor(base, 0.65) for the file list/grid content area.
    • overlayBackground: containerColor(mantle, 0.88) for dialogs, modals, and toasts.
    • popupBackground: containerColor(crust, 0.88) for context menus and dropdown panels.
  • Window Chrome & Seams:
    • Updated Sidebar.qml, Toolbar.qml, StatusBar.qml, FilterPanel.qml, and FileDetailedView.qml to use Theme.chromeBackground.
    • Updated inverse rounded corner fill colors in Sidebar.qml, StatusBar.qml, and Main.qml to match Theme.chromeBackground, preventing dark opaque artifact boxes over glass/compositor backgrounds.
    • Eliminated double-layering opacity inside Toolbar.qml tab strip and updated edge gradient fade masks.
  • Frosted Overlays & Popups:
    • Context menu and submenus (ContextMenu.qml) use Theme.popupBackground.
    • Dialogs and cards (Rename, New Folder, New File, Properties, Quick Preview card, Toasts) use Theme.overlayBackground.
    • Bridged Q.Theme.backgroundAlt in Main.qml so all Quill dialogs adopt Theme.overlayBackground.
  • Dynamic Control:
    • Automatically scales with the existing Transparent containers toggle and Transparency slider under Settings (Ctrl+,). Disabling transparency smoothly reverts all surfaces to 100% solid opacity.
  • Wayland App-ID Override:
    • Added support for BUBBLE_APP_ID environment variable in main.cpp for custom app-id matching if needed, while defaulting to io.github.soyeb_jim285.Bubble.
  • Documentation:
    • Added a Compositor Integration (Hyprland, Niri & Lniri) section to README.md with a copy-pasteable Lniri liquid-glass window-rule recipe.

Testing

  • Verified clean build with cmake --build build.
  • Ran test suite with ctest --test-dir build --output-on-failure. All GUI and main window tests (tst_mainwindow, tst_toolbar, tst_detailedview, tst_millerview, tst_viewcontextmenu) passed.

- Introduce layered container color architecture in Theme.qml (chromeBackground, contentBackground, overlayBackground, popupBackground).
- Make window chrome (sidebar, toolbar, tab strip, status bar, and corner cutouts) translucent to allow compositor effects to shine across the entire window.
- Apply frosted glass styling to modals, dialogs, quick preview, toasts, and context menus.
- Support BUBBLE_APP_ID environment variable for custom Wayland app-id matching.
- Add Lniri/Niri window-rule documentation in README.md.
Copilot AI lite review requested due to automatic review settings September 15, 2026 17:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chintanpatel24
Chintanpatel24 merged commit a1ad1fb into main Sep 15, 2026
2 checks passed
@Chintanpatel24
Chintanpatel24 deleted the lbubble branch September 17, 2026 07:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants