No description
Find a file
Lionel DARNIS a322516f33 segmented_button: fix internal tab reorder end-to-end
Two independent bugs prevented tab drag-and-drop reorder from working
on cosmic-comp (and likely other compositors):

1. allow_reorder required DndAction::Move to be negotiated via
   OfferEvent::SelectedAction, which cosmic-comp does not always emit
   for self-drops (the SelectedAction event either never arrives or
   arrives with DndAction::empty()). Add a fallback: accept self-drops
   whenever state.dragging_tab is set. dragging_tab is only populated
   by start_tab_drag on this same widget, so this is safe; mime match
   and on_reorder presence are checked below.

2. reorder_event_for_drop preferred drop_hint.side over positional
   swap, producing counter-intuitive no-ops: dropping A (pos 0) on the
   left half of B (pos 1) resolved to "Before B" which, after removing
   A, lands at pos 0 again — the tab appeared not to move. Always use
   default_insert_position, which derives direction from dragged vs
   target positions (Konsole/Firefox/Chrome-style swap semantics).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 11:09:46 +02:00
.github fix(ci): cargo now running properly 2026-04-08 07:34:13 +02:00
.vscode fix: remove rust-analyzer.linkedProjects 2024-04-13 17:11:42 -06:00
cosmic-config chore: update dependencies and examples 2026-03-18 15:54:07 +01:00
cosmic-config-derive chore: update dependencies 2026-01-27 18:07:35 -07:00
cosmic-icons@5252095787 feat(cosmic-icons): new icons for cosmic image viewer app 2026-03-03 23:32:00 +01:00
cosmic-theme test: use default dark theme, not real system theme 2026-04-01 23:23:37 +02:00
examples improv(circular): prevent caps from touching 2026-04-18 16:08:34 -04:00
i18n i18n: translation updates from weblate 2026-04-12 18:50:19 +02:00
iced@78caabba7e chore: update iced 2026-04-13 22:26:33 +02:00
res feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
src segmented_button: fix internal tab reorder end-to-end 2026-04-22 11:09:46 +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 widget/icon: Bundle icons on macOS, not just Windows 2026-04-14 21:46:05 +02:00
Cargo.toml chore: enable ico and xpm image support for desktop feature 2026-04-15 13:10:25 +02: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 feat(widget): add table widget 2025-03-24 17:48:20 +01:00
LICENSE Initial commit 2021-11-12 20:22:30 -07:00
README.md docs: add link to cosmic-applet-template 2025-12-17 03:25:00 +01: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

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