Skip to Main Content
Talk Intermediate GNU General Public License version 3 First Talk

Making Desktops Expressive: Introducing Bézier Curves to GTK

Proposal status is Approved
Session Description

Linux desktop interfaces are typically built from rectangles and predefined transitions. While functional, these constraints make it difficult to create interfaces with the kind of expressive motion and fluid geometry commonly seen in modern design systems.

In this talk, I will demonstrate how I brought Bézier-driven animation and procedural shape generation to GTK3 using my open-source geometry library, expressive-shapes, along with a series of runtime modifications to GTK's animation pipeline.


The talk explores two complementary ideas:

  1. Overriding Time: Bézier Transitions

    GTK widgets such as stacks and revealers rely on fixed interpolation models. I will begin with a quick overview of GTK's widget lifecycle (mapping, allocation, drawing, and frame clock updates) to establish where animations fit into the rendering pipeline. From there, I will show how native transition timelines can be intercepted and redirected through a custom animation manager synchronized with the display refresh cycle enabling smooth Bézier-based motion and expressive transitions.

  2. Overriding Form: Geometry Engine

    Beyond animation, I wanted widgets themselves to become dynamic shapes rather than static rectangles. I will talk about the evolution of expressive-shapes into a geometry engine capable of generating rounded polygons and performing real-time shape morphing. Along the way, I will discuss the underlying algorithms, the architectural decisions that shaped the library.

Throughout the talk, I will present implementation examples and live demonstrations using PyGObject, showing how these techniques can be combined to create fluid animations, shape morphing, and visually expressive GTK3 interfaces.

Key Takeaways
  1. A simple understanding of GTK's widget lifecycle.
  2. Techniques for replacing GTK3's built-in widget transitions with custom Bézier-driven animations.
  3. How geometry and Bézier curves can be used to generate, round, and morph shapes in real time.
  4. Inspiration and implementation ideas for creating more expressive desktop interfaces with GTK3.

References

Session Categories

Technology architecture
Story of a FOSS project - from inception to growth
Talk License: GNU General Public License version 3

Which track are you applying for?

Open Design

Speakers

Aman Valiyakath Student | amFOSS | Amrita Vishwa Vidyapeetham

Hi! I'm Aman Valiyakath, a third-year CSE student at Amrita Vishwa Vidyapeetham and a mentor at amFOSS, a student-run FOSS club. I enjoy exploring the intersection of art and programming, and many of my projects are driven by that combination.

Lately, I've been building desktop shells and UI tooling for Linux/X11.

Aman Valiyakath
https://www.linkedin.com/in/aman-valiyakath/