Bug 448562

Summary: [Wayland] Emoji selector does not appear with certain display arrangements
Product: [Plasma] kwin Reporter: indecisiveautomator
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: nate
Priority: NOR Keywords: wayland
Version: 5.23.90   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description indecisiveautomator 2022-01-15 22:37:45 UTC
SUMMARY
The emoji selector cannot be displayed on the Wayland session in most instances. Trying to open it from the Application Dashboard, KRunner, or the Meta+Period shortcut will open it. I can see it when I use the Overview effect (although with an incorrectly rendered side panel), however the current window I am on does not lose focus so the window itself does not get focused. When using the Thumbnails Task Switcher, the window thumbnail displays but the window does not appear anywhere. This also does not take the focus away from my previous window.


STEPS TO REPRODUCE
Attempting to open the emoji selector is enough.


OBSERVED RESULT
Emoji selector does not display, cannot be focused and only seems to display in the Overview.


EXPECTED RESULT
Emoji selector should work the way it did in previous releases of Plasma 5.23, from 5.23.3 and below.


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 5.16.0-arch1-1 (64bit)
KDE Plasma Version: 5.23.90
KDE Frameworks Version: 5.90.0
Qt Version: 5.15.2

ADDITIONAL INFORMATION
This bug is present in 5.23.5 and 5.23.90, I didn't get around to reporting it the other day and am now on 5.23.90, but I wanted to mention that I experienced it in the latest stable release too. The bug was not present as late as 5.23.3. I am unsure about 5.23.4. So the timeframe in my experience:
- 5.23.3 - Worked
- 5.23.4 - Unknown
- 5.23.5 - Stopped working
- 5.23.90 - Still not working
Comment 1 Nate Graham 2022-01-21 01:08:08 UTC
This all sounds extremely strange, and I am a bit confused. The Emoji picker window works fine for me, so I mist not be understanding the issue. Would you mind writing steps to reproduce?
Comment 2 indecisiveautomator 2022-01-21 02:07:54 UTC
So while writing a reply to you, I realised the cause! I can open the emoji picker fine when my top middle display is switched off, but not when it is switched on. I realised this after writing an initial reply and then testing on my single-display laptop to see if the emoji selector works there, and it does. I also discovered another odd behaviour, which I'll mention below. So with this in mind, I'll write the steps to reproduce:

1. With a centered top display connected,
2. Attempt to open the emoji picker, either from Kickoff/KRunner/the Meta+Period shortcut
3. The emoji selector does not appear.
4. If *any* display is powered off and on again,
5. The behaviour from the initial report, where the window appears in Overview, is not present. In other words, if a display is powered off and on, the emoji picker menu does not display *anywhere*, but it's process, "ibus-ui-emojier-plasma", is running and visible from KSysGuard.

