Bug 502885

Summary: Double window decoration when using chromium with CSD (Wayland)
Product: [Plasma] kwin Reporter: Alex Fiestas <afiestas>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: REPORTED ---    
Severity: normal CC: john.kizer, kdedev, nate, strong.drum0546
Priority: NOR    
Version First Reported In: master   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Shows chromium with double decoration

Description Alex Fiestas 2025-04-16 15:44:42 UTC
Created attachment 180316 [details]
Shows chromium with double decoration

SUMMARY
For a few days or a week Chromium based apps will show a double window decoration when used with CSD.

Some Electron apps also show their CSD but there is no gap between them.

This could be chromium fault, I am reporting it here though because I find it a bit weird that all of the sudden
- Brave
- Chrome stable
- Chromium
- Electron app

happen to have this bug at the same time.

Firefox CSD works just fine.

STEPS TO REPRODUCE
1.  Latest Qt6.9 plus Latest Plasma/Kwin/etc.
2.  Open chromium
3.  Open vscode

OBSERVED RESULT
See screenshot

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 6.14.2-arch1-1,
4.6 (Compatibility Profile) Mesa 25.0.3-arch1.1
Qt6.9 from branch compiled 15/04/2025
Plasma from master (same date)
Comment 1 TraceyC 2025-04-17 22:26:10 UTC
Thanks for filing this bug report and for the screenshot that shows the problem.
I'm not seeing this bug on git-master, with Chromium or Electron apps (Obsidian Notes, VS Code) with Qt 6.8.3

I'll leave this open so someone with Qt 6.9 can also test
Comment 2 John Kizer 2025-04-20 21:50:54 UTC
I can't reproduce on Fedora KDE 42 with Qt 6.9 - for the reporter, what graphics card are you using? Just curious as I'm on an NVIDIA card, perhaps there's some difference there?
Comment 3 Alex Fiestas 2025-04-21 09:15:50 UTC
GL_VERSION: 4.6 (Compatibility Profile) Mesa 25.0.4-arch1.1
GL_RENDERER: AMD Radeon 780M (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.2-arch1-1)
Comment 4 Alex Fiestas 2025-04-21 09:16:19 UTC
if given some instructions I can try to debug this a little bit, add a qDebug here and there, etc.
Comment 5 Lenzoid 2025-04-22 16:03:51 UTC
Thanks for reporting. This is curious. Once or twice - I have seen the extra whitespace between screen border and window decoration border, that can not get filled. So I think there could really be something there. But it is not the same as you have shown.

> when used with CSD

From a clean Chromium profile, what options exactly do I have to change so I can reproduce this? Can you reproduce this with a completely fresh Chromium profile? (Ctrl+Shift+M -> Add new profile)

