COSMIC: The Road to Alpha (blog.system76.com)
from mmstick@lemmy.world to linux@lemmy.ml on 11 Jan 2024 20:39
https://lemmy.world/post/10588907

#linux

threaded - newest

1stTime4MeInMCU@mander.xyz on 11 Jan 2024 21:31 next collapse

Tldr: New desktop environment designed for PopOS (but usable elsewhere)

avidamoeba@lemmy.ca on 11 Jan 2024 21:55 next collapse

It doesn’t use GTK does it?

mmstick@lemmy.world on 11 Jan 2024 22:00 collapse

No, we have been making our own platform toolkit (libcosmic), which is built upon iced-rs. We are using this both for our wayland compositor applets, and our desktop applications.

avidamoeba@lemmy.ca on 11 Jan 2024 22:14 next collapse

Beautiful, so there’s a good chance for it to not be a hot mess! Looking forward to it. 😊

ExLisper@linux.community on 12 Jan 2024 08:30 collapse

iced? Interesting. I though it’s still pretty experimental. There’s no official documentation yet, right? When I was looking at Rust UI libraries Yew and Leptos looked more mature. I guess you’re confident iced have enough backing and isn’t going anywhere.

How do you find working in Rust on a bigger UI project? Any issues?

mmstick@lemmy.world on 12 Jan 2024 12:25 collapse

Iced is a lower level GUI library, similar to what GDK is to GTK. We built our own COSMIC-themed GUI toolkit around iced, which is called libcosmic. As we’ve gotten more and more widgets and application logic developed, actual application development with libcosmic is a breeze. Even if you do have to create a custom widget, it’s much easier to creating custom widgets in GTK. We’re able to develop much faster than we ever could with GTK now.

Yew and Leptos aren’t comparable since they’re not native GUI toolkits. These are for web developers rather than application development. It wouldn’t be possible to use this for developing layer shell applets for COSMIC, either.

ExLisper@linux.community on 12 Jan 2024 12:35 next collapse

This sounds really cool. I don’t see any documentation for libcosmic. Are you planning to promote it as an alternative toolkit for building desktop apps or do you see it more as an internal tool strictly for COSMIC DE development?

mmstick@lemmy.world on 12 Jan 2024 12:49 next collapse

You can generate documentation by running cargo doc and browsing the generated web pages in target/doc. There are also examples in the examples directory of libcosmic, as well as a design demo example which is a WIP.

libcosmic is an alternative toolkit for building desktop applications and layer shell applets. It wouldn’t make much sense to build a toolkit only for ourselves. It’s the best way to develop layer shell applets for COSMIC, and other Wayland compositors that support the layer shell protocol.

mmstick@lemmy.world on 12 Jan 2024 18:38 collapse

As of today, pop-os.github.io/libcosmic/cosmic/ is now available.

devfuuu@lemmy.world on 13 Jan 2024 18:00 collapse

What’s the accessibility story for blind users for example?

Is it going to be suitable to use with proper bindings with other languages or it’s not an interest at this time or are there plans to support things like that and stability of apis, etc?

mmstick@lemmy.world on 14 Jan 2024 12:49 collapse

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.

avidamoeba@lemmy.ca on 13 Jan 2024 16:59 next collapse

Why develop libcosmic around iced instead of going with something else modern that’s easy to develop in such as Flutter? Iced/libcosmic is probably a bit more efficient resource-wise but that probably wasn’t a huge point.

mmstick@lemmy.world on 14 Jan 2024 13:32 collapse

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.

avidamoeba@lemmy.ca on 14 Jan 2024 20:52 collapse

Got it. So being written in Rust is one of the requirements. Makes sense. Flutter is great for self-contained applications but we can definitely use another sane native toolkit besides Qt that has wider applicability.

Blisterexe@lemmy.zip on 16 Jan 2024 16:47 collapse

Btw, is this the only reason that cosmic isn’t gtk, or are there other reasons? Because afiak gtk uses/can use rust.

mmstick@lemmy.world on 16 Jan 2024 17:02 collapse

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.

Blisterexe@lemmy.zip on 16 Jan 2024 21:43 collapse

Makes sense, thank you for the detailed answer! By the way, I saw that gtk apps will be automatically themed, is that only gtk3 or also gtk4? Edit: typo

mmstick@lemmy.world on 17 Jan 2024 04:00 collapse

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

Blisterexe@lemmy.zip on 17 Jan 2024 12:42 collapse

Great! Cant wait to try out cosmic, thank you for all the great work you guys have been doing!

theshatterstone54@feddit.uk on 11 Jan 2024 22:08 next collapse

