mmstick

joined 2 years ago
MODERATOR OF
[–] mmstick 2 points 11 months ago (1 children)

You'll have to try it out when we release 6.7

[–] mmstick 2 points 11 months ago* (last edited 11 months ago)

The Wayland session of GNOME in Pop!_OS is not supported precisely because there a lot of unresolved issues.

COSMIC isn't yet in alpha, but you can try it there when we release alpha images. That will be a supported path for Wayland in 24.04

[–] mmstick 2 points 11 months ago (3 children)

These issues are common and need to be fixed by either AMD, Intel, NVIDIA, or the mainboard vendor; depending on which component is causing the issue. If a kernel option helps, then that's what you'll have to do until they fix it upstream in the kernel or firmware.

[–] mmstick 3 points 11 months ago* (last edited 11 months ago)

It is Wayland only, and fractional scaling is already supported by our toolkit since the beginning. There's little we can do about GTK3 and GTK4 applications though, which do not support fractional scaling.

[–] mmstick 1 points 11 months ago (1 children)

We will be adding integrations to our theme engine to automatically generate themes for GTK3, GTK4, and libadwaita.

[–] mmstick 2 points 11 months ago* (last edited 11 months ago) (3 children)

The GTK4 project was cancelled for multiple reasons. We originally began working on Relm4 to use GTK4 for COSMIC applets. While others on the team were also experimenting with alternative Rust GUI libraries.

It required a lot of effort to patch GTK4 to support the Wayland layer shell protocol. Getting those patches merged into GTK4 was also taking a much longer time. There were long delays between code reviews; and they also wanted a series of much larger refactoring changes to be made to GTK4 before exposing the layer shell feature. It was much easier to get layer-shell working with iced, as it is a much leaner and concise code base.

GTK does not support fractional scaling, which is something we want our applets to support on day one. This was one of our major concerns. A concern that didn't apply to iced.

It was also exceedingly difficult to create custom widgets with GTK in Rust. Even those of us with years of experience considered it to be unreasonably difficult. So it was not feasible to expect new hires on the team to be able to comfortably develop COSMIC components with it. In comparison, our team was able to develop custom widgets with iced with much less effort and with greater flexibility, so the demand for iced grew stronger.

At the end of the day, GTK is not a Rust toolkit, and its API is cumbersome to adapt to Rust. Use of GTK would always be a compromise that lessens the developer experience for COSMIC app and applet development. A compromise that would eventually require us to rewrite everything in a native Rust GUI library the moment it would become possible to do so.

Since we are developing a desktop environment from the ground up anyway, we decided that there would be much more value for our time if we contribute to the Rust ecosystem and utilize iced to make a fully featured GUI library for application development.

[–] mmstick 2 points 11 months ago (1 children)

It would certainly be easier for them to port COSMIC because there are very few dependencies on shared C libraries. Cargo links all Rust libraries statically, so it's easier to maintain and update components. This will depend how open they are to accepting Cargo and Rust into their ecosystems.

[–] mmstick 4 points 11 months ago* (last edited 11 months ago)

The keyword is alternative. All first party applications are written natively with our libcosmic toolkit, which is based on iced-rs. We are using a fork of iced though because we needed to implement a custom runtime with the sctk (smithay client toolkit) for COSMIC applet development, but our desktop applications will use the original winit runtime.

[–] mmstick 3 points 11 months ago (3 children)

As long as you have access to the latest version of Rust, porting would be somewhere near cowsay.

[–] mmstick 3 points 11 months ago* (last edited 11 months ago) (1 children)

That would compromise our vision of a GUI platform built from the ground up in Rust. It would also not be feasible to use Flutter for applet development. We can easily make modifications directly to iced for all the Wayland integrations that we need in COSMIC, as the iced code base is very lean, and written in Rust.

[–] mmstick 2 points 11 months ago

We are integrating AccessKit into libcosmic for accessibility support.

If you want to develop applets and/or applications with libcosmic, you must do so with Rust. There are no plans to develop C bindings for libcosmic.

[–] mmstick 2 points 11 months ago (2 children)

COSMIC is being written in libcosmic, which is based on iced.

view more: ‹ prev next ›