• Pl chevron_right

    Jakub Steiner: Avoid Head Spinning / PlanetGnome · Yesterday - 22:00


In a versatile tool like Inkscape, there are always features that aren’t for you. There are some that really get in your way though, like the recently added canvas rotation .

If you’re like me and constantly keep triggering it by accident (Blender zooming being Inkscape’s panning having to do with it), you’ll be happy to learn it can be completely disabled. Sip on your favorite beverage and dive into the thick preferences dialog again ( Edit>Preferences ), this time you’re searching for Lock canvas rotation by default in the Interface section. One more thing that might throw you off is that you need to restart Inkscape for the change to have any effect.

If you don’t wish to go nuclear on the function, do note it can be reset from the status bar bottom right.

  • Pl chevron_right

    Manuel Genovés: A quick update on libadwaita’s animation API / PlanetGnome · Yesterday - 11:00

Last time we left on the general API design. Since then I’ve been refactoring the existing animation-related code so we can reuse it for our public API. Part of that refactoring has been converting the current boxed-type adwaita animation code into a gobject class. I’ve learned a lot of how GObject works under the hood by doing so, so I expect to be a lot quicker implementing the next milestones.

After that work, which is already merged, I started working on timed animations, and moving functionality from the baseclass “adw-animation” into it, as well as starting opening the API (which was completely private until now).

I quickly prototyped a demo page for said timed animations (which is highly WIP, from design to phrasing):

timed animations demo

  • Pl chevron_right

    Jakub Steiner: Deescalating Tensions / PlanetGnome · 2 days ago - 22:00


One of the great attributes of SVG is that its text nature lends itself to be easily version controlled . Inkscape uses SVG as its native format (and extends it using its private namespace).

Unfortunately it uses the documents themselves to store things like canvas position and zoom state. This instantly erases one of the benefits for easy version control as every change instantly turns into unsolvable conflict.

Luckily you can at least give up the ability to store the canvas position for the greater good of not having merge conflicts, if you manage to convince your peers to change its defaults. Which is what this blog post is about :)

To change these defaults, you have to dive into the thick forrest that is Inkscape’s preferences ( Edit > Preferences ). You’ll find then in the Interface > Windows section. The default being the unfortunate Save and restore window geometry for each document needs to be changed either to Don't save window geometry or Remember to use last window's geometry .

From now on, rebasing icon-development-kit won’t cause any more grey hair for you!

  • Pl chevron_right

    Michael Meeks: 2021-08-03 Tuesday / PlanetGnome · 2 days ago - 15:40

  • Up early, poked at some code; call with Pranam, then Kendy, then Cor, lunch. Bit of hackery on a performance regression, more calls.
  • Liked Matthew's post on Copilot - sharing ideas even those codified in neural networks (repeatedly counting the number of lines in an in-lined, C, double linked list manipulation method to check it used to be some sort of fun); so I tend to agree, that is unless we train a neural network to type out whole programs of existing (C) FOSS code verbatim: also possible, but not proposed. Looking forward to having time to play with CoPilot myself.
  • Chat with Gokay.
  • Pl chevron_right

    Jakub Steiner: Single Cycle Rave / PlanetGnome · 3 days ago - 22:00 · 1 minute

Single Cycle Rave

While I’ve really enjoyed the new firmware with an extra LFO on the Elektron Digitakt, I haven’t posted anything because the next day recording never had the same power as when I head-banged the tune in bed the previous night (the sole reason why everything is backlit on the Digitakt, don’t let them live performers tell you otherwise).

But I have to break through the creator’s block and start posting again, because I really want to get good at this.

Some pointless technicalities: Digitakt is a drum machine that allows to loop even super tiny samples so what you get is a very versatile oscillator to furter shape with EQ and effects. I am still terrible and slow, but there is definitely joy in playing versus programming a pattern in a tracker . Sure it feels a bit odd to keep the amazing Digitone off, but I feel like I always spoit the broth by adding and adding more. This track benefts from the minimalistic constraints I think.

The drone footage taken from a few shoots in 2021. It’s never enough to make a video out of it, so I’m happy it’s usable as seasoning to my synth vids (haven’t been flying half as much as I want despite conditions being amazing).


Listen right here:

Watch a video:

Watch on Vimeo

Previously , Previously , Previously , Previously , Previously .

  • Pl chevron_right

    Matthias Clasen: More on input / PlanetGnome · 3 days ago - 20:26 · 2 minutes

I’ve written about input before ( here and here ), and more recently, Carlos and myself gave a Guadec talk about input-related topics ( slides ). In those writings, I have explained how dead keys work, and how you can type

<dead_acute> A

to produce an Á character.

But input is full of surprises, and I’ve just learned about an alternative to dead keys that is worth presenting here.


