[OS X] make kde-workspace build

Review Request #120287 - Created Sept. 19, 2014 and updated

René J.V. Bertin
kde-mac, kde-workspace

A few rather straightforward patches to make the relevant bits of KDE4's kde-workspace build and function on OS X.
The main interest is having the systemsettings control panel to control the various relevant KDE settings among which desktop search, fonts, colours and even style.
The oxygen style builds and looks good but shows some updating glitches due to compositing.

I'm submitting this patch partly in hope it may be useful in bringing kf5-workspace to OS X, one day.

On OS X 10.6.8 and 10.9.4 with KDE/MacPorts (4.12.5 and more recently kdelibs git/master, 4.14.1).



  • 0
  • 13
  • 5
  • 18
Description From Last Updated
Thomas Lübking
Martin Flöser
René J.V. Bertin
Martin Flöser
René J.V. Bertin
Christoph Feck
Martin Flöser
René J.V. Bertin
René J.V. Bertin
René J.V. Bertin
René J.V. Bertin
Martin Flöser
Martin Flöser
Gilles Caulier
René J.V. Bertin
Martin Flöser
René J.V. Bertin
Review request changed

Change Summary:

A new revision of the patchset.
This revision includes the plasma subdirectory in the build, in order to provide the possibility to run plasmoids via plasma-windowed.

In an initial step, te CMake files under /plasma have been changed to exclude the same components on OS X as on MS Windows, i.e. checks are now for NOT WIN32 AND NOT APPLE instead of for NOT WIN32 only. Further exclusions were then made for the components that gave build errors due to X11 dependencies.

Plasma-windowed's build process was modified to add an Info.plist that makes the application an agent, i.e. a GUI application without menubar or presence in the Dock or AppSwitcher.
Changes had to be made to the plasma-windowed code to prevent crashing when exiting from a successfully loaded plasmoid through the standard Command-Q quit instead of by closing the window. Replacing all delete operations of QObject-derived class instances with ->deleteLater() was enough to prevent crashing (suggesting that a nested eventloop was the culprit, or at the least an immediate delete rather than a deferred delete compatible with Objective-C's release (which takes effect when exitting the event-loop in which the release was done)).

I tried making PlasmaApp inherit KApplication instead of KUniqueApplication so that multiple instances can be run concurrently. This has the effect that plasmoids that usually work are no longer rendered.
I'd appreciate pointers on how to circumvent this.




Revision 7 (+126 -40)

Show changes

Martin Flöser

I'm not understanding the changes in Plasma Netbook. Why do you want the Netbook shell on OSX while on the other side you disabled the desktop shell? AFAIK you cannot replace the shell of OSX, so having Netbook sounds pretty useless to me.

  1. The point is not to have the shell, but to have access to plasmoids via plasma-windowed (or plasmoid-viewer if that application is still around and functional).
    I've tried to explain that I have made a rather coarse selection (everything also included in MS Windows builds and that actually builds) rather than hand-picking only those components that would have a potential use. Doing so I indeed noticed that the desktop shell was excluded on Win32 but not the netbook shell. It didn't take me long to realise that the netbook shell is different enough from the usual desktop paradigm to be of interest to some users, to the extent that it can be made to function in a rooted, normal window of course.
    I am of course open to feedback concerning the components that can be removed from the build without effect on components that do have a use.

    If I may think aloud a little bit:
    Netbook or Desktop shells ... they open (fullscreen) windows in practice, right? If so, there could be an (academic?) interest in supporting them but with a regular window, allowing the user to set up a sort of MDI version of a desktop shell with "goodies" that would give a more coherent experience than running those same goodies individually on the OS X desktop. One could also think of a "shell" that only serves to host panels and widgets, not unlike Yahoo! Widgets (http://en.wikipedia.org/wiki/Yahoo!_Widgets)

  2. Netbook or Desktop shells ... they open (fullscreen) windows in practice, right?

    no, they open "desktop" windows.

    If so, there could be an (academic?) interest in supporting them but with a regular window

    no, that's what plasma-windowed is for. And I'm certainly not giving a +1 for the rather big changes to netbook shell if the only need is on an academic scale ;-)

  3. I wasn't about to start hacking to pursue any of these ideas, and certainly not in KDE4. We'll see if and when we get to KF5 on OS X but in the meantime the thought is out there. In case there are KDE developers outside of the kde-mac "kernel" who'd appreciate to see part of the power of a KDE desktop available beyond Linux and other Unix/X11 systems.

    Now that you mention plasma-windowed: I would like to get that utility to be able to run in multiple instances! Whatever good reasons there might be on nx for it to be a KUniqueApplication, on OS X there's a good reason for it not to be ...