fix(tao): keep native KDE decorations on Wayland - #538
Open
kdroidFilter wants to merge 1 commit into
Open
Conversation
Hiding the GTK header to latch CSD makes KWin drop server-side decorations, so DecoratedWindow(undecorated = false) has no title bar, borders, or caption buttons (ComposeNativeTray #425). Keep the native frame on KDE and hide it only while Compose chrome is composed.
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.
Fixes NucleusFramework/ComposeNativeTray#425
🚀 Description
On KDE/Plasma Wayland,
DecoratedWindow(undecorated = false)was left with no title bar, borders, or caption buttons.The Tao Linux path always installed a hidden
GtkHeaderBar(yaru-style CSD) so GTK would draw the shadow ring.gtk_window_set_titlebar()latches client-side decorations; KWin then drops server-side decorations. With the header hidden and no ComposeTitleBar, the window has no chrome at all.This PR keeps the native GTK/KWin frame on KDE when the caller asked for decorations. If a Compose
TitleBar/WindowScaffold/DialogTitleBaris composed, the native header is hidden (CSD stays latched) so custom chrome does not double up. GNOME still uses the hidden-titlebar CSD path.📄 Motivation and Context
Reported against ComposeNativeTray with
Tray+DecoratedWindow(undecorated = false)on Fedora/KDE Plasma Wayland. The same Nucleus window path is what strips the chrome.🧪 How Has This Been Tested?
./gradlew :decorated-window-tao:test --tests dev.nucleusframework.window.tao.LinuxNativeDecorationsTest./gradlew :decorated-window-tao:ktlintMainSourceSetCheck :decorated-window-tao:ktlintTestSourceSetCheck :decorated-window-tao:detektlibnucleus_tao.sorebuilt; newnativeLinuxSetTitlebarVisiblelinks.Issue425ReproTest) against this worktree viaincludeBuild:TITLEBAR_VISIBLE=trueon KDE/Wayland.📦 Types of changes
✅ Checklist