-
chevron_right
Martin Pitt: Syncing Gmail with mbsync using OAuth2
news.movim.eu / PlanetGnome • 1 day ago
-
chevron_right
GIMP: Development Update, August 2026
news.movim.eu / PlanetGnome • 1 day ago • 9 minutes
-
chevron_right
This Week in GNOME: #262 Minor Major Update
news.movim.eu / PlanetGnome • 2 days ago • 5 minutes
- Added selection mode for remove tracks from main list
- Added preferences dialog for introduce more features
- Added opportunity to auto restore playlist immediately after opening the app
- Improved restore playlist, currently Vinyl saves host paths for directories to which it has access
- Improved playlist optimization: large playlists no longer consume a lot of RAM
- Fixed settings not being saved after re-opening the app
- Fixed an issue where Vinyl wouldn’t read cover images from folders
- Fixed minor localization problems
- Fixed minor UI issues
- Added Occitan localization language
-
Stability improvements and bug fixes: Several fixes were made, improving the overall experience and compatibility (a huge thanks to everyone who took the time to submit reports!).
-
Even more customization: You can now adjust the accent color tint level in tinted style, tweaking the interface to fit your exact taste.
-
More robust Hot Reload: Previously, Hot Reload for wallpaper colors was fixed and, while efficient, caused some bottlenecks in certain cases. ChromaLeon now defaults to a much safer method, while also giving you the option to disable it or switch back to the legacy method.
-
Enhanced compatibility (Blur my Shell, PaperWM and others): Extensions like these apply their own styles to the panel, which ended up being overridden by tinted mode. Panel tinting is now optional to prevent these conflicts.
-
chevron_right
Philipp Sauberzweig: Fellowship Update, 2026-08-13
news.movim.eu / PlanetGnome • 3 days ago • 4 minutes
-
- the state of GNOME OS , an operating system that includes daily builds of all GNOME components, enabling us to identify system-level bugs before they reach distributions,
- the new SVG renderer in GTK which enables scalable and animated icons,
- the new symbolic icons themselves,
- GNOME Shell design dreams , some of which are already materializing,
- a new session save/restore framework that allows the user session and apps to save and restore their state across reboots which will enable system updates in the background without the user noticing the necessary reboot,
- the path towards a Local-First Desktop , which highlights the potential of peer-to-peer synchronization for collaborative features in our app ecosystem,
- the report on the journey of the Graphs app into GNOME Circle , our certification and education program for third party developers.
-
chevron_right
Jussi Pakkanen: Digitizing super 8 film yourself
news.movim.eu / PlanetGnome • 4 days ago • 3 minutes
-
chevron_right
Peter Eisenmann: Fellowship Report July 2026
news.movim.eu / PlanetGnome • 5 days ago • 3 minutes
-
chevron_right
GNOME Shell and Mutter Development: GNOME Shell Design Dreams
news.movim.eu / PlanetGnome • 5 days ago • 8 minutes
-
chevron_right
Asman Malika: My First GUADEC: From Kenya to the GNOME Community
news.movim.eu / PlanetGnome • 6 days ago • 4 minutes
-
chevron_right
Laureen Caliman: Vocab-style Crosswords Update | Final Stretch
news.movim.eu / PlanetGnome • 6 days ago • 2 minutes
For the past few months, we’ve been developing all kinds of features for the future GIMP 3.4 release. We noticed recently that our changelog was getting quite long - a good problem to have!
While there’s been a lot going on internally, it’s been a while since we made a public progress report. So we want to share details on some of the new features and UX improvements that’ll be available in the first development release, GIMP 3.3.2 . This won’t be an exhaustive list (we have to save at least some news for the release itself!) but hopefully it will give you some insight into the current direction and progress of GIMP ’s development.
New Project File Format ¶
The big focus for maintainer Jehan recently has been developing a new project file format for GIMP .
XCF has been GIMP ’s primary project format since 1997 , and it has served many users well. Over time however, we’ve observed more and more limitations of the binary XCF format. Among other issues, it does not easily support very large or complex projects, such as the multi-page and animation features currently planned for GIMP 3.6.
The new project file format will follow a more common “zipped XML ” structure. While the technical details are still being designed and implemented, this change will allow for faster saving since we’ll only need to update parts of the file instead of the whole thing each time. It will also set the stage for much desired features such as auto-saving, which will now be much more feasible.
That said, XCF is not going away! Backwards compatibility is important to us, and we will continue to support loading XCFs in all future versions of GIMP . (For instance, we’re quite proud that a XCF file made by a small company for their logo in 1998 still renders the same way in the latest version of GIMP )
However, going forward we will only add support for saving/loading new features in the new project file format once it is finalized.
MyPaint Brush: Spectral Blending ¶
During GIMP 3.2’s development, we upgraded to a newer version of the MyPaint brush engine. While this brought new brushes and canvas interactions to the MyPaint Brush Tool , one feature that was left out was Spectral Blending .
Spectral Blending simulates the effects of blending physical pigments in digital art. For example, blending yellow and blue will produce a green color instead of darker yellow, and blending red and yellow will create an orange mix.
Fortunately, new contributor
Cassidie Grogan
picked up the slack and implemented this feature.
There is now a
Spectral Blending
checkbox in the MyPaint Brush Tool Options. If checked, the new
blending method is used. You can control the strength of the blending with the
Pigment
slider.
In addition, maintainer Michael Natterer improved the MyPaint Brush preview code to display at their full size instead of 48x48 pixels. This fixes an issue where the previews appeared blurry on larger screens.
Non-Destructive Editing ¶
Alx Sa has continued making updates to our non-destructive filter code. To list a few:
You can now apply filters non-destructively to Layer masks ! To go along with this, the filter popover has been redesigned by Reju to show the active filters for both the layer and its mask, so you can interact with both on the same screen.
The
Gradient Tool
can now be
used non-destructively! If you check
Editable Gradient
in the Tool Options, the
gradient you create will be added to the filter stack like any other effect. You can
toggle its visibility, rearrange its position in the filter stack and delete it. You
can also edit the gradient, which will switch back to the Gradient Tool to let you
make further changes.
User interface with a live Gradient filter on the layer, and a live filter on the layer mask
Filters without dialogs (such as Invert) can now be applied non-destructively on non-raster layers such as layer groups and link, text, and vector layers.
PSD Support Improvements ¶
Normally we list all file format updates in a combined section, but there has been so much work done on PSD support (and by so many people) that we wanted to highlight it in more detail.
First, new contributor Frank Teklote has been busy improving our compatibility with PSDs. His big project for this release was creating a PSD metadata export procedure for TIFFs and JPEGs. This complements our existing PSD metadata import procedure , meaning that if you import a JPEG with paths or a TIFF with layers (or create one in GIMP ), that information can now be retained in the exported image.
Another great thing about Frank’s work is that as we continue to improve our PSD compatibility, the TIFF and JPEG export features will automatically get those updates too!
Related to that, Jacob Boerema has implemented PSD Descriptor import support. Most of our current PSD support has been based on the public Adobe specification . This document was last updated in 2019 however, and modern PSDs use a relatively undocumented text format called Descriptors to store many features.
Now that GIMP can read descriptors, we’ve begun drastically improving our PSD import support. To list just a few updates: text layers are now editable, a number of adjustment layers and modern layer styles appear as their GEGL equivalents, and solid color shapes are imported as vector layers. This is an active area of development, including by two of our GSoC students Akascape and Waris Maqbool . We hope this work will make it easier for GIMP users to interact with existing PSD projects!
Editable
PSD
text layers in
GIMP
Native File Chooser Dialogs ¶
We have always used the file chooser dialog provided by the GTK GUI library for people to find, load, and save files in GIMP . While the file chooser does the job, it often works differently than the “native” file chooser on non- GNOME platforms like Windows, macOS, and KDE . Additionally there have been some changes to the UI of this dialog in GTK3 , which has inspired some strong feedback in our issue tracker!
Therefore, Alx Sa has begun porting GIMP ’s file choosers to the “native” option provided in GTK3 . This means that when you open or save a file, you will see your platform’s standard file chooser dialog instead of the GTK dialog (unless your platform uses that already, in which case there will be no change!)
Example of native file chooser on macOS, by Bruno Lopes
Many of the simple dialogs have already been converted. Those with more complex additional features will require some workflow redesigns, which we’re still developing.
User Experience and Interface Updates ¶
A lot of new and existing contributors have submitted improvements to GIMP ’s user interface and its user experience. We wanted to highlight their efforts, and encourage you all to continue sharing your feedback on our design issue tracker .
Designer Denis Rangelov has been hard at work updating GIMP ’s UI icons. He recreated our layer lock icons to create a more consistent look.
He also took on the monumental task of converting all 78 of our cursor icons to SVG , which will allow us to scale them for higher resolution displays without losing quality!
| Original Raster Cursor | Denis’s Vector Cursor |
|---|---|
|
|
There have been reported performance issues when drawing or zooming into the canvas when the canvas view was rotated. New contributor woot000 diagnosed the problem and created a fix. Now the “checkerboard” transparency pattern no longer rotates when the canvas does, which significantly boosts performance when painting or editing. They also fixed a related issue where the checkerboard pattern would disappear when zooming into the canvas past a certain point.
Gabriele Barbero implemented a redesign of the Search Action UI which was designed by Denis Rangelov . The new layout makes the associated shortcut key more visible, and is more consistent with the menu layouts.
Bruno Lopes has been working to fix issues with pop-up dialog displays on macOS. Since traditionally we have fewer macOS developers compared to other platforms, we’re really happy to see improvements for these users!
New contributor Andreas Vukman improved our Pattern dock display. Now smaller patterns tile to fill the available space, creating a consistent preview for all patterns instead of having some patterns display with odd amounts of padding. We think it makes the dock look much nicer!
Richard Gitschlag has updated the on-canvas text editor to allow selections when you Shift +Click in the text. It should now work similar to what you can do in a word processor like LibreOffice.
In previous versions of GIMP , you imported or exported metadata from the Metadata Editor by selecting an option in a dropdown. Ahmed E. Yassin has made this process more intuitive (and more consistent with the rest of GIMP ’s UI ) by replacing the dropdown with two buttons instead.
Ondřej Míchal
reviewed several portions of
GIMP
’s
UI
and replaced many instances of the
Spin Entry
widget with
Spin Scale
. The
Spin Entry
widget is difficult to use when the width is shrunk, so this change improves usability
in many areas of the
UI
.
Assorted Changes and Fixes ¶
Our four GSoC interns have been continuing their work since the midpoint update . Recently, Waris Maqbool ‘s Sharpen filter was merged into GEGL , so it’ll be available in the next GEGL release.
New contributor Dimitriy Ryazantcev has submitted several patches for improving our Windows ICO / CUR / ANI support. They’ve already fixed the rendering for certain 32bit ICO formats and made our loading and preview algorithms better match the Windows specification.
Estecka has fixed a rendering issue when applying NDE filters on passthrough layer groups, which made the image look different depending on whether the group had child layers or not.
New contributor Petr Vorel fixed a bug where pressing Alt + 0 did not open the tenth most recent image in your history.
Lloyd Konneker , our main Script-fu contributor, fixed a regression in third party scripts where the number range for certain parameters wasn’t shown in the GUI .
Jacob Boerema and Alx Sa have responded to and patched a number of security reports about potential flaws in some of our image plug-ins.
What’s Next ¶
There’s more in-progress work that we look forward to sharing with you all soon!
There is not an official 3.3.2 development release yet, as several roadmap items are still in-progress. If you’re feeling really adventurous and just can’t wait, you can try our “nightly” builds. Instructions are under the Automatic Development Builds header.
In the meantime, we are planning to release GIMP 3.2.6 in the coming weeks. It is a stable release so it won’t include many of the new features described here. However, it will have a number of important bug fixes and small improvements. We’ll discuss these more in the 3.2.6 release news post!
Update on what happened across the GNOME project in the week from August 7 to August 14.
GNOME Circle Apps and Libraries
Graphs ↗
Plot and manipulate data
Sjoerd Stendahl reports
This week we landed a minor update in Graphs, but with a major improvement for the user experience. In the new version, internal updates such as for the clipboard, view history and axis limits are calculated with a debounce. What this means is that these properties are no longer recalculated upon every single movement when panning or zooming the canvas, instead it will only be calculated after the motion.
The result is a major improvement in user experience on less overpowered hardware such as laptops or older PC’s. The latest update also comes with translation updates and some other bugfixes, such as the elimination of a performance regression after switching style multiple times. See the difference for yourself in the attached video, panning and zooming is significantly smoother now. Recorded on the same laptop!
GNOME Fellowship
Peter Eisenmann announces
I posted about what I did as a GNOME Fellow in July, read about it here :) https://blogs.gnome.org/p3732/fellowship-report-july-2026/
Sovereign Tech Fellowship
Philipp Sauberzweig says
I’ve completed the first month of my Sovereign Tech Fellowship for GNOME Design & Community Management. Check out my blog post for an update about what’s been going on.
Third Party Projects
Cleo Menezes Jr. reports
The new Serigy release makes your slots searchable from the overview. Press Super, type, and you get your text, images and files back as results, ready to copy without opening the app (it needs to be enabled in the Search section of GNOME Settings).
Clipboard monitoring is optional now, so you can leave it off and capture only when you press the shortcut. Copied files are kept as references and paste as files. Content marked sensitive never reaches a slot. The grid goes up to 24 slots, and a new option hides the window right after you copy.
There is also a good amount of fixing: global shortcuts survive a portal restart, saved images no longer live in the cache directory where the system could delete them, logs are rotated instead of growing until the app fell over, and clipboard capture is far more reliable.
Get it on Flathub: https://flathub.org/apps/io.github.cleomenezesjr.Serigy
Mikhail Kostin announces
Vinyl - music player with the best lyrics support, has been updated on v1.6.0! There is a lot of changes and fixes since v1.5.0. I tried to do as much work as possible on the optimization of the player, especially I did a lot for reduce RAM consume, since last version RAM consumes reduced almost 3 times. Also not unimportant to say about new selection mode for remove tracks from main playlist.
Changes and fixes include in this release:
Today you can see the new version of the Vinyl on Flathub
For Void Linux users Vinyl also distributes on Community-driven repository blackhole-vl in native xbps package
![]()
![]()
Rat Cornu says
ratic music player comes back after a little break with new features!
The past few weeks have seen versions 0.3.0, 0.3.1 and 0.4.0, introducing a beginning in playlists support, grouping musics by album in artists view, cover and tags export and a lot of other small features and fixes.
You can find it on flathub , or directly on gitlab for rust or nix users.
The current state of ratic stills lack a lot of features I want to see in it, but it will progressively arrive in the next releases.
Thanks to all the people that helped with the localization on weblate and the constructive issues on the repo!
Sjoerd Stendahl announces
This week I also released an update to Lockpicker, a tool to recover passwords from their hash. In the new version a notification is sent when any password is cracked, or when the application is finished. The most exciting part of the new update is a completely new logo thanks to Hylke Bons .
I also started working on a rule designer/tester for Hashcat rules. Which hopefully will be added somewhere in the upcoming weeks. You can get Lockpicker at Flathub .
![]()
Anton Isaiev announces
RustConn 0.20.0 is out - connection manager for SSH, RDP, VNC, SPICE, Telnet, Web and Zero Trust (GTK4/libadwaita).
This covers the whole 0.19.x->0.20.0 cycle since the last post. Main new features: detachable session windows, split view improvements (remove from split, local shell in pane), cluster tab groups, floating auto-hide toolbar for RDP/VNC/Web with an option to hide it entirely, GTK renderer chooser (Automatic/GPU/Cairo), session logging with rotation and redaction, automatic login for Telnet/Serial, session restore on startup, terminal history across reconnects, and signed SLSA build provenance.
Fixes: embedded RDP reconnects after sleep (TCP keepalive), X11 clipboard crash resolved, RDM/Royal TS import reworked, credential keyring handling fixed across all backends, FreeRDP 3.26+ compat, macOS tray icon preserved.
Thanks to everyone who uses RustConn, reports bugs, contributes or supports the project. I made it for myself and I’m glad it helps others. If you’d like to support development - the repo has a Sponsor link.
https://github.com/totoshko88/RustConn https://flathub.org/apps/io.github.totoshko88.RustConn https://snapcraft.io/rustconn/
![]()
Shell Extensions
🇧🇷️ Fabito02 announces
The ChromaLeon GNOME Shell extension has received updates bringing new features, bug fixes, and improvements.
Among the recent changes are:
That’s all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!
It’s been about a month since I started my Sovereign Tech Fellowship in mid-July, and I want to give you some updates about what’s been going on before I go on summer holiday for the next two weeks. The idea behind these update posts is to highlight certain aspects of my activities and get people interested in getting involved with design.
GUADEC 2026
I gave a short update on the GNOME Design Team’s recent achievements and challenges, announced my fellowship and invited interested individuals to join us. Tobias and I lead the Design BoF where we discussed some recent design pattern standardization efforts and received helpful feedback from the audience. Furthermore, the discussions in between talks and workshops were an amazing opportunity to connect with other contributors.
I was not able to attend GUADEC in the past because of the locations, but also because of high travel costs. The GNOME Foundation provides travel sponsorships, and this year’s budget was not used completely. Please reach out to the Travel Committee if you are a contributor and need financial support to attend conferences and hackfests.
Kicking Things Off
Traveling to GUADEC marked the start of my fellowship, and the weeks after that I was pretty much busy with kicking off things of various kinds.
Internal
As an employee of the Sovereign Tech Agency, I went through the onboarding process, set up hardware and software tools, and got to know the team. The 2026 cohort of the Sovereign Tech Fellowship comprises 14 people from a variety of different projects, which provides an amazing opportunity to share knowledge and establish cross-project collaborations. I am responsible for organizing a monthly ‘Lightning Talks’ series, in which fellows give short presentations on topics of broader interest, with the intention of leading to longer peer mentoring sessions. For my own presentation, I chose to talk about This Week in GNOME , the GNOME project’s weekly blog that covers news from the community. I believe it is a major success because it enables our community members to share project news without having to set up their own blog. The numbers speak for themselves: a total of 2,643 news posts have been submitted by 335 individuals over a period of 261 weeks. I would like to take this opportunity to thank Felix Häcker for developing ‘This Week in GNOME’ and for curating a weekly post for more than four years.
Design
There are a few design patterns we have wanted to standardize for a while. These include Action Rows with a scale, time and date pickers, drag and drop target styling, and floating controls. I discussed with Alice which ones to prioritize and started with Action Rows with a scale . If your app uses a scale in an Action Row in a way that hasn’t been mentioned in the issue yet, please leave a comment with a screenshot. You are also welcome to contribute state-of-the-art examples from other platforms.
Another topic I plan to work on is the credentials portal and I’ve had a first video meeting with the maintainers of credentialsd to coordinate our timelines and clarify the requirements.
I also reviewed a few merge requests and provided some design feedback in issues and on Matrix. One topic I find particularly interesting and worth sharing is adjusting arbitrary colors to ensure contrast of the event widgets in Calendar . Other apps that have to handle arbitrary colors (e.g. user-selected colors) in the user interface might benefit from looking into using the oklab color space too. Alice has published a blog post about the CSS capabilities which helped me to figure out the proposal for Calendar.
Community
I’ll soon begin reviewing apps for GNOME Circle, and I’ve already had an onboarding meeting with Tobias from the Circle Committee and another interested contributor. My plan is to support new reviewers through peer reviews and feedback so they can gain experience in GNOME design.
I attended a video meeting about Test Center , a new app for installing experimental versions of apps and system components. It makes testing much easier, and I see some potential for newcomers to get involved through coordinated user testing.
Until now, I’ve never had the time to blog about my design work for GNOME, but I’ve finally set up this blog and have been really enjoying it so far. Since this is my first time blogging, I’d appreciate any feedback via Matrix.
Thanks for reading. I’ll be back in September after my holiday.
In our previous post we looked at fixing a super 8 film projector. While watching filme with a real projector has its own charm, it is inconvenient to say the least. First of all you make the entire room properly dark or you can't see anything. This is regardless of the fact that the projector bulb is consuming 100 watts of power to show the image. Even if you manage not to burn the film merely running it through the projector causes wear, scratches and tearing. While film typically ages very well, eventually it will turn into magenta goop or gets eaten by vinegar syndrome . Thus you'd really want to convert all these films into high quality digital files.
There are several companies that offer this service. If you only have a few rolls, using those is the smart thing to do. I, on the other hand, have so much material that using a commercial service would cost thousands (possibly tens of thousands) of euros. Fortunately, this is a fairly common problem and there are dozens of existing projects on the Internet to be inspired by.
The main technical problem with super 8 film is that it is very small. A sequence of 10 super 8 images is approximately as long as a matchstick. The fact that projectors can display 18 frames per second with sub millimeter registration is an astounding achievement of mechanical engineering. How do they do that? Very difficultly.
Many of the DIY solutions start by taking an existing projector and modifying it to run slower. Then you remove the projection lens and aim a digital camera with a macro lens at the gate. This yields incredible results quality-wise but requires a fairly expensive macro lens and typically the modification on the projector is destructive. So that's out. Some more searching eventually lead me to this Github project .
The basic idea is simple. Instead of using a projector or trying to replicate a film transport (which proper tension and all that) instead rely on the basic stiffness on film and drive it directly with stepper motor. Film is not aligned mechanically but instead by detecting the sprocket hole with some straightforward machine vision code. Time to fire up the ol' 3D printer and order components. This is what the end result looks like after assembly
The thing at the top left that looks like a space cannon prop from a scifi movie is actually a microscope lens. Not only can it do > 1x optical magnification, it can do so at a cost of about 25 euros. The downside is noticeable chromatic aberration. The small flat thing on the other end is the Raspberry Pi HQ camera module that can do 4k at 12 bits per channel. The whole thing is run via a single Raspberry Pi 3 with a stepper motor hat. The board at the bottom is used to distribute 12V DC power to the lamp and motors.
Before going further, let's just spend some time appreciating just how awesome colors look in this film. Props to the chemical engineers at Kodak. And remember, the original image is about one third of the size of your smallest fingernail.
The Github repo says that you probably need to adapt the code to your setup. I basically ended up rewriting all of it from scratch. In the process I learned that OpenCV has its own GUI toolkit which is both simple (one could even say simplistic) and perfect for this use case. The first attempt took nine hours to process one 3.5 minute reel of film. Then I realized that trying to do 4k on material that physically maxes out at approximately 2k with the processing power of a potato is not a recipe for success. Halving the capture resolution and a few other optimizations brought the runtime down to about one hour per reel.
With this, some more custom software for image processing and stabilization coupled with FFmpeg scripts one can start to go through the archive of films. Doing so raises a fair bit of questions. For example:
Is that a 3 year old child driving a jury-rigged go-kart on a frozen lake on his own without even wearing a helmet?
Yes it is. A bit later a grown up drives the car but he is too heavy so the ice cracks under him. No one seems particularly concerned. This may seem strange to us but you have to understand that this was the very early 70s. The concept of safety had not been invented yet.
Hi, I’m Peter, a software dev and currently a maintainer of nautilus, the GNOME project’s file manager.
This blog will foremost contain monthly updates on what I did as a GNOME Fellow.
# The Fellowship
> The [GNOME Fellowship program](https://fellowship.gnome.org/) provides financial support for critical and under-resourced areas of the GNOME project.
In July [Sophie Herold](https://blogs.gnome.org/sophieh/) and I were selected as the first GNOME Fellows.
I am very grateful to everyone that put effort into launching this program and hope we will be able to use this great opportunity to provide impactful contributions to the project.
My work will mostly focus on nautilus, its file chooser capabilities, and its integration into the system.
I have a vague roadmap of things I want to achieve in this year of Fellowship:
{width=100%}
I also have aspirations of doing things beyond the listed items, but this roadmap will provide a nice, feasible baseline.
# XDG Directory Localization
If you have ever used GNOME with a non-English localization, you will probably be familiar with this little dialog:
{width=100%}
It not only interrupts you out of nowhere on session start, it also looks somewhat dated, given it still uses GTK3.
Corey Berla [ported it to GTK4](https://gitlab.gnome.org/GNOME/xdg-user-dirs-gtk/-/merge_requests/13), but also sprinkled some libadwaita usages in, making the port unfit for a generic GTK program.
For modern GNOME styling we of course want libadwaita, so I took the port and [integrated it into nautilus](https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/1831).
{width=100%}
This standalone dialog is shown when opening nautilus and is integrated into nautilus’ bookmark system.
There are more opportunities to improve the user experience though, so expect another update on this in the coming months.
# Sushi
Sushi is nautilus’ previewer companion.
When installed, it can be activated by pressing `Spacebar`.
It is a very versatile tool that can preview many different file types.
In May I decided to push sushi’s development forward, by landing [Corey Berla’s GTK4 port](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/43) along with [Tau Gärtli’s fix-up](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/68) and further porting commits.
Throughout June, Tau, Lorenzo Ubaldi, and I made many other adjustments, modernizations and cleanups to sushi.
This continued throughout July, and I believe the application is now again in a state where it lives up to the standards of a modern GNOME application.
{width=100%}
More detail on changes I made in July (selection):
* [Smoother view changes](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/122) and a loading spinner
* [Reworked overlays](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/124) and hid headerbars in fullscreen
* [Documented plugins](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/113) and a new system-wide plugin path
* [Fixed some](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/114) [memory leaks](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/121) to reduce memory usage (unfortunately there are still some left)
* [Added clicking/tapping](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/109) pausing/fullscreening support for videos
* Small [headerbar polish](https://gitlab.gnome.org/GNOME/sushi/-/merge_requests/123)
# Other
I also wrapped up [two](https://gitlab.gnome.org/GNOME/glib/-/merge_requests/5193) [minor](https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4919) GLib MRs this month.
They added [`g_set_date_time`](https://docs.gtk.org/glib/func.set_date_time.html) and [`g_string_free_deep`](https://docs.gtk.org/glib/method.String.free_deep.html), two convenience functions that will be available in GLib version 2.90.
# Support the GNOME Project
{width=80%}
The GNOME Fellowships are funded by our community. If you would like to help the GNOME project to stay sustainable, please [consider donating](https://donate.gnome.org/).
AI Summary
The described story is set in a magical underwater world where a fellowship of gnomes sets out to calm the eldritch nautilus god.
In this chapter they provide an offering of sushi, but the nautilus is not satisfied.
They craft a roadmap to localize the magical XDG creature.
Important note: All statements in this blog are fictional.
{width=100%}
The GNOME Shell user interface has mostly seen minor refinements and quality of life updates in recent cycles, but on the design side we’ve explored a lot of longer-term things we’d like to do. Some of these we have relatively complete plans for, others are more vague ideas that need more research and prototyping. As always, getting things like these implemented depends on developer capacity and interest (and sometimes funding).
While each of these ideas may require additional discussion, prototyping, and testing, we (the design team) have collected them all together here to share our longer-term vision and to give each idea more visibility.
Search
The coherent and fluid spatial model was one of our proudest achievements with GNOME 40. When you navigate GNOME Shell, interface elements always come from somewhere, and exit to somewhere else, in a way that’s semantic and predictable over time.
However, there are a few areas we’ve never been able to fully extend this ethos to. This includes GNOME Shell search, which just replaces the entire overview with search results when you start typing, with no animation or spatial model. We’ve long had the idea to switch to a more semantic layout for this, namely a search results overlay which spawns out of the search entry, above the rest of the overview. Very recently there has been some movement towards implementing this, and it’s likely that it will ship in 51 this fall.
In addition to the layout change, we’d also like to update the search results with richer types of content and actions. Other OSes and various third-party apps (Alfred, Raycast, etc.) have search with built-in file previews, multiple actions per search results, search filters, and more.
Some of this would probably require new APIs and apps to be ported to them, but there is a lot we could do here by just redesigning the existing UI.
Overlay Search Results Mockups
Editable Quick Settings
The Quick Settings pattern has seen wide adoption across all OS interfaces over the past decade, for obvious reasons: It puts a few essential pieces of information at your fingertips, and makes it easy to toggle some frequently needed system settings without going to the Settings app.
We’re quite happy with our implementation, but as we’ve added more features (dark style, night light, power modes, keyboard backlight, etc.) the quick settings menu has grown larger and larger. And there’s more: There are a number of additional, even more niche things people would like in this area, such as a way to stop the computer from sleeping (the “Caffeine” extension adds a toggle for this).
In order to accommodate all these cases, Android and iOS allow customizing this menu, allowing people to add or remove the more niche quick toggles depending on personal use. We would like to do something similar, with an inline editor as part of the menu in GNOME Shell.
Editable Quick Settings Mockups
Simplified Calendar Popover
The Calendar Popover in the top center has always been a a bit of an odd mix of things. It contains several loosely related elements that can each have wildly different amounts of content: Sometimes there are lots of notifications, but no calendar events or clocks. Some people have lots of world clocks but don’t get many notifications. Until a few releases ago we even had the Do Not Disturb switch in this popover, despite functionally being a quick setting.
Other systems (e.g. Android, Chrome OS) solve this by having the most important part of this menu (notifications) grouped with quick settings. This leaves only smaller, and less important items, which are also thematically better aligned: Calendar, events, world clocks, and weather.
This move would also group the most frequently accessed systems status items (notifications and quick settings) in a single location, rather than having them spread across two separate ones.
Notifications in Quick Settings Mockups
Simplified Calendar Popover Mockups
Drag & Drop Window Organization
During the process of experimentation and user testing leading up to GNOME 40 we also played with alternatives to the mini-workspaces in the overview. One particularly interesting concept revolved around drag & drop: Instead of having to target one of the tiny workspaces at the top, the real workspaces would scale down when you start dragging a window, allowing for larger, richer drop targets and simplifying the spatial model to a single set of representations for windows in the overview.
The specific interactions would need some refinements, but the testing we did leading up to GNOME 40 was promising, so we feel it would be worth giving this another try. In recent weeks, Cleo Menezes Jr. put together an extension testing this idea. We’re hoping to iterate on the design in the extension, and see where things go from there.
Mosaic & Tiling
More powerful tiling is something we’ve long wanted, but which has never quite materialized for technical reasons. More generally we’re interested in improving window management as a whole though, making it a lot less manual and fiddly. A while back we designed a concept called “Mosaic”, which auto-resizes windows to fit new windows, negotiating space between different windows’ optimal sizes. This blog post describes the concept in more detail.
There have been a number of extensions trying to implement parts of this concept over the years, but fundamentally the problem is that this would need better support in the compositor, so it can’t be cleanly done in an extension.
That said, Cleo Menezes Jr’s MosaicWM extension is currently actively maintained and implements most of the concept. As the design team we’re in touch with them, and want to continue collaborating to evaluate and refine the design further. At the same time, there is groundwork that could be laid that doesn’t depend on design (e.g. better tiling support in Mutter, richer min/max window size metadata).
Window Switching
The Super+Tab / Alt+Tab switcher has long been an area we’ve wanted to improve. There is a tension between wanting to keep the list of items manageable (this is why windows are grouped by app), and the ability to switch to the last few windows quickly, regardless of what app they belong to. Most other systems either have our current app grouping approach (Apple platforms), or just expose all windows in one gigantic multi-row spread (Windows).
Our hypothesis is that there are two separate types of use cases for this UI: Quickly switching to one of the most recent windows, and switching to any arbitrary window easily with the keyboard. If this is the case, perhaps these could both be better addressed by mixing separate windows (for the most recent few windows) and grouping (for all older windows).
We have high level concepts for this, but it would need further refinements and iteration before we can say that this would be a clear improvement over the status quo. It’s potentially something that could be prototyped in an extension though, so if you’re interested in that please let us know!
Login Screen Grid
This is almost a meme at this point, because it keeps almost happening every few cycles, but we still really want a more visual treatment for the login screen. The current list is not terribly ugly or problematic but it is a bit boring, and given that this is the first thing you get when booting up your computer we could do a better job welcoming people.
Dynamic Battery Icon
Over the years we’ve had many discussions on how to make the battery icon more expressive, and make it easier to read the status at a glance. Android and iOS both moved to a larger battery indicator that is wider than the standard square status icons. We’d like to do the same, both to be able to give people a clearer idea how much battery the device has, but also to e.g. be able to better integrate the percentage. This would be great on desktop, but especially also on GNOME Shell Mobile, where battery status is even more important and panel space is at a premium.
Transparent Panel
Another long-awaited and discussed feature that never quite made it across the finish line is the transparent panel. The idea is simple, and most other OSes (particularly mobile ones) already do this: When the wallpaper is low-contrast and a single color, just don’t show the panel background and let the wallpaper shine through. It’s a small thing, but with the right wallpaper it’s delightful
There is a relatively complete implementation from a few years ago by Jonas Dreßler, but it needs testing, polish, and review.
How do we get there?
Some of these concepts are small and self-contained, others are huge and have been evolving for years, but they all share one thing in common: They need your help to come to life!
In some cases that’s mostly a matter of implementation. In others we’ll need more experimentation, iteration, and discussions with various stakeholders. For complex interaction changes it’s probably good to start with a rough prototype so people can try the behavior early and we can iterate on it. In other cases it would be good to first remove technical blockers to make the new designs implementable in the first place (looking at you, rounded clipping!).
In the past, GNOME Shell was significantly harder to contribute to and test than apps since you needed to use tools like jhbuild. This has changed in the past year: You can now easily build and test your branch in a nested session from Builder using Mutter Devkit. If you use GNOME OS, you can even build a sysext to install your branch on your host system. This allows daily driving experimental branches easily, which is super helpful for evaluating changes to everyday workflows.
As the design team we can only propose ideas and work with developers to make them happen. If you’re interested in helping with implementation, we’d be happy to point you to the right maintainers to talk to, and iterate on concepts together. In some cases we definitely also need to do more user research, so any help with that would also be very welcome. For any of the above, feel free to reach out in the #gnome-design channel on Matrix.
I honestly wasn’t sure I was going to make it to GUADEC.
For months, the travel committee and I had been going back and forth trying to get all the documents needed for my visa application. The visa took longer than expected. I even lost hope at some point, and eventually got it just four days before my travel date.
This was my first GUADEC, and I was really looking forward to finally meeting the GNOME community in person.
I was also going to give a talk about my Outreachy project, which was probably something I should have been more nervous about than I was.
So between getting everything ready at the last minute, travelling from Kenya to Spain, and preparing for my talk, there was quite a lot going on.
But I made it to A Coruña.
Appreciation
I want to appreciate the people who made it possible for me to be there.
A big thank you to the GUADEC organizers and volunteers for all the work they put into making the event happen. I know there is a lot of work that goes on behind the scenes, and I really appreciate the time and effort that went into making everyone feel welcome.
I also want to especially thank the travel committee. I know the visa process wasn’t straightforward, and they spent months helping me get the right documents together and working through everything with me. Getting the visa just four days before my trip made the whole process even more stressful, so I really appreciate that they didn’t give up on it.
And of course, I want to thank my mentor, Lucas Baudin, for the support and guidance throughout my Outreachy internship. Having someone to learn from and ask questions along the way made the experience much easier.
Meeting the GNOME Community
This was probably the part I was most excited about.
For months, I had interacted with people through GitLab, Matrix, emails, and meetings, and it felt so nice to finally meet them in person.
I got to meet contributors from different parts of the GNOME community, and I loved hearing about what everyone was working on. Some conversations were technical, some were about the community, and some had absolutely nothing to do with GNOME.
I came to GUADEC wanting to meet the community.
I definitely did.
Sharing My Outreachy Experience
I also got the opportunity to speak about my Outreachy project during GUADEC.
During my internship, I had been working on Papers, improving its document signing features. Most of the work happened from my laptop in Kenya, so being able to stand in front of the GNOME community and share what I had been working on felt a little strange, in a good way.
Outreachy gave me the opportunity to contribute to a project I hadn’t worked on before, but it also taught me a lot about working in an open source community.
Giving the talk was definitely one of the highlights of GUADEC for me. I was a little nervous before getting on stage, but once I started, it felt much easier than I had expected.
What I liked most was the conversations afterwards. Different contributors came up to ask questions and share their thoughts, and it was really nice to continue those conversations outside the presentation.
Learning and Sharing
Throughout the conference, I attended talks covering a wide range of topics, including GNOME development, design, accessibility, and the future of the project.
I got to learn about projects I had never come across before, which was one of the things I really enjoyed. There was always something new to discover.
I also appreciated seeing how diverse the GNOME community is, and how much the community cares about making GNOME a welcoming and inclusive space for people from different backgrounds. Coming from Kenya, it was especially nice to see people from different parts of the world coming together around the same project.
Bringing the Experience Back to Kenya
Returning home, I wanted to ensure that the knowledge and inspiration I gained at GUADEC would benefit others as well.
I recently started the GNOME Kenya community, where we hope to introduce more people to GNOME and open source contribution. We are beginning with translation efforts while also encouraging contributors to explore development, documentation, design, and other areas that match their interests.
We are also having our first meetup soon, where we will officially introduce GNOME Kenya and GNOME to the community in Kenya.
My goal is to make GNOME more accessible to new contributors in Kenya and help build a sustainable local community that contributes back to the global project.
Looking Ahead
I came back from GUADEC with a lot to think about, and even more excitement to keep contributing to GNOME.
I look forward to contributing more, supporting new contributors, and hopefully attending future GUADECs, InshaAllah!
The timeline for Google Summer of Code is coming to an end, and us interns are piecing together the final touches to our projects for submission. Thanks to the help of my mentors, and the duck sitting on my monitor, the algorithm that beats the heart of Vocab Crosswords in GNOME Crosswords has been tremendous strides in accuracy and testability. The primary focus shifted to getting the algorithm landed by the end of the summer, and working on the frontend of the application post-GSoC.
Unit Tests
At GUADEC, with the help of Federico, I created unit tests to see how my functions reacted in a given circumstance. Jonathan and I worked on creating different circumstances for the run and helper functions.
Optimization
For user optimization, we don’t want to keep the board at a strict 30×30 grid and only allow for the first viable option. We decided to incorporate a new function to trim the dimensions of the generated grids based on the outermost edges of the letters, create a new board based on the newly calculated dimensions, trim that board down respectively, and copy the words over in the exact respective format. This is due to the libipuz grid’s origin point (0, 0) being fixed at the uppermost left corner cell. All in all, the trimming function essentially does this:
Additionally, it is pretty ideal to have some leeway of choice on how you want your puzzle to look. Some puzzles might generate lanky, while others extensively branched out all the way to the maximum borders, and the rest perhaps condensed together. The ability to rearrange the ordering of the words is already a feature in Crosswords thanks to PuzzleTask. But, it is for known grids of typically 15×15 sandwiched together. What is different with the vocab puzzle is that the rearrangement must still respect the same constraints of intersecting at a single letter nodal point, words cannot be on top of nor right next to each other (edge of nodes must respect space), and no islands (all words must share at least one node with another word). For instance, grids A and B here pertain the same words 1 through 6, but these words can connect differently on the graph, producing two options to choose from.
Tested, I achieved these 3 different versions of grids based off the same word bank:
Island Checking
The final component I will implement within GSoC’s timeline is checking for islanding words. Say a user provides a list of words and one word absolutely cannot intersect with any other word, it shares no node. The backtracking algorithm will spend a lot of time trying to place it, or invalidate any graph generation at all. We want to check beforehand if a word would not belong along the rest, and warn the user about it. Because there are many alphabets that exist, we are going to analyze the sets of characters as guint64 bitsets and GHashTable. Every unique character gets its own bit-slot, and every word’s 64-bit mask is compared to available words using bit operations.