Bug 445532 - [feature] - allow OnDemand panels to reserve space when unhidden
Summary: [feature] - allow OnDemand panels to reserve space when unhidden
Status: REPORTED
Alias: None
Product: lattedock
Classification: Unmaintained
Component: application (other bugs)
Version First Reported In: git (master)
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Michail Vourlakos
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-11-15 14:47 UTC by Mikko Merikivi
Modified: 2021-11-15 16:27 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
I have a VLC media player open to demonstrate how the settings Always Visible and On Demand Sidebar differ. (40.09 KB, image/png)
2021-11-15 14:47 UTC, Mikko Merikivi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mikko Merikivi 2021-11-15 14:47:49 UTC
Created attachment 143581 [details]
I have a VLC media player open to demonstrate how the settings Always Visible and On Demand Sidebar differ.

SUMMARY
***
My suggestion is to have some kind of an option for On Demand Sidebar to behave like the Always Visible option when visible (to reserve space for the panel), and to let windows take up also the area of the panel when it's hidden (like it currently does). This differs from the current state of things in that currently maximized windows go below the On Demand Sidebar even when it's visible.
***


STEPS TO REPRODUCE
1. Switch a panel-type sidebar to an On Demand Sidebar
2. Open up any maximized application
3. Make the sidebar visible

OBSERVED RESULT
The edge on the side of the panel of the maximized window goes below the panel.

EXPECTED RESULT
(An option for) having the act of making the On Demand Sidebar visible to resize any overlapping windows so that they don't overlap. As an Always Visible panel does.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Arch Linux
KDE Plasma Version: 5.23.2 (I think)
KDE Frameworks Version: 5.87.0
Qt Version: 5.15.2
Comment 1 Michail Vourlakos 2021-11-15 15:37:23 UTC
1. What are the benefits compared to the current provided visibility modes?
2. Why not use an AlwaysVisible panel with borderless maximized windows in combination?
3. Why not use an AutoHide panel?
4. What is the end goal for this? maybe a screenshot with the workflow you are trying to achieve it will provide more arguments for supporting it?
5. OnDemand Sidebar are triggering their showing through the Latte Sidebar Button, are you proposing something different?
Comment 2 Mikko Merikivi 2021-11-15 16:15:10 UTC
> 1. What are the benefits compared to the current provided visibility modes?
> 3. Why not use an AutoHide panel?
I've not seen an option where the panel can get hidden but when visible it resizes overlapping windows. Also with auto-hiding panels there's some amount of annoyance with the panel popping up when the cursor goes on the screen border of the panel's side.

This is an option that could be added to AutoHide as well, by the way. My personal use case just is the On Demand Sidebar.


> 2. Why not use an AlwaysVisible panel with borderless maximized windows in combination?
The panel takes up space on the screen in this case. Some programs are designed for very specific aspect ratios and/or resolutions, and thus I have to compromise either on using a smaller resolution for the program.


I... suppose yet another option is to kill Latte Dock for the time of using a borderless full screen program, and start it back again when quitting. However, I am not always 100% focused on just a windowed full screen application, so I might want to use Latte regardless occasionally.


> 5. OnDemand Sidebar are triggering their showing through the Latte Sidebar Button, are you proposing something different?
Not really. It's an option that probably works for some people. For me, I managed to find a command to do it from wherever I think is suitable: 
qdbus org.kde.lattedock /Latte org.kde.LatteDock.toggleHiddenState "" "" "" "0"


> 4. What is the end goal for this? maybe a screenshot with the workflow you are trying to achieve it will provide more arguments for supporting it?
It's mostly for gaming purposes. Without naming any specific one, some games on wine don't handle alt+tabbing all that well when using a proper full screen mode. So, windowed full screen is a workaround that gets used. But then come the issues of how to allocate screen space, especially when the game in question wants to run at, let's say, 2560x1440 exactly. With an always visible panel, the effective screen space is more like 2560x1388 so some of the pixels on some border have to be sacrificed or a smaller resolution to be used. Let's say the next smallest available resolution is 1920x1080. It's a substantial loss in the area the window can take on the screen, just to have it all there.

And let's say the game is heavy on mouse-use and doesn't lock it into the center of the screen. Then even an auto-hiding panel hardly does the job since your mouse will go over the revealing screen edge, let's say for moving the camera purposes. In other situations I prefer to have the panel always visible, so an easy way to hide and unhide it without taking up screen estate is what seems to be what would work best.


I did think that, despite the premise of the On Demand Sidebar, it would also work for me to add a dbus method to toggle the hidden state of an always visible bar. But then it would be so hidden of a thing nobody is going to even find it other than those already in the know.
Comment 3 Mikko Merikivi 2021-11-15 16:27:18 UTC
I suppose, since complexity is a consideration that you probably have in mind in your questioning attitude toward the necessity of the suggested feature, why do we even have a separate On Demand Sidebar? Why just not have a dbus toggle that works with any type of dock or panel? I noted that it would work for me to have the dbus toggle available for an Always Visible one, and I imagine some combination of options would be able to replace the current On Demand Sidebar functionality when used with that dbus toggle method (called from a Sidebar Button somewhere).