Language Selection

English French German Italian Portuguese Spanish


GNOME and KDE Development Reports

Filed under
  • The art of using GSettings in a library

    While providing GActions in a library can be done quite naturally, for GSettings it is more complicated.

    To simplify, GSettings is used by GTK applications to store their settings. Libraries usually provide GObject properties, and the application can bind the properties to the corresponding GSettings key with the g_settings_bind() function. So far so good.

    For the libdevhelp I wanted to go one step further, and provide a GSettings schema in the library itself.

  • Testing D-Bus clients with libglib-testing

    I’ve always found it a bit of a pain to write unit tests for D-Bus client libraries, where you’re testing that your code calls methods on a D-Bus service appropriately and, in particular, correctly handles a variety of return values and errors. Writing unit tests like this traditionally involves writing a mock D-Bus service for them to talk to, which validates the input it receives and provides appropriate responses. That often goes most of the way towards reimplementing the entirety of the real D-Bus service.

    Part of the difficulty of testing D-Bus clients like this is synchronising the state of the mock D-Bus service with the test code, and part of the difficulty is the fact that you have to write mock service code for each D-Bus method before you can test it — which is a lot of investment in writing code before you can even start writing your unit tests themselves.

    As an experiment in finding a better way of doing this kind of testing, I’ve written GtDBusQueue in libglib-testing, and I think it might be ready for some wider use. Thanks a lot to Endless for allowing me to work on such projects! I’ve used it in a couple of projects now, particularly in libmalcontent (which handles implementing parental controls policy on the desktop, and needs to talk to the accountsservice D-Bus service).

    GtDBusQueue basically implements a queue for D-Bus messages received from your D-Bus client code. Each D-Bus message is typically a method call: your unit test can inspect the queue, and will typically pop messages off the front of the queue to assert they match a certain method call, and then send a reply to that call.

    A key feature of GtDBusQueue is that it operates as a queue of D-Bus messages, rather than as a collection of D-Bus object proxies (typically GDBusObjectProxy), which means that it can be used to handle method calls to arbitrary D-Bus object paths without having to implement a new proxy class for each of them.

  • What’s up in Notifications?

    With the end of the year approaching in some parts of the world and already half a year since I announced the notifications rewrite, I thought I’d give you an update on some of the things I’ve worked on since. While Plasma 5.17 only saw minor changes, most notably automatic do not disturb mode when screens are mirrored during presentations, there are some very exciting new features that will arrive in the upcoming Plasma 5.18 LTS to be released early February next year.


    Do not disturb mode can now quickly be enabled or disabled anytime by pressing a configurable global shortcut. Thanks to David Faure, KOrganizer now checks Plasma’s notification inhibition state and delays any reminders until do not disturb is disabled again.

  • Plasma Mobile update: part 11-12

    The Plasma Mobile team is happy to present the blogpost with updates from week 11 and 12.

Firefox GNOME search provider

Filed under

Search is a central concept in the GNOME user experience. It provides quick navigation and shortcuts to recently used documents, places and software.

A search provider is used by an application to expose such data to the users via the GNOME Shell search screen. As for Web browsers currently only Gnome Web (Epiphany) have integrated this feature.

Read more

Matthias Clasen: More on Flatpak updates

Filed under
Red Hat

In the terminal, I’m building a new version of the the portal test app, and update my (local) repository. The flatpak portal is noticing that the update appeared (I’m running it with a short poll timeout here, instead of the usual 30 minutes), and sends out a D-Bus signal to the application, which requests to be updated, and then restarts itself.

Using the portal API directly is not very convenient, since you have to listen to D-Bus signals and whatnot. Therefore, we now have a library called libportal, which is providing simple async wrappers for most portals. That is what the portal test app in the demo is using, and you should be using it too in your applications.

The first stable release of libportal will appear very soon, with Flatpak 1.6, and then it will find its way into runtimes.

Read more

Best Gnome distro of 2019

Filed under

Ladies and gentlemen and rare penguins. It's time for another best-of article. Today, I'm going to cover the Gnome desktop. Just a handful of sunsets ago, we did the Plasma finals, with Kubuntu 19.10 Eoan Ermine as the lucky winner. Now, we shall look across the playground at the other major camp.

Gnome hasn't been the same since the integer increment from 2 to 3. What used to be super-slim, super-fact and super-ergonomic desktop became a minimalistic platform that just doesn't work for me, mostly because it removes essential components from the classic desktop formula that people need and expect. That doesn't mean Gnome can't be enjoyed, with some rigorous alterations and tweaking. In fact, there are some pretty decent systems wearing this guise out there. Let's see which one deserves to be the champion for this year. Follow me.

