Search

Items tagged with: Gtk




After two weeks of writing, revising, and trying to make everything as digestible as possible, I finally published "GNOME Calendar: A New Era of Accessibility Achieved in 90 Days", where I explain in detail the steps we took to turn GNOME Calendar from an app that was literally unusable with a keyboard and screen reader to an app that is (finally) accessible to keyboard and screen reader users as of GNOME 49!

tesk.page/2025/07/25/gnome-cal…

#GNOMECalendar #GNOME #Accessibility #a11y #DisabilityPrideMonth #Linux #FOSS #OSS #OpenSource #FreeSoftware #GTK #libadwaita


🧪 "Have a GTK app with no tests? No problem!"
with Federico Mena Quintero at #GUADEC2025
📅 25 July 🕒 14:20 CEST 📍 Brescia

🛠️ Federico shows how to refactor messy GTK codebases so you can finally test them—without rewriting from scratch.

🔗 events.gnome.org/event/259/con…

#GTK #GNOME #Testing #Refactoring #FOSS


Folks, I can definitely recommend this talk from @bugaevc at #guadec2025!

floss.social/@gnome/1148734447…

Sergey has been of great help for my minor stumblings of trying to write #ObjC #GTK bindings for #ObjFW. He's got formidable knowledge und deep insight into #GObject especially and Cxx languages in general.


🔧 "Bridging type systems"
with Sergey Bugaev at #GUADEC2025
📅 25 July 🕒 09:00 CEST 📍 Brescia

💡 Sergey introduces peel, a fresh take on C++ bindings for GObject: zero overhead, full API coverage, deep type support.

🔗 events.gnome.org/event/259/con…

#GNOME #CPlusPlus #GObject #Bindings #GTK



🧩 "Cambalache 1.0"
with Juan Pablo Ugarte at #GUADEC2025
📅 25 July 🕒 11:40 CEST 📍 Brescia

🛠️ Cambalache 1.0 is here—a fresh GTK UI builder and Glade replacement. Get the full tour.

🔗 events.gnome.org/event/259/con…

#GTK #Cambalache #GNOME #UIDesign #FOSS


The new modal dialogs in GTK/gnome that are nailed to the parent window's center and can't be moved are such unintelligent design. Libreoffice now uses these for the paragraph style editing dialog so now you can't move the dialog anymore to look at the effect of your settings on the actual document. A similar issue happens with the "save as" dialog in many GTK applications. Often you'd want to look at the content of the document to decide on a file name.

#gtk #gnome #ux

#gnome #gtk #UX


🔧 "Bridging type systems"
with Sergey Bugaev at #GUADEC2025
📅 25 July 🕒 09:00 CEST 📍 Brescia

💡 Sergey introduces peel, a fresh take on C++ bindings for GObject: zero overhead, full API coverage, deep type support.

🔗 events.gnome.org/event/259/con…

#GNOME #CPlusPlus #GObject #Bindings #GTK


📦 "GNOME Boxes: The Art of Delayed Gratification"
with Felipe Borges at #GUADEC2025
📅 25 July 🕒 09:00 CEST 📍 Brescia

💭 Felipe shares how hitting a wall with GTK3 reignited his passion for building better apps.

🔗 events.gnome.org/event/259/con…

#GNOME #GTK #Boxes #OpenSource #AppDev


🧱 "The state of GTK"
with Matthias Clasen at #GUADEC2025
📅 24 July 🕒 14:15 CEST 📍 Brescia

🎯 What's new in GTK? Color mgmt, Android, text rendering & more—plus what’s next for devs & contributors.

🔗 events.gnome.org/event/259/con…

#GTK #GNOME #Linux #FOSS


Finding a #gtk 4 widget that can display some simple HTML is turning out to be a nightmare.
#gtk


Happy Disability Pride Month everybody :)

During the past few weeks, there's been an overwhelming amount of progress with accessibility on GNOME Calendar:

