diff --git a/Cargo.lock b/Cargo.lock index 372604b1..f8b41976 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,89 +18,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" -[[package]] -name = "accesskit" -version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "uuid", -] - -[[package]] -name = "accesskit_atspi_common" -version = "0.15.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "accesskit_consumer", - "atspi-common", - "serde", - "zvariant", -] - -[[package]] -name = "accesskit_consumer" -version = "0.32.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "hashbrown 0.16.1", -] - -[[package]] -name = "accesskit_macos" -version = "0.23.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown 0.16.1", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "accesskit_unix" -version = "0.18.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "accesskit_atspi_common", - "atspi", - "futures-lite", - "serde", - "tokio", - "tokio-stream", - "zbus", -] - -[[package]] -name = "accesskit_windows" -version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "accesskit_consumer", - "hashbrown 0.16.1", - "static_assertions", - "windows 0.61.3", - "windows-core 0.61.2", -] - -[[package]] -name = "accesskit_winit" -version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" -dependencies = [ - "accesskit", - "accesskit_macos", - "accesskit_unix", - "accesskit_windows", - "raw-window-handle", - "winit 0.31.0-beta.2", -] - [[package]] name = "addr2line" version = "0.25.1" @@ -258,44 +175,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "ashpd" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f3f79755c74fd155000314eb349864caa787c6592eace6c6882dad873d9c39" -dependencies = [ - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.9.2", - "raw-window-handle", - "serde", - "serde_repr", - "tokio", - "url", - "zbus", -] - -[[package]] -name = "ashpd" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a3c86f3fd70c0ffa500ed189abfa90b5a52398a45d5dc372fcc38ebeb7a645" -dependencies = [ - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.9.2", - "serde", - "serde_repr", - "tokio", - "url", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "zbus", -] - [[package]] name = "async-broadcast" version = "0.7.2" @@ -449,48 +328,11 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "atspi" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d" -dependencies = [ - "atspi-common", - "atspi-proxies", -] - -[[package]] -name = "atspi-common" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d" -dependencies = [ - "enumflags2", - "serde", - "static_assertions", - "zbus", - "zbus-lockstep", - "zbus-lockstep-macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "atspi-proxies" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc" -dependencies = [ - "atspi-common", - "serde", - "zbus", -] - [[package]] name = "auto_enums" -version = "0.8.8" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65398a2893f41bce5c9259f6e1a4f03fbae40637c1bdc755b4f387f48c613b03" +checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781" dependencies = [ "derive_utils", "proc-macro2", @@ -516,7 +358,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -591,16 +433,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", -] - -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2 0.6.4", + "objc2", ] [[package]] @@ -811,7 +644,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -832,6 +665,7 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "objc", "objc-foundation", @@ -841,12 +675,22 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "dnd", "mime 0.1.0", "smithay-clipboard", ] +[[package]] +name = "clipboard_x11" +version = "0.4.2" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" +dependencies = [ + "thiserror 1.0.69", + "x11rb", +] + [[package]] name = "cocoa" version = "0.25.0" @@ -856,7 +700,7 @@ dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", - "core-foundation 0.9.4", + "core-foundation", "core-graphics", "foreign-types", "libc", @@ -871,8 +715,8 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "core-foundation", + "core-graphics-types", "libc", "objc", ] @@ -883,9 +727,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ - "serde", - "termcolor", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] @@ -929,16 +771,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -952,8 +784,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", - "core-graphics-types 0.1.3", + "core-foundation", + "core-graphics-types", "foreign-types", "libc", ] @@ -965,18 +797,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.10.1", + "core-foundation", "libc", ] @@ -992,6 +813,7 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" +source = "git+https://github.com/pop-os//cosmic-protocols?branch=main#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ "bitflags 2.11.0", "cosmic-protocols", @@ -1027,7 +849,7 @@ dependencies = [ "indexmap 2.13.0", "jiff", "keyframe", - "libcosmic-yoda", + "libcosmic", "libdisplay-info", "libsystemd", "log-panics", @@ -1078,6 +900,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "atomicwrites", "calloop 0.14.4", @@ -1090,7 +913,6 @@ dependencies = [ "notify", "ron 0.12.0", "serde", - "tokio", "tracing", "xdg", "zbus", @@ -1099,6 +921,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "quote", "syn", @@ -1112,7 +935,7 @@ dependencies = [ "bstr", "btoi", "memchr", - "memmap2 0.9.10", + "memmap2", "thiserror 2.0.18", "tracing", "xdg", @@ -1121,6 +944,7 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" +source = "git+https://github.com/pop-os//cosmic-protocols?branch=main#160b086abe03cd34a8a375d7fbe47b24308d1f38" dependencies = [ "bitflags 2.11.0", "wayland-backend", @@ -1134,6 +958,7 @@ dependencies = [ [[package]] name = "cosmic-randr-shell" version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-randr/#6e8e795970fa06d434af22775e415b517f7552d3" dependencies = [ "kdl", "slotmap", @@ -1143,6 +968,7 @@ dependencies = [ [[package]] name = "cosmic-settings-config" version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#e37160f14d1e7ee428f973cd2848b4e95f83dfe1" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1163,6 +989,7 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-config" version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#e37160f14d1e7ee428f973cd2848b4e95f83dfe1" dependencies = [ "cosmic-config", "cosmic-theme", @@ -1171,8 +998,8 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.19.0" -source = "git+https://forge.aditua.com/leyoda/cosmic-text.git?branch=local%2Fpr-503#63072bbe29a1657d82cd3deb5db45070404ec7a1" +version = "0.18.2" +source = "git+https://github.com/pop-os/cosmic-text.git#d5a972a2b63649fad11ea3a7e80f7dc4c592f01a" dependencies = [ "bitflags 2.11.0", "fontdb", @@ -1190,12 +1017,12 @@ dependencies = [ "unicode-linebreak", "unicode-script", "unicode-segmentation", - "unicode-width 0.2.2", ] [[package]] name = "cosmic-theme" version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "almost", "configparser", @@ -1278,9 +1105,9 @@ checksum = "42aaeae719fd78ce501d77c6cdf01f7e96f26bcd5617a4903a1c2b97e388543a" [[package]] name = "csscolorparser" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199f851bd3cb5004c09474252c7f74e7c047441ed0979bf3688a7106a13da952" +checksum = "64a878cfd6075649977f548ed439564cfdbe1f190a6656a00b48af7740f2f148" dependencies = [ "num-traits", "phf 0.13.1", @@ -1412,18 +1239,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" -[[package]] -name = "dispatch2" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "libc", - "objc2 0.6.4", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -1447,6 +1262,7 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "bitflags 2.11.0", "mime 0.1.0", @@ -1477,9 +1293,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] -name = "dpi" -version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +name = "drm" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "drm-ffi 0.7.1", + "drm-fourcc", + "rustix 0.38.44", +] [[package]] name = "drm" @@ -1489,19 +1313,29 @@ checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ "bitflags 2.11.0", "bytemuck", - "drm-ffi", + "drm-ffi 0.9.0", "drm-fourcc", "libc", "rustix 0.38.44", ] +[[package]] +name = "drm-ffi" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" +dependencies = [ + "drm-sys 0.6.1", + "rustix 0.38.44", +] + [[package]] name = "drm-ffi" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8e41459d99a9b529845f6d2c909eb9adf3b6d2f82635ae40be8de0601726e8b" dependencies = [ - "drm-sys", + "drm-sys 0.8.0", "rustix 0.38.44", ] @@ -1511,6 +1345,16 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" +[[package]] +name = "drm-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" +dependencies = [ + "libc", + "linux-raw-sys 0.6.5", +] + [[package]] name = "drm-sys" version = "0.8.0" @@ -1910,7 +1754,7 @@ checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.9.10", + "memmap2", "slotmap", "tinyvec", "ttf-parser", @@ -2069,7 +1913,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce852e998d3ca5e4a97014fb31c940dc5ef344ec7d364984525fd11e8a547e6a" dependencies = [ "bitflags 2.11.0", - "drm", + "drm 0.14.1", "drm-fourcc", "gbm-sys", "libc", @@ -2095,8 +1939,8 @@ dependencies = [ "libc", "log", "rustversion", - "windows-link 0.2.1", - "windows-result 0.4.1", + "windows-link", + "windows-result", ] [[package]] @@ -2116,7 +1960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ "rustix 1.1.4", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2201,66 +2045,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "glutin_wgl_sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" -dependencies = [ - "gl_generator", -] - -[[package]] -name = "gpu-alloc" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" -dependencies = [ - "bitflags 2.11.0", - "gpu-alloc-types", -] - -[[package]] -name = "gpu-alloc-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" -dependencies = [ - "bitflags 2.11.0", -] - -[[package]] -name = "gpu-allocator" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" -dependencies = [ - "log", - "presser", - "thiserror 1.0.69", - "windows 0.58.0", -] - -[[package]] -name = "gpu-descriptor" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" -dependencies = [ - "bitflags 2.11.0", - "gpu-descriptor-types", - "hashbrown 0.15.5", -] - -[[package]] -name = "gpu-descriptor-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "grid" version = "1.0.0" @@ -2459,7 +2243,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -2474,9 +2258,9 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "dnd", - "iced_accessibility", "iced_core", "iced_debug", "iced_futures", @@ -2484,28 +2268,19 @@ dependencies = [ "iced_renderer", "iced_runtime", "iced_widget", - "iced_winit", "image", "mime 0.1.0", "thiserror 2.0.18", "window_clipboard", ] -[[package]] -name = "iced_accessibility" -version = "0.1.0" -dependencies = [ - "accesskit", - "accesskit_winit", -] - [[package]] name = "iced_core" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "bitflags 2.11.0", "bytes", - "cosmic-client-toolkit", "dnd", "glam", "lilt", @@ -2525,6 +2300,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "iced_core", "iced_futures", @@ -2534,12 +2310,12 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "futures", "iced_core", "log", "rustc-hash 2.1.1", - "tokio", "wasm-bindgen-futures", "wasmtimer", ] @@ -2547,6 +2323,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "bitflags 2.11.0", "bytemuck", @@ -2567,6 +2344,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "iced_graphics", "iced_runtime", @@ -2575,6 +2353,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2586,9 +2365,9 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "bytes", - "cosmic-client-toolkit", "dnd", "iced_core", "iced_futures", @@ -2600,6 +2379,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "bytemuck", "cosmic-text", @@ -2616,7 +2396,9 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ + "as-raw-xcb-connection", "bitflags 2.11.0", "bytemuck", "cosmic-client-toolkit", @@ -2633,18 +2415,20 @@ dependencies = [ "rustc-hash 2.1.1", "rustix 0.38.44", "thiserror 2.0.18", + "tiny-xlib", "wayland-backend", "wayland-client", "wayland-protocols", "wayland-sys", "wgpu", + "x11rb", ] [[package]] name = "iced_widget" version = "0.14.2" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ - "cosmic-client-toolkit", "dnd", "iced_renderer", "iced_runtime", @@ -2657,37 +2441,6 @@ dependencies = [ "window_clipboard", ] -[[package]] -name = "iced_winit" -version = "0.14.0" -dependencies = [ - "cosmic-client-toolkit", - "cursor-icon", - "dnd", - "iced_debug", - "iced_futures", - "iced_graphics", - "iced_program", - "iced_runtime", - "log", - "raw-window-handle", - "rustc-hash 2.1.1", - "rustix 0.38.44", - "thiserror 2.0.18", - "wasm-bindgen-futures", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "web-sys", - "winapi", - "window_clipboard", - "winit 0.31.0-beta.2", - "winit-core", - "xkbcommon 0.7.0", - "xkbcommon-dl", - "xkeysym", -] - [[package]] name = "icu_collections" version = "2.1.1" @@ -2812,9 +2565,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.10" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", @@ -3048,16 +2801,6 @@ dependencies = [ "winnow 0.6.24", ] -[[package]] -name = "keyboard-types" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" -dependencies = [ - "bitflags 2.11.0", - "serde", -] - [[package]] name = "keyframe" version = "1.1.1" @@ -3068,17 +2811,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "khronos-egl" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" -dependencies = [ - "libc", - "libloading", - "pkg-config", -] - [[package]] name = "khronos_api" version = "3.1.0" @@ -3087,9 +2819,9 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "known-folders" -version = "1.4.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" +checksum = "770919970f7d2f74fea948900d35e2ef64f44129e8ae4015f59de1f0aca7c2a5" dependencies = [ "windows-sys 0.61.2", ] @@ -3163,13 +2895,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] -name = "libcosmic-yoda" -version = "0.1.0-yoda.2" +name = "libcosmic" +version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#0bb006c5bbf7eb89491891d45bfc8f21f8eb1305" dependencies = [ "apply", - "ashpd 0.12.3", "auto_enums", - "cosmic-client-toolkit", "cosmic-config", "cosmic-freedesktop-icons", "cosmic-settings-daemon", @@ -3186,21 +2917,18 @@ dependencies = [ "iced_renderer", "iced_runtime", "iced_tiny_skia", - "iced_wgpu", "iced_widget", - "iced_winit", "image", "jiff", "log", "palette", "phf 0.13.1", - "rfd", + "raw-window-handle", "rust-embed", "serde", "slotmap", "taffy", "thiserror 2.0.18", - "tokio", "tracing", "unicode-segmentation", "url", @@ -3248,7 +2976,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -3491,15 +3219,6 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" -[[package]] -name = "memmap2" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed" -dependencies = [ - "libc", -] - [[package]] name = "memmap2" version = "0.9.10" @@ -3518,21 +3237,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "metal" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" -dependencies = [ - "bitflags 2.11.0", - "block", - "core-graphics-types 0.2.0", - "foreign-types", - "log", - "objc", - "paste", -] - [[package]] name = "miette" version = "7.6.0" @@ -3540,12 +3244,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" dependencies = [ "cfg-if", - "unicode-width 0.1.14", + "unicode-width", ] [[package]] name = "mime" version = "0.1.0" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "smithay-clipboard", ] @@ -3598,9 +3303,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.8.1" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" dependencies = [ "num-traits", "pxfm", @@ -3633,7 +3338,6 @@ dependencies = [ "num-traits", "once_cell", "rustc-hash 1.1.0", - "spirv", "thiserror 2.0.18", "unicode-ident", ] @@ -3870,15 +3574,6 @@ dependencies = [ "objc2-encode", ] -[[package]] -name = "objc2" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" -dependencies = [ - "objc2-encode", -] - [[package]] name = "objc2-app-kit" version = "0.2.2" @@ -3886,28 +3581,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", + "block2", "libc", - "objc2 0.5.2", + "objc2", "objc2-core-data", "objc2-core-image", - "objc2-foundation 0.2.2", + "objc2-foundation", "objc2-quartz-core", ] -[[package]] -name = "objc2-app-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-cloud-kit" version = "0.2.2" @@ -3915,10 +3597,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2-foundation", ] [[package]] @@ -3927,9 +3609,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-foundation", ] [[package]] @@ -3939,32 +3621,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "dispatch2", - "objc2 0.6.4", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" -dependencies = [ - "bitflags 2.11.0", - "libc", - "objc2-core-foundation", + "block2", + "objc2", + "objc2-foundation", ] [[package]] @@ -3973,9 +3632,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-foundation", "objc2-metal", ] @@ -3985,21 +3644,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-contacts", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-core-video" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" -dependencies = [ - "bitflags 2.11.0", - "objc2-core-foundation", - "objc2-core-graphics", + "objc2-foundation", ] [[package]] @@ -4015,22 +3663,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", + "block2", "dispatch", "libc", - "objc2 0.5.2", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "objc2 0.6.4", - "objc2-core-foundation", + "objc2", ] [[package]] @@ -4039,10 +3675,10 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", ] [[package]] @@ -4052,9 +3688,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-foundation", ] [[package]] @@ -4064,9 +3700,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-foundation", "objc2-metal", ] @@ -4076,8 +3712,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "objc2", + "objc2-foundation", ] [[package]] @@ -4087,13 +3723,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-cloud-kit", "objc2-core-data", "objc2-core-image", "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2-foundation", "objc2-link-presentation", "objc2-quartz-core", "objc2-symbols", @@ -4101,27 +3737,15 @@ dependencies = [ "objc2-user-notifications", ] -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-uniform-type-identifiers" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", + "block2", + "objc2", + "objc2-foundation", ] [[package]] @@ -4131,10 +3755,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.11.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-core-location", - "objc2-foundation 0.2.2", + "objc2-foundation", ] [[package]] @@ -4280,7 +3904,7 @@ dependencies = [ "libc", "redox_syscall 0.5.18", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -4497,12 +4121,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "pollster" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" - [[package]] name = "portable-atomic" version = "1.13.1" @@ -4542,12 +4160,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "presser" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" - [[package]] name = "prettyplease" version = "0.2.37" @@ -4646,16 +4258,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" -[[package]] -name = "quick-xml" -version = "0.38.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "quick-xml" version = "0.39.2" @@ -4741,12 +4343,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" -[[package]] -name = "range-alloc" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" - [[package]] name = "rangemap" version = "1.7.1" @@ -4910,30 +4506,6 @@ dependencies = [ "zune-jpeg 0.4.21", ] -[[package]] -name = "rfd" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" -dependencies = [ - "ashpd 0.11.1", - "block2 0.6.2", - "dispatch2", - "js-sys", - "log", - "objc2 0.6.4", - "objc2-app-kit 0.3.2", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "pollster", - "raw-window-handle", - "urlencoding", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-sys 0.60.2", -] - [[package]] name = "rgb" version = "0.8.52" @@ -5138,19 +4710,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sctk-adwaita" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd3accc0f3f4bbaf2c9e1957a030dc582028130c67660d44c0a0345a22ca69b" -dependencies = [ - "ab_glyph", - "log", - "memmap2 0.9.10", - "smithay-client-toolkit 0.20.0", - "tiny-skia", -] - [[package]] name = "self_cell" version = "1.2.2" @@ -5377,8 +4936,8 @@ dependencies = [ "cgmath", "cursor-icon", "downcast-rs", - "drm", - "drm-ffi", + "drm 0.14.1", + "drm-ffi 0.9.0", "drm-fourcc", "encoding_rs", "errno", @@ -5410,7 +4969,7 @@ dependencies = [ "wayland-protocols-misc", "wayland-protocols-wlr", "wayland-server", - "winit 0.30.12", + "winit", "x11rb", "xkbcommon 0.9.0", ] @@ -5427,7 +4986,7 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.10", + "memmap2", "rustix 0.38.44", "thiserror 1.0.69", "wayland-backend", @@ -5453,7 +5012,7 @@ dependencies = [ "cursor-icon", "libc", "log", - "memmap2 0.9.10", + "memmap2", "pkg-config", "rustix 1.1.4", "thiserror 2.0.18", @@ -5523,16 +5082,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27207bb65232eda1f588cf46db2fee75c0808d557f6b3cf19a75f5d6d7c94df1" -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - [[package]] name = "softbuffer" version = "0.4.1" @@ -5543,11 +5092,12 @@ dependencies = [ "cfg_aliases", "cocoa", "core-graphics", + "drm 0.11.1", "fastrand", "foreign-types", "js-sys", "log", - "memmap2 0.9.10", + "memmap2", "objc", "raw-window-handle", "redox_syscall 0.5.18", @@ -5562,15 +5112,6 @@ dependencies = [ "x11rb", ] -[[package]] -name = "spirv" -version = "0.3.0+sdk-1.3.268.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" -dependencies = [ - "bitflags 2.11.0", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -5716,15 +5257,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -5870,45 +5402,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tokio" -version = "1.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "tracing", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "toml" version = "0.5.11" @@ -6210,12 +5703,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - [[package]] name = "unicode-xid" version = "0.2.6" @@ -6232,15 +5719,8 @@ dependencies = [ "idna", "percent-encoding", "serde", - "serde_derive", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "usvg" version = "0.37.0" @@ -6620,7 +6100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml 0.39.2", + "quick-xml", "quote", ] @@ -6687,18 +6167,12 @@ dependencies = [ "cfg_aliases", "document-features", "hashbrown 0.16.1", - "js-sys", "log", - "naga", - "parking_lot", "portable-atomic", "profiling", "raw-window-handle", "smallvec", "static_assertions", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", "wgpu-core", "wgpu-hal", "wgpu-types", @@ -6729,31 +6203,11 @@ dependencies = [ "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.18", - "wgpu-core-deps-apple", - "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] -[[package]] -name = "wgpu-core-deps-apple" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" -dependencies = [ - "wgpu-hal", -] - -[[package]] -name = "wgpu-core-deps-emscripten" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" -dependencies = [ - "wgpu-hal", -] - [[package]] name = "wgpu-core-deps-windows-linux-android" version = "27.0.0" @@ -6769,47 +6223,18 @@ version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ - "android_system_properties", - "arrayvec", - "ash", - "bit-set", "bitflags 2.11.0", - "block", - "bytemuck", "cfg-if", "cfg_aliases", - "core-graphics-types 0.2.0", - "glow", - "glutin_wgl_sys", - "gpu-alloc", - "gpu-allocator", - "gpu-descriptor", - "hashbrown 0.16.1", - "js-sys", - "khronos-egl", - "libc", "libloading", "log", - "metal", "naga", - "ndk-sys", - "objc", - "once_cell", - "ordered-float", - "parking_lot", "portable-atomic", "portable-atomic-util", - "profiling", - "range-alloc", "raw-window-handle", "renderdoc-sys", - "smallvec", "thiserror 2.0.18", - "wasm-bindgen", - "web-sys", "wgpu-types", - "windows 0.58.0", - "windows-core 0.58.0", ] [[package]] @@ -6860,107 +6285,29 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "clipboard-win", "clipboard_macos", "clipboard_wayland", + "clipboard_x11", "dnd", "mime 0.1.0", "raw-window-handle", "thiserror 1.0.69", ] -[[package]] -name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" -dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - [[package]] name = "windows-core" version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -6974,17 +6321,6 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "windows-interface" version = "0.59.3" @@ -6996,72 +6332,19 @@ dependencies = [ "syn", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows-result" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -7070,7 +6353,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -7124,7 +6407,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -7179,7 +6462,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -7190,15 +6473,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -7389,23 +6663,23 @@ dependencies = [ "android-activity", "atomic-waker", "bitflags 2.11.0", - "block2 0.5.1", + "block2", "bytemuck", "calloop 0.13.0", "cfg_aliases", "concurrent-queue", - "core-foundation 0.9.4", + "core-foundation", "core-graphics", "cursor-icon", - "dpi 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "dpi", "js-sys", "libc", - "memmap2 0.9.10", + "memmap2", "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit 0.2.2", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", "orbclient", "percent-encoding", "pin-project", @@ -7430,196 +6704,6 @@ dependencies = [ "xkbcommon-dl", ] -[[package]] -name = "winit" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "cfg_aliases", - "cursor-icon", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "libc", - "raw-window-handle", - "rustix 1.1.4", - "smol_str 0.3.5", - "tracing", - "winit-android", - "winit-appkit", - "winit-common", - "winit-core", - "winit-orbital", - "winit-uikit", - "winit-wayland", - "winit-web", - "winit-win32", -] - -[[package]] -name = "winit-android" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "android-activity", - "bitflags 2.11.0", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "ndk", - "raw-window-handle", - "smol_str 0.3.5", - "tracing", - "winit-core", -] - -[[package]] -name = "winit-appkit" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "dispatch2", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "objc2 0.6.4", - "objc2-app-kit 0.3.2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-video", - "objc2-foundation 0.3.2", - "raw-window-handle", - "smol_str 0.3.5", - "tracing", - "winit-common", - "winit-core", -] - -[[package]] -name = "winit-common" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "memmap2 0.9.10", - "objc2 0.6.4", - "objc2-core-foundation", - "smol_str 0.3.5", - "tracing", - "winit-core", - "xkbcommon-dl", -] - -[[package]] -name = "winit-core" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "cursor-icon", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "keyboard-types", - "raw-window-handle", - "smol_str 0.3.5", - "web-time", -] - -[[package]] -name = "winit-orbital" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "libredox", - "orbclient", - "raw-window-handle", - "redox_syscall 0.7.2", - "smol_str 0.3.5", - "tracing", - "winit-core", -] - -[[package]] -name = "winit-uikit" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.2", - "dispatch2", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "objc2 0.6.4", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-ui-kit 0.3.2", - "raw-window-handle", - "smol_str 0.3.5", - "tracing", - "winit-common", - "winit-core", -] - -[[package]] -name = "winit-wayland" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "ahash", - "bitflags 2.11.0", - "calloop 0.14.4", - "cursor-icon", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "libc", - "memmap2 0.9.10", - "raw-window-handle", - "rustix 1.1.4", - "sctk-adwaita", - "smithay-client-toolkit 0.20.0", - "smol_str 0.3.5", - "tracing", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-plasma", - "winit-common", - "winit-core", -] - -[[package]] -name = "winit-web" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "atomic-waker", - "bitflags 2.11.0", - "concurrent-queue", - "cursor-icon", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "js-sys", - "pin-project", - "raw-window-handle", - "smol_str 0.3.5", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "web-time", - "winit-core", -] - -[[package]] -name = "winit-win32" -version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" -dependencies = [ - "bitflags 2.11.0", - "cursor-icon", - "dpi 0.1.2 (git+https://github.com/pop-os/winit.git?tag=cosmic-0.14)", - "raw-window-handle", - "smol_str 0.3.5", - "tracing", - "unicode-segmentation", - "windows-sys 0.59.0", - "winit-core", -] - [[package]] name = "winnow" version = "0.6.24" @@ -7786,17 +6870,6 @@ dependencies = [ "libc", ] -[[package]] -name = "xkbcommon" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e" -dependencies = [ - "libc", - "memmap2 0.8.0", - "xkeysym", -] - [[package]] name = "xkbcommon" version = "0.8.0" @@ -7804,7 +6877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" dependencies = [ "libc", - "memmap2 0.9.10", + "memmap2", "xkeysym", ] @@ -7815,7 +6888,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a974f48060a14e95705c01f24ad9c3345022f4d97441b8a36beb7ed5c4a02d" dependencies = [ "libc", - "memmap2 0.9.10", + "memmap2", "xkeysym", ] @@ -7913,7 +6986,6 @@ dependencies = [ "rustix 1.1.4", "serde", "serde_repr", - "tokio", "tracing", "uds_windows", "uuid", @@ -7924,30 +6996,6 @@ dependencies = [ "zvariant", ] -[[package]] -name = "zbus-lockstep" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" -dependencies = [ - "zbus_xml", - "zvariant", -] - -[[package]] -name = "zbus-lockstep-macros" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "zbus-lockstep", - "zbus_xml", - "zvariant", -] - [[package]] name = "zbus_macros" version = "5.14.0" @@ -7974,18 +7022,6 @@ dependencies = [ "zvariant", ] -[[package]] -name = "zbus_xml" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" -dependencies = [ - "quick-xml 0.38.4", - "serde", - "zbus_names", - "zvariant", -] - [[package]] name = "zeno" version = "0.3.3" @@ -8112,7 +7148,6 @@ dependencies = [ "endi", "enumflags2", "serde", - "url", "winnow 0.7.14", "zvariant_derive", "zvariant_utils", diff --git a/Cargo.toml b/Cargo.toml index 3010ff90..ee957f8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,18 +17,18 @@ cosmic-comp-config = { path = "cosmic-comp-config", features = [ "libdisplay-info", "output", ] } -cosmic-config = { path = "../libcosmic/cosmic-config", features = [ +cosmic-config = { git = "https://github.com/pop-os/libcosmic", features = [ "calloop", "macro", ] } -cosmic-protocols = { path = "../cosmic-protocols", default-features = false, features = [ +cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", rev = "160b086", default-features = false, features = [ "server", ] } -cosmic-settings-config = { path = "../cosmic-settings-daemon/config" } -cosmic-settings-daemon-config = { path = "../cosmic-settings-daemon/cosmic-settings-daemon-config", features = [ +cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon" } +cosmic-settings-daemon-config = { git = "https://github.com/pop-os/cosmic-settings-daemon", features = [ "greeter", ] } -cosmic-text = { git = "https://forge.aditua.com/leyoda/cosmic-text.git", branch = "local/pr-503", features = [ +cosmic-text = { git = "https://github.com/pop-os/cosmic-text.git", features = [ "shape-run-cache", ] } libdisplay-info = "0.3.0" @@ -39,14 +39,10 @@ i18n-embed = { version = "0.16", features = [ "desktop-requester", ] } i18n-embed-fl = "0.10" -iced_tiny_skia = { path = "../libcosmic/iced/tiny_skia" } +iced_tiny_skia = { git = "https://github.com/pop-os/libcosmic" } indexmap = "2.13" keyframe = "1.1.1" -cosmic = { package = "libcosmic-yoda", path = "../libcosmic", default-features = false, features = [ - "tokio", - "wayland", - "multi-window", -] } +libcosmic = { git = "https://github.com/pop-os/libcosmic", default-features = false } libsystemd = { version = "0.7", optional = true } log-panics = { version = "2", features = ["with-backtrace"] } ordered-float = "5.1" @@ -142,36 +138,9 @@ inherits = "release" [profile.release] lto = "fat" -[patch.'https://github.com/pop-os/libcosmic'] -cosmic-config = { path = "../libcosmic/cosmic-config" } -cosmic-theme = { path = "../libcosmic/cosmic-theme" } -iced = { path = "../libcosmic/iced" } -iced_accessibility = { path = "../libcosmic/iced/accessibility" } -iced_core = { path = "../libcosmic/iced/core" } -iced_futures = { path = "../libcosmic/iced/futures" } -iced_graphics = { path = "../libcosmic/iced/graphics" } -iced_renderer = { path = "../libcosmic/iced/renderer" } -iced_runtime = { path = "../libcosmic/iced/runtime" } -iced_tiny_skia = { path = "../libcosmic/iced/tiny_skia" } -iced_wgpu = { path = "../libcosmic/iced/wgpu" } -iced_widget = { path = "../libcosmic/iced/widget" } -iced_winit = { path = "../libcosmic/iced/winit" } - -[patch.'https://github.com/pop-os/cosmic-protocols'] -cosmic-protocols = { path = "../cosmic-protocols" } -cosmic-client-toolkit = { path = "../cosmic-protocols/client-toolkit" } - -[patch.'https://github.com/pop-os/cosmic-settings-daemon'] -cosmic-settings-config = { path = "../cosmic-settings-daemon/config" } -cosmic-settings-daemon-config = { path = "../cosmic-settings-daemon/cosmic-settings-daemon-config" } - -[patch.'https://github.com/pop-os/cosmic-text.git'] -cosmic-text = { git = "https://forge.aditua.com/leyoda/cosmic-text.git", branch = "local/pr-503" } - -[patch.'https://forge.aditua.com/leyoda/window_clipboard.git'] -window_clipboard = { path = "../window_clipboard" } -dnd = { path = "../window_clipboard/dnd" } -mime = { path = "../window_clipboard/mime" } +[patch."https://github.com/pop-os/cosmic-protocols"] +cosmic-protocols = { git = "https://github.com/pop-os//cosmic-protocols", branch = "main" } +cosmic-client-toolkit = { git = "https://github.com/pop-os//cosmic-protocols", branch = "main" } [patch.crates-io] smithay = { git = "https://github.com/smithay/smithay.git", rev = "774f2ab" } diff --git a/cosmic-comp-config/Cargo.toml b/cosmic-comp-config/Cargo.toml index d0225691..f01a4bb3 100644 --- a/cosmic-comp-config/Cargo.toml +++ b/cosmic-comp-config/Cargo.toml @@ -4,8 +4,8 @@ version = "1.0.0" edition = "2024" [dependencies] -cosmic-config = { path = "../../libcosmic/cosmic-config" } -cosmic-randr-shell = { path = "../../cosmic-randr/shell", optional = true } +cosmic-config = { git = "https://github.com/pop-os/libcosmic/" } +cosmic-randr-shell = { git = "https://github.com/pop-os/cosmic-randr/", optional = true } input = "0.10.0" libdisplay-info = { version = "0.3.0", optional = true } serde = { version = "1", features = ["derive"] } diff --git a/cosmic-comp-config/src/lib.rs b/cosmic-comp-config/src/lib.rs index 8c4d9588..6063d476 100644 --- a/cosmic-comp-config/src/lib.rs +++ b/cosmic-comp-config/src/lib.rs @@ -99,8 +99,6 @@ pub struct CosmicCompConfig { pub edge_snap_threshold: u32, pub accessibility_zoom: ZoomConfig, pub appearance_settings: AppearanceConfig, - /// Hide the cursor after this many seconds of pointer inactivity (None disables) - pub cursor_hide_timeout: Option, } impl Default for CosmicCompConfig { @@ -137,7 +135,6 @@ impl Default for CosmicCompConfig { edge_snap_threshold: 0, accessibility_zoom: ZoomConfig::default(), appearance_settings: AppearanceConfig::default(), - cursor_hide_timeout: None, } } } diff --git a/src/backend/kms/device.rs b/src/backend/kms/device.rs index c7a0a160..b2507bc3 100644 --- a/src/backend/kms/device.rs +++ b/src/backend/kms/device.rs @@ -28,7 +28,7 @@ use smithay::{ }, egl::{EGLContext, EGLDevice, EGLDisplay, context::ContextPriority}, renderer::glow::GlowRenderer, - session::{Session, libseat::LibSeatSession}, + session::Session, }, desktop::utils::OutputPresentationFeedback, output::{Mode as OutputMode, Output, PhysicalProperties, Scale, Subpixel}, @@ -40,10 +40,7 @@ use smithay::{ wayland_server::DisplayHandle, }, utils::{Clock, DevPath, DeviceFd, Monotonic, Point, Transform}, - wayland::{ - drm_lease::{DrmLease, DrmLeaseState}, - drm_syncobj::supports_syncobj_eventfd, - }, + wayland::drm_lease::{DrmLease, DrmLeaseState}, }; use tracing::{error, info, warn}; use wayland_backend::server::ClientId; @@ -102,20 +99,6 @@ pub struct Device { pub socket: Option, } -#[derive(Debug)] -struct ReusableDevice { - leasing_global: Option, - active_clients: HashSet, - socket: Option, -} - -#[derive(Debug)] -struct OldDeviceState { - fd: DeviceFd, - outputs: HashMap, - leased_connectors: HashSet, -} - #[derive(Debug)] pub struct LockedDevice<'a> { pub inner: &'a mut InnerDevice, @@ -239,14 +222,138 @@ impl State { } } - let mut device = Device::new( - dev, - path, - &mut self.backend.kms().session, - &mut self.common, - dh, - None, - )?; + let fd = DrmDeviceFd::new(DeviceFd::from( + self.backend + .kms() + .session + .open( + path, + OFlags::RDWR | OFlags::CLOEXEC | OFlags::NOCTTY | OFlags::NONBLOCK, + ) + .with_context(|| { + format!( + "Failed to optain file descriptor for drm device: {}", + path.display() + ) + })?, + )); + let (drm, notifier) = DrmDevice::new(fd.clone(), false) + .with_context(|| format!("Failed to initialize drm device for: {}", path.display()))?; + let drm_node = DrmNode::from_dev_id(dev)?; + let supports_atomic = drm.is_atomic(); + + let gbm = GbmDevice::new(fd) + .with_context(|| format!("Failed to initialize GBM device for {}", path.display()))?; + let (render_node, render_formats, texture_formats, is_software) = { + let egl = init_egl(&gbm)?; + + let render_node = egl + .device + .try_get_render_node() + .ok() + .and_then(std::convert::identity) + .unwrap_or(drm_node); + let render_formats = egl.context.dmabuf_render_formats().clone(); + let texture_formats = egl.context.dmabuf_texture_formats().clone(); + + ( + render_node, + render_formats, + texture_formats, + egl.device.is_software(), + ) + }; + + let token = self + .common + .event_loop_handle + .insert_source( + notifier, + move |event, metadata, state: &mut State| match event { + DrmEvent::VBlank(crtc) => { + if let Some(device) = state.backend.kms().drm_devices.get_mut(&drm_node) + && let Some(surface) = device.inner.surfaces.get_mut(&crtc) + { + surface.on_vblank(metadata.take()); + } + } + DrmEvent::Error(err) => { + warn!(?err, "Failed to read events of device {:?}.", dev); + } + }, + ) + .with_context(|| format!("Failed to add drm device to event loop: {}", dev))?; + + let socket = match (!is_software) + .then(|| self.create_socket(dh, render_node, texture_formats.clone())) + .transpose() + { + Ok(socket) => socket, + Err(err) => { + warn!( + ?err, + "Failed to initialize hardware-acceleration for clients on {}.", render_node, + ); + None + } + }; + + let leasing_global = match (!is_software) + .then(|| DrmLeaseState::new::(dh, &drm_node)) + .transpose() + { + Ok(global) => global, + Err(err) => { + // TODO: replace with inspect_err, once stable + warn!( + ?err, + "Failed to initialize drm lease global for: {}", drm_node + ); + None + } + }; + + let drm = GbmDrmOutputManager::new( + drm, + GbmAllocator::new( + gbm.clone(), + GbmBufferFlags::RENDERING | GbmBufferFlags::SCANOUT, + ), + GbmFramebufferExporter::new(gbm.clone(), render_node.into()), + Some(gbm.clone()), + [ + Fourcc::Abgr2101010, + Fourcc::Argb2101010, + Fourcc::Abgr8888, + Fourcc::Argb8888, + ], + render_formats, + ); + + let mut device = Device { + drm, + inner: InnerDevice { + dev_node: drm_node, + render_node, + is_software, + egl: None, + + outputs: HashMap::new(), + surfaces: HashMap::new(), + gbm, + + leased_connectors: Vec::new(), + leasing_global, + active_leases: Vec::new(), + active_clients: HashSet::new(), + }, + + supports_atomic, + texture_formats, + event_token: Some(token), + socket, + }; + let connectors = device.enumerate_surfaces()?.added; // There are no removed outputs on newly added devices let mut wl_outputs = Vec::new(); let mut w = self.common.shell.read().global_space().size.w as u32; @@ -280,7 +387,7 @@ impl State { // TODO atomic commit all surfaces together and drop surfaces, if it fails due to bandwidth let kms = self.backend.kms(); - kms.drm_devices.insert(device.inner.dev_node, device); + kms.drm_devices.insert(drm_node, device); } self.common @@ -382,218 +489,6 @@ impl State { Ok(outputs_added) } - pub fn reopen_device( - &mut self, - dev: dev_t, - path: &Path, - dh: &DisplayHandle, - ) -> Result> { - let backend = self.backend.kms(); - let drm_node = backend - .drm_devices - .values() - .find_map(|device| { - (device.inner.dev_node.dev_id() == dev).then_some(device.inner.dev_node) - }) - .with_context(|| format!("Couldn't find drm node for {}", dev))?; - - if let Some(mut device) = backend.drm_devices.shift_remove(&drm_node) { - let is_primary = backend - .primary_node - .read() - .unwrap() - .is_some_and(|node| node == device.inner.render_node); - - // all drm resources become inert - if let Some(token) = device.event_token.take() { - self.common.event_loop_handle.remove(token); - } - for (_, surface) in device.inner.surfaces.drain() { - surface.drop_and_join(); - } - if let Some(leasing_global) = device.inner.leasing_global.as_mut() { - for (connector, _) in &device.inner.leased_connectors { - leasing_global.withdraw_connector(*connector); - } - device.inner.active_leases.clear(); - } - - // These contain a reference to the file descriptor - backend.api.as_mut().remove_node(&device.inner.render_node); - // trigger enumeration - let _ = backend.api.devices(); - - for surface in backend - .drm_devices - .values_mut() - .flat_map(|device| device.inner.surfaces.values_mut()) - { - surface.remove_node(device.inner.render_node); - } - let syncobj_guard = - if is_primary && let Some(syncobj_state) = backend.syncobj_state.as_mut() { - Some(syncobj_state.close_device()) - } else { - None - }; - - let (reusable, mut old_state) = device.reuse(); - - match TryInto::::try_into(old_state.fd) { - Ok(fd) => { - if let Err(err) = backend.session.close(fd) { - warn!("Failed to close drm device fd: {}", err); - } - } - Err(_) => { - warn!(?drm_node, "Unable to close drm device fd cleanly."); - } - }; - - let mut new_device = Device::new( - dev, - path, - &mut backend.session, - &mut self.common, - dh, - Some(reusable), - )?; - - if let Some(guard) = syncobj_guard { - let import_device = new_device.drm.device().device_fd().clone(); - if supports_syncobj_eventfd(&import_device) { - guard.update_device(import_device); - } else { - drop(guard); - dh.remove_global::(backend.syncobj_state.take().unwrap().into_global()); - } - } - - let connectors = new_device.enumerate_surfaces()?.added; - let mut outputs_added = Vec::new(); - let mut w = self.common.shell.read().global_space().size.w as u32; - - { - for (conn, maybe_crtc) in connectors { - if let Some(output) = old_state.outputs.remove(&conn) { - let has_surface = if old_state.leased_connectors.contains(&conn) { - if let Some(crtc) = maybe_crtc { - new_device.inner.leased_connectors.push((conn, crtc)); - info!( - "Connector {} is non-desktop, setting up for leasing", - output.name() - ); - if let Some(lease_state) = new_device.inner.leasing_global.as_mut() - { - let physical = output.physical_properties(); - lease_state.add_connector::( - conn, - output.name(), - format!("{} {}", physical.make, physical.model), - ); - } - } else { - warn!( - "Connector {} is non-desktop, but we don't have a free crtc: not leasing", - output.name() - ); - } - false - } else { - let loc = output.current_location(); - populate_modes( - new_device.drm.device_mut(), - &output, - conn, - true, - (loc.x as u32, loc.y as u32), - ) - .with_context(|| "Failed to enumerate connector modes")?; - - if let Some(crtc) = maybe_crtc { - match Surface::new( - &output, - crtc, - conn, - backend.primary_node.clone(), - new_device.inner.dev_node, - new_device.inner.render_node, - &self.common.event_loop_handle, - self.common.config.dynamic_conf.screen_filter().clone(), - self.common.shell.clone(), - self.common.startup_done.clone(), - ) { - Ok(data) => { - new_device.inner.surfaces.insert(crtc, data); - true - } - Err(err) => { - error!(?crtc, "Failed to initialize surface: {}", err); - false - } - } - } else { - false - } - }; - - if !has_surface { - output - .user_data() - .get::>() - .unwrap() - .borrow_mut() - .enabled = OutputState::Disabled; - } - new_device.inner.outputs.insert(conn, output); - } else { - match new_device.inner.connector_added( - new_device.drm.device_mut(), - backend.primary_node.clone(), - conn, - maybe_crtc, - (w, 0), - &self.common.event_loop_handle, - self.common.config.dynamic_conf.screen_filter().clone(), - self.common.shell.clone(), - self.common.startup_done.clone(), - ) { - Ok((output, should_expose)) => { - if should_expose { - w += output.geometry().size.w as u32; - outputs_added.push(output.clone()); - } - - new_device.inner.outputs.insert(conn, output); - } - Err(err) => { - warn!(?err, "Failed to initialize output, skipping"); - } - } - } - } - } - - self.common - .output_configuration_state - .remove_heads(old_state.outputs.values()); - self.common - .output_configuration_state - .add_heads(outputs_added.iter()); - - for output in old_state.outputs.values() { - self.common.remove_output(output); - } - - backend.drm_devices.insert(drm_node, new_device); - backend.refresh_used_devices()?; - - Ok(outputs_added) - } else { - Ok(Vec::new()) - } - } - pub fn device_removed(&mut self, dev: dev_t, dh: &DisplayHandle) -> Result<()> { let backend = self.backend.kms(); // we can't use DrmNode::from_node_id, because that assumes the node is still on sysfs @@ -686,158 +581,6 @@ pub struct OutputChanges { } impl Device { - fn new( - dev: dev_t, - path: impl AsRef, - session: &mut LibSeatSession, - common: &mut Common, - dh: &DisplayHandle, - reuse: Option, - ) -> Result { - let path = path.as_ref(); - let fd = DrmDeviceFd::new(DeviceFd::from( - session - .open( - path, - OFlags::RDWR | OFlags::CLOEXEC | OFlags::NOCTTY | OFlags::NONBLOCK, - ) - .with_context(|| { - format!( - "Failed to optain file descriptor for drm device: {}", - path.display() - ) - })?, - )); - let (drm, notifier) = DrmDevice::new(fd.clone(), false) - .with_context(|| format!("Failed to initialize drm device for: {}", path.display()))?; - let dev_node = DrmNode::from_dev_id(dev)?; - let supports_atomic = drm.is_atomic(); - - let gbm = GbmDevice::new(fd) - .with_context(|| format!("Failed to initialize GBM device for {}", path.display()))?; - let (render_node, render_formats, texture_formats, is_software) = { - let egl = init_egl(&gbm)?; - - let render_node = egl - .device - .try_get_render_node() - .ok() - .and_then(std::convert::identity) - .unwrap_or(dev_node); - let render_formats = egl.context.dmabuf_render_formats().clone(); - let texture_formats = egl.context.dmabuf_texture_formats().clone(); - - ( - render_node, - render_formats, - texture_formats, - egl.device.is_software(), - ) - }; - - let token = common - .event_loop_handle - .insert_source( - notifier, - move |event, metadata, state: &mut State| match event { - DrmEvent::VBlank(crtc) => { - if let Some(device) = state.backend.kms().drm_devices.get_mut(&dev_node) - && let Some(surface) = device.inner.surfaces.get_mut(&crtc) - { - surface.on_vblank(metadata.take()); - } - } - DrmEvent::Error(err) => { - warn!(?err, "Failed to read events of device {:?}.", dev); - } - }, - ) - .with_context(|| format!("Failed to add drm device to event loop: {}", dev))?; - - let ReusableDevice { - leasing_global, - active_clients, - socket, - } = reuse.unwrap_or_else(|| { - let socket = match (!is_software) - .then(|| common.create_socket(dh, render_node, texture_formats.clone())) - .transpose() - { - Ok(socket) => socket, - Err(err) => { - warn!( - ?err, - "Failed to initialize hardware-acceleration for clients on {}.", - render_node, - ); - None - } - }; - - let leasing_global = match (!is_software) - .then(|| DrmLeaseState::new::(dh, &dev_node)) - .transpose() - { - Ok(global) => global, - Err(err) => { - // TODO: replace with inspect_err, once stable - warn!( - ?err, - "Failed to initialize drm lease global for: {}", dev_node - ); - None - } - }; - - ReusableDevice { - leasing_global, - active_clients: HashSet::new(), - socket, - } - }); - - let drm = GbmDrmOutputManager::new( - drm, - GbmAllocator::new( - gbm.clone(), - GbmBufferFlags::RENDERING | GbmBufferFlags::SCANOUT, - ), - GbmFramebufferExporter::new(gbm.clone(), render_node.into()), - Some(gbm.clone()), - [ - Fourcc::Abgr2101010, - Fourcc::Argb2101010, - Fourcc::Abgr8888, - Fourcc::Argb8888, - ], - render_formats, - ); - - Ok(Device { - drm, - inner: InnerDevice { - dev_node, - render_node, - is_software, - egl: None, - - outputs: HashMap::new(), - surfaces: HashMap::new(), - gbm, - - leased_connectors: Vec::new(), - leasing_global, - active_leases: Vec::new(), - active_clients, - }, - - supports_atomic, - texture_formats, - event_token: Some(token), - socket, - }) - } - pub fn enumerate_surfaces(&mut self) -> Result { // enumerate our outputs let config = @@ -891,27 +634,6 @@ impl Device { drm: self.drm.lock(), } } - - fn reuse(self) -> (ReusableDevice, OldDeviceState) { - let device = ReusableDevice { - leasing_global: self.inner.leasing_global, - active_clients: self.inner.active_clients, - socket: self.socket, - }; - - let state = OldDeviceState { - fd: self.drm.device().device_fd().device_fd(), - outputs: self.inner.outputs, - leased_connectors: self - .inner - .leased_connectors - .iter() - .map(|(conn, _)| *conn) - .collect(), - }; - - (device, state) - } } impl LockedDevice<'_> { diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 3a0d8c8c..4c00b1dd 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -394,37 +394,15 @@ impl State { continue; } }; - let dh = state.common.display_handle.clone(); - if state.backend.kms().drm_devices.contains_key(&drm_node) { match state.device_changed(dev) { Ok(outputs) => added.extend(outputs), Err(err) => { - error!( - ?err, - "Failed to update drm device {}. Re-opening", - path.display(), - ); - match state.reopen_device(dev, path, &dh) { - Ok(outputs) => added.extend(outputs), - Err(err) => { - error!( - ?err, - "Failed to re-open drm device {}. Device lost", - path.display(), - ); - if let Err(err) = state.device_removed(dev, &dh) { - error!( - ?err, - "Failed to close drm device {}.", - path.display(), - ); - }; - } - } + error!(?err, "Failed to update drm device {}.", path.display(),) } } } else { + let dh = state.common.display_handle.clone(); match state.device_added(dev, path, &dh) { Ok(outputs) => added.extend(outputs), Err(err) => error!(?err, "Failed to add drm device {}.", path.display(),), diff --git a/src/backend/kms/socket.rs b/src/backend/kms/socket.rs index 3babd35a..6148f41f 100644 --- a/src/backend/kms/socket.rs +++ b/src/backend/kms/socket.rs @@ -18,7 +18,7 @@ use smithay::{ use std::sync::Arc; use tracing::{info, warn}; -use crate::state::{ClientState, Common, State, advertised_node_for_client}; +use crate::state::{ClientState, State, advertised_node_for_client}; #[derive(Debug)] pub struct Socket { @@ -27,7 +27,7 @@ pub struct Socket { pub dmabuf_global: DmabufGlobal, } -impl Common { +impl State { pub(super) fn create_socket( &mut self, dh: &DisplayHandle, @@ -36,7 +36,7 @@ impl Common { ) -> Result { let socket_name = format!( "{}-{}", - &self.socket.to_string_lossy(), + &self.common.socket.to_string_lossy(), render_node .dev_path() .unwrap() @@ -53,28 +53,33 @@ impl Common { .with_context(|| "Failed to create drm format shared memory table")?; let dmabuf_global = self + .common .dmabuf_state .create_global_with_filter_and_default_feedback::(dh, &feedback, filter); - let drm_global_id = self.wl_drm_state.create_global_with_filter::( - dh, - render_node - .dev_path_with_type(NodeType::Render) - .or_else(|| render_node.dev_path()) - .ok_or(anyhow!( - "Could not determine path for gpu node: {}", - render_node - ))?, - formats, - &dmabuf_global, - filter, - ); + let drm_global_id = self + .common + .wl_drm_state + .create_global_with_filter::( + dh, + render_node + .dev_path_with_type(NodeType::Render) + .or_else(|| render_node.dev_path()) + .ok_or(anyhow!( + "Could not determine path for gpu node: {}", + render_node + ))?, + formats, + &dmabuf_global, + filter, + ); // add a special socket for the gpu let listener = ListeningSocketSource::with_name(&socket_name) .with_context(|| format!("Failed to bind socket to {}", socket_name))?; let socket_name_clone = socket_name.clone(); let token = self + .common .event_loop_handle .insert_source(listener, move |client_stream, _, state: &mut State| { if let Err(err) = state.common.display_handle.insert_client( diff --git a/src/backend/kms/surface/mod.rs b/src/backend/kms/surface/mod.rs index 6b0d42b4..9ecf7db5 100644 --- a/src/backend/kms/surface/mod.rs +++ b/src/backend/kms/surface/mod.rs @@ -464,7 +464,7 @@ impl Surface { pub fn drop_and_join(mut self) { let thread = self.thread.take(); - std::mem::drop(self); + let _ = self; if let Some(thread) = thread { let name = thread.thread().name().unwrap().to_string(); let _ = thread.join(); diff --git a/src/backend/render/cursor.rs b/src/backend/render/cursor.rs index 3c75996d..76426c5e 100644 --- a/src/backend/render/cursor.rs +++ b/src/backend/render/cursor.rs @@ -17,25 +17,14 @@ use smithay::{ Seat, pointer::{CursorIcon, CursorImageAttributes, CursorImageStatus}, }, - reexports::{ - calloop::{ - RegistrationToken, - timer::{TimeoutAction, Timer}, - }, - wayland_server::protocol::wl_surface, - }, + reexports::wayland_server::protocol::wl_surface, render_elements, utils::{ Buffer as BufferCoords, Logical, Monotonic, Physical, Point, Scale, Size, Time, Transform, }, wayland::compositor::{get_role, with_states}, }; -use std::{ - collections::HashMap, - io::Read, - sync::Mutex, - time::{Duration, Instant}, -}; +use std::{collections::HashMap, io::Read, sync::Mutex}; use tracing::warn; use xcursor::{ CursorTheme, @@ -207,10 +196,6 @@ pub struct CursorStateInner { cursors: HashMap, current_image: Option, image_cache: Vec<(Image, MemoryRenderBuffer)>, - - hidden: bool, - idle_timer: Option, - last_armed: Option, } impl CursorStateInner { @@ -261,10 +246,6 @@ impl Default for CursorStateInner { cursors: HashMap::new(), current_image: None, image_cache: Vec::new(), - - hidden: false, - idle_timer: None, - last_armed: None, } } } @@ -290,10 +271,6 @@ where let mut state_ref = seat_userdata.get::().unwrap().lock().unwrap(); let state = &mut *state_ref; - if state.hidden { - return Vec::new(); - } - let named_cursor = state.current_cursor.or(match cursor_status { CursorImageStatus::Named(named_cursor) => Some(named_cursor), _ => None, @@ -358,71 +335,3 @@ where Vec::new() } } - -const ACTIVITY_THROTTLE: Duration = Duration::from_millis(100); - -/// Reveal the cursor and (re)arm the idle-hide timer; returns true if it was previously hidden -pub fn notify_cursor_activity(state: &State, seat: &Seat) -> bool { - let timeout = state.common.config.cosmic_conf.cursor_hide_timeout; - let loop_handle = &state.common.event_loop_handle; - let cursor_state = seat.user_data().get::().unwrap(); - let now = Instant::now(); - - let (was_hidden, old_token) = { - let mut inner = cursor_state.lock().unwrap(); - let was_hidden = inner.hidden; - inner.hidden = false; - - let throttled = timeout.is_some() - && !was_hidden - && inner.idle_timer.is_some() - && inner - .last_armed - .is_some_and(|t| now.duration_since(t) < ACTIVITY_THROTTLE); - if throttled { - return was_hidden; - } - - let old_token = inner.idle_timer.take(); - inner.last_armed = None; - (was_hidden, old_token) - }; - - if let Some(token) = old_token { - loop_handle.remove(token); - } - - if let Some(secs) = timeout { - let timer = Timer::from_duration(Duration::from_secs(secs as u64)); - let seat = seat.clone(); - if let Ok(token) = loop_handle.insert_source(timer, move |_, _, state| { - hide_cursor(state, &seat); - TimeoutAction::Drop - }) { - let mut inner = cursor_state.lock().unwrap(); - inner.idle_timer = Some(token); - inner.last_armed = Some(now); - } - } - - was_hidden -} - -fn hide_cursor(state: &mut State, seat: &Seat) { - if let Some(ptr) = seat.get_pointer() - && ptr.is_grabbed() - { - return; - } - let cursor_state = seat.user_data().get::().unwrap(); - { - let mut inner = cursor_state.lock().unwrap(); - inner.hidden = true; - inner.idle_timer = None; - inner.last_armed = None; - } - let outputs: Vec<_> = state.common.shell.read().outputs().cloned().collect(); - for output in outputs { - state.backend.schedule_render(&output); - } -} diff --git a/src/config/mod.rs b/src/config/mod.rs index d75eed4e..66cb2b83 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -947,25 +947,6 @@ fn config_changed(config: cosmic_config::Config, keys: Vec, state: &mut } } } - "cursor_hide_timeout" => { - let new = get_config::>(&config, "cursor_hide_timeout"); - if new != state.common.config.cosmic_conf.cursor_hide_timeout { - state.common.config.cosmic_conf.cursor_hide_timeout = new; - let seats: Vec<_> = state.common.shell.read().seats.iter().cloned().collect(); - let mut needs_render = false; - for seat in seats { - needs_render |= - crate::backend::render::cursor::notify_cursor_activity(state, &seat); - } - if needs_render { - let outputs: Vec<_> = - state.common.shell.read().outputs().cloned().collect(); - for output in outputs { - state.backend.schedule_render(&output); - } - } - } - } _ => {} } } diff --git a/src/input/mod.rs b/src/input/mod.rs index 548a60ab..2a62947c 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only use crate::{ - backend::render::{ElementFilter, cursor::notify_cursor_activity}, + backend::render::ElementFilter, config::{ Action, Config, PrivateAction, key_bindings::{ @@ -37,12 +37,11 @@ use cosmic_settings_config::shortcuts; use cosmic_settings_config::shortcuts::action::{Direction, ResizeDirection}; use smithay::{ backend::input::{ - AbsolutePositionEvent, Axis, AxisRelativeDirection, AxisSource, Device, DeviceCapability, - GestureBeginEvent, GestureEndEvent, GesturePinchUpdateEvent as _, - GestureSwipeUpdateEvent as _, InputBackend, InputEvent, KeyState, KeyboardKeyEvent, - PointerAxisEvent, ProximityState, Switch, SwitchState, SwitchToggleEvent, - TabletToolButtonEvent, TabletToolEvent, TabletToolProximityEvent, TabletToolTipEvent, - TabletToolTipState, TouchEvent, + AbsolutePositionEvent, Axis, AxisSource, Device, DeviceCapability, GestureBeginEvent, + GestureEndEvent, GesturePinchUpdateEvent as _, GestureSwipeUpdateEvent as _, InputBackend, + InputEvent, KeyState, KeyboardKeyEvent, PointerAxisEvent, ProximityState, Switch, + SwitchState, SwitchToggleEvent, TabletToolButtonEvent, TabletToolEvent, + TabletToolProximityEvent, TabletToolTipEvent, TabletToolTipState, TouchEvent, }, desktop::{PopupKeyboardGrab, WindowSurfaceType, utils::under_from_surface_tree}, input::{ @@ -309,7 +308,6 @@ impl State { let shell = self.common.shell.write(); if let Some(seat) = shell.seats.for_device(&event.device()).cloned() { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); let current_output = seat.active_output(); let mut position = seat.get_pointer().unwrap().current_location().as_global(); @@ -623,7 +621,6 @@ impl State { .cloned(); if let Some(seat) = maybe_seat { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); let output = seat.active_output(); let geometry = output.geometry(); let position = geometry.loc.to_f64() @@ -690,7 +687,6 @@ impl State { return; }; self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); let current_focus = seat.get_keyboard().unwrap().current_focus(); let shortcuts_inhibited = current_focus.as_ref().is_some_and(|f| { @@ -902,7 +898,6 @@ impl State { .cloned(); if let Some(seat) = maybe_seat { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); if seat.get_keyboard().unwrap().modifier_state().logo && self @@ -919,12 +914,6 @@ impl State { .or_else(|| event.amount(Axis::Vertical)) .map(|val| val * scroll_factor) { - if event.relative_direction(Axis::Vertical) - == AxisRelativeDirection::Inverted - { - percentage *= -1.; - } - if event.source() == AxisSource::Wheel { percentage *= 5.; } @@ -1371,7 +1360,6 @@ impl State { let shell = self.common.shell.write(); if let Some(seat) = shell.seats.for_device(&event.device()).cloned() { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); let Some(output) = mapped_output_for_device(&self.common.config, &shell, &event.device()) .cloned() @@ -1437,7 +1425,6 @@ impl State { let shell = self.common.shell.write(); if let Some(seat) = shell.seats.for_device(&event.device()).cloned() { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); let Some(output) = mapped_output_for_device(&self.common.config, &shell, &event.device()) .cloned() @@ -1499,7 +1486,6 @@ impl State { .cloned(); if let Some(seat) = maybe_seat { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); if let Some(tool) = seat.tablet_seat().get_tool(&event.tool()) { match event.tip_state() { TabletToolTipState::Down => { @@ -1522,7 +1508,6 @@ impl State { .cloned(); if let Some(seat) = maybe_seat { self.common.idle_notifier_state.notify_activity(&seat); - notify_cursor_activity(self, &seat); if let Some(tool) = seat.tablet_seat().get_tool(&event.tool()) { tool.button( event.button(), diff --git a/src/shell/zoom.rs b/src/shell/zoom.rs index b4ba339f..bb681563 100644 --- a/src/shell/zoom.rs +++ b/src/shell/zoom.rs @@ -9,7 +9,7 @@ use cosmic::{ }; use cosmic_comp_config::ZoomMovement; use cosmic_config::ConfigSet; -use keyframe::{ease, functions::Linear}; +use keyframe::{ease, functions::EaseInOutCubic}; use smithay::{ backend::renderer::{ImportMem, Renderer, element::AsRenderElements}, desktop::space::SpaceElement, @@ -135,7 +135,7 @@ impl OutputZoomState { let percentage = duration_since.as_millis() as f32 / ANIMATION_DURATION.as_millis() as f32; ease( - Linear, + EaseInOutCubic, EasePoint(*old_point), EasePoint(self.focal_point), percentage, @@ -159,7 +159,7 @@ impl OutputZoomState { let percentage = Instant::now().duration_since(*start).as_millis() as f32 / ANIMATION_DURATION.as_millis() as f32; - ease(Linear, *old_level, self.level, percentage) + ease(EaseInOutCubic, *old_level, self.level, percentage) } else { self.level } diff --git a/src/xwayland.rs b/src/xwayland.rs index 4c2f3b55..c4549c9e 100644 --- a/src/xwayland.rs +++ b/src/xwayland.rs @@ -809,14 +809,12 @@ impl XwmHandler for State { ); } if !shell.pending_windows.iter().any(|w| w.surface == window) { - let fullscreen = window.is_fullscreen().then(|| seat.active_output()); - let maximized = window.is_maximized(); let surface = CosmicSurface::from(window); shell.pending_windows.push(PendingWindow { surface, seat, - fullscreen, - maximized, + fullscreen: None, + maximized: false, sticky: false, }) } @@ -916,11 +914,7 @@ impl XwmHandler for State { // We only allow floating X11 windows to resize themselves. Nothing else let shell = self.common.shell.read(); - if window.is_fullscreen() { - let _ = window.configure(None); - return; - } - + // TODO: Fullscreen if let Some(mapped) = shell .element_for_surface(&window) .filter(|mapped| !mapped.is_minimized())