Showing posts from August, 2017

The GSoC wrap-up

And so, another Summer of Code has ended. During the past three months, I was working on Mutter, a GNOME's Compositor. My main goal was to make Mutter, which was written as an X11 Window Manager more than a decade ago and recently ported to also be a Wayland compositor, start Wayland session without requiring X server (Xwayland) to be present. That goal was accomplished, and Mutter is now able to start without Xwayland being started. Other goals included making Wayland clients start without X11 being present, which wasn't accomplished (or even started), because after main goal was finished, there was only a week left before this evaluation, and nothing could be accomplished in that time, given the complexity of the task.
So, lets sum what needed to be done during these past three months:
- First task that I worked on was splitting X11 specific part from main display object, MetaDisplay. That code was moved into a new object, MetaX11Display, which is owned by MetaDisplay and i…

Progress Report July 31st - August 13th

Some may notice that there's a week missing since my last progress report. That week was GSoC second evaluation week, and my mentors were notified in advance why I was absent during that week.
Since last time I posted, I have completed my primary goal to make mutter start without Xwayland present. Note however, that this is just like I said, "make mutter *start* without X11 present", and nothing else. Window managing is a bit mess, and that was set as my second goal, if the primary one was accomplished much earlier in the SoC. So yes, you can start but you can't use mutter without X11 if you use my latest work.
So, what remained to be done since the last time I posted? Not much. Workspace management had lot of X11 specifics, such as getting workspace layout, names and such from X11 atoms. It was easily fixed by splitting X11 specific code to meta-x11-display.c and making that code run when or after MetaX11Display was created, either in meta_x11_display_new (), or us…

Documented Mutter API changes after main GSoC goal was reached

A new object, MetaX11Display, was added, and owned by MetaDisplay. It holds X11 specific objects of MetaDisplay, as well MetaScreen. Creating and destroying the object should be possible all the time, anytime. Helper function, meta_get_x11_display (MetaDisplay *) was added to retrieve MetaX11Display object currently owned by MetaDisplay. All public X11 functions referenced below are defined inside meta/meta-x11-display.h
Second new object, MetaWorkspaceManager, was also introduced to hold workspace management parts of MetaScreen, to avoid cluttering MetaDisplay a lot. It is owned by MetaDisplay, and can be retrieved by using meta_display_get_workspace_manager (MetaDisplay *). All public functions referenced below are defined inside meta/meta-workspace-manager.h
MetaScreen, which previously had an instance for all of the screens mutter managed became an single object nowadays, as it only manages one screen. Because of that, MetaScreen was removed, and objects it managed were split bet…