Event widgets/popovers will convey to screen readers that they are toggle buttons. They will also convey of their states (whether they're pressed or not) and that they have a popover.

Calendar rows will convey to screen readers that they are check boxes, along with their states (whether they're checked or not). Additionally, they will no longer require a second press of a tab to get to the next row; one tab will be sufficient.

Month and year spin buttons are now capable of being interacted with using arrow up/down buttons. They will also convey to screen readers that they are spin buttons, along with their properties (current, minimum, and maximum values). The month spin button will also wrap, where going back a month from January will jump to December, and going to the next month from December will jump to January.

Events in the agenda view will convey to screen readers of their respective titles and descriptions.

Accessibility on Calendar has progressed to the point where I believe it's safe to say that, as of GNOME 49, Calendar will be usable exclusively with a keyboard, without significant usability friction!

There's still a lot of work to be done in regards to screen readers, for example conveying time appropriately and event descriptions. But really, just 6 months ago, we went from having absolutely no idea where to even begin with accessibility in Calendar — which has been an ongoing issue for literally a decade — to having something workable exclusively with a keyboard and screen reader! :3

Huge thanks to @nekohayo for coordinating the accessibility initiative, especially with keeping the accessibility meta issue updated; Georges Stavracas for single-handedly maintaining GNOME Calendar and reviewing all my merge requests; and @tyrylu for sharing feedback in regards to usability.

All my work so far has been unpaid and voluntary; hundreds of hours were put into developing and testing all the accessibility-related merge requests. I would really appreciate if you could spare a little bit of money to support my work, thank you 🩷

ko-fi.com/theevilskeleton
github.com/sponsors/TheEvilSke…

#Accessibility #a11y #DisabilityPrideMonth #GNOME #GNOMECalendar #GTK #GTK4 #Libadwaita #FreeSoftware #FOSS #OpenSource


In #GTK, what's the best way to report a `Adw.EntryRow` having failed validation? I can set the `error` style class, but I don't see a way to set an (accessible) error message. My current workaround is to add a popover to the suffix of each row that has a selectable label on the inside with an alert role (which Orca then reads), but that doesn't really sound like the right way ...
#gtk


Calling all analog film photographers! 🎞️ I've been working on Filmbook, an open-source app to help you keep track of your film usage. It's built with Rust & GTK4/libadwaita for a smooth & modern experience – and it even runs on Linux phones like the Librem 5 and Pinephone Pro! 📱
The first version is ready for testing, and I'd love your input on what features would make it even better! Join the community & help shape Filmbook: codeberg.org/bjawebos/filmbook ✨ #filmphotography #analogphotography #rustlang #gtk #opensource #community #testing #featureideas #librem5 #pinephone #linuxphone


Yesterday the "Reflection" project started officially as part of the new @PrototypeFund round! 🌟🌈

The team consists of @p2panda and people from the GNOME gang around @tbernard and @jsparber.

We gonna release "Reflection" (formerly Aardvark) - a GTK-based, collaborative, local-first text editor! Aaaand:

All of this is part of a larger effort to explore p2p code, UX patterns, reusable UI components, debugging tools, organize events and document our learnings.

#p2p #p2panda #localfirst #gtk


🖼️ "A study in reactive UI toolkits"
with Jan Fooken at #GUADEC2025
📅 24 July 🕒 09:40 CEST 📍 Brescia
🧪 Can GTK feel like React or SwiftUI? Let’s explore modern takes on building Linux UIs.

🔗 events.gnome.org/event/259/con…

#GTK #Linux #Frontend #ReactiveUI


🛠️ "Breaking the spell: how to fix GObject"
with Emmanuele Bassi at #GUADEC2025
📅 24 July 🕒 09:00 CEST 📍 Brescia

After 25 years of GObject, it’s time for a new direction.

🔗 events.gnome.org/event/259/con…

#GNOME #GTK #OpenSource



As part of our volunteer-driven accessibility initiative in GNOME Calendar, and for the first time in the 10+ years of Calendar's existence, we finally completed and merged the first step needed to have a working calendar app for people who rely on keyboard navigation. This merge request in particular makes the event widgets focusable with navigation keys (arrow left/up/right/down) and activatable with space/enter. This will be available in GNOME 49.

Most of GNOME Calendar's layout and widgets consist of custom widgets and complex calculations, both independently and according to other factors (window size, height and width of each cell, number of events, positioning, etc.), so these widgets need to be minimal to have as little overhead as possible. This means that these widgets also need to have the necessary accessibility features reimplemented or even rethought, including and starting with the event widgets.

We also hope to get other parts of GNOME Calendar accessible before GNOME 49, but I can't promise anything at the moment. We did start working with making the month view accessible: gitlab.gnome.org/GNOME/gnome-c…

#GNOME #Calendar #GNOMECalendar #GTK4 #GTK #Libadwaita #Accessibility #a11y #Linux





GTK 4.18.1 is out! This is the first stable release of the 4.18 cycle, and includes a few last minute additions:

- fractional scaling support on macOS works again
- the Android backend uses GL rendering for top level surfaces

Plus, as usual, lots of bug fixes, performance improvements, and documentation updates.

You can download the release archive from the usual place: download.gnome.org/sources/gtk…

Or you can wait until your distribution of choice is updated to ship GNOME 48.

#gtk #gtk4 #gnome



Besides the AMD crasher, I wondered why the dev version of Showtime, #GNOME's power-efficient video player in incubation, sometimes still refused to launch; turns out it's randomly crashing with a segfault on startup for another reason.

After jumping through hoops to get a backtrace (#Python in #Flatpak makes things somewhat harder to debug), it turns out that #GStreamer is not the culprit. Presumably, it may be a bug in #GTK or somewhere else in the stack. Details here: gitlab.gnome.org/GNOME/Incubat…


The 2025 GTK hackfest has started in earnest, here in Brussels

#gtk #GNOME #hackfest


Introducing Refine, an app to tweak advanced and experimental settings in GNOME. It is an alternative to GNOME Tweaks, and is a pet project I'm currently working to experiment with PyGObject and dconf, while following the data-driven, object-oriented, and composition paradigms.

The entire codebase is made up of widgets that provide all the functionality needed to add an option. For example, instead of adding each option programmatically in Refine, the ultimate goal is to have it all done in the UI file.

For example, if we want to add an option to enable or disable middle click paste, all we need is the following code in the UI file:

$RefineSwitchRow {<br>  title: _('Middle Click Paste');<br>  schema-id: 'org.gnome.desktop.interface';<br>  key: 'gtk-enable-primary-paste';<br>}<br>

That's it. The RefineSwitchRow widget will do whatever it needs to do to ensure the option is available, grab the setting if it's available, and display it to the user. Many of these widgets provide extra functionality, such as a Reset button.

You can get Refine on Flathub: flathub.org/apps/page.tesk.Ref…

Everything else (source code, screenshot, etc.) is in the project website: tesk.page/refine/, as well as the Flathub link.

#GNOME #Flatpak #Flathub #FOSS #OpenSource #GTK #Libadwaita



🎅🐼 Save the date 🐼🎅

We're having a release event for the new @p2panda stack, and a hackfest to start working on a new native GTK local-first collaborative text editor!

Join us December 7-8 in Berlin (location and details TBA)

#p2panda #p2p #localfirst #gnome #gtk #berlin


I am pleased to announce a new Cambalache stable release, version 0.92.0!

What's new:
- Basic port to Adwaita
- Use Casilda compositor for workspace
- Update widget catalogs to SDK 47
- Improved Drag&Drop support
- Improve workspace performance
- Enable workspace animations
- Support new desktop dark style
- Support 3rd party libraries
- Streamline headerbar
- Lots of bug fixes and minor improvements

Read more about it at blogs.gnome.org/xjuan/2024/09/…

#GTK #LINUX #UI
@GTK @gnome


Introducing Casilda - A Wayland compositor widget!

A simple Wayland compositor widget for Gtk 4 which can be used to embed other processes windows in your Gtk 4 application.
It was originally created for Cambalache's workspace using wlroots, a modular library to create Wayland compositors.
Following Wayland tradition, this library is named after my hometown in Santa Fe, Argentina

Read more about it at blogs.gnome.org/xjuan/2024/09/…

@GTK #wayland #gtk


@ebassi #Gtk troubles. Following toshiocp.github.io/Gtk4-tutori…. Window of sec 5, messes up all my xterms windows: flickering by frantic scrolling, repeated lines and chars. Closing the gtk4-window restores all to normal. On debian-sid w/ mate. After successless search for help, I found a link "contact" on gtk.org leading nowhere. No user-group, no email-list. I did find your Mastodon ID and installed it. Now I dare to ask: "Where does a stuck newby go with gtk4?"


Finally took the time to log into Patreon and support @sophie! I highly recommend doing the same if you'd like to see image editing in Loupe 🖼️✨

patreon.com/sophieh

#gnome #gtk




I have released a new version of Exhibit!
- Improved settings with four default configurations for different file types and the possibility to save custom ones
- Bundled four HDRI by default, but more can be added
- Added a button to open the file in an external app
- Automatic reload on file change
- More ways to color models
- Improved point cloud support
- Updated F3D to latest version

Get it on #Flathub: flathub.org/apps/io.github.nok…

#GNOME #GTK #Libadwaita



PyGObject, the #Python bindings for #GTK, have recently merged support for asynchronous programming, closing an orthogonality gap between Python's async support and GTK having been single-threaded / event based since forever: gitlab.gnome.org/GNOME/pygobje…
This ends a decade of using projects such as gbulb that kindly bridged that gap.