Skip Navigation

User banner

Michael Murphy (S76)

@ mmstick @lemmy.world

Posts
15
Comments
89
Joined
3 yr. ago

I'm a System76 engineer / Pop!_OS maintainer. I've been a Linux user since 2007; and Rust since 2015. I'm currently working on COSMIC-related projects.

  • Our internal testing won't begin until the first ISO is ready, which marks the alpha. As it is open source, our internal testing is also publicly available to everyone interested in downloading the ISO and testing it. The Alpha will not include all features that are planned for release. Then we will switch to Beta after all featues are implemented, where QA will begin reviewing every PR to ensure that no regressions make it to release. Then it releases after we deem the beta free of oustanding issues on the board.

  • I heard mention of COSMIC on Asahi somewhere.

  • Yes, you can do anything with COSMIC's dock and panel. No extensions needed. If an applet exists on the system, you can embed it into your panel or dock.

  • The compositor and its applications have been developed bottom up with a full Rust stack, so stability hasn't been a concern. We spend very little time debugging since the logic usually works if it compiles.

    There's only a handful of applications slated for the first release, and they're almost finished. Besides core applications, we need only develop a couple additional settings pages to be ready for release, and integrate COSMIC versions of the remaining desktop portals. Altogether, that's really not that much compared to all the work in the last two years.

    Besides feature development, the main focus will be ironing out theming issues in the toolkit to adhere to our design files, and writing documentation for developers interested in building apps for cosmic. As well as the necessary work to enable a smooth upgrade from Pop 22.04 to 24.04.

  • I'd search pop-os/cosmic-store. That is the GitHub namespace for it.

  • That's already happening

  • I assume you meant Pop!_OS instead of COSMIC. Pop!_OS 24.04 will be based on Ubuntu 24.04.

  • Static linking is not an issue. Binaries may require more space on disk, but the benefit is that they are self-contained, portable, with excellent performance, and low memory usage. Binaries are compiled with LTO, so unused functions are stripped from the binary. What remains is highly optimized to that application's use cases.

  • What makes you think I'm "salty"? I'm not the one complaining about NVIDIA not working in Wayland, or saying that I'm going to sell my GPU.

    The only person who is salty is the one who would rather sell their GPU than use a Wayland desktop environment that supports NVIDIA as a first class citizen.

  • Then have fun with your bad experience. NVIDIA is working quite well in Wayland on COSMIC.

  • Try out COSMIC with the NVIDIA 550 beta driver.

  • It already supports VRR and DRM leasing. VRR monitors and VR headsets have been tested.

  • Translation: no one should ever attempt to innovate on the Linux desktop. GNOME is the epitome of software development and everyone else should quietly give up. If GNOME can't fix an issue, no one can. Only GNOME has the god-given right to make decisions on how desktops are developed for Linux. There can only be one party. The One Desktop principle. Contribute to your party leader, or else...

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

  • 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.

  • 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.

  • 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.

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

  • 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.