[Gambas-user] gb.desktop.x11 LargeDesktop support

Bruce Steers bsteers4 at gmail.com
Wed Oct 26 00:18:47 CEST 2022


On Tue, 25 Oct 2022 at 22:45, Benoit Minisini <
benoit.minisini at gambas-basic.org> wrote:

> Le 25/10/2022 à 23:38, Bruce Steers a écrit :
> > So my recent discovery was this...
> >
> > using gb.desktop.x11 there are Desktop/Workspace switching features.
> > I found this info... @
> > https://specifications.freedesktop.org/wm-spec/1.3/ar01s02.html
> > <https://specifications.freedesktop.org/wm-spec/1.3/ar01s02.html>
> >
> >
> >       Large Desktops
> >
> > The window manager may offer to arrange the managed windows on a desktop
> > that is larger than the root window. The screen functions as a viewport
> > on this large desktop. Different policies regarding the positioning of
> > the viewport on the desktop can be implemented: The window manager may
> > only allow the viewport position to change in increments of the screen
> > size (paging) or it may allow arbitrary positions (scrolling).
> >
> > To fulfill the ICCCM principle that clients should behave the same
> > regardless whether a window manager is running or not, window managers
> > which implement large desktops must interpret all client-provided
> > geometries with respect to the current viewport.
> >
> >
> >         Implementation note
> >
> > There are two options for implementing a large desktop: The first is to
> > keep the managed windows (or, if reparenting, their frames) as children
> > of the root window. Moving the viewport is achieved by moving all
> > managed windows in the opposite direction.
> >
> > The second alternative is to reparent all managed windows to a dedicated
> > large window (somewhat inappropriately called a 'virtual root'). Moving
> > the viewport is then achieved by moving the virtual root in the opposite
> > direction.
> >
> > Both alternatives are completely ICCCM compliant, although the second
> > one may be somewhat problematic for clients trying to figure out the
> > window manager decorations around their toplevel windows and for clients
> > trying to draw background images on the root window.
> >
> > So from that we see there are 2 ways of implementing the desktops, one
> > involves multiple viewports and one is one large screen.
> >
> > It seems gb.desktop.x11 is coded to handle the multiple desktops method
> > but not the single big screen type :(
> >
> > I'm almost there with implementing this (see attached project)
> >
> > the project contains a folder called X11LargeDesktop containing files
> > that add the following to gb.desktop.x11
> >
> > X11.DesktopCount and X11.CurrentDesktop now works for large desktops.
> >
> > DesktopWindow.Desktop now also works for large desktops.
> >
> > X11.IsLargeDesktop True if large desktop false if multiple viewports.
> >
> > X11.ViewPorts returns a list of the viewport positions if using large
> > desktop taking Orientation into account. Still todo: handle start
> > corners, currently assumes TopLeft.
> >
> > X11.Supported As String[], returns a list of the supported wm commands
> > (from hint _NET_SUPPORTED)
> >
> > X11.GetDesktopNames(DefaultName as String="Workspace") , get's the
> > desktop names or makes them up if not found.
> >
> >
> >  From what i have read the hint _NET_DESKTOP_LAYOUT is the key, a single
> > large desktop will have this set but multiple desktops will not so i
> > have used that as the check criteria. I also seems my MATE is the only
> > desktop that uses the large screen method.
> >
> > Also i'm handling using multiple rows/columns as defined at
> > https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html
> > <https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html> but I
> > cannot test it as my desktop does not do it.
> >
> > (have not handled start corners yet)
> >
> >
> > tested on LinuxMint, desktops  MATE/Plasma/Cinnamon/Gnome
> >
> > other than my Mint/MATE the class uses the original X11 routines that we
> > know works for multiple viewport desktops.
> >
> > Dunno if you want to rip this code Ben (or laugh at my awful
> > implementation and do it properly yourself ;) lol )  gb.desktop.x11 is
> > lacking this "other method" so here's a little work on the matter :)
> >
> > Wishing well
> >
> > BruceS
> >
>
> I will look at it.
>
> --
> Benoît Minisini.
>

Cheers Ben.
i found a bug and a glitch when changing X11.DesktopCount
i forgot to update the ViewPort array and then had to put a Wait 0.1 after
sending the message to update new Count geometry as it would update the
array too fast.
Seems pretty stable now.
I'll be testing the merde out of it for a few days anyway to see if i can
find any other glitches.

Respects
BruceS
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20221025/d227f73a/attachment-0001.htm>
-------------- next part --------------
<salt FCKGM-0001-213E-1E12-BF2E>
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
</salt>


More information about the User mailing list