Comments (19)
Hm.. we do move layershell popups to their own popup tree per output that is positioned above the "overlay" tree (but below the session-lock tree):
(note: the comment above is actually wrong, they are moved to a dedicated layer popup tree rather than the top layer)
However we only do so for layershell parents <= "bottom" layer:
So we should likely just move all layershell popups to the dedicated popup tree.
I think it's another topic. Dialogs can be decorated (e.g. confirmation dialog shown on quitting QTerminal) so popups are not suitable for this.
But I agree that current implementation of layer-shell popups feels strange. At least the reason why we do so only for bottom/background layer should be documented in comment.
from labwc.
I think it's another topic. Dialogs can be decorated (e.g. confirmation dialog shown on quitting QTerminal) so popups are not suitable for this.
Whoops, somehow missed this comment:
Those dialogs (preferences and confirmation for pasting multiline text) are just normal windows and are seen in switcher and lxqt-panel's taskbar.
That is indeed something different. And I have absolutely no idea how we (or in fact any other compositor) could make that work without using some private wayland protocol. When layershell clients with layer "top" or above spawn a new xdg_toplevel, it will always be rendered below the layershell client if their surfaces overlap.
The layershell protocol is not really intended to be used for usual applications like terminal emulators but rather for notification daemons, backgrounds, desktops and panels.
from labwc.
From all compositors I've tested only kwin gets this right.
I built QTerminal and started in Kwin, but its preference window is shown behind the terminal window, just like in labwc. Could you tell me how you managed to make it shown on top?
from labwc.
Oh, yes you're right. I tested on a clean user and it's like in your screenshot. I noticed I've left over a window rule in kwin from when dropdown wasn't supported.
I see just a window rule for "normal window" is enough.
from labwc.
Oh, yes you're right. I tested on a clean user and it's like in your screenshot. I noticed I've left over a window rule in kwin from when dropdown wasn't supported.
I see just a window rule for "normal window" is enough.
from labwc.
I tried with labwc rules "Raise" and "alwayOnTop" but those won't work.
from labwc.
I'm curious, does the dialog show in the window switcher?
from labwc.
I'm curious, does the dialog show in the window switcher?
Those dialogs (preferences and confirmation for pasting multiline text) are just normal windows and are seen in switcher and lxqt-panel's taskbar.
from labwc.
Oh, yes you're right. I tested on a clean user and it's like in your screenshot. I noticed I've left over a window rule in kwin from when dropdown wasn't supported.
I added the window rule in KWin but it didn't work.
But AFAIR there's no way for clients to tell compositor that a wlr_layer_surface
is the parent of xdg_toplevel
. When the parent window is xdg_toplevel
, clients can send xdg_toplevel.set_parent
so the compositor always places the dialog above the parent window. wlr-layer-surface protocol doesn't have any request like that.
Perhaps KWin uses another protocol for this but I have no idea.
from labwc.
Hm.. we do move layershell popups to their own popup tree per output that is positioned above the "overlay" tree (but below the session-lock tree):
Lines 436 to 457 in 1495708
(note: the comment above is actually wrong, they are moved to a dedicated layer popup tree rather than the top layer)
However we only do so for layershell parents <= "bottom" layer:
Lines 499 to 502 in 1495708
So we should likely just move all layershell popups to the dedicated popup tree.
from labwc.
layer_popup_tree
is output specific though, so needs to be different, doesn't it?
--EDIT-- Ignore me. Can't read properly.
from labwc.
The layershell protocol is not really intended to be used for usual applications like terminal emulators...
It isn't usual in the sense that it's in the drop-down mode.
Moreover, Wayland has left no other option for us.
from labwc.
The layershell is needed only to set position on screen centered at top, which would need fiddling with window rules otherwise, depending on the screen size.
from labwc.
... which would need fiddling with window rules otherwise
In this case, window rules are out of question because the drop-down terminal should to be positioned as it is now. Window rules are good when the user likes to put a window somewhere, or when there's no other way.
from labwc.
Completely random idea: what if the terminal uses an exclusive zone? Newly spawned windows should then be placed outside of that zone AFAIR. However it would also make existing maximized / snapped windows smaller as long as the terminal is visible.
from labwc.
However it would also make existing....
Annoying UX ;)
from labwc.
It would be huge usually and there would be no place for the preferences window.
from labwc.
I can't reproduce. Have tried with qterminal --drop
(2.0.0
) but it doesn't appear in overlay-layer so I'm guessing we're talking about an unreleased branch.
If the PID of the layer-shell-client is the same as the dialog (which I'm guessing it would be), we could use that in some logic to position the dialog in a tree above overlay-tree.
from labwc.
It was released just 2 days ago, but for another reason. The pid is the same.
from labwc.
Related Issues (20)
- Labwc misplaces titlebar on small window HOT 14
- error code 129 HOT 3
- Partial Keyboard Input Detected HOT 3
- Feature Request: Tablet Relative Tracking Mode HOT 33
- X11 resources set by xrdb don't survive xwayland restart HOT 13
- LCD backlight remains on when laptop lid closed HOT 2
- Extra indicators for the window state HOT 3
- Add resistance option for tiled windows HOT 3
- shadows of qt windows HOT 2
- Monitor configuration when in greeter HOT 6
- Controls in GTK2 applications (Tried in GIMP) don't work or if they work, just barely HOT 9
- Magnifier doesn't work with full-screen surfaces (direct scanout?) HOT 22
- Choose wlroots version when compiling HOT 9
- max_toggled button should fallback to max HOT 1
- 0.7.3: Tablet: Thunar always makes multi selection on left click HOT 2
- way to customize CapsLock behavior? HOT 2
- Stylus input doesn't rotate. HOT 4
- Doubled shortcuts depending on layout HOT 2
- [ERROR] [types/xdg_shell/wlr_xdg_surface.c:169] A configure is scheduled for an uninitialized xdg_surface HOT 16
- last version doesn't work HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from labwc.