[Lazarus] Form Resizing

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Mon Mar 7 11:25:30 CET 2016

Bo Berglund wrote:

> I have located the release document for Raspbian Jessie here:
> https://www.raspberrypi.org/blog/raspbian-jessie-is-here/
> A little bit down they write the following:
> <quote>the appearance of Raspbian is now based on version 3 of GTK+,
> the user interface toolkit used for the LXDE desktop environment. The
> older version 2 of GTK+ is slowly being replaced with version 3
> </quote>
> If this means that Raspbian is using LXDE is beyond me but it seems
> like it is using gtk3 by this wording.

Let's try to clarify the overall architecture one last time.

i)   Underlying the entire system is the Linux kernel which provides at 
least partial support allowing other libraries and subsystems to access 
the screen and other peripherals. In general, the precise version of 
this isn't relevant.

ii)  Assuming that you get a login dialog(ue) when you power up the 
system, that is being presented by the display manager running on top of 
an initial X11 session. the display manager also implements the XDMCP 
protocol which facilitates remote X11 sessions.

iii) Example display managers are xdm, gdm, kdm, LightDM and so on.

iv)  When you present a valid userID and password, the display manager 
shuts down the original X11 session and starts up a new one using the 
identity of the validated user. Programs running in the context of this 
session are given a DISPLAY shell variable identifying it.

v)   The new X11 session is immediately available for programs that know 
the DISPLAY value, but if run like that they won't have title bars and 
other window "furniture" (note that this is a significant architectural 
difference from Windows).

vi)  Each X11 session has special provision for a window manager which 
is normally started automatically. It is this that displays the title 
bar etc.

vii) These days, it is common for the window manager to also implement 
(portions of) a desktop environment. Most of these have some sort of 
menu button or a list of installed programs, and frequently display 
special entities like a trash can on the desktop background.

iix) Example window managers are Gnome, KDE, OpenBox, LXDE and so on.

ix)  Most programs aren't bothered about what window manager is running.

x)   The window manager usually uses a widget set for convenience, 
rather than being coded directly on top of the X11 API. Example widget 
sets are gtk, gtk2, gtk3 and Qt.

xi)  You can't easily change the widget set that the window manager 
(desktop environment) uses, although in most cases it's possible to add 

xii) As a result, you can easily find yourself in a situation where the 
window manager (AKA desktop environment) and programs supplied with it 
use one widget set, while programs that you've installed yourself use a 
different one: this is generally of little consequence.

I strongly suggest that you make sure the Qt widget set is installed on 
your Raspbian, and try using Lazarus to build a program for it. My 
experience is that there are "rough edges" in the interaction between 
Lazarus and (the widget set etc. supplied with) Debian and Raspbian 
"Jessie", I believe that at least some of these have been discussed as bugs.

I'll leave somebody else to comment on the current status of GTK3, which 
I think would be of general interest.

Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

More information about the Lazarus mailing list