We have been developing our own toolkit, libcosmic, which is being used for everything. From the lock screen, compositor, applets for the desktop, and the applications themselves. There is an examples directory for third party developers to learn hope to build their own applets and applications with.
The only thing I am kind of skeptical about Cosmic is how it will handle other apps like KDE or GNOME apps, especially the Libadwaita ones. I have one question, will it be possible to kind of make them fit in the system or the other way around, make the system look like it has a libadwaita look? I just really love some consistency
The desktop environment doesn't control how applications look or function. Regarding theming, GTK3 applications need a GTK3 theme, GTK4 applications need a GTK4 theme, libadwaita applications need a libadwaita theme, and KDE applications need a KDE theme. Our tooling for generating themes will attempt to generate themes for other toolkits, but COSMIC applications have a different design language than GNOME or KDE applications.
The cosmic-greeter package is already installable today. It will work on any system that has greetd available. The Appearance panel in COSMIC Settings is not yet merged, but it is in the appearance staging branch.
Tbh, cosmic-epoch itself is kinda modular, yet slightly weird. I used it on nixos for a short while (until some shit in nix changed, and pop's flakes decided to not compile) recently.
The strangest thing is their way to store configuration: cosmic-comp (I.e. their compositor) has 2. The 1st is a "regular" file (.ron, as far as I remember) and is used to store keybindings and some other settings (for example whether to tile windows automatically, border width, etc), and the second one is like windows's registry on top of the filesystem (I.e. you have ~/.config/cosmic/com.system76.whatever/dir0/file0 where dir0 represents some group of parameters (?) and file0 is the name of one; the value is the contents of file0. Easily manageable with nix but confusing AF to edit manually. Most if not all except the compositor uses the latter format.
On the other hand, the compositor is already quite cool with regards to animations and window/workpace movement at least, and is reasonably stable for a pre-alpha. Also, their way to make bars seems interesting: each applet itself is a graphical app using xdg-shell, and the panel uses pop's lib to "convert" them to layer-shell.
I've got some concerns about the screen space usage for the desktop itself however. Between the top "Gnome" bar and the bottom panel for apps, that's a lot of vertical space used up. I can imagine this being awful for small screen laptops. Gnome doesn't have this issue because the bottom "dock" is hidden until the actitives button is pressed. Will Cosmic in some way allow the user to hide or move the bottom panel?
@mmstick@GlenTheFrog
C++'s problem was it was directed to be a heap safe language otherwise it was the perfect language to say, write drivers with.
I'm assuming modern apps don't care how much memory is/isn't available to it while the OS core does not care what an app needs memory for.
I'm curious where rust will be in those cases.
Awesome! Yeah, that's what I was a bit apprehensive about. I've only seen screenshots of a blank desktop so far, and they always show the dock. And the "apply pressure" method is definitely the better way to go.
It is in a very pre-alpha state. The promoted demonstrations are being made by people developing Cosmic, so have a deep knowledge of how to configure it manually, or are using features that haven't been merged into the currently distributed package.
Apparently, some people that work at System76 are daily driving Cosmic, but they must be using a different configuration than what is part of the shipped package. As is, I find it basically a demo that is functional enough to attempt using for more than 5 minutes, but giving up not long after.
Rust wouldn't necessarily make it more responsive. It is more oriented towards safety and robustness.
Cosmic might be more responsive / efficient due to the fact that it's a new development and they can choose to implement things better and not carry old baggage, but that's about it. Rust doesn't have much say in it.
Edit: Although, if they are moving away from JavaScript in Gnome as their shell language to pure Rust in Cosmic, then you would probably see some responsiveness / efficiency gains, yes.
Synthetic benchmarks written in Rust are as fast as those in C. In practice, Rust applications are more efficient than their C counterparts. The performance and efficiency is nice, but the main benefit will be stable software that is free of vulnerabilities caused by common mistakes in C and C++. Virtually every Curl vulnerability would not happen in Rust.
There's half of a century of programming language theory research between C++ and Rust. Which solves many of the issues in programming that are common in C and C++. Such as the memory and thread safety violations that can be difficult to diagnose, application crashes, and critical software vulnerabilities.
The language concepts and compiler features also prevent a lot of common logical mistakes a programmer may make. Such that the best practices in C++ are the baseline for any Rust project that successfully compiles. It is easy to develop highly parallel and asynchronous software that just works and is easy to maintain and debug. As a result, you may notice Rust projects developing to maturity much quicker than you'd expect.