diff --git a/Cargo.lock b/Cargo.lock index cb8ff1ce..97d280d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -326,7 +326,7 @@ dependencies = [ "cosmic-protocols", "futures", "futures-util", - "gio 0.16.0", + "gio", "glib-build-tools", "gsk4", "gtk4", @@ -472,31 +472,6 @@ dependencies = [ "zvariant", ] -[[package]] -name = "cosmic-applet-workspaces" -version = "0.1.0" -dependencies = [ - "anyhow", - "calloop", - "cascade", - "cosmic-panel-config", - "cosmic-protocols", - "gio 0.15.12", - "gtk4", - "i18n-embed", - "i18n-embed-fl", - "itertools", - "libadwaita", - "libcosmic", - "log", - "nix 0.25.0", - "once_cell", - "pretty_env_logger", - "rust-embed", - "wayland-backend", - "wayland-client", -] - [[package]] name = "cosmic-dbus-networkmanager" version = "0.1.0" @@ -977,7 +952,7 @@ source = "git+https://github.com/gtk-rs/gtk-rs-core#49d9100919c51b248bc176763b20 dependencies = [ "bitflags", "gdk-pixbuf-sys", - "gio 0.16.0", + "gio", "glib 0.16.0", "libc", ] @@ -987,7 +962,7 @@ name = "gdk-pixbuf-sys" version = "0.16.0" source = "git+https://github.com/gtk-rs/gtk-rs-core#49d9100919c51b248bc176763b203bce23efe0ee" dependencies = [ - "gio-sys 0.16.0", + "gio-sys", "glib-sys 0.16.0", "gobject-sys 0.16.0", "libc", @@ -1003,7 +978,7 @@ dependencies = [ "cairo-rs", "gdk-pixbuf", "gdk4-sys", - "gio 0.16.0", + "gio", "glib 0.16.0", "libc", "pango", @@ -1016,7 +991,7 @@ source = "git+https://github.com/gtk-rs/gtk4-rs#e4178e68237503c93ca98193e7832b7e dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", - "gio-sys 0.16.0", + "gio-sys", "glib-sys 0.16.0", "gobject-sys 0.16.0", "libc", @@ -1068,23 +1043,6 @@ dependencies = [ "temp-dir", ] -[[package]] -name = "gio" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-io", - "gio-sys 0.15.10", - "glib 0.15.12", - "libc", - "once_cell", - "thiserror", -] - [[package]] name = "gio" version = "0.16.0" @@ -1095,26 +1053,13 @@ dependencies = [ "futures-core", "futures-io", "futures-util", - "gio-sys 0.16.0", + "gio-sys", "glib 0.16.0", "libc", "once_cell", "thiserror", ] -[[package]] -name = "gio-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" -dependencies = [ - "glib-sys 0.15.10", - "gobject-sys 0.15.10", - "libc", - "system-deps", - "winapi", -] - [[package]] name = "gio-sys" version = "0.16.0" @@ -1303,7 +1248,7 @@ dependencies = [ "futures-channel", "gdk-pixbuf", "gdk4", - "gio 0.16.0", + "gio", "glib 0.16.0", "graphene-rs", "gsk4", @@ -1335,7 +1280,7 @@ dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", "gdk4-sys", - "gio-sys 0.16.0", + "gio-sys", "glib-sys 0.16.0", "gobject-sys 0.16.0", "graphene-sys", @@ -1546,7 +1491,7 @@ dependencies = [ "futures-channel", "gdk-pixbuf", "gdk4", - "gio 0.16.0", + "gio", "glib 0.16.0", "gtk4", "libadwaita-sys", @@ -1561,7 +1506,7 @@ version = "0.2.0" source = "git+https://gitlab.gnome.org/World/Rust/libadwaita-rs#01881b0c9f67ed5a351b78fcd9b172fee246fdd4" dependencies = [ "gdk4-sys", - "gio-sys 0.16.0", + "gio-sys", "glib-sys 0.16.0", "gobject-sys 0.16.0", "gtk4-sys", @@ -1939,7 +1884,7 @@ version = "0.16.0" source = "git+https://github.com/gtk-rs/gtk-rs-core#49d9100919c51b248bc176763b203bce23efe0ee" dependencies = [ "bitflags", - "gio 0.16.0", + "gio", "glib 0.16.0", "libc", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index aa8603cc..7874bcb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,6 @@ members = [ "applets/cosmic-applet-network", "applets/cosmic-applet-notifications", "applets/cosmic-applet-power", - "applets/cosmic-applet-workspaces", "applets/cosmic-applet-status-area", "applets/cosmic-applet-time", "applets/cosmic-app-list", @@ -14,10 +13,11 @@ members = [ ] exclude = [ "applets/cosmic-applet-graphics", + "applets/cosmic-applet-workspaces", ] [patch.crates-io] -wayland-protocols = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} +wayland-protocols = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.9"} wayland-protocols-wlr = { git = "https://github.com/smithay/wayland-rs", version = "0.1.0-beta.9"} wayland-sys = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} wayland-backend = { git = "https://github.com/smithay/wayland-rs", version = "0.1.0-beta.13"} diff --git a/applets/cosmic-applet-graphics/Cargo.lock b/applets/cosmic-applet-graphics/Cargo.lock index 33c99739..9a99ef76 100644 --- a/applets/cosmic-applet-graphics/Cargo.lock +++ b/applets/cosmic-applet-graphics/Cargo.lock @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -106,9 +106,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ash" -version = "0.37.0+1.3.209" +version = "0.37.1+1.3.235" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" +checksum = "911015c962d56e2e4052f40182ca5462ba60a3d2ff04e827c365a0ab3d65726d" dependencies = [ "libloading", ] @@ -126,11 +126,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" +checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" dependencies = [ - "concurrent-queue 1.2.4", + "concurrent-queue", "event-listener", "futures-core", ] @@ -143,7 +143,7 @@ checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" dependencies = [ "async-lock", "async-task", - "concurrent-queue 2.0.0", + "concurrent-queue", "fastrand", "futures-lite", "slab", @@ -151,13 +151,13 @@ dependencies = [ [[package]] name = "async-io" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7" +checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" dependencies = [ "async-lock", "autocfg", - "concurrent-queue 1.2.4", + "concurrent-queue", "futures-lite", "libc", "log", @@ -166,7 +166,7 @@ dependencies = [ "slab", "socket2", "waker-fn", - "winapi", + "windows-sys 0.42.0", ] [[package]] @@ -198,9 +198,9 @@ checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" [[package]] name = "async-trait" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" +checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364" dependencies = [ "proc-macro2", "quote", @@ -293,12 +293,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "cache-padded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" - [[package]] name = "calloop" version = "0.10.3" @@ -306,7 +300,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bcf530afb40e45e14440701e5e996d7fd139e84a912a4d83a8d6a0fb3e58663" dependencies = [ "log", - "nix 0.25.0", + "nix", "slotmap", "thiserror", "vec_map", @@ -314,9 +308,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.76" +version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" [[package]] name = "cfg-if" @@ -386,15 +380,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "concurrent-queue" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" -dependencies = [ - "cache-padded", -] - [[package]] name = "concurrent-queue" version = "2.0.0" @@ -406,9 +391,9 @@ dependencies = [ [[package]] name = "const_panic" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed2b28323eee4fb66bb824401daa3e46bd445b9a9298a3d382b320710ba69dd" +checksum = "58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf" [[package]] name = "core-foundation" @@ -529,22 +514,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.11" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", + "memoffset 0.7.1", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if", ] @@ -805,7 +790,7 @@ dependencies = [ "flume", "half", "lebe", - "miniz_oxide 0.6.2", + "miniz_oxide", "smallvec", "threadpool", ] @@ -830,12 +815,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" dependencies = [ "crc32fast", - "miniz_oxide 0.5.4", + "miniz_oxide", ] [[package]] @@ -892,13 +877,13 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "freedesktop-icons" version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420b2cb0cf0ab0d5f34c068830f3b5c17b378ab3c2acaf7ca4bfde671d70be51" +source = "git+https://github.com/wash2/freedestkop-icons#ac6343d76f1d2b3b666771b5ec0d22aa571a912e" dependencies = [ "dirs", "once_cell", "rust-ini", "thiserror", + "xdg", ] [[package]] @@ -1271,7 +1256,7 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "iced" version = "0.5.2" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "iced_core", "iced_futures", @@ -1287,7 +1272,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.6.1" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "bitflags", "palette", @@ -1297,7 +1282,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.5.1" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "futures", "log", @@ -1308,7 +1293,7 @@ dependencies = [ [[package]] name = "iced_glow" version = "0.4.1" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "bytemuck", "euclid", @@ -1323,7 +1308,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.4.0" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "bitflags", "bytemuck", @@ -1343,7 +1328,7 @@ dependencies = [ [[package]] name = "iced_lazy" version = "0.2.0" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "iced_native", "ouroboros", @@ -1352,7 +1337,7 @@ dependencies = [ [[package]] name = "iced_native" version = "0.6.1" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "iced_core", "iced_futures", @@ -1366,7 +1351,7 @@ dependencies = [ [[package]] name = "iced_sctk" version = "0.1.0" -source = "git+https://github.com/pop-os/iced-sctk#c2095c8a434f921903f9801d6df11020466d32e5" +source = "git+https://github.com/pop-os/iced-sctk#a2c24d95ebc795245495677b99b631a4322ef876" dependencies = [ "enum-repr", "futures", @@ -1385,7 +1370,7 @@ dependencies = [ [[package]] name = "iced_style" version = "0.5.0" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "iced_core", "once_cell", @@ -1395,7 +1380,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.6.1" -source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#6c51969025a8e6f49a7b9f0cb55871ae041aa449" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" dependencies = [ "bitflags", "bytemuck", @@ -1546,7 +1531,7 @@ checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic/?branch=sctk-cosmic-design-system#6f17328eb167f6fab130449295d1292c9e53e797" +source = "git+https://github.com/pop-os/libcosmic/?branch=sctk-cosmic-design-system#e87fe7056d09530c35e2c39d470205c6a7a920c6" dependencies = [ "apply", "cosmic-panel-config", @@ -1647,6 +1632,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "metal" version = "0.24.0" @@ -1667,15 +1661,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.6.2" @@ -1720,17 +1705,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "nix" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" -dependencies = [ - "bitflags", - "cfg-if", - "libc", -] - [[package]] name = "nix" version = "0.25.0" @@ -1741,7 +1715,7 @@ dependencies = [ "bitflags", "cfg-if", "libc", - "memoffset", + "memoffset 0.6.5", "pin-utils", ] @@ -1931,7 +1905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.4", + "parking_lot_core 0.9.5", ] [[package]] @@ -1950,9 +1924,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ "cfg-if", "libc", @@ -2056,21 +2030,21 @@ dependencies = [ "bitflags", "crc32fast", "flate2", - "miniz_oxide 0.6.2", + "miniz_oxide", ] [[package]] name = "polling" -version = "2.4.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2" +checksum = "166ca89eb77fd403230b9c156612965a81e094ec6ec3aa13663d4c8b113fa748" dependencies = [ "autocfg", "cfg-if", "libc", "log", "wepoll-ffi", - "winapi", + "windows-sys 0.42.0", ] [[package]] @@ -2194,11 +2168,10 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" dependencies = [ - "autocfg", "crossbeam-deque", "either", "rayon-core", @@ -2206,9 +2179,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -2380,18 +2353,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c" dependencies = [ "proc-macro2", "quote", @@ -2468,7 +2441,7 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay-client-toolkit" version = "0.16.0" -source = "git+https://github.com/Smithay/client-toolkit#a143329fc7ec1c132c19696cbe1ecaad0503cb61" +source = "git+https://github.com/Smithay/client-toolkit#f1d9c3ef9cfbd508d986f7f98b2fc267fcc39b84" dependencies = [ "bitflags", "calloop", @@ -2476,7 +2449,7 @@ dependencies = [ "lazy_static", "log", "memmap2 0.5.8", - "nix 0.24.2", + "nix", "pkg-config", "thiserror", "wayland-backend", @@ -2562,9 +2535,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce" dependencies = [ "proc-macro2", "quote", @@ -2929,7 +2902,7 @@ dependencies = [ "cc", "downcast-rs", "io-lifetimes", - "nix 0.25.0", + "nix", "scoped-tls", "smallvec", "wayland-sys", @@ -2944,7 +2917,7 @@ dependencies = [ "bitflags", "futures-channel", "futures-core", - "nix 0.25.0", + "nix", "thiserror", "wayland-backend", "wayland-scanner", @@ -2956,7 +2929,7 @@ version = "0.30.0-beta.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa5ce1bbc13a3d806648974cba1d53481fea2ac29483eb147e4cce1250fc5263" dependencies = [ - "nix 0.25.0", + "nix", "wayland-client", "xcursor", ] @@ -3274,9 +3247,9 @@ checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" [[package]] name = "x11-dl" -version = "2.20.0" +version = "2.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +checksum = "b1536d6965a5d4e573c7ef73a2c15ebcd0b2de3347bdf526c34c297c00ac40f0" dependencies = [ "lazy_static", "libc", @@ -3358,7 +3331,7 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "nix 0.25.0", + "nix", "once_cell", "ordered-stream", "rand", diff --git a/applets/cosmic-applet-workspaces/Cargo.lock b/applets/cosmic-applet-workspaces/Cargo.lock new file mode 100644 index 00000000..0dd2eeac --- /dev/null +++ b/applets/cosmic-applet-workspaces/Cargo.lock @@ -0,0 +1,3370 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "ab_glyph" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcdbc68024b653943864d436fe8a24b028095bc1cf91a8926f8241e4aaffe59" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "apply" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47b57fc4521e3cae26a4d45b5227f8fadee4c345be0fefd8d5d1711afb8aeb9" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "ash" +version = "0.37.1+1.3.235" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911015c962d56e2e4052f40182ca5462ba60a3d2ff04e827c365a0ab3d65726d" +dependencies = [ + "libloading", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "bytemuck" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "calloop" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bcf530afb40e45e14440701e5e996d7fd139e84a912a4d83a8d6a0fb3e58663" +dependencies = [ + "log", + "nix 0.25.0", + "slotmap", + "thiserror", + "vec_map", +] + +[[package]] +name = "cc" +version = "1.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "cocoa" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "const_panic" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "cosmic-applet-workspaces" +version = "0.1.0" +dependencies = [ + "anyhow", + "calloop", + "cosmic-panel-config", + "cosmic-protocols", + "futures", + "i18n-embed", + "i18n-embed-fl", + "iced_sctk", + "libcosmic", + "log", + "nix 0.26.1", + "once_cell", + "pretty_env_logger", + "rust-embed", + "smithay-client-toolkit", + "wayland-backend", + "wayland-client", + "xdg", +] + +[[package]] +name = "cosmic-panel-config" +version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-panel#a452fc323b574c28aef832951edd413a1d87bc3d" +dependencies = [ + "anyhow", + "ron", + "serde", + "slog", + "xdg", +] + +[[package]] +name = "cosmic-protocols" +version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-protocols#a3e0aa740a3e0f8f7b486fef0d62fa09a1dfa328" +dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "cosmic-theme" +version = "0.1.0" +source = "git+https://github.com/pop-os/cosmic-theme.git#896b228e4462c2fdeea0e89d1a657458b4a0a144" +dependencies = [ + "anyhow", + "csscolorparser", + "lazy_static", + "palette", + "ron", + "serde", + "xdg", +] + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.7.1", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csscolorparser" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" +dependencies = [ + "phf", + "serde", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "d3d12" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +dependencies = [ + "bitflags", + "libloading", + "winapi", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dashmap" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core 0.9.5", +] + +[[package]] +name = "data-url" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] + +[[package]] +name = "derive_setters" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1cf41b4580a37cca5ef2ada2cc43cf5d6be3983f4522e83010d67ab6925e84b" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading", +] + +[[package]] +name = "dlv-list" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encase" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a516181e9a36e8982cb37933c5e7dba638c42938cacde46ee4e5b4156f881b9" +dependencies = [ + "const_panic", + "encase_derive", + "glam", + "thiserror", +] + +[[package]] +name = "encase_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5b802412eea315f29f2bb2da3a5963cd6121f56eaa06aebcdc0c54eea578f22" +dependencies = [ + "encase_derive_impl", +] + +[[package]] +name = "encase_derive_impl" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f2f4de457d974f548d2c2a16f709ebd81013579e543bd1a9b19ced88132c2cf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enum-repr" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad30c9c0fa1aaf1ae5010dab11f1117b15d35faf62cda4bbbc53b9987950f18" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "euclid" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" +dependencies = [ + "num-traits", +] + +[[package]] +name = "exr" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "smallvec", + "threadpool", +] + +[[package]] +name = "find-crate" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" +dependencies = [ + "toml", +] + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "fluent" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7" +dependencies = [ + "fluent-bundle", + "unic-langid", +] + +[[package]] +name = "fluent-bundle" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd" +dependencies = [ + "fluent-langneg", + "fluent-syntax", + "intl-memoizer", + "intl_pluralrules", + "rustc-hash", + "self_cell", + "smallvec", + "unic-langid", +] + +[[package]] +name = "fluent-langneg" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "fluent-syntax" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78" +dependencies = [ + "thiserror", +] + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "fontdb" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d66551cc28351f0bc6a73da86459ee7765caaad03ce284f2dc36472dbf539cd" +dependencies = [ + "log", + "memmap2 0.3.1", + "ttf-parser 0.12.3", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "freedesktop-icons" +version = "0.2.1" +source = "git+https://github.com/wash2/freedestkop-icons#ac6343d76f1d2b3b666771b5ec0d22aa571a912e" +dependencies = [ + "dirs", + "once_cell", + "rust-ini", + "thiserror", + "xdg", +] + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glam" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518faa5064866338b013ff9b2350dc318e14cc4fcd6cb8206d7e7c9886c98815" + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glow_glyph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4e62c64947b9a24fe20e2bba9ad819ecb506ef5c8df7ffc4737464c6df9510" +dependencies = [ + "bytemuck", + "glow", + "glyph_brush", + "log", +] + +[[package]] +name = "glutin" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0282c380a3adb52ae095e5847cc575c6bf79d296dcbf333e00be4a3fca07235e" +dependencies = [ + "bitflags", + "cfg_aliases", + "cgl", + "cocoa", + "core-foundation", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.36.1", + "x11-dl", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3adbb8fec0e18e340f990c78f79f5f0e142d0d83f46b10909aaa7d251c00afdf" +dependencies = [ + "gl_generator", + "windows-sys 0.36.1", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "947c4850c58211c9627969c2b4e2674764b81ae5b47bab2c9a477d7942f96e0f" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20c33975a6c9d49d72c8f032a60079bf8df536954fbf9e4cee90396ace815c57" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glyph_brush" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac02497410cdb5062cc056a33f2e1e19ff69fbf26a4be9a02bf29d6e17ea105b" +dependencies = [ + "glyph_brush_draw_cache", + "glyph_brush_layout", + "log", + "ordered-float", + "rustc-hash", + "twox-hash", +] + +[[package]] +name = "glyph_brush_draw_cache" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6010675390f6889e09a21e2c8b575b3ee25667ea8237a8d59423f73cb8c28610" +dependencies = [ + "ab_glyph", + "crossbeam-channel", + "crossbeam-deque", + "linked-hash-map", + "rayon", + "rustc-hash", +] + +[[package]] +name = "glyph_brush_layout" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc32c2334f00ca5ac3695c5009ae35da21da8c62d255b5b96d56e2597a637a38" +dependencies = [ + "ab_glyph", + "approx", + "xi-unicode", +] + +[[package]] +name = "gpu-alloc" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +dependencies = [ + "bitflags", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0c02e1ba0bdb14e965058ca34e09c020f8e507a760df1121728e0aef68d57a" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "half" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "i18n-config" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62affcd43abfb51f3cbd8736f9407908dc5b44fc558a9be07460bbfd104d983" +dependencies = [ + "log", + "serde", + "serde_derive", + "thiserror", + "toml", + "unic-langid", +] + +[[package]] +name = "i18n-embed" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f21ed76e44de8ac3dfa36bb37ab2e6480be0dc75c612474949be1f3cb2c253" +dependencies = [ + "fluent", + "fluent-langneg", + "fluent-syntax", + "i18n-embed-impl", + "intl-memoizer", + "lazy_static", + "locale_config", + "log", + "parking_lot 0.12.1", + "rust-embed", + "thiserror", + "unic-langid", + "walkdir", +] + +[[package]] +name = "i18n-embed-fl" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420a9718ef9d0ab727840a398e25408ea0daff9ba3c681707ba05485face98e" +dependencies = [ + "dashmap", + "find-crate", + "fluent", + "fluent-syntax", + "i18n-config", + "i18n-embed", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", + "unic-langid", +] + +[[package]] +name = "i18n-embed-impl" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0db2330e035808eb064afb67e6743ddce353763af3e0f2bdfc2476e00ce76136" +dependencies = [ + "find-crate", + "i18n-config", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "iced" +version = "0.5.2" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "iced_core", + "iced_futures", + "iced_glow", + "iced_graphics", + "iced_native", + "iced_sctk", + "iced_wgpu", + "image", + "thiserror", +] + +[[package]] +name = "iced_core" +version = "0.6.1" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "bitflags", + "palette", + "wasm-timer", +] + +[[package]] +name = "iced_futures" +version = "0.5.1" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "futures", + "log", + "wasm-bindgen-futures", + "wasm-timer", +] + +[[package]] +name = "iced_glow" +version = "0.4.1" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "bytemuck", + "euclid", + "glow", + "glow_glyph", + "glyph_brush", + "iced_graphics", + "iced_native", + "log", +] + +[[package]] +name = "iced_graphics" +version = "0.4.0" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "bitflags", + "bytemuck", + "glam", + "iced_native", + "iced_style", + "image", + "kamadak-exif", + "log", + "raw-window-handle", + "resvg", + "thiserror", + "tiny-skia", + "usvg", +] + +[[package]] +name = "iced_lazy" +version = "0.2.0" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "iced_native", + "ouroboros", +] + +[[package]] +name = "iced_native" +version = "0.6.1" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "iced_core", + "iced_futures", + "iced_style", + "num-traits", + "smithay-client-toolkit", + "twox-hash", + "unicode-segmentation", +] + +[[package]] +name = "iced_sctk" +version = "0.1.0" +source = "git+https://github.com/pop-os/iced-sctk#a2c24d95ebc795245495677b99b631a4322ef876" +dependencies = [ + "enum-repr", + "futures", + "glow", + "glutin", + "iced_futures", + "iced_graphics", + "iced_native", + "log", + "raw-window-handle", + "smithay-client-toolkit", + "thiserror", + "wayland-backend", +] + +[[package]] +name = "iced_style" +version = "0.5.0" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "iced_core", + "once_cell", + "palette", +] + +[[package]] +name = "iced_wgpu" +version = "0.6.1" +source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#d6cd9a8f106dc4b68595c540ca4ffa466aa15a60" +dependencies = [ + "bitflags", + "bytemuck", + "encase", + "futures", + "glam", + "glyph_brush", + "guillotiere", + "iced_graphics", + "iced_native", + "log", + "raw-window-handle", + "wgpu", + "wgpu_glyph", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "image" +version = "0.24.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder 0.3.0", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "intl-memoizer" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f" +dependencies = [ + "type-map", + "unic-langid", +] + +[[package]] +name = "intl_pluralrules" +version = "7.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +dependencies = [ + "libc", + "windows-sys 0.42.0", +] + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kamadak-exif" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +dependencies = [ + "mutate_once", +] + +[[package]] +name = "khronos-egl" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "kurbo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb348d766edbac91ba1eb83020d96f4f8867924d194393083c15a51f185e6a82" +dependencies = [ + "arrayvec 0.5.2", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" + +[[package]] +name = "libcosmic" +version = "0.1.0" +source = "git+https://github.com/pop-os/libcosmic/?branch=sctk-cosmic-design-system#e87fe7056d09530c35e2c39d470205c6a7a920c6" +dependencies = [ + "apply", + "cosmic-panel-config", + "cosmic-theme", + "derive_setters", + "freedesktop-icons", + "iced", + "iced_core", + "iced_lazy", + "iced_native", + "iced_style", + "iced_wgpu", + "lazy_static", + "palette", + "smithay-client-toolkit", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "locale_config" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" +dependencies = [ + "lazy_static", + "objc", + "objc-foundation", + "regex", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memmap2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +dependencies = [ + "bitflags", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mutate_once" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" + +[[package]] +name = "naga" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", +] + +[[package]] +name = "nix" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb" +dependencies = [ + "autocfg", + "bitflags", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694" +dependencies = [ + "bitflags", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", + "static_assertions", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "ordered-float" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d84eb1409416d254e4a9c8fa56cc24701755025b458f0fcd8e59e1f5f40c23bf" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown", +] + +[[package]] +name = "ouroboros" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f357ef82d1b4db66fbed0b8d542cbd3c22d0bf5b393b3c257b9ba4568e70c9c3" +dependencies = [ + "aliasable", + "ouroboros_macro", + "stable_deref_trait", +] + +[[package]] +name = "ouroboros_macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44a0b52c2cbaef7dffa5fec1a43274afe8bd2a644fa9fc50a9ef4ff0269b1257" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18904d3c65493a9f0d7542293d1a7f69bfdc309a6b9ef4f46dc3e58b0577edc5" +dependencies = [ + "ttf-parser 0.17.1", +] + +[[package]] +name = "palette" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f9cd68f7112581033f157e56c77ac4a5538ec5836a2e39284e65bd7d7275e49" +dependencies = [ + "approx", + "num-traits", + "palette_derive", + "phf", + "serde", +] + +[[package]] +name = "palette_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05eedf46a8e7c27f74af0c9cfcdb004ceca158cb1b918c6f68f8d7a549b3e427" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.5", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.42.0", +] + +[[package]] +name = "phf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92aacdc5f16768709a569e913f7451034034178b05bdc8acda226659a3dccc66" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "png" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +dependencies = [ + "bitflags", + "crc32fast", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty_env_logger" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" +dependencies = [ + "env_logger", + "log", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-xml" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" +dependencies = [ + "cty", +] + +[[package]] +name = "rayon" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" +dependencies = [ + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rctree" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae028b272a6e99d9f8260ceefa3caa09300a8d6c8d2b2001316474bc52122e9" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "renderdoc-sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" + +[[package]] +name = "resvg" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608c6e8aa6fb2c13bc06e4184d7c7b2cc1b7c138f88a539da8be55c3c033d7f4" +dependencies = [ + "jpeg-decoder 0.1.22", + "log", + "pico-args", + "png", + "rgb", + "svgfilters", + "tiny-skia", + "usvg", +] + +[[package]] +name = "rgb" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3603b7d71ca82644f79b5a06d1220e9a58ede60bd32255f698cb1af8838b8db3" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ron" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +dependencies = [ + "base64", + "bitflags", + "serde", +] + +[[package]] +name = "roxmltree" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" +dependencies = [ + "xmlparser", +] + +[[package]] +name = "rust-embed" +version = "6.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "283ffe2f866869428c92e0d61c2f35dfb4355293cdfdc48f49e895c15f1333d1" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "6.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ab23d42d71fb9be1b643fe6765d292c5e14d46912d13f3ae2815ca048ea04d" +dependencies = [ + "proc-macro2", + "quote", + "rust-embed-utils", + "syn", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "7.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1669d81dfabd1b5f8e2856b8bbe146c6192b0ba22162edc738ac0a5de18f054" +dependencies = [ + "sha2", + "walkdir", +] + +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustybuzz" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44561062e583c4873162861261f16fd1d85fe927c4904d71329a4fe43dc355ef" +dependencies = [ + "bitflags", + "bytemuck", + "smallvec", + "ttf-parser 0.12.3", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-general-category", + "unicode-script", +] + +[[package]] +name = "safe_arch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "self_cell" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af" + +[[package]] +name = "serde" +version = "1.0.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "simplecss" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" +dependencies = [ + "log", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "smithay-client-toolkit" +version = "0.16.0" +source = "git+https://github.com/Smithay/client-toolkit#f1d9c3ef9cfbd508d986f7f98b2fc267fcc39b84" +dependencies = [ + "bitflags", + "calloop", + "dlib", + "lazy_static", + "log", + "memmap2 0.5.8", + "nix 0.25.0", + "pkg-config", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkbcommon", +] + +[[package]] +name = "spin" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "svgfilters" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "639abcebc15fdc2df179f37d6f5463d660c1c79cd552c12343a4600827a04bce" +dependencies = [ + "float-cmp", + "rgb", +] + +[[package]] +name = "svgtypes" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22975e8a2bac6a76bb54f898a6b18764633b00e780330f0b689f65afb3975564" +dependencies = [ + "siphasher", +] + +[[package]] +name = "syn" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae548ec36cf198c0ef7710d3c230987c2d6d7bd98ad6edc0274462724c585ce" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "tiff" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17def29300a156c19ae30814710d9c63cd50288a49c6fd3a10ccfbe4cf886fd" +dependencies = [ + "flate2", + "jpeg-decoder 0.3.0", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d049bfef0eaa2521e75d9ffb5ce86ad54480932ae19b85f78bec6f52c4d30d78" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "bytemuck", + "cfg-if", + "png", + "safe_arch", +] + +[[package]] +name = "tinystr" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aeafdfd935e4a7fe16a91ab711fa52d54df84f9c8f7ca5837a9d1d902ef4c2" +dependencies = [ + "displaydoc", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "ttf-parser" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" + +[[package]] +name = "ttf-parser" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "rand", + "static_assertions", +] + +[[package]] +name = "type-map" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unic-langid" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2f" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ff" +dependencies = [ + "serde", + "tinystr", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" + +[[package]] +name = "unicode-ccc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" + +[[package]] +name = "unicode-general-category" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07547e3ee45e28326cc23faac56d44f58f16ab23e413db526debce3b0bfd2742" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-script" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" + +[[package]] +name = "unicode-segmentation" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" + +[[package]] +name = "unicode-vo" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "usvg" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4058e0bd091a56f905e6963e40776ce6880b271275f0b493bff951433e303071" +dependencies = [ + "base64", + "data-url", + "flate2", + "float-cmp", + "fontdb", + "kurbo", + "log", + "pico-args", + "rctree", + "roxmltree", + "rustybuzz", + "simplecss", + "siphasher", + "svgtypes", + "ttf-parser 0.12.3", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "xmlwriter", +] + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "wasm-timer" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +dependencies = [ + "futures", + "js-sys", + "parking_lot 0.11.2", + "pin-utils", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.1.0-beta.13" +source = "git+https://github.com/smithay/wayland-rs#6fc359e88fe55a6928bb96984625c0e1a266da18" +dependencies = [ + "cc", + "downcast-rs", + "io-lifetimes", + "nix 0.25.0", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.30.0-beta.13" +source = "git+https://github.com/smithay/wayland-rs#6fc359e88fe55a6928bb96984625c0e1a266da18" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "nix 0.25.0", + "thiserror", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-cursor" +version = "0.30.0-beta.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa5ce1bbc13a3d806648974cba1d53481fea2ac29483eb147e4cce1250fc5263" +dependencies = [ + "nix 0.25.0", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.30.0-beta.13" +source = "git+https://github.com/smithay/wayland-rs#6fc359e88fe55a6928bb96984625c0e1a266da18" +dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.1.0-beta.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "130613a48629204e4ab50ea4b5de2efa2e17c58f71a5af15b39535f99421f8c3" +dependencies = [ + "bitflags", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.30.0-beta.13" +source = "git+https://github.com/smithay/wayland-rs#6fc359e88fe55a6928bb96984625c0e1a266da18" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", + "syn", +] + +[[package]] +name = "wayland-sys" +version = "0.30.0" +source = "git+https://github.com/smithay/wayland-rs#6fc359e88fe55a6928bb96984625c0e1a266da18" +dependencies = [ + "dlib", + "lazy_static", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "wgpu" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2272b17bffc8a0c7d53897435da7c1db587c87d3a14e8dae9cdb8d1d210fc0f" +dependencies = [ + "arrayvec 0.7.2", + "js-sys", + "log", + "naga", + "parking_lot 0.12.1", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73d14cad393054caf992ee02b7da6a372245d39a484f7461c1f44f6f6359bd28" +dependencies = [ + "arrayvec 0.7.2", + "bit-vec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "fxhash", + "log", + "naga", + "parking_lot 0.12.1", + "profiling", + "raw-window-handle", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc320a61acb26be4f549c9b1b53405c10a223fbfea363ec39474c32c348d12f" +dependencies = [ + "android_system_properties", + "arrayvec 0.7.2", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga", + "objc", + "parking_lot 0.12.1", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6b28ef22cac17b9109b25b3bf8c9a103eeb293d7c5f78653979b09140375f6" +dependencies = [ + "bitflags", +] + +[[package]] +name = "wgpu_glyph" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cafb82773e0f124a33674dab5de4dff73175aeb921949047ab014efb58fb446" +dependencies = [ + "bytemuck", + "glyph_brush", + "log", + "wgpu", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.0", + "windows_i686_gnu 0.42.0", + "windows_i686_msvc 0.42.0", + "windows_x86_64_gnu 0.42.0", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "x11-dl" +version = "2.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1536d6965a5d4e573c7ef73a2c15ebcd0b2de3347bdf526c34c297c00ac40f0" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xcursor" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom", +] + +[[package]] +name = "xdg" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4583db5cbd4c4c0303df2d15af80f0539db703fa1c68802d4cbbd2dd0f88f6" +dependencies = [ + "dirs", +] + +[[package]] +name = "xi-unicode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + +[[package]] +name = "xkbcommon" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbee136714379ab22da0280207fdb7f47e0bb940adea97731b65598b8c7a92e" +dependencies = [ + "libc", + "memmap2 0.5.8", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "xmlparser" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" diff --git a/applets/cosmic-applet-workspaces/Cargo.toml b/applets/cosmic-applet-workspaces/Cargo.toml index 1371d78c..9cf16590 100644 --- a/applets/cosmic-applet-workspaces/Cargo.toml +++ b/applets/cosmic-applet-workspaces/Cargo.toml @@ -1,30 +1,33 @@ [package] name = "cosmic-applet-workspaces" version = "0.1.0" +authors = ["Ashley Wulber "] edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +libcosmic = { git = "https://github.com/pop-os/libcosmic/", branch = "sctk-cosmic-design-system", default-features = false, features = ["wayland", "applet"] } +cosmic-panel-config = {git = "https://github.com/pop-os/cosmic-panel", default-features = false } +iced_sctk = { git = "https://github.com/pop-os/iced-sctk" } +sctk = { package = "smithay-client-toolkit", git = "https://github.com/Smithay/client-toolkit", ersion = "0.1.0-beta.13" } cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", default-features = false, features = ["client"] } -cosmic-panel-config = { git = "https://github.com/pop-os/cosmic-panel", features = ["gtk4"] } -cascade = "1.0.0" -gtk4 = { git = "https://github.com/gtk-rs/gtk4-rs", features = ["v4_4"] } -adw = { git = "https://gitlab.gnome.org/World/Rust/libadwaita-rs", package = "libadwaita"} -libcosmic = { git = "https://github.com/pop-os/libcosmic", default-features = false } -once_cell = "1.9.0" +wayland-backend = {version = "0.1.0-beta.13", features = ["client_system"]} +wayland-client = {version = "0.30.0-beta.13"} +calloop = "0.10.1" +nix = "0.26.1" +log = "0.4" pretty_env_logger = "0.4" -anyhow = "1.0.50" +once_cell = "1.9" +futures = "0.3.21" +xdg = "2.4.0" +anyhow = "1.0" +# Application i18n i18n-embed = { version = "0.13.4", features = ["fluent-system", "desktop-requester"] } i18n-embed-fl = "0.6.4" rust-embed = "6.3.0" -wayland-backend = { git = "https://github.com/Smithay/wayland-rs", version = "0.1.0-beta.9"} -wayland-client = { git = "https://github.com/Smithay/wayland-rs", version = "0.30.0-beta.9"} -calloop = "*" -nix = "*" -log = "0.4" -itertools = "0.10" -[build-dependencies] -gio = "0.15.10" +[patch.crates-io] +wayland-protocols = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} +wayland-sys = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} +wayland-backend = { git = "https://github.com/smithay/wayland-rs", version = "0.1.0-beta.13"} +wayland-scanner = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} +wayland-client = { git = "https://github.com/smithay/wayland-rs", version = "0.30.0-beta.13"} diff --git a/applets/cosmic-applet-workspaces/build.rs b/applets/cosmic-applet-workspaces/build.rs deleted file mode 100644 index b589a5d8..00000000 --- a/applets/cosmic-applet-workspaces/build.rs +++ /dev/null @@ -1,17 +0,0 @@ -use std::process::Command; - -fn main() { - if let Some(output) = Command::new("git") - .args(&["rev-parse", "HEAD"]) - .output() - .ok() - { - let git_hash = String::from_utf8(output.stdout).unwrap(); - println!("cargo:rustc-env=GIT_HASH={}", git_hash); - } - gio::compile_resources( - "data/resources", - "data/resources/resources.gresource.xml", - "compiled.gresource", - ); -} diff --git a/applets/cosmic-applet-workspaces/src/colors.rs b/applets/cosmic-applet-workspaces/src/colors.rs new file mode 100644 index 00000000..b9909913 --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/colors.rs @@ -0,0 +1,53 @@ +use std::{ + collections::HashMap, + fs::File, + io::{BufRead, BufReader}, + path::PathBuf, +}; + +fn get_default_color(names: &[&str], is_dark: bool) -> HashMap { + let css = if is_dark { + adw_user_colors_lib::colors::ColorOverrides::dark_default().as_css() + } else { + adw_user_colors_lib::colors::ColorOverrides::light_default().as_css() + }; + names + .iter() + .filter_map(|name| { + let window_bg_color_pattern = &format!("@define-color {name}"); + css.rfind(window_bg_color_pattern) + .and_then(|i| css.get(i + window_bg_color_pattern.len()..)) + .and_then(|color_str| { + csscolorparser::parse(&color_str.trim().replace(";", "")).ok() + }) + .map(|c| (name.to_string(), c.to_array())) + }) + .collect() +} + +fn get_colors(names: &[&str], path: &PathBuf) -> HashMap { + let file = match File::open(path) { + Ok(f) => f, + _ => return Default::default(), + }; + + BufReader::new(file) + .lines() + .filter_map(|l| l.ok()) + .filter_map(|line| { + names.iter().find_map(|name| { + line.rfind(&format!("@define-color {name}")) + .map(|i| (name, i)) + .and_then(|(name, i)| { + line.get(i + format!("@define-color {name}").len()..) + .map(|s| (name, s)) + .and_then(|(name, color_str)| { + csscolorparser::parse(&color_str.trim().replace(";", "")) + .ok() + .map(|c| (name.to_string(), c.to_array())) + }) + }) + }) + }) + .collect() +} diff --git a/applets/cosmic-applet-workspaces/src/components/app.rs b/applets/cosmic-applet-workspaces/src/components/app.rs new file mode 100644 index 00000000..35f9f914 --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/components/app.rs @@ -0,0 +1,210 @@ +use std::{cmp::Ordering, env}; + +use calloop::channel::SyncSender; +use cosmic::iced::alignment::{Horizontal, Vertical}; +use cosmic::iced::mouse::{self, ScrollDelta}; +use cosmic::iced::widget::{column, container, row, text}; +use cosmic::iced::{ + executor, subscription, widget::button, window, Application, Command, Event::Mouse, Length, + Settings, Subscription, +}; +use cosmic::iced_style::application::{self, Appearance}; +use cosmic::theme::Button; +use cosmic::{Element, Theme}; +use cosmic_panel_config::PanelAnchor; +use cosmic_protocols::workspace::v1::client::zcosmic_workspace_handle_v1; +use iced_sctk::application::SurfaceIdWrapper; +use iced_sctk::command::platform_specific::wayland::window::SctkWindowSettings; +use iced_sctk::settings::InitialSurface; +use iced_sctk::{commands, Color}; +use wayland_backend::client::ObjectId; + +use crate::config; +use crate::wayland::{WorkspaceEvent, WorkspaceList}; +use crate::wayland_subscription::{workspaces, WorkspacesUpdate}; + +pub fn run() -> cosmic::iced::Result { + let mut settings = Settings::default(); + settings.initial_surface = InitialSurface::XdgWindow(SctkWindowSettings { + iced_settings: cosmic::iced_native::window::Settings { + size: (32, 32), + ..Default::default() + }, + ..Default::default() + }); + IcedWorkspacesApplet::run(settings) +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Layout { + Row, + Column, +} + +struct IcedWorkspacesApplet { + theme: Theme, + workspaces: WorkspaceList, + workspace_tx: Option>, + layout: Layout, +} + +#[derive(Debug, Clone)] +enum Message { + WorkspaceUpdate(WorkspacesUpdate), + WorkspacePressed(ObjectId), + WheelScrolled(ScrollDelta), + Errored, +} + +impl Application for IcedWorkspacesApplet { + type Message = Message; + type Theme = Theme; + type Executor = executor::Default; + type Flags = (); + + fn new(_flags: ()) -> (Self, Command) { + ( + IcedWorkspacesApplet { + layout: match env::var("COSMIC_PANEL_ANCHOR") + .ok() + .and_then(|anchor| anchor.parse::().ok()) + .unwrap_or_default() + { + PanelAnchor::Left | PanelAnchor::Right => Layout::Column, + PanelAnchor::Top | PanelAnchor::Bottom => Layout::Row, + }, + theme: Default::default(), + workspaces: Vec::new(), + workspace_tx: Default::default(), + }, + Command::none(), + ) + } + + fn title(&self) -> String { + config::APP_ID.to_string() + } + + fn update(&mut self, message: Message) -> Command { + match message { + Message::WorkspaceUpdate(msg) => match msg { + WorkspacesUpdate::Workspaces(mut list) => { + list.retain(|w| { + !matches!(w.1, Some(zcosmic_workspace_handle_v1::State::Hidden)) + }); + list.sort_by(|a, b| match a.0.len().cmp(&b.0.len()) { + Ordering::Equal => a.0.cmp(&b.0), + Ordering::Less => Ordering::Less, + Ordering::Greater => Ordering::Greater, + }); + self.workspaces = list; + let unit = 32; + let (w, h) = match self.layout { + Layout::Row => (unit * self.workspaces.len() as u32, unit), + Layout::Column => (unit, unit * self.workspaces.len() as u32), + }; + return commands::window::resize_window(window::Id::new(0), w, h); + } + WorkspacesUpdate::Started(tx) => { + self.workspace_tx.replace(tx); + } + WorkspacesUpdate::Errored => { + // TODO + } + }, + Message::WorkspacePressed(id) => { + if let Some(tx) = self.workspace_tx.as_mut() { + let _ = tx.try_send(WorkspaceEvent::Activate(id)); + } + } + Message::WheelScrolled(delta) => { + let delta = match delta { + ScrollDelta::Lines { x, y } => x + y, + ScrollDelta::Pixels { x, y } => x + y, + } as f64; + if let Some(tx) = self.workspace_tx.as_mut() { + let _ = tx.try_send(WorkspaceEvent::Scroll(delta)); + } + } + Message::Errored => {} + } + Command::none() + } + + fn view(&self, _id: SurfaceIdWrapper) -> Element { + let buttons = self + .workspaces + .iter() + .filter_map(|w| { + let btn = button( + text(w.0.clone()) + .horizontal_alignment(Horizontal::Center) + .vertical_alignment(Vertical::Center) + .width(Length::Fill) + .height(Length::Fill), + ) + .width(Length::Fill) + .height(Length::Fill) + .on_press(Message::WorkspacePressed(w.2.clone())) + .padding(0); + Some( + btn.style(match w.1 { + Some(zcosmic_workspace_handle_v1::State::Active) => Button::Primary, + Some(zcosmic_workspace_handle_v1::State::Urgent) => Button::Destructive, + None => Button::Secondary, + _ => return None, + }) + .into(), + ) + }) + .collect(); + let layout_section: Element<_> = match self.layout { + Layout::Row => row(buttons) + .width(Length::Fill) + .height(Length::Fill) + .padding(0) + .into(), + Layout::Column => column(buttons) + .width(Length::Fill) + .height(Length::Fill) + .padding(0) + .into(), + }; + + container(layout_section) + .width(Length::Fill) + .height(Length::Fill) + .padding(0) + .into() + } + + fn subscription(&self) -> Subscription { + Subscription::batch( + vec![ + workspaces(0).map(|(_, msg)| Message::WorkspaceUpdate(msg)), + subscription::events_with(|e, _| match e { + Mouse(mouse::Event::WheelScrolled { delta }) => { + Some(Message::WheelScrolled(delta)) + } + _ => None, + }), + ] + .into_iter(), + ) + } + + fn theme(&self) -> Theme { + self.theme + } + + fn close_requested(&self, _id: iced_sctk::application::SurfaceIdWrapper) -> Self::Message { + unimplemented!() + } + + fn style(&self) -> ::Style { + ::Style::Custom(|theme| Appearance { + background_color: Color::from_rgba(0.0, 0.0, 0.0, 0.0), + text_color: theme.cosmic().on_bg_color().into(), + }) + } +} diff --git a/applets/cosmic-applet-workspaces/src/components/mod.rs b/applets/cosmic-applet-workspaces/src/components/mod.rs new file mode 100644 index 00000000..309be628 --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/components/mod.rs @@ -0,0 +1 @@ +pub mod app; diff --git a/applets/cosmic-applet-workspaces/src/config.rs b/applets/cosmic-applet-workspaces/src/config.rs new file mode 100644 index 00000000..cdf393ab --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/config.rs @@ -0,0 +1,3 @@ +pub const APP_ID: &str = "com.system76.CosmicWorkspacesApplet"; +pub const PROFILE: &str = ""; +pub const VERSION: &str = "0.1.0"; diff --git a/applets/cosmic-applet-workspaces/src/localize.rs b/applets/cosmic-applet-workspaces/src/localize.rs index efb92aa4..baa05d0d 100644 --- a/applets/cosmic-applet-workspaces/src/localize.rs +++ b/applets/cosmic-applet-workspaces/src/localize.rs @@ -36,3 +36,12 @@ macro_rules! fl { pub fn localizer() -> Box { Box::from(DefaultLocalizer::new(&*LANGUAGE_LOADER, &Localizations)) } + +pub fn localize() { + let localizer = localizer(); + let requested_languages = i18n_embed::DesktopLanguageRequester::requested_languages(); + + if let Err(error) = localizer.select(&requested_languages) { + eprintln!("Error while loading language for App List {}", error); + } +} diff --git a/applets/cosmic-applet-workspaces/src/main.rs b/applets/cosmic-applet-workspaces/src/main.rs index 8dfa3ce1..f213b14c 100644 --- a/applets/cosmic-applet-workspaces/src/main.rs +++ b/applets/cosmic-applet-workspaces/src/main.rs @@ -1,76 +1,28 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use calloop::channel::SyncSender; -use gtk4::{ - gdk::Display, - gio::{self, ApplicationFlags}, - glib::{self, MainContext, Priority}, - prelude::*, - CssProvider, StyleContext, -}; -use once_cell::sync::OnceCell; -use utils::WorkspaceEvent; -use window::CosmicWorkspacesWindow; - +mod components; +#[rustfmt::skip] +mod config; mod localize; -mod utils; mod wayland; -mod wayland_source; -mod window; -mod workspace_button; -mod workspace_list; -mod workspace_object; +mod wayland_subscription; -const ID: &str = "com.system76.CosmicAppletWorkspaces"; -static TX: OnceCell> = OnceCell::new(); +use config::APP_ID; +use log::info; -pub fn localize() { - let localizer = crate::localize::localizer(); - let requested_languages = i18n_embed::DesktopLanguageRequester::requested_languages(); +use localize::localize; - if let Err(error) = localizer.select(&requested_languages) { - eprintln!("Error while loading language for App List {}", error); - } -} - -fn load_css() { - let provider = CssProvider::new(); - provider.load_from_resource("/com/System76/CosmicAppletWorkspaces/style.css"); - - StyleContext::add_provider_for_display( - &Display::default().unwrap(), - &provider, - gtk4::STYLE_PROVIDER_PRIORITY_APPLICATION, - ); -} - -fn main() { - let _monitors = libcosmic::init(); +use crate::{ + components::app, + config::{PROFILE, VERSION}, +}; +fn main() -> cosmic::iced::Result { // Initialize logger pretty_env_logger::init(); - glib::set_application_name(ID); + info!("Iced Workspaces Applet ({})", APP_ID); + info!("Version: {} ({})", VERSION, PROFILE); + // Prepare i18n localize(); - gio::resources_register_include!("compiled.gresource").unwrap(); - let app = gtk4::Application::new(None, ApplicationFlags::default()); - - app.connect_activate(|app| { - load_css(); - let (tx, rx) = MainContext::channel(Priority::default()); - - let wayland_tx = wayland::spawn_workspaces(tx.clone()); - let window = CosmicWorkspacesWindow::new(app); - - TX.set(wayland_tx).unwrap(); - - rx.attach(None, glib::clone!(@weak window => @default-return glib::prelude::Continue(true), move |workspace_event| { - window.set_workspaces(workspace_event); - glib::prelude::Continue(true) - })); - - window.show(); - }); - app.run(); + app::run() } diff --git a/applets/cosmic-applet-workspaces/src/meson.build b/applets/cosmic-applet-workspaces/src/meson.build new file mode 100644 index 00000000..2fa8e681 --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/meson.build @@ -0,0 +1,53 @@ +global_conf = configuration_data() +global_conf.set_quoted('APP_ID', application_id) +global_conf.set_quoted('PROFILE', profile) +global_conf.set_quoted('VERSION', version + version_suffix) +config = configure_file( + input: 'config.rs.in', + output: 'config.rs', + configuration: global_conf +) +# Copy the config.rs output to the source directory. +run_command( + 'cp', + meson.project_build_root() / 'src' / 'config.rs', + meson.project_source_root() / 'src' / 'config.rs', + check: true +) + +cargo_options = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ] +cargo_options += [ '--target-dir', meson.project_build_root() / 'src' ] + +if get_option('profile') == 'default' + cargo_options += [ '--release' ] + rust_target = 'release' + message('Building in release mode') +else + rust_target = 'debug' + message('Building in debug mode') +endif + +if get_option('vendor') == true + cargo_options += [ '--locked' ] + message('Building with vendoring') +endif + +cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ] + +cargo_build = custom_target( + 'cargo-build', + build_by_default: true, + build_always_stale: true, + output: meson.project_name(), + console: true, + install: true, + install_dir: bindir, + command: [ + 'env', + cargo_env, + cargo, 'build', + cargo_options, + '&&', + 'cp', 'src' / rust_target / meson.project_name(), '@OUTPUT@', + ] +) diff --git a/applets/cosmic-applet-workspaces/src/utils.rs b/applets/cosmic-applet-workspaces/src/utils.rs deleted file mode 100644 index 0b0db142..00000000 --- a/applets/cosmic-applet-workspaces/src/utils.rs +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use std::path::PathBuf; - -use gtk4::glib; -use std::future::Future; - -#[derive(Debug, Clone)] -pub enum WorkspaceEvent { - Activate(String), - Scroll(f64), -} - -pub fn data_path() -> PathBuf { - let mut path = glib::user_data_dir(); - path.push(crate::ID); - std::fs::create_dir_all(&path).expect("Could not create directory."); - path.push("data.json"); - path -} - -pub fn thread_context() -> glib::MainContext { - glib::MainContext::thread_default().unwrap_or_else(|| { - let ctx = glib::MainContext::new(); - ctx - }) -} - -pub fn block_on(future: F) -> F::Output -where - F: Future, -{ - let ctx = thread_context(); - ctx.with_thread_default(|| ctx.block_on(future)).unwrap() -} diff --git a/applets/cosmic-applet-workspaces/src/wayland.rs b/applets/cosmic-applet-workspaces/src/wayland.rs index cafa588b..2debc4e6 100644 --- a/applets/cosmic-applet-workspaces/src/wayland.rs +++ b/applets/cosmic-applet-workspaces/src/wayland.rs @@ -1,4 +1,3 @@ -use crate::{utils::WorkspaceEvent, wayland_source::WaylandSource}; use calloop::channel::*; use cosmic_panel_config::CosmicPanelOuput; use cosmic_protocols::workspace::v1::client::{ @@ -6,19 +5,28 @@ use cosmic_protocols::workspace::v1::client::{ zcosmic_workspace_handle_v1::{self, ZcosmicWorkspaceHandleV1}, zcosmic_workspace_manager_v1::{self, ZcosmicWorkspaceManagerV1}, }; -use gtk4::glib; -use std::{env, os::unix::net::UnixStream, path::PathBuf, time::Duration}; +use futures::{channel::mpsc, executor::block_on, SinkExt}; +use sctk::event_loop::WaylandSource; +use std::{env, os::unix::net::UnixStream, path::PathBuf, str::FromStr, time::Duration}; +use wayland_backend::client::ObjectId; use wayland_client::{ event_created_child, protocol::{ wl_output::{self, WlOutput}, wl_registry::{self, WlRegistry}, }, - ConnectError, + ConnectError, Proxy, }; use wayland_client::{Connection, Dispatch, QueueHandle}; -pub fn spawn_workspaces(tx: glib::Sender) -> SyncSender { +#[derive(Debug, Clone)] +pub enum WorkspaceEvent { + Activate(ObjectId), + Scroll(f64), +} +pub type WorkspaceList = Vec<(String, Option, ObjectId)>; + +pub fn spawn_workspaces(tx: mpsc::Sender) -> SyncSender { let (workspaces_tx, workspaces_rx) = calloop::channel::sync_channel(100); if let Ok(Ok(conn)) = std::env::var("WAYLAND_DISPLAY") @@ -36,13 +44,11 @@ pub fn spawn_workspaces(tx: glib::Sender) -> SyncSender { std::thread::spawn(move || { let output = std::env::var("COSMIC_PANEL_OUTPUT") .ok() - .and_then(|output| match output.parse::() { - Ok(CosmicPanelOuput::Name(n)) => Some(n), - // TODO handle Active & panic if the space is still configured for All instead of being assigned a named output - _ => Some("".to_string()), + .map(|output_str| match CosmicPanelOuput::from_str(&output_str) { + Ok(CosmicPanelOuput::Name(name)) => name, + _ => "".to_string(), }) .unwrap_or_default(); - let mut event_loop = calloop::EventLoop::::try_new().unwrap(); let loop_handle = event_loop.handle(); let event_queue = conn.new_event_queue::(); @@ -70,11 +76,9 @@ pub fn spawn_workspaces(tx: glib::Sender) -> SyncSender { loop_handle .insert_source(workspaces_rx, |e, _, state| match e { Event::Msg(WorkspaceEvent::Activate(id)) => { - if let Some(w) = state - .workspace_groups - .iter() - .find_map(|g| g.workspaces.iter().find(|w| w.name == id)) - { + if let Some(w) = state.workspace_groups.iter().find_map(|g| { + g.workspaces.iter().find(|w| w.workspace_handle.id() == id) + }) { w.workspace_handle.activate(); state.workspace_manager.as_ref().unwrap().commit(); } @@ -141,7 +145,7 @@ pub struct State { outputs_to_handle: Option>, wm_name: Option<(u32, WlRegistry)>, running: bool, - tx: glib::Sender, + tx: mpsc::Sender, configured_output: String, expected_output: Option, workspace_manager: Option, @@ -150,20 +154,30 @@ pub struct State { impl State { // XXX - pub fn workspace_list(&self) -> impl Iterator + '_ { + pub fn workspace_list( + &self, + ) -> Vec<(String, Option, ObjectId)> { self.workspace_groups .iter() .filter_map(|g| { - if g.output == self.expected_output { + // TODO remove none check when workspace groups receive output event + if g.output.is_none() || g.output == self.expected_output { Some(g.workspaces.iter().map(|w| { ( w.name.clone(), match &w.states { - x if x.contains(&zcosmic_workspace_handle_v1::State::Active) => 0, - x if x.contains(&zcosmic_workspace_handle_v1::State::Urgent) => 1, - x if x.contains(&zcosmic_workspace_handle_v1::State::Hidden) => 2, - _ => 3, + x if x.contains(&zcosmic_workspace_handle_v1::State::Active) => { + Some(zcosmic_workspace_handle_v1::State::Active) + } + x if x.contains(&zcosmic_workspace_handle_v1::State::Urgent) => { + Some(zcosmic_workspace_handle_v1::State::Urgent) + } + x if x.contains(&zcosmic_workspace_handle_v1::State::Hidden) => { + Some(zcosmic_workspace_handle_v1::State::Hidden) + } + _ => None, }, + w.workspace_handle.id(), ) })) } else { @@ -171,6 +185,7 @@ impl State { } }) .flatten() + .collect() } } @@ -182,14 +197,13 @@ struct WorkspaceGroup { } #[derive(Debug, Clone)] -struct Workspace { +pub struct Workspace { workspace_handle: ZcosmicWorkspaceHandleV1, name: String, coordinates: Vec, states: Vec, } - impl Dispatch for State { fn event( state: &mut Self, @@ -256,13 +270,14 @@ impl Dispatch for State { w1.coordinates .iter() .zip(w2.coordinates.iter()) + .rev() .skip_while(|(coord1, coord2)| coord1 == coord2) .next() .map(|(coord1, coord2)| coord1.cmp(coord2)) .unwrap_or(std::cmp::Ordering::Equal) }); } - let _ = state.tx.send(state.clone()); + let _ = block_on(state.tx.send(state.workspace_list())); } zcosmic_workspace_manager_v1::Event::Finished => { state.workspace_manager.take(); @@ -414,7 +429,7 @@ impl Dispatch for State { wl_output::Event::Name { name } if name == state.configured_output => { state.expected_output.replace(o.clone()); // Necessary bc often the output is handled after the workspaces - let _ = state.tx.send(state.clone()); + let _ = block_on(state.tx.send(state.workspace_list())); } wl_output::Event::Done => { let outputs_to_handle = state.outputs_to_handle.as_mut().unwrap(); @@ -430,4 +445,4 @@ impl Dispatch for State { _ => {} // ignored } } -} \ No newline at end of file +} diff --git a/applets/cosmic-applet-workspaces/src/wayland_source.rs b/applets/cosmic-applet-workspaces/src/wayland_source.rs deleted file mode 100644 index c085517c..00000000 --- a/applets/cosmic-applet-workspaces/src/wayland_source.rs +++ /dev/null @@ -1,219 +0,0 @@ -//! Utilities for using an [`EventQueue`] from wayland-client with an event loop that performs polling with -//! [`calloop`](https://crates.io/crates/calloop). - -use std::{io, os::unix::prelude::{RawFd, AsRawFd}}; - -use calloop::{ - generic::Generic, EventSource, InsertError, Interest, LoopHandle, Mode, Poll, PostAction, - Readiness, RegistrationToken, Token, TokenFactory, -}; -use nix::errno::Errno; -use wayland_backend::client::{ReadEventsGuard, WaylandError}; -use wayland_client::{DispatchError, EventQueue}; - -/// An adapter to insert an [`EventQueue`] into a calloop [`EventLoop`](calloop::EventLoop). -/// -/// This type implements [`EventSource`] which generates an event whenever events on the display need to be -/// dispatched. The event queue available in the callback calloop registers may be used to dispatch pending -/// events using [`EventQueue::dispatch_pending`]. -/// -/// [`WaylandSource::insert`] can be used to insert this source into an event loop and automatically dispatch -/// pending events on the display. -#[derive(Debug)] -pub struct WaylandSource { - queue: EventQueue, - fd: Generic, - read_guard: Option, -} - -impl WaylandSource { - /// Wrap an [`EventQueue`] as a [`WaylandSource`]. - pub fn new(queue: EventQueue) -> Result, WaylandError> { - let guard = queue.prepare_read()?; - let fd = Generic::new(guard.connection_fd().as_raw_fd(), Interest::READ, Mode::Level); - drop(guard); - - Ok(WaylandSource { - queue, - fd, - read_guard: None, - }) - } - - /// Access the underlying event queue - /// - /// Note that you should be careful when interacting with it if you invoke methods that - /// interact with the wayland socket (such as `dispatch()` or `prepare_read()`). These may - /// interfere with the proper waking up of this event source in the event loop. - pub fn queue(&mut self) -> &mut EventQueue { - &mut self.queue - } - - /// Insert this source into the given event loop. - /// - /// This adapter will pass the event loop's shared data as the `D` type for the event loop. - pub fn insert(self, handle: LoopHandle) -> Result> - where - D: 'static, - { - handle.insert_source(self, |_, queue, data| queue.dispatch_pending(data)) - } -} - -impl EventSource for WaylandSource { - type Event = (); - - /// The underlying event queue. - /// - /// You should call [`EventQueue::dispatch_pending`] inside your callback using this queue. - type Metadata = EventQueue; - type Ret = Result; - type Error = calloop::Error; - - fn process_events( - &mut self, - readiness: Readiness, - token: Token, - mut callback: F, - ) -> Result - where - F: FnMut(Self::Event, &mut Self::Metadata) -> Self::Ret, - { - let queue = &mut self.queue; - let read_guard = &mut self.read_guard; - - let action = self.fd.process_events(readiness, token, |_, _| { - // 1. read events from the socket if any are available - if let Some(guard) = read_guard.take() { - // might be None if some other thread read events before us, concurrently - if let Err(WaylandError::Io(err)) = guard.read() { - if err.kind() != io::ErrorKind::WouldBlock { - return Err(err); - } - } - } - - // 2. dispatch any pending events in the queue - // This is done to ensure we are not waiting for messages that are already in the buffer. - Self::loop_callback_pending(queue, &mut callback)?; - *read_guard = Some(Self::prepare_read(queue)?); - - // 3. Once dispatching is finished, flush the responses to the compositor - if let Err(WaylandError::Io(e)) = queue.flush() { - if e.kind() != io::ErrorKind::WouldBlock { - // in case of error, forward it and fast-exit - return Err(e); - } - // WouldBlock error means the compositor could not process all our messages - // quickly. Either it is slowed down or we are a spammer. - // Should not really happen, if it does we do nothing and will flush again later - } - - Ok(PostAction::Continue) - })?; - - Ok(action) - } - - fn register( - &mut self, - poll: &mut Poll, - token_factory: &mut TokenFactory, - ) -> calloop::Result<()> { - self.fd.register(poll, token_factory) - } - - fn reregister( - &mut self, - poll: &mut Poll, - token_factory: &mut TokenFactory, - ) -> calloop::Result<()> { - self.fd.reregister(poll, token_factory) - } - - fn unregister(&mut self, poll: &mut Poll) -> calloop::Result<()> { - self.fd.unregister(poll) - } - - fn pre_run(&mut self, mut callback: F) -> calloop::Result<()> - where - F: FnMut((), &mut Self::Metadata) -> Self::Ret, - { - debug_assert!(self.read_guard.is_none()); - - // flush the display before starting to poll - if let Err(WaylandError::Io(err)) = self.queue.flush() { - if err.kind() != io::ErrorKind::WouldBlock { - // in case of error, don't prepare a read, if the error is persistent, it'll trigger in other - // wayland methods anyway - log::error!("Error trying to flush the wayland display: {}", err); - return Err(err.into()); - } - } - - // ensure we are not waiting for messages that are already in the buffer. - Self::loop_callback_pending(&mut self.queue, &mut callback)?; - self.read_guard = Some(Self::prepare_read(&mut self.queue)?); - - Ok(()) - } - - fn post_run(&mut self, _: F) -> calloop::Result<()> - where - F: FnMut((), &mut Self::Metadata) -> Self::Ret, - { - // Drop implementation of ReadEventsGuard will do cleanup - self.read_guard.take(); - Ok(()) - } -} - -impl WaylandSource { - /// Loop over the callback until all pending messages have been dispatched. - fn loop_callback_pending(queue: &mut EventQueue, callback: &mut F) -> io::Result<()> - where - F: FnMut((), &mut EventQueue) -> Result, - { - // Loop on the callback until no pending events are left. - loop { - match callback((), queue) { - // No more pending events. - Ok(0) => break Ok(()), - - Ok(_) => continue, - - Err(DispatchError::Backend(WaylandError::Io(err))) => { - return Err(err); - } - - Err(DispatchError::Backend(WaylandError::Protocol(err))) => { - log::error!("Protocol error received on display: {}", err); - - break Err(Errno::EPROTO.into()); - } - - Err(DispatchError::BadMessage { sender_id, interface, opcode }) => { - log::error!( - "Bad message on interface \"{}\": (opcode: {}, sender_id: {:?})", - interface, - opcode, - sender_id, - ); - - break Err(Errno::EPROTO.into()); - } - } - } - } - - fn prepare_read(queue: &mut EventQueue) -> io::Result { - queue.prepare_read().map_err(|err| match err { - WaylandError::Io(err) => err, - - WaylandError::Protocol(err) => { - log::error!("Protocol error received on display: {}", err); - Errno::EPROTO.into() - } - }) - } -} diff --git a/applets/cosmic-applet-workspaces/src/wayland_subscription.rs b/applets/cosmic-applet-workspaces/src/wayland_subscription.rs new file mode 100644 index 00000000..3fe52897 --- /dev/null +++ b/applets/cosmic-applet-workspaces/src/wayland_subscription.rs @@ -0,0 +1,72 @@ +use crate::wayland::{self, WorkspaceEvent, WorkspaceList}; +use calloop::channel::SyncSender; +use futures::{channel::mpsc, StreamExt}; +use std::hash::Hash; + +#[derive(Debug, Clone)] +pub enum WorkspacesUpdate { + Workspaces(WorkspaceList), + Started(SyncSender), + Errored, +} + +pub fn workspaces( + id: I, +) -> cosmic::iced::Subscription<(I, WorkspacesUpdate)> { + use cosmic::iced::subscription; + + subscription::unfold(id, State::Ready, move |state| _workspaces(id, state)) +} + +async fn _workspaces(id: I, state: State) -> (Option<(I, WorkspacesUpdate)>, State) { + match state { + State::Ready => { + if let Ok(watcher) = WorkspacesWatcher::new() { + ( + Some((id, WorkspacesUpdate::Started(watcher.get_sender()))), + State::Waiting(watcher), + ) + } else { + (Some((id, WorkspacesUpdate::Errored)), State::Error) + } + } + State::Waiting(mut t) => { + if let Some(w) = t.workspaces().await { + ( + Some((id, WorkspacesUpdate::Workspaces(w))), + State::Waiting(t), + ) + } else { + (Some((id, WorkspacesUpdate::Errored)), State::Error) + } + } + State::Error => cosmic::iced::futures::future::pending().await, + } +} + +pub enum State { + Ready, + Waiting(WorkspacesWatcher), + Error, +} + +pub struct WorkspacesWatcher { + rx: mpsc::Receiver, + tx: SyncSender, +} + +impl WorkspacesWatcher { + pub fn new() -> anyhow::Result { + let (tx, rx) = mpsc::channel(20); + let tx = wayland::spawn_workspaces(tx); + Ok(Self { tx, rx }) + } + + pub fn get_sender(&self) -> SyncSender { + self.tx.clone() + } + + pub async fn workspaces(&mut self) -> Option { + self.rx.next().await + } +} diff --git a/applets/cosmic-applet-workspaces/src/window/imp.rs b/applets/cosmic-applet-workspaces/src/window/imp.rs deleted file mode 100644 index 17364349..00000000 --- a/applets/cosmic-applet-workspaces/src/window/imp.rs +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use crate::workspace_list::WorkspaceList; -use gtk4::{glib, subclass::prelude::*}; -use once_cell::sync::OnceCell; - -// Object holding the state -#[derive(Default)] -pub struct CosmicWorkspacesWindow { - pub(super) inner: OnceCell, -} - -// The central trait for subclassing a GObject -#[glib::object_subclass] -impl ObjectSubclass for CosmicWorkspacesWindow { - // `NAME` needs to match `class` attribute of template - const NAME: &'static str = "CosmicWorkspacesWindow"; - type Type = super::CosmicWorkspacesWindow; - type ParentType = gtk4::ApplicationWindow; -} - -// Trait shared by all GObjects -impl ObjectImpl for CosmicWorkspacesWindow {} - -// Trait shared by all widgets -impl WidgetImpl for CosmicWorkspacesWindow {} - -// Trait shared by all windows -impl WindowImpl for CosmicWorkspacesWindow {} - -// Trait shared by all application -impl ApplicationWindowImpl for CosmicWorkspacesWindow {} diff --git a/applets/cosmic-applet-workspaces/src/window/mod.rs b/applets/cosmic-applet-workspaces/src/window/mod.rs deleted file mode 100644 index de1a8dc4..00000000 --- a/applets/cosmic-applet-workspaces/src/window/mod.rs +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use crate::{fl, wayland::State, workspace_list::WorkspaceList}; -use cascade::cascade; -use gtk4::{ - gio, - glib::{self, Object}, - prelude::*, - subclass::prelude::*, -}; - -mod imp; - -glib::wrapper! { - pub struct CosmicWorkspacesWindow(ObjectSubclass) - @extends gtk4::ApplicationWindow, gtk4::Window, gtk4::Widget, - @implements gio::ActionGroup, gio::ActionMap, gtk4::Accessible, gtk4::Buildable, - gtk4::ConstraintTarget, gtk4::Native, gtk4::Root, gtk4::ShortcutManager; -} - -impl CosmicWorkspacesWindow { - pub fn new(app: >k4::Application) -> Self { - let self_: Self = Object::new(&[("application", app)]) - .expect("Failed to create `CosmicWorkspacesWindow`."); - let imp = imp::CosmicWorkspacesWindow::from_instance(&self_); - - cascade! { - &self_; - ..set_width_request(1); - ..set_height_request(1); - ..set_decorated(false); - ..set_resizable(false); - ..set_title(Some(&fl!("cosmic-applet-workspaces"))); - ..add_css_class("transparent"); - }; - - let app_list = WorkspaceList::new(); - self_.set_child(Some(&app_list)); - imp.inner.set(app_list).unwrap(); - - self_ - } - - pub fn set_workspaces(&self, workspaces: State) { - let imp = imp::CosmicWorkspacesWindow::from_instance(&self); - imp.inner.get().unwrap().set_workspaces(workspaces); - } -} diff --git a/applets/cosmic-applet-workspaces/src/workspace_button/imp.rs b/applets/cosmic-applet-workspaces/src/workspace_button/imp.rs deleted file mode 100644 index 62eaf224..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_button/imp.rs +++ /dev/null @@ -1,25 +0,0 @@ -use gtk4::{glib, subclass::prelude::*, ToggleButton}; -use std::{cell::RefCell, rc::Rc}; - -// Object holding the state -#[derive(Default)] -pub struct WorkspaceButton { - pub button: Rc>, -} - -// The central trait for subclassing a GObject -#[glib::object_subclass] -impl ObjectSubclass for WorkspaceButton { - const NAME: &'static str = "WorkspaceButton"; - type Type = super::WorkspaceButton; - type ParentType = gtk4::Box; -} - -// Trait shared by all GObjects -impl ObjectImpl for WorkspaceButton {} - -// Trait shared by all widgets -impl WidgetImpl for WorkspaceButton {} - -// Trait shared by all buttons -impl BoxImpl for WorkspaceButton {} diff --git a/applets/cosmic-applet-workspaces/src/workspace_button/mod.rs b/applets/cosmic-applet-workspaces/src/workspace_button/mod.rs deleted file mode 100644 index 8ceb701a..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_button/mod.rs +++ /dev/null @@ -1,61 +0,0 @@ -mod imp; - -use crate::{utils::WorkspaceEvent, workspace_object::WorkspaceObject, TX}; -use glib::Object; -use gtk4::{glib, prelude::*, subclass::prelude::*, ToggleButton, Label, Align}; - -glib::wrapper! { - pub struct WorkspaceButton(ObjectSubclass) - @extends gtk4::Box, gtk4::Widget, - @implements gtk4::Accessible, gtk4::Actionable, gtk4::Buildable, gtk4::ConstraintTarget, gtk4::Orientable; -} - -impl WorkspaceButton { - pub fn new() -> Self { - let self_ = Object::new(&[]).expect("Failed to create `WorkspaceButton`."); - let imp = imp::WorkspaceButton::from_instance(&self_); - - let tb = ToggleButton::with_label(""); - self_.append(&tb); - self_.set_hexpand(true); - imp.button.replace(tb); - - self_.connect_parent_notify(|self_| { - if let Some(parent) = self_.parent() { - parent.set_hexpand(true); - } - }); - - self_ - } - - pub fn set_workspace_object(&self, obj: &WorkspaceObject) { - let imp = imp::WorkspaceButton::from_instance(&self); - let old_button = imp.button.take(); - self.remove(&old_button); - - let id = obj.id(); - let new_button = ToggleButton::new(); - new_button.set_hexpand(true); - - let label = Label::new(Some(&id)); - label.set_halign(Align::Center); - new_button.set_child(Some(&label)); - - if obj.active() == 1 { - new_button.add_css_class("alert"); - } else if obj.active() == 0 { - new_button.add_css_class("active"); - } else { - new_button.add_css_class("inactive"); - } - - self.append(&new_button); - new_button.connect_clicked(move |_| { - let id_clone = id.clone(); - let _ = TX.get().unwrap().send(WorkspaceEvent::Activate(id_clone)); - }); - - imp.button.replace(new_button); - } -} diff --git a/applets/cosmic-applet-workspaces/src/workspace_list/imp.rs b/applets/cosmic-applet-workspaces/src/workspace_list/imp.rs deleted file mode 100644 index 469ca126..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_list/imp.rs +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use gtk4::subclass::prelude::*; -use gtk4::{gio, glib}; -use gtk4::{Box, ListView}; -use once_cell::sync::OnceCell; - -#[derive(Debug, Default)] -pub struct WorkspaceList { - pub list_view: OnceCell, - pub model: OnceCell, -} - -#[glib::object_subclass] -impl ObjectSubclass for WorkspaceList { - const NAME: &'static str = "WorkspaceList"; - type Type = super::WorkspaceList; - type ParentType = Box; -} - -impl ObjectImpl for WorkspaceList {} - -impl WidgetImpl for WorkspaceList {} - -impl BoxImpl for WorkspaceList {} diff --git a/applets/cosmic-applet-workspaces/src/workspace_list/mod.rs b/applets/cosmic-applet-workspaces/src/workspace_list/mod.rs deleted file mode 100644 index e28ef4df..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_list/mod.rs +++ /dev/null @@ -1,137 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use std::cmp::Ordering; - -use crate::utils::WorkspaceEvent; -use crate::wayland::State; -use crate::workspace_button::WorkspaceButton; -use crate::workspace_object::WorkspaceObject; -use crate::TX; -use cascade::cascade; -use cosmic_panel_config::PanelAnchor; -use gtk4::builders::EventControllerScrollBuilder; -use gtk4::EventControllerScrollFlags; -use gtk4::Inhibit; -use gtk4::ListView; -use gtk4::SignalListItemFactory; -use gtk4::{gio, glib, prelude::*, subclass::prelude::*}; -use itertools::Itertools; - -mod imp; - -glib::wrapper! { - pub struct WorkspaceList(ObjectSubclass) - @extends gtk4::Widget, gtk4::Box, - @implements gtk4::Accessible, gtk4::Buildable, gtk4::ConstraintTarget, gtk4::Orientable; -} - -impl WorkspaceList { - pub fn new() -> Self { - let self_: WorkspaceList = glib::Object::new(&[]).expect("Failed to create WorkspaceList"); - let imp = imp::WorkspaceList::from_instance(&self_); - self_.layout(); - //dnd behavior is different for each type, as well as the data in the model - self_.setup_model(); - self_.setup_factory(); - self_ - } - - pub fn model(&self) -> &gio::ListStore { - // Get state - let imp = imp::WorkspaceList::from_instance(self); - imp.model.get().expect("Could not get model") - } - - fn layout(&self) { - let imp = imp::WorkspaceList::from_instance(self); - let anchor = std::env::var("COSMIC_PANEL_ANCHOR") - .ok() - .and_then(|anchor| anchor.parse::().ok()) - .unwrap_or_default(); - - let list_view = cascade! { - ListView::default(); - ..set_orientation(anchor.into()); - ..add_css_class("transparent"); - }; - self.append(&list_view); - - let flags = EventControllerScrollFlags::BOTH_AXES; - - let scroll_controller = EventControllerScrollBuilder::new() - .flags(flags.union(EventControllerScrollFlags::DISCRETE)) - .build(); - - scroll_controller.connect_scroll(|_, dx, dy| { - let _ = TX.get().unwrap().send(WorkspaceEvent::Scroll(dx + dy)); - Inhibit::default() - }); - - list_view.add_controller(&scroll_controller); - imp.list_view.set(list_view).unwrap(); - } - - pub fn set_workspaces(&self, workspaces: State) { - let imp = imp::WorkspaceList::from_instance(&self); - let model = imp.model.get().unwrap(); - - let model_len = model.n_items(); - let new_results: Vec = workspaces - .workspace_list() - .sorted_by(|a, b| { - match a.0.len().cmp(&b.0.len()) { - Ordering::Less => Ordering::Less, - Ordering::Equal => a.0.cmp(&b.0), - Ordering::Greater => Ordering::Greater, - } - }) - .filter_map(|w| { - // don't include hidden workspaces - if w.1 != 2 { - Some(WorkspaceObject::from_id_active(w.0, w.1).upcast()) - } else { - None - } - }) - .collect(); - model.splice(0, model_len, &new_results[..]); - } - - fn setup_model(&self) { - let imp = imp::WorkspaceList::from_instance(self); - let model = gio::ListStore::new(WorkspaceObject::static_type()); - - let selection_model = gtk4::NoSelection::new(Some(&model)); - - // Wrap model with selection and pass it to the list view - let list_view = imp.list_view.get().unwrap(); - list_view.set_model(Some(&selection_model)); - imp.model.set(model).expect("Could not set model"); - } - - fn setup_factory(&self) { - let imp = imp::WorkspaceList::from_instance(self); - let factory = SignalListItemFactory::new(); - let model = imp.model.get().expect("Failed to get saved app model."); - - factory.connect_setup(glib::clone!(@weak model => move |_, list_item| { - let workspace_button = WorkspaceButton::new(); - list_item.set_child(Some(&workspace_button)); - })); - factory.connect_bind(|_, list_item| { - let workspace_object = list_item - .item() - .expect("The item has to exist.") - .downcast::() - .expect("The item has to be a `WorkspaceObject`"); - let workspace_button = list_item - .child() - .expect("The list item child needs to exist.") - .downcast::() - .expect("The list item type needs to be `DockItem`"); - workspace_button.set_workspace_object(&workspace_object); - }); - // Set the factory of the list view - imp.list_view.get().unwrap().set_factory(Some(&factory)); - } -} diff --git a/applets/cosmic-applet-workspaces/src/workspace_object/imp.rs b/applets/cosmic-applet-workspaces/src/workspace_object/imp.rs deleted file mode 100644 index c9930794..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_object/imp.rs +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use std::cell::{Cell, RefCell}; - -use glib::{ParamFlags, ParamSpec, Value}; -use gtk4::gdk::glib::ParamSpecBoolean; -use gtk4::glib::{self, ParamSpecString, ParamSpecUInt}; -use gtk4::prelude::*; -use gtk4::subclass::prelude::*; -use once_cell::sync::Lazy; - -// Object holding the state -#[derive(Default)] -pub struct WorkspaceObject { - pub(crate) id: RefCell, - pub(crate) active: Cell, -} - -// The central trait for subclassing a GObject -#[glib::object_subclass] -impl ObjectSubclass for WorkspaceObject { - const NAME: &'static str = "WorkspaceObject"; - type Type = super::WorkspaceObject; - type ParentType = glib::Object; -} - -// Trait shared by all GObjects -impl ObjectImpl for WorkspaceObject { - fn properties() -> &'static [ParamSpec] { - static PROPERTIES: Lazy> = Lazy::new(|| { - vec![ - ParamSpecString::new( - // Name - "id", - // Nickname - "id", - // Short description - "id", - // Default value - None, - // The property can be read and written to - ParamFlags::READWRITE, - ), - ParamSpecUInt::new( - "active", - "active", - "Indicates whether workspace is active", - 0, - 4, - 0, - ParamFlags::READWRITE, - ), - ] - }); - PROPERTIES.as_ref() - } - - fn set_property(&self, _obj: &Self::Type, _id: usize, value: &Value, pspec: &ParamSpec) { - match pspec.name() { - "active" => { - self.active - .replace(value.get().expect("Value needs to be a boolean")); - } - "id" => { - self.id - .replace(value.get().expect("Value needs to be a boolean")); - } - _ => unimplemented!(), - } - } - - fn property(&self, _obj: &Self::Type, _id: usize, pspec: &ParamSpec) -> Value { - match pspec.name() { - "id" => self.id.borrow().to_value(), - "active" => self.active.get().to_value(), - _ => unimplemented!(), - } - } -} diff --git a/applets/cosmic-applet-workspaces/src/workspace_object/mod.rs b/applets/cosmic-applet-workspaces/src/workspace_object/mod.rs deleted file mode 100644 index 83a178ee..00000000 --- a/applets/cosmic-applet-workspaces/src/workspace_object/mod.rs +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: MPL-2.0-only - -use gtk4::{glib, subclass::prelude::*}; - -mod imp; - -glib::wrapper! { - pub struct WorkspaceObject(ObjectSubclass); -} - -impl WorkspaceObject { - pub fn new() -> Self { - glib::Object::new(&[]).unwrap() - } - - pub fn from_id_active(id: String, active: u32) -> Self { - glib::Object::new(&[("id", &id), ("active", &active)]).unwrap() - } - - pub fn id(&self) -> String { - imp::WorkspaceObject::from_instance(&self) - .id - .borrow() - .clone() - } - - pub fn active(&self) -> u32 { - imp::WorkspaceObject::from_instance(&self).active.get() - } -} - -#[derive(Clone, Debug, Default, glib::Boxed)] -#[boxed_type(name = "BoxedWorkspaceObject")] -pub struct BoxedWorkspaceObject(pub Option); diff --git a/debian/rules b/debian/rules index dbcdaf36..23331da9 100755 --- a/debian/rules +++ b/debian/rules @@ -14,6 +14,7 @@ override_dh_auto_clean: if test "${CLEAN}" = "1"; then \ cargo clean; \ cargo clean --manifest-path applets/cosmic-applet-graphics/Cargo.toml; \ + cargo clean --manifest-path applets/cosmic-applet-workspaces/Cargo.toml; \ fi if ! ischroot && test "${VENDOR}" = "1"; then \ @@ -28,10 +29,17 @@ override_dh_auto_clean: echo 'directory = "vendor"' >> .cargo/config; \ tar pcf vendor.tar vendor; \ rm -rf vendor; \ + cd ../..; \ + cd applets/cosmic-applet-workspaces/; \ + mkdir -p .cargo; \ + cargo vendor --sync Cargo.toml | head -n -1 > .cargo/config; \ + echo 'directory = "vendor"' >> .cargo/config; \ + tar pcf vendor.tar vendor; \ + rm -rf vendor; \ fi override_dh_auto_build: - just rootdir=$(DESTDIR) debug=$(DEBUG) vendor=$(VENDOR) all + just rootdir=$(DESTDIR) debug=$(DEBUG) vendor=$(VENDOR) build override_dh_auto_install: just rootdir=$(DESTDIR) install diff --git a/justfile b/justfile index 0932308e..5694e44c 100644 --- a/justfile +++ b/justfile @@ -26,11 +26,14 @@ time_id := 'com.system76.CosmicAppletTime' app_button_id := 'com.system76.CosmicPanelAppButton' workspaces_button_id := 'com.system76.CosmicPanelWorkspacesButton' -all: _extract_vendor +build: _extract_vendor #!/usr/bin/env bash pushd applets/cosmic-applet-graphics/ cargo build {{cargo_args}} popd + pushd applets/cosmic-applet-workspaces/ + cargo build {{cargo_args}} + popd cargo build {{cargo_args}} # Installs files into the system @@ -51,6 +54,7 @@ install: install -Dm0644 applets/cosmic-applet-battery/data/icons/{{battery_id}}.svg {{iconsdir}}/{{battery_id}}.svg install -Dm0644 applets/cosmic-applet-battery/data/{{battery_id}}.desktop {{sharedir}}/applications/{{battery_id}}.desktop install -Dm0755 target/release/cosmic-applet-battery {{bindir}}/cosmic-applet-battery + # network install -Dm0644 applets/cosmic-applet-network/data/icons/{{network_id}}.svg {{iconsdir}}/{{network_id}}.svg install -Dm0644 applets/cosmic-applet-network/data/{{network_id}}.desktop {{sharedir}}/applications/{{network_id}}.desktop @@ -66,11 +70,6 @@ install: install -Dm0644 applets/cosmic-applet-power/data/{{power_id}}.desktop {{sharedir}}/applications/{{power_id}}.desktop install -Dm0755 target/release/cosmic-applet-power {{bindir}}/cosmic-applet-power - # workspaces - install -Dm0644 applets/cosmic-applet-workspaces/data/icons/{{workspaces_id}}.svg {{iconsdir}}/{{workspaces_id}}.svg - install -Dm0644 applets/cosmic-applet-workspaces/data/{{workspaces_id}}.desktop {{sharedir}}/applications/{{workspaces_id}}.desktop - install -Dm0755 target/release/cosmic-applet-workspaces {{bindir}}/cosmic-applet-workspaces - # status area install -Dm0644 applets/cosmic-applet-status-area/data/icons/{{status_area_id}}.svg {{iconsdir}}/{{status_area_id}}.svg install -Dm0644 applets/cosmic-applet-status-area/data/{{status_area_id}}.desktop {{sharedir}}/applications/{{status_area_id}}.desktop @@ -97,6 +96,10 @@ install: install -Dm0644 applets/cosmic-applet-graphics/data/{{graphics_id}}.desktop {{sharedir}}/applications/{{graphics_id}}.desktop install -Dm0755 applets/cosmic-applet-graphics/target/release/cosmic-applet-graphics {{bindir}}/cosmic-applet-graphics + # workspaces + install -Dm0644 applets/cosmic-applet-workspaces/data/icons/{{workspaces_id}}.svg {{iconsdir}}/{{workspaces_id}}.svg + install -Dm0644 applets/cosmic-applet-workspaces/data/{{workspaces_id}}.desktop {{sharedir}}/applications/{{workspaces_id}}.desktop + install -Dm0755 applets/cosmic-applet-workspaces/target/release/cosmic-applet-workspaces {{bindir}}/cosmic-applet-workspaces # Extracts vendored dependencies if vendor=1 _extract_vendor: @@ -104,4 +107,5 @@ _extract_vendor: if test {{vendor}} = 1; then rm -rf vendor; tar pxf vendor.tar rm -rf applets/cosmic-applet-graphics/vendor; tar xf applets/cosmic-applet-graphics/vendor.tar --directory applets/cosmic-applet-graphics + rm -rf applets/cosmic-applet-workspaces/vendor; tar xf applets/cosmic-applet-workspaces/vendor.tar --directory applets/cosmic-applet-workspaces fi