No description
Find a file
Paul 75e9ee7e65 fix: request redraw on dropdown open/close in the in-window overlay path
`Dropdown::new` (the plain constructor used by any non-applet consumer) leaves `window_id`/`on_surface_action` unset, which routes the widget's `overlay()` impl to the in-window overlay path rather than the surface-action-based popup path. On that path, `update()`'s `open` closure and its close counterparts only ever requested a redraw inside the `#[cfg(wayland_platform)] if let Some(...)` block gated on those fields being set — so for the common case, opening or closing a dropdown flipped `is_open` with no redraw requested at all. The stale frame stuck around until some unrelated later event (e.g. cursor motion landing on the now-open/closed menu's bounds) forced a repaint,
making the menu appear to not open until the mouse moved, and not close until the same thing happened again on the way out.

Add an unconditional `shell.request_redraw()` at each of the three `is_open` transitions that don't already publish a Message of their own (an actual option selection already triggers a normal Message-driven redraw through the app's own update cycle, so that path needed no change):

- `open`: right after `is_open` is set true, ahead of the wayland-only surface-action block.
- the `close_operation` branch of the open/close operation state machine (`Id`-based programmatic close).
- the click-outside-closes-it branch of the mouse/touch press handler.

Fixes #1395
2026-08-19 14:31:31 +02:00
.github chore(progress_bar): simplify linear code 2026-06-26 17:25:28 +02:00
.vscode fix: remove rust-analyzer.linkedProjects 2024-04-13 17:11:42 -06:00
.zed chore: add rustfmt config 2026-05-04 11:55:17 -04:00
cosmic-config fix: config watcher hash & blur 2026-07-09 17:45:24 -04:00
cosmic-config-derive feat: hex_color serialization for the theme 2026-07-01 15:10:28 -04:00
cosmic-icons@5252095787 feat(cosmic-icons): new icons for cosmic image viewer app 2026-03-03 23:32:00 +01:00
cosmic-theme feat: Add option for frozen glass in maximized windows 2026-07-28 11:02:31 -04:00
examples fix: multi-window example headerbar 2026-08-07 20:20:54 +02:00
i18n i18n: translation updates from weblate 2026-08-05 17:02:15 +02:00
iced@7918b2826e fix: request redraw in selectable text and context menu 2026-08-09 06:09:28 +02:00
res feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
src fix: request redraw on dropdown open/close in the in-window overlay path 2026-08-19 14:31:31 +02:00
.gitignore chore: remove debian directory 2023-09-15 17:37:35 +02:00
.gitmodules feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
build.rs fix: feature gates 2026-07-15 16:54:18 -04:00
Cargo.toml improv: feature gate for xdg_portal 2026-07-15 16:54:18 -04:00
config.toml refactor launcher removing templates 2021-12-31 14:58:26 -05:00
i18n.toml feat: add i18n support for libcosmic widgets 2025-09-05 18:50:25 +02:00
justfile doc: add crate level documentation 2026-05-30 19:01:01 +02:00
LICENSE Initial commit 2021-11-12 20:22:30 -07:00
README.md docs(readme): add Made for COSMIC Flatpak section 2026-05-13 16:14:34 +02:00
rustfmt.toml chore: add rustfmt config 2026-05-04 11:55:17 -04:00

LIBCOSMIC

A platform toolkit based on iced for creating applets and applications for the COSMIC™ desktop.

Documentation

Templates

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

Made-for-COSMIC Flatpak IDs

To identify a project as a COSMIC Application, add <id>com.system76.CosmicApplication</id> to the provides section of the project's metainfo.

<provides>
  <id>com.system76.CosmicApplication</id>
</provides>

For COSMIC Applets, use com.system76.CosmicApplet.

<provides>
  <id>com.system76.CosmicApplet</id>
</provides>

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
  • 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
  • winit: Cross-platform and X11 client window support
    • Conflicts with wayland
  • wgpu: GPU accelerated rendering with WGPU.
    • By default, softbuffer is used for software rendering.
  • xdg-portal: Enables XDG portal dialog integrations.

Project Showcase

Licence

Licensed under the Mozilla Public License 2.0.

Contact