[Development] extending the cocoa native style via a plugin: feasible?

Olivier Goffart olivier at woboq.com
Tue Dec 1 11:11:37 CET 2015

On Tuesday 1. December 2015 10:52:46 René J.V. Bertin wrote:
> Hi,
> I'd hoped to make this a shorter message, so please bear with me...
> I'm currently working to facilitate deployment of the KF5 Frameworks (and
> dependent applications) on OS X, and looking to provide the best possible
> experience by supporting as much as possible of the KDE feature set.
> To me, that clearly includes supporting the different font roles used
> throughout KDE. Even if we ignore the question whether applications should
> allow the user to configure a different typeface than what the system would
> use, an interface will evidently look (and possible work) better if it is
> displayed with the relative sizes and weights for which it was designed.
> It would thus be interesting to have an extended native theme that supports
> the use of different font sizes and/or weights, but also (why not) font
> families, icon sets and even colour palettes. How feasible would it be to
> write a plugin that extends the current native theme, i.e. that calls the
> existing code where possible rather than duplicating that code completely
> and modifying it where required?
> If we forget about the native aspect for now: Simply using `-style kde` or
> `QT_STYLE_OVERRIDE=kde` switches to the graphical look/design of the active
> KDE theme, but does not changes the fonts (or colour palette or anything
> else). Therefore, my initial approach in this matter has been to enable the
> use of KDE's platform theme plugin (through a few small patches to Qt 5.5)
> and to patch it so it initialises the native theme and uses it where KDE's
> platform theme plugin does not provide a feature (menus...) or should not
> be used (e.g. keyboard shortcuts). This works perfectly and allows users to
> run KDE applications with the KDE theme of their choice, after installing
> the platform theme plugin and setting an env. variable.
> This works perfectly ... but it isn't the native theme and thus doesn't
> provide an improved native look. Experience with KDE4/Qt4 and initial
> testing with KF5/Qt5 suggests that it won't suffice to set the KDE theme
> to"Macintosh (aqua)". Hence the question above.
> Subsidiary question: suppose such an extended theme is developed, how
> (un)likely is it that the necessary changes to Qt itself (hopefully only
> QCocoaTheme::themeNames()) would be accepted for incorporation so that
> automatic selection of the KDE platform theme becomes possible on OS X
> under similar conditions as those on other Unix versions (for instance,
> KDE_SESSION_VERSION set in the environment)?
> If we look at the big picture: more and more applications nowadays provide a
> user experience (including look and feel) that is identical across
> platforms, either because they're web-based or because they don't use the
> full host widget set (or theme it). There's evidently a lot to say for
> making applications blend in with native applications, but there's also a
> lot to say for cross-platform applications to hide platform differences by
> looking as identical as possible wherever they're run. With the technology
> of the last couple of years any performance advantage of using native GUI
> APIs has become either insignificant or even a disadvantage (running the
> latest OS on not-so-recent hardware).

I don't understand why you need such plugins.

Why would KF5 applications be any different than normal Qt5-only applications?

The idea is that a KDE applications running on OS X would try to integrate as 
much as possible within the native style.

If an application whishes to do differently, it can still override the default 
palette or font at the application level, and there is no need for a plugin to 
do that.  (and one of the KF5 libraries could do that.)

Or are you trying to run Plasma on OS X?


Woboq - Qt services and support - http://woboq.com - http://code.woboq.org

More information about the Development mailing list