I’ve been following the work on COSMIC (though not super actively) and I keep on saying that I like what I’m seeing because, well, I do! The idea of a tiling DE is a very exciting one and COSMIC really has the potential to become a Major Linux DE.

nekusoul@lemmy.nekusoul.de on 11 Jan 2024 23:15 next collapse

I particularly like that, just like their current Gnome extension, it supports both tiling and floating, with a quick toggle between them.

This’ll be a pretty interesting year for people interested in DEs.

leo85811nardo@lemmy.world on 12 Jan 2024 03:22 collapse

As a regular i3 user, I was very satisfied on how tiling was implemented into the Pop shell of Gnome. After a few keybind change here and there it almost felt like home maneuvering the windows and workspaces. One minor complain is glitches happen when external monitor is connected/disconnected on the fly (laptop usecase), in which case windows are disoriented and thrown around at random unexpected places instead of staying at where they were. I’m blaming Gnome on that one however, since I’m assuming it is related on how Gnome handle multiple screens and Pop shell act on top of it, so I’m expecting it to be fixed in Cosmic DE

marlowe221@lemmy.world on 12 Jan 2024 03:06 next collapse

Yeah, I’m a Pop user and like what they do with Gnome now. I can’t wait to see what it’s like when the desktop isn’t limited by the Gnome extension system.

onlinepersona@programming.dev on 13 Jan 2024 17:05 collapse

I’m just happy there’s a rust DE being written in slint. KDE is nice and all, but it’s all C++. No way am I touching that trainwreck of a language again.

CC BY-NC-SA 4.0

mmstick@lemmy.world on 14 Jan 2024 12:46 collapse

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

onlinepersona@programming.dev on 14 Jan 2024 13:49 collapse

I’m confused. Slint says it’s working with System76?

A great start to the week - @pop_os_official will collaborate with us to offer Slint as an alternative toolkit for application development on Cosmic Desktop.

#rustlang

mmstick@lemmy.world on 14 Jan 2024 14:21 collapse

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.

governorkeagan@lemdro.id on 11 Jan 2024 22:08 next collapse

I’m really excited to test the Alpha, it’s looking really good so far!

Unsafe@discuss.online on 11 Jan 2024 22:38 next collapse

Why do we invent new DEs instead of making proper settings app in already existing ones?

mmstick@lemmy.world on 11 Jan 2024 22:43 next collapse

Because that’s not how software development works, and that’s not how you make progress in the field. In order for our technical vision to be integrated with an existing desktop, such as GNOME, it would have required that they give us the reigns to their project to delete their entire codebase and rebuild it into exactly what you see today in COSMIC.

As in life, sometimes you’ve got to demolish, pave, and build better foundations. There’s a lot of cool technologies available to build a truly next-generation desktop experience in, but you’re not going to get it through rigid bureaucracy and old tools. With COSMIC, we’ve got freedom to make decisions and build something truly unique, and we’re using our talent to show you what we can do.

cybersandwich@lemmy.world on 12 Jan 2024 02:28 next collapse

Well said. I’m nervous and excited to see what this turns in to. Pop is my daily driver and has been for years. I’m excited to see all this progress.

Unsafe@discuss.online on 26 Jan 2024 18:32 collapse

If you will create “next gen” desktop, you will just solve some problems of already existing ones and create your own. Maturity of software is far more important, than uniqueness. GNOME didn’t evolve into its current state for no reason.

mmstick@lemmy.world on 26 Jan 2024 18:38 collapse

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…

Montagge@kbin.social on 11 Jan 2024 22:58 next collapse

Welcome to FOSS lol

Quazatron@lemmy.world on 11 Jan 2024 23:04 next collapse

We do what we must because we can.

FOSS software development is very much like evolution. Many projects are born but only the best thrive. It is a wasteful system because resources are spread over similar projects, but it creates very good software.

Unsafe@discuss.online on 26 Jan 2024 18:41 collapse

Not really. Best Foss projects do not always thrive. Git wasn’t really better than mercurial. But it had happened to be published earlier, so it got wider adoption.

Quazatron@lemmy.world on 26 Jan 2024 21:36 collapse

It doesn’t have to be the best, it just has to be better than the current standard. Git was better than CVS and SVN, so it won.

tiny@midwest.social on 12 Jan 2024 00:08 collapse

Sometimes it’s easier to start over than unbreak an existing project. Gnome is old and big so it’s harder to change. So starting over where you don’t have to keep existing features or care about existing users is way easier than fixing gnome and rewriting it in rust. Plus system 76 can. There’s no single party that can stop them from making a desktop

simple@lemm.ee on 11 Jan 2024 23:38 next collapse

