Shell: implementing layout manager in Rust
gnome-shell uses the scenegraph library Clutter to draw and layout it's UI. Layout with Clutter has historically been done by setting fixed positions and sizes for every element of the UI, while the modern way is to make use of the size negotiation techniques Clutter supports like layout managers and constraints. gnome-shell has been transitioning to make use of the latter a lot more with GNOME 40, which allowed for much more maintainable code and easier development.
The downside of those changes is that the way gnome-shell is implemented makes it necessary to transition from a C into a JS environment every time that layout negotiation happens, which incurs a certain overhead.
This project is trying to explore the idea of implementing specific code like layout managers in Rust, while leaving the largest parts of the UI in JS, reducing the amount of marshalling done and crossings of C and the JS FFI.
- Knowledge of GObject and GLib
- Experience programming in Rust, preferrably with Rust-GObject libraries
- Matrix or IRC #gnome-shell:gnome.org