www.cendio.com
Bug 4031 - native look and feel for client
: native look and feel for client
Status: NEW
: ThinLinc
Client platforms
: 3.1.2
: PC All
: P2 Enhancement
: LowPrio
Assigned To:
:
:
:
:
  Show dependency treegraph
 
Reported: 2011-10-21 10:05 by
Modified: 2017-08-29 13:30 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From cendio 2011-10-21 10:05:54
It would be nice if tlclient and vncviewer could look more like native apps.
Properly using native toolkits is not feasible with our current development
resources, but maybe we can make FLTK use native drawing APIs to make the
widgets look native? On Unix we could dlopen() GDK and/or Qt to make them
optional requirements.
------- Comment #1 From cendio 2014-08-19 13:01:13 -------
Another option is considering a switch to Qt. A lot has happened since last we
looked at it. And it is fully capable of mimicing the native system look:

http://qt.digia.com/PageFiles/2476/qquick_controls1.png

Downside is mainly that the client will most likely be much larger on disk.
------- Comment #2 From cendio 2015-03-19 11:30:09 -------
Note that Qt5 has dropped support for Solaris. It also seems to target xcb,
which could be another issue on Solaris, and older terminals.
------- Comment #3 From cendio 2015-03-20 14:55:58 -------
Qt doesn't seem to have improved much in the way of staying lean either. A
statically linked Hello World is 15 MiB when stripped. The link line is also
very frightening:

cbrun x86_64 g++ -nodefaultlibs -fPIE -o foo foo.cc -I/usr/include/QtWidgets
-I/usr/include/QtGui -I/usr/include/QtCore -Wl,-Bstatic
/usr/lib64/qt5/plugins/platforms/libqxcb.a -lQt5PlatformSupport -lQt5Widgets
-lQt5Gui -lQt5Core  -lglib-2.0 -lpcre16 -ljpeg -lpng -lxcb-shape -lxcb-randr
-lxcb-xfixes -lxcb-shm -lxcb-sync -lxcb-xkb -lxcb-image -lxcb-icccm
-lxcb-keysyms -lxcb-util -lxkbcommon -lxkbcommon-x11 -lXi -lXext -lfontconfig
-lfreetype -lexpat -lbz2 -lstdc++ -Wl,-Bdynamic -lxcb -lX11-xcb -lX11 -lz -ldl
-lrt -lm -lc -lgcc_eh -lgcc

If I'm being generous and only statically link Qt, then it's still 13 MiB when
stripped. Link line is also still pretty verbose:

cbrun x86_64 g++  -fPIE -o foo foo.cc -I/usr/include/QtWidgets
-I/usr/include/QtGui -I/usr/include/QtCore -Wl,-Bstatic
/usr/lib64/qt5/plugins/platforms/libqxcb.a -lQt5PlatformSupport -lQt5Widgets
-lQt5Gui -lQt5Core -Wl,-Bdynamic -lglib-2.0 -lfontconfig -lfreetype -lpcre16
-ljpeg -lpng -lxcb -lxcb-xfixes -lxcb-sync -lxcb-randr -lxcb-shape -lxcb-shm
-lxcb-xkb -lxcb-image -lxcb-icccm -lxcb-keysyms  -lxkbcommon -lxkbcommon-x11
-lXi -lX11-xcb -lX11 -lz -ldl


For comparison, our current tlclient.bin and vncviewer are about 2.5 MiB each.
------- Comment #4 From cendio 2015-03-20 14:56:46 -------
(In reply to comment #1)
> Another option is considering a switch to Qt. A lot has happened since last we
> looked at it. And it is fully capable of mimicing the native system look:
> 
> http://qt.digia.com/PageFiles/2476/qquick_controls1.png
> 

This link seems to have gone stale. Something more current:

http://doc.qt.io/qt-5/gallery.html
------- Comment #5 From cendio 2015-06-16 16:32:35 -------
LTO might be a solution to the large size. Hopefully it can deduce that most of
Qt is unused and strip it from the binaries.
------- Comment #6 From cendio 2016-02-11 12:10:43 -------
Unfortunately LTO did not magically solve everything. It reduced a rather
sizeable 5 MiB of the binary, but that's still leaves us with a much larger
binary than today.
------- Comment #7 From cendio 2017-01-23 14:32:47 -------
Apparently Qt has been working on being able to configure out more of the
library, reducing size:

http://blog.qt.io/blog/2017/01/23/qt-5-8-released/

"As you can see, the new configuration system allows for significant reductions
in size and savings of more than 60% in binary size compared to Qt 5.6."