I’ve been following Cosmic and really looking forward to it. I love the idea of a Gnome-like desktop without Gnome-like design decisions.

Chewy7324@discuss.tchncs.de on 12 Jan 2024 00:08 next collapse

[cosmic-randr] uses the wlr output configuration Wayland protocols.

Does this mean cosmic-randr should work on other compositors that support the wlr output configuration protocol (e.g. sway, hyprland, river, …)? It’s great to see cosmic adopting existing protocols, instead of compositor specific protocols (or worse, no external app support at all).

Also, it’s great how portable Cosmic DE seems to be, as it’s already mostly packaged on NixOS. On first look, cosmic-term seems to be a quick terminal so I might switch to it, as well as cosmic-files.

mmstick@lemmy.world on 12 Jan 2024 00:11 collapse

If they support the wlr output configuration protocols, then yes it’ll work fine. There are some more advanced features that we want that aren’t supported by the protocol though, so we will likely develop some cosmic protocol extensions for those features.

priapus@sh.itjust.works on 12 Jan 2024 00:25 next collapse

Incredibly excited to try it. I love the early support for Nix, I plan to run it as soon as a NixOS module becomes available!

Huge props to the design team here, the aesthetic looks amazing on all of the apps I’ve tried. They all feel consistent and look great.

[deleted] on 12 Jan 2024 05:01 next collapse

.

mmstick@lemmy.world on 12 Jan 2024 05:06 collapse

I’m not sure why you think this is unique to COSMIC or elementary OS. Do you not realize that this is true of all operating systems? Look at Steam, Spotify, Discord, Zoom, and Slack for starters.

[deleted] on 12 Jan 2024 05:25 collapse

.

mmstick@lemmy.world on 12 Jan 2024 05:30 collapse

None of what you stated makes sense. Most people are not using exclusively GNOME applications on GNOME, or exclusively KDE applications on KDE. Like with elementary OS, most people are running applications like Steam, Spotify, Discord, Zoom, Slack, etc. Plenty of people are using Qt and KDE applications on GNOME, or GTK and GNOME applications on KDE. You think no one uses Krita or Scribus on GNOME, or GIMP on KDE?

Thanks to Flatpak, you might even be running elementary applications on your system. Even Windows back in the late 90s and 2000s was full of desktop applications with custom proprietary interfaces. Nowadays everything’s becoming a web view bundled with a Chromium runtime, and you’re more worried about a COSMIC app ecosystem having a different UI from GTK?

COSMIC is a good thing because it’s a standardized and open source cross-platform native desktop toolkit. People can create themes for it, and those themes can be bundled alongside GTK and Qt/KDE themes. Due to the nature of how Rust libraries are developed and linked, COSMIC applications are mostly statically-linked, which even makes it trivial to put them on a USB drive and bring them to any PC.

[deleted] on 12 Jan 2024 07:33 collapse

.

mmstick@lemmy.world on 12 Jan 2024 12:32 collapse

That’s already not possible on GNOME because some GNOME applications hardcode their theme, others use libadwaita, some use GTK4 without libadwaita, some use GTK3, and there may still be a GTK2 app lingering around here and there in the repos (ie: GIMP).

Few people are going to care that there’s a GTK application installed on their COSMIC desktop. COSMIC will automatically generate GTK3/4 themes to match the system theme. We may even automatically generate a libadwaita theme, so it will look “same enough”.

[deleted] on 12 Jan 2024 12:46 collapse

.

Spectacle8011@lemmy.comfysnug.space on 12 Jan 2024 09:12 next collapse

I recognize this is an odd comment to make, but I’m glad to see this screenshot tool supports capturing a window in Wayland. My next question is, can the screenshot tool be invoked from the command-line or via a script?

pmk@lemmy.sdf.org on 14 Jan 2024 12:27 collapse

Just curious, on a scale from cowsay to MS Word, how difficult would it be to port COSMIC to the BSDs, assuming wayland support?

mmstick@lemmy.world on 14 Jan 2024 13:34 collapse

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

pmk@lemmy.sdf.org on 14 Jan 2024 14:32 collapse

Nice! I know that OpenBSD people have been working on a wayland compatible thing which takes into account Linux-specific things (libinput?), but last I heard it’s not ready. I have my hopes up though! Could be the year of desktop BSD if they port COSMIC.

mmstick@lemmy.world on 14 Jan 2024 14:45 collapse

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.

pmk@lemmy.sdf.org on 14 Jan 2024 14:58 collapse

OpenBSD -release seems to be at rust 1.72, but -current has 1.75.
openbsd.app/?search=rust&current=on