First lets recap what happens when you send the <dead_acute> A sequence to GTK.

We receive the first key event and notice that it is a dead key, so we stash it in what we call the preedit , and wait for the next event.  When the next key arrives, and it represents a letter (more precisely, is in one of the Unicode categories Ll, Lu, Lt, Lm or Lo), we look up the Unicode combining mark matching the dead_acute, which is U+301 COMBINING ACUTE ACCENT , and then we flip the sequence around. So the text that gets committed is

A <combining acute>

The reason that we have to flip things around is that combining marks go after the base character, while dead keys go before.

This works, but it is a bit unintuitive for writing multi-accented characters. You have to think about the accents you want to apply from top to bottom, since they get applied backwards. For example to create an  with an acute accent on top, you type

<dead_acute> <dead_circumflex> A

which then gets flipped around and ends up as:

A <combinining circumflex> <combining acute>

A better way

To me, it feels much more natural to specify the accents in that order:

  1. give me an A
  2. then put a ^ on top
  3. and then put an ´ on top

The good news is: we can do just that! Keyboard layouts can use any Unicode character as keysyms, so we can just use the combining marks directly, without the detour through dead keys.

For example, the “English (US,  Intl, AltGr Unicode combining)” layout contains keys for combining marks. A slight hurdle to using this layout is that it does not show up in the GNOME Settings keyboard panel by default. You have to run

gsettings set org.gnome.desktop.input-sources show-all-sources true

to make it show up.

The combining marks in this layout are placed in a “3rd level”. To use them, you need to set up a “3rd level chooser” key. In the keyboard panel, this is called the “Alternative Characters Key”. A common choice is the right Alt key.

After all these preparations, you can now type A Alt+^ Alt+’ to get an   with an   ́ on top. Neat!

  • Pl chevron_right

    Madeline ‘Madds’ Holland: Career Goals / PlanetGnome · 3 days ago - 16:55 · 4 minutes

For this week’s Outreachy blog post, I’ll be talking about my personal career goals, so it’ll be less GNOME/Librsvg-focused than my recent posts.

I’m looking for work!

The end of my Outreachy internship is fast approaching, and so after August 24th I’ll be available to work either full or part time. I’m currently based in Kansas, US, and I’m open to remote positions based anywhere in the world, along with relocation within the US or internationally.

Who am I?

With that bit out of the way, who am I? What experiences do I have? Do I have to write rhetorical questions? I don’t but it’s fun. To begin, I’ve been a Outreachy intern working with the GNOME Foundation on Librsvg for this cohort, and at the end of it I’ll have 3 months of Rust programming and remote work experience.

What experiences do I have?

In the realm of programming and along with Rust, I have experience using C# to write a video game in university (see things unsaid on, and over the years I’ve used Java, Python, Lua, and PHP.

Aside from the aforementioned programming and remote experience, I also have the experience of using Linux for 9 years as my daily driver for desktop systems and 2 years for my personal server (including the blog you’re reading this on).

Tech has been a constant part of my life, I took a liking to it early on, so I have been the one others called for help for years, both in my jobs and at home. In this, I have learned to listen closely to others, to figure out what issues they’re having then come up with a solution that fits their needs, whether that’s picking laptops for a 1:1 initiative in high school, or troubleshooting multiple projector systems in theatres. I get excited when I get a new challenge, it’s a chance for me to delve into a topic or new technology I may only know a little bit, then use that knowledge to then help someone. What this means then is that I’ve spent the past few years getting better at learning new things quickly, then distilling that information down to pass on to others.

What about school?

