No description
Real bug fixes: - spin_button::vertical(): was constructing the SpinButton with Orientation::Horizontal — vertical() rendered horizontally. Fixed to use Orientation::Vertical, which also resolves the 'Vertical never constructed' warning. - text_input/input.rs: rewrite the iterator-skip logic for trailing icon layout. The previous `let mut icon_layout = ...; if has_start ... = ...; ... = ...;` triggered two value-never-read warnings and obscured the intent. Now it reads as 'skip text, optionally skip start-icon, then take the trailing-icon layout'. Dead code removed: - core::Core::portal_is_high_contrast — assigned at construction, never read anywhere - widget::menu::menu_bar::bar_pressed field and the pub fn get_mut_or_default helper — no callers - widget::popover::State — declared, never constructed - widget::segmented_button::widget::Focus.now — sibling of updated_at, never read - widget::wayland::tooltip::widget::Variant — orphan enum (and the cargo fix follow-up dropped a now-unused Element import) - widget::button::widget::Button::is_hovered method — trivial getter with no callers; the underlying `is_hovered` field is still used Visibility / nits: - segmented_button::widget::TabDragSource: gain pub(super) so the pub(super) field tab_drag stops exposing a more private type - widget::menu::flex::resolve: #[allow(dead_code)] (170-line public helper, kept for future use) - app/cosmic.rs: drop one unreachable arm in the surface-message match - widget::dropdown::multi: drop unused Paragraph import Leyoda 2026 – GPLv3 |
||
|---|---|---|
| .github | ||
| .vscode | ||
| cosmic-config | ||
| cosmic-config-derive | ||
| cosmic-icons@5252095787 | ||
| cosmic-theme | ||
| examples | ||
| i18n | ||
| iced@6b069b2b4b | ||
| res | ||
| src | ||
| .gitignore | ||
| .gitmodules | ||
| build.rs | ||
| Cargo.toml | ||
| config.toml | ||
| i18n.toml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
LIBCOSMIC
A platform toolkit based on iced for creating applets and applications for the COSMIC™ desktop.
Documentation
- API Documentation: Automatically generated from this repository via
cargo doc - libcosmic Book: A reference for learning libcosmic
Templates
- https://github.com/pop-os/cosmic-app-template: Application project template
- https://github.com/pop-os/cosmic-applet-template: Panel applet project template
Dependencies
While libcosmic is written entirely in Rust, some of its dependencies may require shared system library headers to be installed. On Pop!_OS, the following dependencies are all that's necessary to compile a typical COSMIC project:
sudo apt install cargo cmake just libexpat1-dev libfontconfig-dev libfreetype-dev libxkbcommon-dev pkgconf
Examples
Some examples are included in the examples directory to to kickstart your COSMIC adventure. To run them, you need to clone the repository with the following commands:
git clone --recurse-submodules https://github.com/pop-os/libcosmic
cd libcosmic
If you have already cloned the repository, run these to sync with the latest updates:
git fetch origin
git checkout master
git reset --hard origin/master
The examples may then be run by their cargo project names, such as just run application.
Cargo Features
Available cargo features to choose from:
a11y: Experimental accessibility support.animated-image: Enables animated images from the image crate.debug: Enables addtional debugging features.smol: Uses smol as the preferred async runtime.- Conflicts with
tokio
- Conflicts with
tokio: Uses tokio as the preferred async runtime.- If unset, the default executor defined by iced will be used.
- Conflicts with
smol
wayland: Wayland-compatible client windows.- Conflicts with
winit
- Conflicts with
winit: Cross-platform and X11 client window support- Conflicts with
wayland
- Conflicts with
wgpu: GPU accelerated rendering with WGPU.- By default, softbuffer is used for software rendering.
xdg-portal: Enables XDG portal dialog integrations.
Project Showcase
- COSMIC App Library
- COSMIC Applets
- COSMIC Launcher
- COSMIC Notifications
- COSMIC Panel
- COSMIC Text Editor
- COSMIC Settings
Licence
Licensed under the Mozilla Public License 2.0.