Zorin OS 12.4 Core

I tested this distro around March. Beforehand, I did some Fedora 29 tweaking and a Mint Cinnamon review, but while these could be bundled under the Gnome banner, I decided to exclude them; the former since I had really tested it back in 2019, and we have Fedora 30/31 for the current year, and the latter because Cinnamon is its own desktop.

I have to say, Zorin delivered a pretty impressive show - near-flawless results in the important categories, like phone connectivity, network connectivity and such, good customization and accessibility, a colorful application set, and lots of small gestures toward the common users. Definitely sailing smooth on the uniqueness front. But performance and battery life were typically bad, and font clarity was quite tricky. That said, this was a pretty slick distro, and a fresh dose of hope for my jaded, battered soul.


Sometimes, it's not easy wrapping up articles, especially when they carry a less-than-ideal resolution. I am biased when it comes to certain things, but then I have to externalize my message and think of what the common user would want or need. When it comes to Gnome, I spend more time with CentOS than other distro, and maybe one day it could become a daily driver in my home. Maybe. A big maybe. But as a desktop, it takes effort that Zorin doesn't, and Zorin is a smart, brave effort to transform a difficult baseline into a friendly, unique system, which is why it's the winner in this article.

We're not done, though. There's still Xfce to do, and after that, we'll look across the entire Linux spectrum, and see what gives. My needs are quite simple and yet quite stringent, and it often takes a lot of work and testing before I allow myself to introduce new software into my production setup. So far, no big cliffhangers here, you know where I stand when it comes to operating systems. But I am always looking out for the next thing, hoping there might be something out there, something that will break the cycle of apathy and compromise. To be continued.

Read more

GPaste Review – The Best Clipboard Manager for Gnome

Filed under

Before we go into what a clipboard manager is, I suppose we should mention what a clipboard is. When you copy, paste or cut, you are using the clipboard. You would be surprised how many people do not know the cut, copy, and paste program is called a clipboard. When you copy (highlight text and hit Ctrl+C or right click and select copy) you save that highlighted text to the clipboard. The clipboard usually only provides a single “slot” to save data and is overwritten with each new copy.

A clipboard manager is a program that adds functionality to the operating systems clipboard. The most basic function is to keep a running history of things saved to the clipboard for later use. As we will find out, GPaste builds on this with many more features.

Read more

GNOME's ATK, GTK and More

Filed under
  • Molly de Blanc: ATK, GTK, and plans for 2020

    The GNOME Project is built by a vibrant community and supported by the GNOME Foundation, a 501(c)(3) non-profit charity registered in California (USA). The GNOME community has spent more than 20 years creating a desktop environment designed for the user. We‘re asking you to become Friend of GNOME, with a recommended donation of $25/month ($5/month for students). We’re working to have 100 new Friends of GNOME join by January 6, 2020.

    GNOME is about so much more than a desktop environment. In addition to the eponymous GNOME desktop, we work on projects like GStreamer, GTK, and Flatpak. We have a mostly complete list of technologies you can read on our web site. While the Foundation largely works on support, we also do development and outreach for GTK and GNOME core application development platform.

  • GNOME Hopes To Get Most Of GTK4 Squared Away Next Year

    GTK 4.0 isn't expected until autumn 2020 but a lot of work remains for that to happen as the next big update to GNOME's toolkit.

    Among the GTK4 work left includes completing the constraints layout code, advancing their proposed animation framework API for GTK, and working on various bugs and other issues. There is also a desire to have improved continuous integration around GTK (and other projects like Glib).

Development of GNOME's GLib and Mutter

Filed under
  • GNOME's GLib Adds GMemoryMonitor As Another Step In Helping Cope With Linux RAM Pressure

    With the new GNOME GLib 2.63.3 library release is a new "GMemoryMonitor" API for allowing notifications of when an application should attempt to free any non-critical system memory in an effort to help the system cope with memory pressure.

    Red Hat / GNOME folks back in August announced the Low-Memory-Monitor project for helping cope with Linux RAM/responsiveness issues while another step is now ready in addressing Linux desktop responsiveness problems when low on RAM. This next step is the GMemoryMonitor API that is part of the newly-released GLib 2.63.3.

  • GNOME's Mutter Now Batches Clipping Rectangles For Better Performance

    After recently taking some time off of work, Canonical's Daniel van Vugt has been back on the GNOME bug hunt in the continuing quest of optimizing its performance. This GNOME 3.36 cycle is particularly important considering the upcoming Ubuntu 20.04 LTS release.


    GNOME 3.36 is already quite good in the performance department on X11 and Wayland while it will be exciting to see how much they can achieve before the desktop update in March.

