[package] # Yoda fork: hard-renamed. Every consumer (leyoda/cosmic-files fork + each # leyoda/cosmic-* app) depends directly on `libcosmic-yoda` by path, bypassing # pop-os/libcosmic entirely. No [patch] shenanigans needed — transitive deps # that used to ask for `libcosmic` are replaced by deps on our forks that ask # for `libcosmic-yoda`. name = "libcosmic-yoda" version = "0.1.0-yoda.2" edition = "2024" rust-version = "1.93" [lib] name = "cosmic" [features] default = [ "tokio", "a11y", "dbus-config", "wayland", "multi-window", ] advanced-shaping = ["iced/advanced-shaping"] # Accessibility support a11y = ["iced/a11y", "iced_accessibility"] # Enable about widget about = [] # Builds support for animated images animated-image = [ "dep:async-fs", "image/gif", "image/webp", "image/png", "tokio?/io-util", "tokio?/fs", ] # XXX autosize should not be used on winit windows unless dialogs autosize = [] applet = [ "autosize", "wayland", "tokio", "cosmic-panel-config", "ron", "multi-window", ] applet-token = ["applet"] # Use the cosmic-settings-daemon for config handling on Linux targets dbus-config = [] # Debug features debug = ["iced/debug"] # Enables pipewire support in ashpd, if ashpd is enabled pipewire = ["ashpd?/pipewire"] # Enables process spawning helper process = ["dep:libc", "dep:rustix"] # Use rfd for file dialogs rfd = ["dep:rfd"] # Enables desktop files helpers desktop = [ "process", "dep:cosmic-settings-config", "dep:freedesktop-desktop-entry", "dep:image-extras", "dep:mime", "dep:shlex", "tokio?/io-util", "tokio?/net", ] # Enables launching desktop files inside systemd scopes desktop-systemd-scope = ["desktop", "dep:zbus"] # Enables keycode serialization serde-keycode = ["iced_core/serde"] # Prevents multiple separate process instances. single-instance = ["zbus/blocking-api", "ron"] # smol async runtime smol = ["dep:smol", "iced/smol", "zbus?/async-io", "rfd?/async-std"] tokio = [ "dep:tokio", "ashpd?/tokio", "iced/tokio", "rfd?/tokio", "zbus?/tokio", "cosmic-config/tokio", ] # Tokio async runtime # Wayland window support (yoda fork is Wayland-only; always active in default). # We still need iced/winit because pop-os/iced hosts the runtime dispatcher # (`iced_winit as shell`) there — the name is a misnomer, it's the same crate # that provides both the winit path AND the sctk/cctk wayland path. wayland = [ "ashpd?/wayland", "autosize", "iced/winit", "iced/wayland", "iced_winit/wayland", "iced_runtime/cctk", "iced_winit/cctk", "iced_wgpu/cctk", "iced/cctk", "dep:iced_winit", "dep:cctk", "surface-message", ] surface-message = [] # multi-window support multi-window = [] # Render with wgpu wgpu = ["iced/wgpu", "iced_wgpu"] # Compat stubs — kept empty so upstream deps (cosmic-files, cosmic-text, …) # that still ask for `winit` / `x11` features resolve cleanly against the # yoda fork. Activating them has no effect: no code is gated on these. winit = [] x11 = [] # Enables XDG portal integrations xdg-portal = ["ashpd"] qr_code = ["iced/qr_code"] markdown = ["iced/markdown"] highlighter = ["iced/highlighter"] async-std = [ "dep:async-std", "ashpd?/async-std", "rfd?/async-std", "zbus?/async-io", "iced/async-std", ] [dependencies] apply = "0.3.0" ashpd = { version = "0.12.3", default-features = false, optional = true } async-fs = { version = "2.2", optional = true } async-std = { workspace = true, optional = true } auto_enums = "0.8.8" cctk = { path = "../cosmic-protocols/client-toolkit", package = "cosmic-client-toolkit", optional = true } jiff = "0.2" cosmic-config = { path = "cosmic-config" } cosmic-settings-config = { path = "../cosmic-settings-daemon/config", optional = true } # Internationalization i18n-embed = { version = "0.16.0", features = [ "fluent-system", "desktop-requester", ] } i18n-embed-fl = "0.10" rust-embed = "8.11.0" css-color = "0.2.8" derive_setters = "0.1.9" futures = "0.3" image = { version = "0.25.10", default-features = false, features = [ "ico", "jpeg", "png", ] } image-extras = { version = "0.1.0", default-features = false, features = [ "xpm", "xbm", ], optional = true } libc = { version = "0.2.186", optional = true } log = "0.4" mime = { version = "0.3.17", optional = true } palette.workspace = true rfd = { version = "0.16.0", default-features = false, features = [ "xdg-portal", ], optional = true } rustix = { version = "1.1", features = ["pipe", "process"], optional = true } serde = { workspace = true, features = ["derive"] } slotmap = "1.1.1" smol = { version = "2.0.2", optional = true } thiserror.workspace = true taffy = { version = "0.9.2", features = ["grid"] } tokio = { workspace = true, optional = true } tracing.workspace = true unicode-segmentation = "1.13" url = "2.5.8" zbus = { workspace = true, optional = true } float-cmp = "0.10.0" ron = { workspace = true, optional = true } # Enable DBus feature on Linux targets [target.'cfg(target_os = "linux")'.dependencies] cosmic-config = { path = "cosmic-config", features = ["dbus"] } cosmic-settings-daemon = { path = "../dbus-settings-bindings/cosmic-settings-daemon" } zbus = { version = "5.14.0", default-features = false } [target.'cfg(all(unix, not(target_os = "macos")))'.dependencies] freedesktop-icons = { package = "cosmic-freedesktop-icons", path = "../cosmic-freedesktop-icons" } freedesktop-desktop-entry = { version = "0.8.1", optional = true } shlex = { version = "1.3.0", optional = true } [target.'cfg(any(not(unix), target_os = "macos"))'.dependencies] # Used to embed bundled icons for non-unix platforms. phf = { version = "0.13.1", features = ["macros"] } [dependencies.cosmic-theme] path = "cosmic-theme" [dependencies.iced] path = "./iced" default-features = false features = [ "advanced", "image-without-codecs", "lazy", "svg", "web-colors", "tiny-skia", ] [dependencies.iced_runtime] path = "./iced/runtime" [dependencies.iced_renderer] path = "./iced/renderer" [dependencies.iced_core] path = "./iced/core" features = ["serde"] [dependencies.iced_widget] path = "./iced/widget" features = ["canvas"] [dependencies.iced_futures] path = "./iced/futures" [dependencies.iced_accessibility] path = "./iced/accessibility" optional = true [dependencies.iced_tiny_skia] path = "./iced/tiny_skia" # Yoda: drop the x11 default → softbuffer no longer pulls tiny-xlib/x11-dl/etc. default-features = false features = ["wayland"] [dependencies.iced_winit] path = "./iced/winit" optional = true # Yoda: drop the x11 default → winit won't pull winit-x11/tiny-xlib/x11-dl. # Keep wayland + wayland-dlopen (default behaviour minus x11). default-features = false features = ["wayland", "wayland-dlopen"] [dependencies.iced_wgpu] path = "./iced/wgpu" optional = true [dependencies.cosmic-panel-config] path = "../cosmic-panel/cosmic-panel-config" optional = true [patch.'https://github.com/pop-os/freedesktop-icons'] cosmic-freedesktop-icons = { path = "../cosmic-freedesktop-icons" } [patch.'https://github.com/pop-os/softbuffer'] softbuffer = { path = "../softbuffer" } [patch.'https://github.com/pop-os/smithay-clipboard'] smithay-clipboard = { path = "../smithay-clipboard" } [patch.'https://github.com/pop-os/winit.git'] dpi = { path = "../winit/dpi" } winit = { path = "../winit/winit" } winit-android = { path = "../winit/winit-android" } winit-appkit = { path = "../winit/winit-appkit" } winit-common = { path = "../winit/winit-common" } winit-core = { path = "../winit/winit-core" } winit-orbital = { path = "../winit/winit-orbital" } winit-uikit = { path = "../winit/winit-uikit" } winit-wayland = { path = "../winit/winit-wayland" } winit-web = { path = "../winit/winit-web" } winit-win32 = { path = "../winit/winit-win32" } winit-x11 = { path = "../winit/winit-x11" } [workspace] members = [ "cosmic-config", "cosmic-config-derive", "cosmic-theme", ] # examples/* excluded — many depend on the removed winit/x11 features. # They will be revisited and adapted in a later phase. exclude = ["iced", "examples"] [workspace.dependencies] async-std = "1.13" dirs = "6.0" palette = "0.7" ron = "0.12" serde = "1.0" thiserror = "2.0" tracing = "0.1" tokio = "1.52" zbus = {version = "5.15", default-features = false} # Speed up snapshot diffing in cosmic-theme tests. Cargo silently ignores # [profile.*] blocks in non-root manifests, so this lives at the # workspace root. [profile.dev.package.insta] opt-level = 3 [profile.dev.package.similar] opt-level = 3 [dev-dependencies] tempfile = "3.27.0"