On my laptop with Plasma 5.23.90, the emoji picker works fine, but not on my desktop. Perhaps it is a multi-screen issue related to my display setup (three along the bottom, one in the top center), which seems to cause a couple of other buggy behaviours (https://bugs.kde.org/show_bug.cgi?id=447330) (https://bugs.kde.org/show_bug.cgi?id=448572).

Initially, I was under the impression that this behaviour was as simple as trying to open the emoji picker, which is why the steps to reproduce was just basically "Open the emoji picker". From further testing, I can see it's a bit more complex than this.
Comment 3 Nate Graham 2022-01-21 16:35:44 UTC
Thanks, that's helpful. Is the main window really not appearing *anywhere*? Does it not even show up in the overview effect?
Comment 4 indecisiveautomator 2022-01-21 19:03:44 UTC
The main window will appear in the Overview effect normally even with the top monitor powered on, yes, but once a monitor is powered on and off - any monitor - the window no longer shows up even in the Overview effect. If it was previously visible in the Overview effect, when it will disappear. If the process is killed and you try to open the window again, it still won't show up in the Overview effect unless the top monitor is powered off.

So basically, if no monitor is switched on or off, and my top-most display is powered on, the picker appears in the Overview effect but cannot be focused at all. As mentioned in the opening report, there is no focus change even when trying to select it. If a monitor is switched on and off, the emoji picker will disappear from the Overview effect. If the top display is powered off, the emoji picker appears fine.

As an additional piece of information, I noticed that when the emoji picker is visible in the Overview effect, it is always on the top display spread (this top display is DP-01). I could not find any instance where this was not the case unless the monitor is off, where it appears on my middle display (this is DP-02). Very strange.
Comment 5 Vlad Zahorodnii 2022-01-26 15:47:26 UTC
Can you open the debug console by typing "kwin" in krunner and check whether emoji selector is listed under "wayland windows"? If so, what's its geometry? Can you also post the output of `qdbus org.kde.KWin /KWin supportInformation`, it will include info about the output layout
Comment 6 indecisiveautomator 2022-01-26 20:56:13 UTC
I can't seem to open the KWin debug console. It appears in KRunner when I type "KWin" but when I try to open it, nothing appears. I'm unsure of its process name so I can't say if it's running and just is not visible.

Here is the output of the qdbus command (unsure if there's a better way to send such large outputs, sorry):

```
==========================

Version
=======
KWin version: 5.23.90
Qt Version: 5.15.2
Qt compile version: 5.15.2
XCB compile version: 1.14

Operation Mode: Xwayland

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

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

Decoration
==========
Plugin: org.kde.breeze
Theme: 
Plugin recommends border size: None
Blur: 0
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
decorationButtonsLeft: 5, 3, 4
decorationButtonsRight: 2, 0
borderSize: 0
gridUnit: 10
font: Noto Sans,10,-1,5,75,0,0,0,0,0,Bold
smallSpacing: 2
largeSpacing: 10

Platform
==========
Name: DRM
Active: true
Atomic Mode Setting on GPU 0: true

Cursor
======
themeName: breeze_cursors
themeSize: 36

Options
=======
focusPolicy: 0
xwaylandCrashPolicy: 
xwaylandMaxCrashCount: 3
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
activeMouseScreen: true
placement: 6
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
rollOverDesktops: true
focusStealingPreventionLevel: 1
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5015
operationMaxButtonRightClick: 5014
commandActiveTitlebar1: 0
commandActiveTitlebar2: 28
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 28
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 28
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
compositingMode: 1
useCompositing: true
hiddenPreviews: 1
glSmoothScale: 1
glStrictBinding: false
glStrictBindingFollowsDriver: true
glPreferBufferSwap: 101
glPlatformInterface: 2
windowsBlockCompositing: false
latencyPolicy: 
renderTimeEstimator: 

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

Screens
=======
Multi-Head: no
Active screen follows mouse:  yes
Number of Screens: 4

Screen 0:
---------
Name: DP-1
Geometry: 2560,0,1920x1080
Scale: 1
Refresh Rate: 60000
Adaptive Sync: incapable
Screen 1:
---------
Name: DP-2
Geometry: 2560,1080,1920x1080
Scale: 1
Refresh Rate: 164997
Adaptive Sync: incapable
Screen 2:
---------
Name: DP-3
Geometry: 0,1080,2560x1440
Scale: 1.5
Refresh Rate: 59997
Adaptive Sync: automatic
Screen 3:
---------
Name: HDMI-A-1
Geometry: 4480,1080,1920x1080
Scale: 1
Refresh Rate: 60000
Adaptive Sync: incapable

Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 5700 XT (NAVI10, DRM 3.44.0, 5.16.2-arch1-1, LLVM 13.0.0)
OpenGL version string: 4.6 (Core Profile) Mesa 21.3.4
OpenGL platform interface: EGL
OpenGL shading language version string: 4.60
Driver: RadeonSI
GPU class: Navi
OpenGL version: 4.6
GLSL version: 4.60
Mesa version: 21.3.4
Linux kernel version: 5.16.2
Direct rendering: Requires strict binding: no
GLSL shaders:  yes
Texture NPOT support:  yes
Virtual Machine:  no
OpenGL 2 Shaders are used

Loaded Effects:
---------------
kwin4_effect_dialogparent
kwin4_effect_dimscreen
kwin4_effect_scale
kwin4_effect_windowaperture
kwin4_effect_sessionquit
kwin4_effect_morphingpopups
kwin4_effect_translucency
kwin4_effect_login
kwin4_effect_frozenapp
zoom
slidingpopups
colorpicker
desktopgrid
slide
screenshot
highlightwindow
overview
presentwindows
wobblywindows
blur
contrast
screenedge
startupfeedback
kscreen
screentransform

Currently Active Effects:
-------------------------
blur
contrast
screenedge

Effect Settings:
----------------
kwin4_effect_dialogparent:
pluginId: kwin4_effect_dialogparent
isActiveFullScreenEffect: false

kwin4_effect_dimscreen:
pluginId: kwin4_effect_dimscreen
isActiveFullScreenEffect: false

kwin4_effect_scale:
pluginId: kwin4_effect_scale
isActiveFullScreenEffect: false

kwin4_effect_windowaperture:
pluginId: kwin4_effect_windowaperture
isActiveFullScreenEffect: false

kwin4_effect_sessionquit:
pluginId: kwin4_effect_sessionquit
isActiveFullScreenEffect: false

kwin4_effect_morphingpopups:
pluginId: kwin4_effect_morphingpopups
isActiveFullScreenEffect: false

kwin4_effect_translucency:
pluginId: kwin4_effect_translucency
isActiveFullScreenEffect: false

kwin4_effect_login:
pluginId: kwin4_effect_login
isActiveFullScreenEffect: false

kwin4_effect_frozenapp:
pluginId: kwin4_effect_frozenapp
isActiveFullScreenEffect: false

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

slidingpopups:
slideInDuration: 150
slideOutDuration: 250

colorpicker:

desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true

slide:
duration: 500
horizontalGap: 45
verticalGap: 20
slideDocks: false
slideBackground: true

screenshot:

highlightwindow:

overview:
animationDuration: 200
layout: 1
blurBackground: true

presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: false
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: true
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0

wobblywindows:
stiffness: 0.15
drag: 0.8
moveFactor: 0.1
xTesselation: 20
yTesselation: 20
minVelocity: 0
maxVelocity: 1000
stopVelocity: 0.5
minAcceleration: 0
maxAcceleration: 1000
stopAcceleration: 0.5
moveWobble: true
resizeWobble: false

blur:

contrast:

screenedge:

startupfeedback:
type: 1

kscreen:

screentransform:


Loaded Plugins:
---------------
kwin5_plugin_colord
kwin5_plugin_krunner
kwin5_plugin_nightcolor
kwin5_plugin_screencast

Available Plugins:
------------------
kwin5_plugin_colord
kwin5_plugin_krunner
kwin5_plugin_nightcolor
kwin5_plugin_screencast
```
Comment 7 indecisiveautomator 2022-01-28 23:45:31 UTC
I ran some system updates earlier today, and along with another issue with system tray icons being fixed, the emoji selector now appears! However, I still cannot open the KWin debug console. This is likely a separate issue, but I cannot confirm the window geometry still or anything like that, apologies.

I'm sure a KDE dev is probably more aware of what packages might have been updated to fix this, but I had a browse through the Pacman logs. Mostly it was an update to Mesa, but there were some Qt package updates:
- `qt-base` was updated from `5.15.2+kde+r294` to `5.15.2+kde+r295`
- `qt5-wayland` was updated from `5.15.2+kde+r44-1` to `5.15.2+kde+r46-1`

On opening it in the first login, it doesn't appear centered on the screen but a bit away from the left hand side of the screen and a bit down from the top. Subsequent opens make it appear centered. But that is very minor, and just an observation.

I am happy for this to be marked as resolved, but if further investigation into what may have fixed this issue is needed, it can be left open.
Comment 8 indecisiveautomator 2022-01-30 21:59:43 UTC
There was a slew of Qt package updates for my system, adding a `-2` to the end of most versions. Since this, the emoji selector now always appears centered and the previous first-open positioning behaviour seems to be resolved! 😄 The emoji picker now functions as before. It doesn't appear on the display that the cursor is on, but that's a separate issue (I believe KRunner tries to do this but can't on Wayland).

Glad this is resolved!
Comment 9 Nate Graham 2022-01-31 16:44:18 UTC
Oh good!