ArcMenu 38 Adds KRunner Inspired Layout + More

Filed under

ArcMenu 38 touts a couple of really interesting changes, including a crop of new app menu layouts inspired by other operating systems and desktop environments.

Now, if you checked out the previous release of ArcMenu back in October then you’ll be more than familiar with the configurable set of app menu layouts it introduced.

But if you’re not? It’s something that makes the extensions really worth checking out, particularly if you’re into desktop customisation and theming.

ArcMenu is a free, open source software designed for the GNOME Shell desktop environment.

The latest version of the add-on is available to install from the GNOME Extensions website (below) on GNOME Shell 3.28 and above.

Read more

GNOME in Review and Outreachy in GNOME

Filed under
  • Ten Years Past GNOME's 10x10 Goal, The Linux Desktop Is Still Far From Having A 10% Marketshare [Ed: The desktop itself is on the decline and they're not counting Chromebooks (or misuse the brand "Linux")]

    That very ambitious 10x10 goal is still documented on the GNOME Wiki and is about "10% of the global desktop market." Perhaps in some very select geographic regions, the Linux desktop marketshare may be close to 10%, but on any large scale that goal is still a pipe-dream.


    In any case, GNOME has advanced a lot over the past decade and particularly the past 2~3 years since Canonical switched back to GNOME Shell by default and has helped in addressing many bugs -- including several high profile performance issues. GNOME 3.34 is a hell of a lot better than the state of GNOME 3.0 from at the start of this decade. In reliving GNOME's highlights from the past decade, here is a look at the twenty most viewed GNOME stories since 2010.

  • Outreachy week-2 progress report!

    It was a really productive week. I am almost done with the current tasks. I’ve finished replicating the wire-frame of gnome-builder’s search-and-replace-bar widget into the libdazzle-example application. There are a couple (or maybe a couple more) of final nitpicks to do to actually mark these as finished.

    At the moment, I am far more comfortable with the project. Nothing seems really alien-sih now, rather most of the stuffs (from the project) looks quite familier (and imparts somewhat proper sense).

Dual-GPU support follow-up: NVIDIA driver support

Filed under

There were a number of problems with the old detection code in switcheroo-control:
- it required the graphics card to use vga_switcheroo in the kernel, which the NVIDIA driver didn't do
- it could support more than 2 GPUs
- and it didn't really actually know which GPU was going to be the “main” one

And, on top of all that, gnome-shell expected the Mesa OpenGL stack to be used, so it only knew the right environment variables to do that, and only for one secondary GPU.

So we've extended switcheroo-control and its API to do all this.

