Bug 4031 - native look and feel for client
Summary: native look and feel for client
Status: NEW
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Client platforms (show other bugs)
Version: 3.1.2
Hardware: PC All
: P2 Enhancement
Target Milestone: LowPrio
Assignee: Peter Åstrand
URL:
Keywords: fltk
Depends on:
Blocks:
 
Reported: 2011-10-21 10:05 CEST by Pierre Ossman
Modified: 2019-01-24 11:16 CET (History)
0 users

See Also:
Acceptance Criteria:


Attachments

Description Pierre Ossman cendio 2011-10-21 10:05:54 CEST
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 Pierre Ossman cendio 2014-08-19 13:01:13 CEST
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 Pierre Ossman cendio 2015-03-19 11:30:09 CET
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 Pierre Ossman cendio 2015-03-20 14:55:58 CET
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 Pierre Ossman cendio 2015-03-20 14:56:46 CET
(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 Pierre Ossman cendio 2015-06-16 16:32:35 CEST
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 Pierre Ossman cendio 2016-02-11 12:10:43 CET
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 Pierre Ossman cendio 2017-01-23 14:32:47 CET
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."
Comment 8 Pierre Ossman cendio 2019-01-24 11:16:27 CET
Qt has a wiki about statically linking the library:

https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

I have not tested the suggestions there though.

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