I graduated with a bachelors degree in film and media studies, a minor in Japanese language (I can understand to about JLPT N3 or intermediate level), and a global awareness certificate. I earned several departmental awards during my time in university, two for my 360 animated project Feeling Green (see, one for my service to the department, and another for my potential in VFX.

During university I studied abroad, worked in several research positions, a theatre, as an intern for the local Women in Film and TV group, and finally as part of the staff for the film department itself. These jobs were all technical in some way, I had to research VR and computational linguistics in my research positions, learn the wide array of film equipment and its setup and usage in my film department job, and I had to learn how to use a lighting board and its programming language at the theatre. I sought out technical jobs to do, where I would be challenged and be pushed to learn new things while having fun using interesting pieces of technology, and Outreachy is where I ended up.


If you don’t know, Outreachy is an internship program which helps get underrepresented people into open source technology, so why am I a part of it? Well, I’m LGBT, and I’m neurodivergent, I understand the world from a fundamentally different place than the majority cis straight white man and I want to bring my unique perspective to a team and project. As an example, I literally see differently since I have Visual Snow Syndrome, which means that the visual style of a webpage or application (like repeating high contrast areas, like stripes, which produces a strong visual vibrating effect) can render it nearly unusable depending on how intense the effect is, a consideration for UX design that doesn’t matter for most, but can make some things inaccessible for me.

What job am I looking for?

Right now, I’m looking for a job where I can contribute to and drive forward a really cool project while honing my Rust skills and learning new ones. I am interested in systems programming, similar to what I’ve gotten a taste of working with Librsvg, so I would love to start there. I’m not limited though, as many, many other things are interesting to me too, like servers, system administration, art tools development, VR / video games programming, and so much more.

Thank you!

If you would like to get in touch, send me an email:

Or DM me on Twitter @madds_io

  • Pl chevron_right

    Philippe Normand: Introducing the GNOME Web Canary flavor / PlanetGnome · 3 days ago - 12:00 · 3 minutes

Today I am happy to unveil GNOME Web Canary which aims to provide bleeding edge,most likely very unstable builds of Epiphany, depending on daily builds of theWebKitGTK development version. Read on to know more about this.

Until recently the GNOME Web browser was available for end-users in twoflavors. The primary, stable release provides the vanilla experience of theupstream Web browser. It is shipped as part of the GNOME release cycle and indistros. The second flavor, called Tech Preview , is oriented towards earlytesters of GNOME Web. It is available as a Flatpak, included in the GNOME nightly repo. The builds represent the current state of the GNOME Web masterbranch, the WebKitGTK version it links to is the one provided by the GNOME nightly runtime.

Tech Preview is great for users testing the latest development of GNOME Web, butwhat if you want to test features that are not yet shipped in any WebKitGTKversion? Or what if you are GNOME Web developer and you want to implement newfeatures on Web that depend on API that was not released yet in WebKitGTK?

Historically, the answer was simply “you can build WebKitGTK yourself “.However, this requires some knowledge and a good build machine (or a lot ofpatience). Even as WebKit developer builds have become easier to produce thanksto the Flatpak SDK we provide, you would still need to somehow make Epiphanydetect your local build of WebKit. Other browsers offer nightly or “Canary”builds which don’t have such requirements. This is exactly what Epiphany Canaryaims to do! Without building WebKit yourself!

A brief interlude about the term: Canary typically refers to highly unstablebuilds of a project, they are named after Sentinel species . Canary birds weretaken into mines to warn coal miners of carbon monoxide presence. For instance Chrome has been providing Canary builds of its browser for a long time. Thesebuilds are useful because they allow early testing, by end-users. Hencepotentially early detection of bugs that might not have been detected by theusual automated test harness that buildbots and CI systems run.

To similar ends, a new build profile and icon were added in Epiphany, along witha new Flatpak manifest. Everything is now nicely integrated in the Epiphanyproject CI . WebKit builds are already done for every upstream commit using the WebKit Buildbot . As those builds are made with the WebKit Flatpak SDK , theycan be reused elsewhere (x86_64 is the only arch supported for now) as long asthe WebKit Flatpak platform runtime is being used as well. Build artifacts aresaved, compressed, and uploaded to a web server kindly hosted and provided by Igalia . The GNOME Web CI now has a new job, called canary , that generates abuild manifest that installs WebKitGTK build artifacts in the build sandbox,that can be detected during the Epiphany Flatpak build. The resulting Flatpakbundle can be downloaded and locally installed. The runtime environment is theone provided by the WebKit SDK though, so not exactly the same as the oneprovided by GNOME Nightly.

Back to the two main use-cases, and who would want to use this:

  • You are a GNOME Web developer looking for CI coverage of some shiny newWebKitGTK API you want to use from GNOME Web. Every new merge request on the GNOME Web Gitlab repo now produces installable Canary bundles, that can beused to test the code changes being submitted for review. This bundle is notautomatically updated though, it’s good only for one-off testing.
  • You are an early tester of GNOME Web, looking for bleeding edge version ofboth GNOME Web and WebKitGTK. You can install Canary using the providedFlatpakref. Every commit on the GNOME Web master branch produces an update ofCanary, that users can get through the usual flatpak update or through theirflatpak-enabled app-store.

As you can see in the screenshot below, the GNOME Web branding is clearlymodified compared to the other flavors of the application. The updated logo,kindly provided by Tobias Bernard, has some yellow tones and the Tech Previewstripes. Also the careful reader will notice the reported WebKitGTK version inthe screenshot is a development build of SVN revision r280382. Users arestrongly advised to add this information to bug reports.


As WebKit developers we are always interested in getting users’ feedback. I hopethis new flavor of GNOME Web will be useful for both GNOME and WebKitGTKcommunities. Many thanks to Igalia for sponsoring WebKitGTK build artifactshosting and some of the work time I spent on this side project. Also thanks toMichael Catanzaro, Alexander Mikhaylenko and Jordan Petridis for the reviews in Gitlab.