(As a side note, commenters asked me about the KDE support, and how it would integrate, and it turns out that KDE's code just checks for the presence of a file in /sys, which is only present when vga_switcheroo is used. So I would encourage KDE to adopt the switcheroo-control D-Bus API for this)

Read more

Also: GNOME 3.36 Bringing Better Multi-GPU Handling With Switcheroo-Control, NVIDIA Support

Syndicate content

More in Tux Machines

Red Hat Enterprise Linux helps pioneering unmanned marine research

In 1620, the Mayflower embarked on an uncertain journey across the Atlantic Ocean, with more than 100 pilgrims on board hoping to begin a new life in the New World. Now, 400 years later, The Mayflower Autonomous Ship (MAS) will follow in the footsteps of the original ship from Plymouth, England to Plymouth, Massachusetts. Only this time, there will be no human captain or onboard crew. It will be one of the first full-sized, fully-autonomous and unmanned vessels to cross the Atlantic Ocean. The MAS project is a global collaboration led by marine research organization Promare. Conceived as a way to commemorate the 400th anniversary of the Mayflower voyage, it could have long-lasting implications for the shipping industry and the future of oceanographic research. The autonomous shipping market is projected to grow from $90BN today to over $130BN by 2030. However; many of today's autonomous ships are just automated and do not dynamically adapt to new situations. Using an integrated set of IBM's AI, cloud, and edge technologies, ProMare is aiming to give the Mayflower the ability to operate independently in some of the most challenging circumstances on the planet. Read more

Android Leftovers

Games: OpenTESArena, OpenTTD, Merchant of the Skies

  • OpenTESArena - a modern game engine for The Elder Scrolls: Arena has a new release

    Now available free, The Elder Scrolls: Arena is something of a classic and it continues to live on with thanks to the free and open source game engine OpenTESArena. Bethesda Softworks actually made The Elder Scrolls: Arena free to download some years ago as part of the 10th anniversary which has certainly helped. Still in early development, with gameplay not really there yet, it's very promising and a big new release went up a few days ago further expanding what it's able to do with the original game data. OpenTESArena 0.11.0 adds in quite a lot including: original entity loading (static NPCs, creatures, trees, furniture, palace rulers, etc.), lights, water and lava rendering, fading voxels, translucent entity rendering, Ray Cast selection with pixel-perfect option and more.

  • Transport Tycoon Deluxe inspired 'OpenTTD' has a massive new release out

    Transport Tycoon Deluxe is a classic and OpenTTD is an excellent open source game engine directly inspired by it, with a huge new stable release out now. Saying it's inspired by it is perhaps not entirely accurate, it's a full replacement for it! With many new and advanced features, to make building a sprawling transportation network feel good on modern systems. It can use Transport Tycoon Deluxe data files or you can stick with the open graphics which still look good.

  • Relaxing strategic sky trading sim 'Merchant of the Skies' leaving Early Access on April 17

    Originally entering Early Access back in July last year for Linux, macOS and Windows it's had a lot of updates since release and it has become a much bigger game. In Merchant of the Skies you start off with a small ship and not much else, then progress through trade and quest completion. As you accumulate more wealth, purchase islands and establish your company you gradually go through more advanced resource chains and continue expanding. There's also something involving you needing to feed a massive fish-god. See the new release date trailer below:

Programming: Java, Compilers and Python/Django

  • You should know the comparison between Java 8 & Java 9

    Java language is based on an Object-Oriented Programming algorithm. Oracle is currently maintaining Java. Being licensed under General Public License GNU, Java 8 was released on 14th January 2014 whereas Java 9 on 27th July 2017. The latest version is Java 13, which was released on 17th September 2019. If you’re applying for a job position as a Java Developer, you might want to read some Java 8 interview questions and also clarify differences between Java 8 and Java 9. The 8th version of Java included important updates. The basic purpose of Java 8 was to provide enhancements, bug fixes and improve the efficiency of coding compared to its predecessor. Java 9 included updates to enhance industry-wide development through a new platform module system. Java 9’s accessibility and improved modularity help developers to easily assemble and maintain sophisticated applications. It also helps in making Java scale down on smaller devices while improving security and performance.

  • LLVM Plumbs Support For Intel Golden Cove's New SERIALIZE Instruction

    Yesterday we noted Intel's programming reference manual being updated with new Golden Cove instructions for Sapphire Rapids and Alder Lake and with that Intel's open-source developers have begun pushing their changes to the compilers. The latest updates add TSXLDTRK, a new HYBRID bit for Core+Atom hybrd CPUs, and a new SERIALIZE instruction. After GCC was receiving the patch attention yesterday, LLVM is getting its attention today.

  • Reuven Lerner: Reminder: My free “Python for non-programmers” course continues tomorrow!

    If you’ve never programmed a computer before — or if you tried, and found it frustrating and difficult — then you’re welcome to join my “Python for non-programmers” course, which takes place on Thursdays at 10 a.m. Eastern. The class is 100% free of charge, and open to anyone who wants. Just register at Registering gets you weekly reminders, recordings of previous sessions, and invites to the private forum, where you can chat about the lessons with other students.

  • Django changes its governance

    The Django web framework has come a long way since it was first released as open source in 2005. It started with a benevolent dictator for life (BDFL) governance model, like the language it is implemented in, Python, but switched to a different model in 2014. When Python switched away from the BDFL model in 2018, it followed Django's lead to some extent. But now Django is changing yet again, moving from governance based around a "core team" to one that is more inclusive and better reflects the way the project is operating now. Django actually started out with co-BDFLs; Adrian Holovaty and Jacob Kaplan-Moss filled that role until they retired in early 2014, which motivated the change to the core-team model. By 2018, some problems with that new model were being felt, so James Bennett spearheaded an effort to change it, which resulted in Django enhancement proposal (DEP) 10 ("New governance for the Django project")—adopted on March 12. Perhaps unsurprisingly, some of the problems identified for Django are sometimes heard in Python circles as well; the changes for Django could be a harbinger of Python's governance down the road.