Is this bug happening all the time or just some of the times? Does it go away when you resize, maximize or push around the windows with the tiling shortcuts (Win + Left, Win + Right etc. by default)
Comment 6 John Kizer 2025-04-22 19:10:05 UTC
Updating status
Comment 7 Alex Fiestas 2025-04-23 06:01:53 UTC
(In reply to Lenzoid from comment #5)
> Thanks for reporting. This is curious. Once or twice - I have seen the extra
> whitespace between screen border and window decoration border, that can not
> get filled. So I think there could really be something there. But it is not
> the same as you have shown.
> 
> > when used with CSD
> 
> From a clean Chromium profile, what options exactly do I have to change so I
> can reproduce this? Can you reproduce this with a completely fresh Chromium
> profile? (Ctrl+Shift+M -> Add new profile)
> 
> Is this bug happening all the time or just some of the times? Does it go
> away when you resize, maximize or push around the windows with the tiling
> shortcuts (Win + Left, Win + Right etc. by default)

Yes, I can reproduce it every time, with all profiles as long as csd is on.
Comment 8 Alex Fiestas 2025-04-23 06:03:15 UTC
Extra info

qdbus org.kde.KWin /KWin org.kde.KWin.queryWindowInfo and selecting the chromium window
activities: 6b8800b3-7183-47ca-b5c1-c780d8a84e9b
caption: New Tab - Chromium
clientMachine: localhost
desktopFile:
desktops: 811e257b-ded6-4ce1-8ff1-99919f508916
fullscreen: false
height: 798
keepAbove: false
keepBelow: false
layer: 2
localhost: true
maximizeHorizontal: 0
maximizeVertical: 0
minimized: false
noBorder: false
resourceClass: Chromium
resourceName: chromium
role: browser
shaded: false
skipPager: false
skipSwitcher: false
skipTaskbar: false
type: 0
uuid: {2905d02b-c460-4a67-b568-d253b7e35156}
width: 1140.6666666666667
x: 349.3333333333333
y: 32.666666666666664


qdbus org.kde.KWin /KWin org.kde.KWin.supportInformation
KWin Support Information:
The following information should be used when requesting support on e.g. https://discuss.kde.org.
It provides information about the currently running instance, which options are used,
what OpenGL driver and which effects are running.
Please post the information provided underneath this introductory text to a paste bin service
like https://paste.kde.org instead of pasting into support threads.

==========================

Version
=======
KWin version: 6.3.80
Qt Version: 6.9.0
Qt compile version: 6.9.0
XCB compile version: 1.17.0

Operation Mode: Wayland

Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_X11_XCB: yes

X11
===
Vendor: The X.Org Foundation
Vendor Release: 12401006
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
RES: yes; Version: 0x12

Decoration
==========
Plugin: org.kde.breeze
Theme: Breeze
Plugin recommends border size: None
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft:
decorationButtonsRight: 6, 3, 4, 5
borderSize: 0
gridUnit: 10
font: Droid Sans [1ASC],10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
smallSpacing: 2
largeSpacing: 10

Output backend
==============
Name: DRM
Atomic Mode Setting on GPU 0: true

Cursor
======
themeName: breeze_cursors
themeSize: 24

Options
=======
focusPolicy: ClickToFocus
xwaylandCrashPolicy: 1
xwaylandMaxCrashCount: 3
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 5
activationDesktopPolicy: SwitchToOtherDesktop
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
edgeBarrier: 100
cornerBarrier: 1
rollOverDesktops: false
focusStealingPreventionLevel: 1
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: MouseRaise
commandActiveTitlebar2: MouseNothing
commandActiveTitlebar3: MouseOperationsMenu
commandInactiveTitlebar1: MouseActivateAndRaise
commandInactiveTitlebar2: MouseNothing
commandInactiveTitlebar3: MouseOperationsMenu
commandWindow1: MouseActivateRaiseAndPassClick
commandWindow2: MouseActivateAndPassClick
commandWindow3: MouseActivateAndPassClick
commandWindowWheel: MouseNothing
commandAll1: MouseUnrestrictedMove
commandAll2: MouseToggleRaiseAndLower
commandAll3: MouseUnrestrictedResize
keyCmdAllModKey: 16777250
doubleClickBorderToMaximize: true
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
compositingMode: 1
allowTearing: true
interactiveWindowMoveEnabled: true

Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0

Screens
=======
Number of Screens: 2

Screen 0:
---------
Name: eDP-1
Enabled: 1
Geometry: 0,0,1805x1203
Physical size: 285x190mm
Scale: 1.25
Refresh Rate: 59999
Adaptive Sync: incapable
Screen 1:
---------
Name: DP-7
Enabled: 1
Geometry: 1805,0,2560x1440
Physical size: 698x393mm
Scale: 1.5
Refresh Rate: 59997
Adaptive Sync: automatic

Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon 780M (radeonsi, phoenix, LLVM 19.1.7, DRM 3.61, 6.14.3-arch1-1)
OpenGL version string: 4.6 (Core Profile) Mesa 25.0.4-arch1.1
OpenGL platform interface: EGL
OpenGL shading language version string: 4.60
Driver: Unknown
GPU class: Unknown
OpenGL version: 4.6
GLSL version: 4.60
Mesa version: 25.0.4
X server version: 1.24.1
Linux kernel version: 6.14.3
Direct rendering: Requires strict binding: no
Virtual Machine:  no
OpenGL 2 Shaders are used

Loaded Effects:
---------------
shakecursor
screenshot
outputlocator
mouseclick
colorpicker
zoom
contrast
login
logout
sessionquit
slidingpopups
windowaperture
slide
maximize
fadingpopups
squash
fullscreen
frozenapp
dimscreen
scale
dialogparent
windowview
tileseditor
overview
highlightwindow
blendchanges
startupfeedback
systembell
screentransform
kscreen

Currently Active Effects:
-------------------------
contrast

Effect Settings:
----------------
shakecursor:

screenshot:

outputlocator:

mouseclick:
color1: #ff0000
color2: #00ff00
color3: #0000ff
lineWidth: 2
ringLife: 300
ringSize: 20
ringCount: 2
showText: false
font: Droid Sans [1ASC],10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
enabled: false

colorpicker:

zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
focusTrackingEnabled: false
textCaretTrackingEnabled: false
focusDelay: 350
moveFactor: 20
targetZoom: 1

contrast:

login:
pluginId: login
isActiveFullScreenEffect: false

logout:
pluginId: logout
isActiveFullScreenEffect: false

sessionquit:
pluginId: sessionquit
isActiveFullScreenEffect: false

slidingpopups:
slideInDuration: 200
slideOutDuration: 200

windowaperture:
pluginId: windowaperture
isActiveFullScreenEffect: false

slide:
horizontalGap: 45
verticalGap: 20
slideBackground: true

maximize:
pluginId: maximize
isActiveFullScreenEffect: false

fadingpopups:
pluginId: fadingpopups
isActiveFullScreenEffect: false

squash:
pluginId: squash
isActiveFullScreenEffect: false

fullscreen:
pluginId: fullscreen
isActiveFullScreenEffect: false

frozenapp:
pluginId: frozenapp
isActiveFullScreenEffect: false

dimscreen:
pluginId: dimscreen
isActiveFullScreenEffect: false

scale:
pluginId: scale
isActiveFullScreenEffect: false

dialogparent:
pluginId: dialogparent
isActiveFullScreenEffect: false

windowview:
activeView:
delegate:
animationDuration: 300
ignoreMinimized: false
mode:
partialActivationFactor: 0
gestureInProgress: false
searchText:
selectedIds:

tileseditor:
activeView:
delegate:
animationDuration: 200

overview:
activeView:
delegate:
animationDuration: 300
ignoreMinimized: false
filterWindows: true
organizedGrid: true
overviewPartialActivationFactor: 0
overviewGestureInProgress: false
transitionPartialActivationFactor: 0
transitionGestureInProgress: false
gridPartialActivationFactor: 0
gridGestureInProgress: false
desktopOffset:
searchText:

highlightwindow:

blendchanges:

startupfeedback:
type: 1

systembell:

screentransform:

kscreen:


Loaded Plugins:
---------------
BounceKeysPlugin
KeyNotificationPlugin
StickyKeysPlugin
TouchpadShortcutsPlugin
buttonsrebind
eis
krunnerintegration
nightlight
screencast

Available Plugins:
------------------
BounceKeysPlugin
KeyNotificationPlugin
StickyKeysPlugin
TouchpadShortcutsPlugin
buttonsrebind
eis
krunnerintegration
nightlight
screencast