From ce15eebdb898df3f179e27bd191d7b5155d95670 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Tue, 23 May 2023 14:05:32 -0400 Subject: [PATCH] wip: add subsection button for dock and panel --- Cargo.lock | 496 +++++++++++++++++++++++-------- app/Cargo.toml | 2 + app/src/app.rs | 9 +- app/src/main.rs | 7 + app/src/pages/desktop/mod.rs | 2 +- app/src/pages/desktop/options.rs | 73 ++++- app/src/pages/desktop/panel.rs | 33 ++ app/src/pages/mod.rs | 3 + app/src/widget/mod.rs | 19 ++ i18n/en/cosmic_settings.ftl | 12 +- i18n/fr/cosmic_settings.ftl | 2 +- i18n/pt/cosmic_settings.ftl | 2 +- i18n/pt_BR/cosmic_settings.ftl | 2 +- i18n/sv/cosmic_settings.ftl | 2 +- 14 files changed, 531 insertions(+), 133 deletions(-) create mode 100644 app/src/pages/desktop/panel.rs diff --git a/Cargo.lock b/Cargo.lock index b09701f..53a32df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -253,7 +253,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -270,7 +270,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -279,6 +279,17 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +[[package]] +name = "atomicwrites" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1163d9d7c51de51a2b79d6df5e8888d11e9df17c752ce4a285fb6ca1580734e" +dependencies = [ + "rustix", + "tempfile", + "windows-sys 0.48.0", +] + [[package]] name = "atspi" version = "0.10.1" @@ -335,9 +346,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "3f1e31e207a6b8fb791a38ea3105e6cb541f55e4d029902d3039a4ad07cc4105" [[package]] name = "bit-set" @@ -368,9 +379,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813" +checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] [[package]] name = "block" @@ -419,9 +442,9 @@ dependencies = [ [[package]] name = "bytecheck" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fe11640a23eb24562225322cd3e452b93a3d4091d62fab69c70542fcd17d1f" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -430,9 +453,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31225543cb46f81a7e224762764f4a6a0f097b1db0b175f69e8065efaa42de5" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" dependencies = [ "proc-macro2", "quote", @@ -456,7 +479,7 @@ checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -726,6 +749,29 @@ dependencies = [ "libc", ] +[[package]] +name = "cosmic-config" +version = "0.1.0" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" +dependencies = [ + "atomicwrites", + "cosmic-config-derive", + "dirs 5.0.1", + "iced_futures", + "notify", + "ron", + "serde", +] + +[[package]] +name = "cosmic-config-derive" +version = "0.1.0" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "cosmic-settings" version = "0.1.0" @@ -738,12 +784,14 @@ dependencies = [ "cosmic-settings-system", "cosmic-settings-time", "derive_setters", - "dirs", + "dirs 4.0.0", "downcast-rs", + "env_logger", "generator", "i18n-embed", "i18n-embed-fl", "libcosmic", + "log", "once_cell", "regex", "rkyv", @@ -809,9 +857,10 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-theme.git#a1258308a894c5c7bbe6e261271e8476d55955d3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "anyhow", + "cosmic-config", "csscolorparser", "directories", "lazy_static", @@ -1061,9 +1110,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -1075,7 +1124,7 @@ version = "4.0.1" source = "git+https://github.com/edfloreshz/directories-rs#6a6d83d853a35ee3273034215c4defaf61286fe5" dependencies = [ "anyhow", - "dirs-sys", + "dirs-sys 0.3.7", ] [[package]] @@ -1084,7 +1133,16 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -1098,6 +1156,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -1112,7 +1182,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -1217,7 +1287,20 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", ] [[package]] @@ -1330,13 +1413,25 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "filetime" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.2.16", + "windows-sys 0.48.0", +] + [[package]] name = "find-crate" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" dependencies = [ - "toml", + "toml 0.5.11", ] [[package]] @@ -1470,7 +1565,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -1501,7 +1596,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e61ac115df4632b592d36b71fda3c259f4c8061c70b7fa429bac145890e880" dependencies = [ - "dirs", + "dirs 4.0.0", "once_cell", "rust-ini", "thiserror", @@ -1530,6 +1625,21 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.28" @@ -1602,7 +1712,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -1867,24 +1977,30 @@ dependencies = [ ] [[package]] -name = "i18n-config" -version = "0.4.3" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d9f93ceee6543011739bc81699b5e0cf1f23f3a80364649b6d80de8636bc8df" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "i18n-config" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b987084cadad6e2f2b1e6ea62c44123591a3c044793a1beabf71a8356ea768d5" dependencies = [ "log", "serde", "serde_derive", "thiserror", - "toml", + "toml 0.7.3", "unic-langid", ] [[package]] name = "i18n-embed" -version = "0.13.8" +version = "0.13.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2653dd1a8be0726315603f1c180b29f90e5b2a58f8b943d949d5170d9ad81101" +checksum = "92a86226a7a16632de6723449ee5fe70bac5af718bc642ee9ca2f0f6e14fa1fa" dependencies = [ "arc-swap", "fluent", @@ -1904,9 +2020,9 @@ dependencies = [ [[package]] name = "i18n-embed-fl" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b5809e2295beeb55013705c3b947cbbe83b8cadf3c73a1e6dca06381927212a" +checksum = "d26a3d3569737dfaac7fc1c4078e6af07471c3060b8e570bcd83cdd5f4685395" dependencies = [ "dashmap", "find-crate", @@ -1919,15 +2035,15 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 1.0.109", + "syn 2.0.16", "unic-langid", ] [[package]] name = "i18n-embed-impl" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0db2330e035808eb064afb67e6743ddce353763af3e0f2bdfc2476e00ce76136" +checksum = "e9a95d065e6be4499e50159172395559a388d20cf13c84c77e4a1e341786f219" dependencies = [ "find-crate", "i18n-config", @@ -1939,7 +2055,7 @@ dependencies = [ [[package]] name = "iced" version = "0.9.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_core", "iced_futures", @@ -1954,7 +2070,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "accesskit", "accesskit_unix", @@ -1963,7 +2079,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.9.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "bitflags 1.3.2", "iced_accessibility", @@ -1978,7 +2094,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.6.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "futures", "iced_core", @@ -1991,7 +2107,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.8.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "bitflags 1.3.2", "bytemuck", @@ -2002,13 +2118,13 @@ dependencies = [ "log", "raw-window-handle 0.5.2", "thiserror", - "tiny-skia 0.9.0", + "tiny-skia 0.9.1", ] [[package]] name = "iced_renderer" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2020,7 +2136,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_accessibility", "iced_core", @@ -2032,7 +2148,7 @@ dependencies = [ [[package]] name = "iced_sctk" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "enum-repr", "float-cmp", @@ -2053,7 +2169,7 @@ dependencies = [ [[package]] name = "iced_style" version = "0.8.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_core", "once_cell", @@ -2063,7 +2179,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "bytemuck", "cosmic-text", @@ -2074,14 +2190,14 @@ dependencies = [ "resvg", "rustc-hash", "softbuffer", - "tiny-skia 0.9.0", + "tiny-skia 0.9.1", "twox-hash", ] [[package]] name = "iced_wgpu" version = "0.10.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "bitflags 1.3.2", "bytemuck", @@ -2103,7 +2219,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_renderer", "iced_runtime", @@ -2117,7 +2233,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.9.1" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "iced_graphics", "iced_runtime", @@ -2244,6 +2360,26 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "instant" version = "0.1.12" @@ -2286,6 +2422,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "is-terminal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix", + "windows-sys 0.48.0", +] + [[package]] name = "itertools" version = "0.10.5" @@ -2312,9 +2460,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.62" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" +checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" dependencies = [ "wasm-bindgen", ] @@ -2340,10 +2488,30 @@ dependencies = [ ] [[package]] -name = "kurbo" -version = "0.9.4" +name = "kqueue" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d676038719d1c892f91e6e85121550143c75880b42f7feff6d413a078cf91fb3" +checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "kurbo" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" dependencies = [ "arrayvec 0.7.2", ] @@ -2369,9 +2537,10 @@ checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" [[package]] name = "libcosmic" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#b750e6c5f08b1ed4a57bead7cd43e8a982caebe3" +source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd" dependencies = [ "apply", + "cosmic-config", "cosmic-theme", "derive_setters", "fraction", @@ -2410,15 +2579,15 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "linux-raw-sys" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "litemap" @@ -2577,9 +2746,9 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00ce114f2867153c079d4489629dbd27aa4b5387a8ba5341bd3f6dfe870688f" +checksum = "94d3edd593521f4a1dfd9b25193ed0224764572905f013d30ca5fbb85e010876" dependencies = [ "bit-set", "bitflags 1.3.2", @@ -2724,6 +2893,24 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "notify" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d9ba6c734de18ca27c8cef5cd7058aa4ac9f63596131e4c7e41e579319032a2" +dependencies = [ + "bitflags 1.3.2", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "mio", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "ntapi" version = "0.4.1" @@ -2894,6 +3081,12 @@ version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-multimap" version = "0.4.3" @@ -3102,22 +3295,22 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.16", ] [[package]] @@ -3209,9 +3402,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8" dependencies = [ "unicode-ident", ] @@ -3269,6 +3462,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -3439,7 +3638,7 @@ dependencies = [ "rgb", "svgfilters", "svgtypes", - "tiny-skia 0.9.0", + "tiny-skia 0.9.1", "usvg", ] @@ -3454,23 +3653,26 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.41" +version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21499ed91807f07ae081880aabb2ccc0235e9d88011867d984525e9a4c3cfa3e" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" dependencies = [ + "bitvec", "bytecheck", "hashbrown 0.12.3", "ptr_meta", "rend", "rkyv_derive", "seahash", + "tinyvec", + "uuid", ] [[package]] name = "rkyv_derive" -version = "0.7.41" +version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1c672430eb41556291981f45ca900a0239ad007242d1cb4b4167af842db666" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" dependencies = [ "proc-macro2", "quote", @@ -3674,7 +3876,7 @@ checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -3685,7 +3887,16 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", +] + +[[package]] +name = "serde_spanned" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d" +dependencies = [ + "serde", ] [[package]] @@ -4006,9 +4217,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" dependencies = [ "proc-macro2", "quote", @@ -4052,6 +4263,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" version = "3.5.0" @@ -4091,7 +4308,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -4141,9 +4358,9 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b610cd8b9a29feb9029c30f1e7bff634651b6e4e925388ee6cff4c68d901a3e" +checksum = "ce2986c82f77818c7b9144c70818fdde98db15308e329ae2f7204d767808fd3c" dependencies = [ "arrayref", "arrayvec 0.7.2", @@ -4185,6 +4402,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.28.1" @@ -4213,10 +4445,25 @@ dependencies = [ ] [[package]] -name = "toml_datetime" -version = "0.6.1" +name = "toml" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -4225,6 +4472,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", "winnow", ] @@ -4249,7 +4498,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", ] [[package]] @@ -4420,7 +4669,7 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b44e14b7678bcc5947b397991432d0c4e02a103958a0ed5e1b9b961ddd08b21" dependencies = [ - "base64 0.21.0", + "base64 0.21.1", "log", "pico-args", "usvg-parser", @@ -4480,6 +4729,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" +[[package]] +name = "uuid" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" + [[package]] name = "valuable" version = "0.1.0" @@ -4522,9 +4777,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.85" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" +checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4532,24 +4787,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.85" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" +checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.35" +version = "0.4.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083abe15c5d88556b77bdf7aef403625be9e327ad37c62c4e4129af740168163" +checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" dependencies = [ "cfg-if", "js-sys", @@ -4559,9 +4814,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.85" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" +checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4569,22 +4824,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.85" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" +checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.16", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.85" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" +checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" [[package]] name = "wasm-timer" @@ -4763,9 +5018,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.62" +version = "0.3.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721" +checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" dependencies = [ "js-sys", "wasm-bindgen", @@ -4809,7 +5064,7 @@ checksum = "625bea30a0ba50d88025f95c80211d1a85c86901423647fb74f397f614abbd9a" dependencies = [ "arrayvec 0.7.2", "bit-vec", - "bitflags 2.2.1", + "bitflags 2.3.1", "codespan-reporting", "log", "naga", @@ -4834,7 +5089,7 @@ dependencies = [ "arrayvec 0.7.2", "ash", "bit-set", - "bitflags 2.2.1", + "bitflags 2.3.1", "block", "core-graphics-types", "d3d12", @@ -4872,7 +5127,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bd33a976130f03dcdcd39b3810c0c3fc05daf86f0aaf867db14bfb7c4a9a32b" dependencies = [ - "bitflags 2.2.1", + "bitflags 2.3.1", "js-sys", "web-sys", ] @@ -5201,6 +5456,15 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60e49e42bdb1d5dc76f4cd78102f8f0714d32edfa3efb82286eb0f0b1fc0da0f" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x11-dl" version = "2.21.0" @@ -5289,9 +5553,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc95a04ea24f543cd9be5aab44f963fa35589c99e18415c38fb2b17e133bf8d2" +checksum = "1690519550bfa95525229b9ca2350c63043a4857b3b0013811b2ccf4a2420b01" [[package]] name = "xmlparser" @@ -5337,9 +5601,9 @@ dependencies = [ [[package]] name = "zbus" -version = "3.13.0" +version = "3.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a7c6d0d40302209909449c60924e537372f00f7ff214724b698a488e3ca43e" +checksum = "6c3d77c9966c28321f1907f0b6c5a5561189d1f7311eea6d94180c6be9daab29" dependencies = [ "async-broadcast", "async-executor", @@ -5378,9 +5642,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.13.0" +version = "3.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aeee0924687157129e1e5b57854492734b49199ee50bb9a5feb5cee10dde284" +checksum = "f6e341d12edaff644e539ccbbf7f161601294c9a84ed3d7e015da33155b435af" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5463,9 +5727,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cb36cd95352132911c9c99fdcc1635de5c2c139bd34cbcf6dfb8350ee8ff6a7" +checksum = "622cc473f10cef1b0d73b7b34a266be30ebdcfaea40ec297dd8cbda088f9f93c" dependencies = [ "byteorder", "enumflags2", @@ -5477,9 +5741,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b34951e1ac64f3a1443fe7181256b9ed6a811a1631917566c3d5ca718d8cf33" +checksum = "5d9c1b57352c25b778257c661f3c4744b7cefb7fc09dd46909a153cce7773da2" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5490,9 +5754,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" dependencies = [ "proc-macro2", "quote", diff --git a/app/Cargo.toml b/app/Cargo.toml index 92ae9e2..359a36c 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -25,6 +25,8 @@ rust-embed = "6.6.1" slotmap = "1.0.6" tokio = "1.27.0" downcast-rs = "1.2.0" +log = "0.4" +env_logger = "0.10" [dependencies.i18n-embed] version = "0.13.8" diff --git a/app/src/app.rs b/app/src/app.rs index 285e1ad..cab1b08 100644 --- a/app/src/app.rs +++ b/app/src/app.rs @@ -213,6 +213,9 @@ impl Application for SettingsApp { crate::pages::Message::External { .. } => { todo!("external plugins not supported yet"); } + crate::pages::Message::Page(page) => { + return self.activate_page(page); + } }, } ret @@ -273,10 +276,10 @@ impl Application for SettingsApp { horizontal_space(Length::Fill), (if self.search.is_active() { self.search_view() - } else if let Some(sub_pages) = self.pages.sub_pages(self.active_page) { - self.sub_page_view(sub_pages) } else if let Some(content) = self.pages.content(self.active_page) { self.page_view(content) + } else if let Some(sub_pages) = self.pages.sub_pages(self.active_page) { + self.sub_page_view(sub_pages) } else { panic!("page without sub-pages or content"); }) @@ -297,7 +300,7 @@ impl Application for SettingsApp { } fn theme(&self) -> Theme { - self.theme + self.theme.clone() } fn scale_factor(&self) -> f64 { diff --git a/app/src/main.rs b/app/src/main.rs index e953700..e079057 100644 --- a/app/src/main.rs +++ b/app/src/main.rs @@ -18,6 +18,8 @@ pub mod widget; pub mod pages; +use env_logger::Env; + use cosmic::iced::Application; use i18n_embed::DesktopLanguageRequester; @@ -25,6 +27,11 @@ use i18n_embed::DesktopLanguageRequester; /// /// Returns error if iced fails to run the application. pub fn main() -> color_eyre::Result<()> { + let env = Env::default() + .filter_or("MY_LOG_LEVEL", "info") + .write_style_or("MY_LOG_STYLE", "always"); + + env_logger::init_from_env(env); color_eyre::install()?; if std::env::var("RUST_SPANTRACE").is_err() { diff --git a/app/src/pages/desktop/mod.rs b/app/src/pages/desktop/mod.rs index d6841ae..e1ee28c 100644 --- a/app/src/pages/desktop/mod.rs +++ b/app/src/pages/desktop/mod.rs @@ -5,6 +5,7 @@ pub mod appearance; pub mod dock; pub mod notifications; pub mod options; +pub mod panel; pub mod wallpaper; pub mod workspaces; @@ -33,7 +34,6 @@ impl page::AutoBind for Page { page.sub_page::() .sub_page::() .sub_page::() - .sub_page::() .sub_page::() .sub_page::() } diff --git a/app/src/pages/desktop/options.rs b/app/src/pages/desktop/options.rs index c1ed3e6..5c80c05 100644 --- a/app/src/pages/desktop/options.rs +++ b/app/src/pages/desktop/options.rs @@ -4,9 +4,10 @@ use super::Message; use apply::Apply; use cosmic::{ - iced::widget::horizontal_space, + iced::widget::{button, container, horizontal_space, row}, iced::Length, - widget::{settings, toggler}, + theme, + widget::{icon, list, settings, toggler}, Element, }; @@ -28,17 +29,23 @@ impl page::Page for Page { sections.insert(hot_corner()), sections.insert(top_panel()), sections.insert(window_controls()), + sections.insert(panel_dock_links()), ]) } fn info(&self) -> page::Info { - page::Info::new("desktop-options", "video-display-symbolic") - .title(fl!("desktop-options")) - .description(fl!("desktop-options", "desc")) + page::Info::new("desktop-panel-options", "video-display-symbolic") + .title(fl!("desktop-panel-options")) + .description(fl!("desktop-panel-options", "desc")) } } -impl page::AutoBind for Page {} +impl page::AutoBind for Page { + fn sub_pages(page: page::Insert) -> page::Insert { + page.sub_page::() + .sub_page::() + } +} pub fn hot_corner() -> Section { Section::default() @@ -159,3 +166,57 @@ pub fn window_controls() -> Section { .map(crate::pages::Message::Desktop) }) } + +pub fn panel_dock_links() -> Section { + Section::default() + .title(fl!("desktop-panels-and-applets")) + .view::(|binder, _page, section| { + // TODO probably a way of getting the entity and its info + let mut settings = settings::view_section(§ion.title); + settings = if let Some((panel_entity, panel_info)) = + binder.info.iter().find(|(_, v)| v.id == "panel") + { + settings.add( + settings::item::builder(panel_info.title.clone()) + .description(panel_info.description.clone()) + .control(row!( + horizontal_space(Length::Fill), + icon("go-next-symbolic", 20).style(theme::Svg::Symbolic) + )) + .spacing(16) + .apply(container) + .style(theme::Container::custom(list::column::style)) + .apply(button) + .padding(0) + .style(theme::Button::Transparent) + .on_press(crate::pages::Message::Page(panel_entity)), + ) + } else { + settings + }; + + settings = if let Some((dock_entity, dock_info)) = + binder.info.iter().find(|(_, v)| v.id == "dock") + { + settings.add( + settings::item::builder(dock_info.title.clone()) + .description(dock_info.description.clone()) + .control(row!( + horizontal_space(Length::Fill), + icon("go-next-symbolic", 20).style(theme::Svg::Symbolic) + )) + .spacing(16) + .apply(container) + .style(theme::Container::custom(list::column::style)) + .apply(button) + .padding(0) + .style(theme::Button::Transparent) + .on_press(crate::pages::Message::Page(dock_entity)), + ) + } else { + settings + }; + + Element::from(settings) + }) +} diff --git a/app/src/pages/desktop/panel.rs b/app/src/pages/desktop/panel.rs new file mode 100644 index 0000000..97f70e9 --- /dev/null +++ b/app/src/pages/desktop/panel.rs @@ -0,0 +1,33 @@ +use cosmic::{ + iced::widget::horizontal_space, + iced::Length, + widget::{settings, toggler}, + Element, +}; + +use super::Message; +use apply::Apply; +use cosmic_settings_page::Section; +use cosmic_settings_page::{self as page, section}; +use slotmap::SlotMap; + +#[derive(Default)] +pub struct Page; + +impl page::Page for Page { + #[allow(clippy::too_many_lines)] + fn content( + &self, + sections: &mut SlotMap>, + ) -> Option { + Some(vec![sections.insert(Section::default())]) + } + + fn info(&self) -> page::Info { + page::Info::new("panel", "preferences-pop-desktop-dock-symbolic") + .title(fl!("panel")) + .description(fl!("panel", "desc")) + } +} + +impl page::AutoBind for Page {} diff --git a/app/src/pages/mod.rs b/app/src/pages/mod.rs index b25646f..d42c19b 100644 --- a/app/src/pages/mod.rs +++ b/app/src/pages/mod.rs @@ -1,6 +1,8 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only +use cosmic_settings_page::Entity; + pub mod desktop; pub mod networking; pub mod sound; @@ -13,4 +15,5 @@ pub enum Message { DateAndTime(time::date::Message), Desktop(desktop::Message), External { id: String, message: Vec }, + Page(Entity), } diff --git a/app/src/widget/mod.rs b/app/src/widget/mod.rs index 41cb857..5bf2180 100644 --- a/app/src/widget/mod.rs +++ b/app/src/widget/mod.rs @@ -106,6 +106,25 @@ pub fn sub_page_button(entity: page::Entity, page: &page::Info) -> Element Element { + settings::item::builder(page.title.as_str()) + .description(page.description.as_str()) + .control(row!( + horizontal_space(Length::Fill), + icon("go-next-symbolic", 20).style(theme::Svg::Symbolic) + )) + .spacing(16) + .apply(container) + .padding([20, 24]) + .style(theme::Container::custom(list::column::style)) + .apply(button) + .padding(0) + .style(theme::Button::Transparent) + .on_press(entity) + .into() +} + #[must_use] pub fn unimplemented_page() -> Element<'static, Message> { settings::view_section("") diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index 6e3be57..22dc6da 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -13,8 +13,8 @@ appearance = Appearance ## Desktop: Dock & Panel -dock = Dock & Top Panel - .desc = Customize size, positions, and more for Dock and Top Panel. +dock = Dock + .desc = Panel with pinned applications. ## Desktop: Notifications @@ -24,7 +24,7 @@ notifications = Notifications ## Desktop: Options -desktop-options = Desktop Options +desktop-panel-options = Desktop and Panel .desc = Super Key action, hot corners, window control options. super-key-action = Super Key Action @@ -43,6 +43,12 @@ window-controls = Window Controls .minimize = Show Minimize Button .maximize = Show Maximize Button +desktop-panels-and-applets = Desktop Panels and Applets + +panel = Panel + .desc = Top bar with desktop controls and menus. +dock = Dock + .desc = Panel with pinned applications. ## Desktop: Wallpaper wallpaper = Wallpaper diff --git a/i18n/fr/cosmic_settings.ftl b/i18n/fr/cosmic_settings.ftl index a386f70..3968075 100644 --- a/i18n/fr/cosmic_settings.ftl +++ b/i18n/fr/cosmic_settings.ftl @@ -24,7 +24,7 @@ notifications = Notifications ## Desktop: Options -desktop-options = Options Bureau +desktop-panel-options = Options Bureau .desc = Action de la Touche Super, coins actifs, options du contrôle des fenêtres. super-key-action = Action Touche Super diff --git a/i18n/pt/cosmic_settings.ftl b/i18n/pt/cosmic_settings.ftl index 21d123a..cee650c 100644 --- a/i18n/pt/cosmic_settings.ftl +++ b/i18n/pt/cosmic_settings.ftl @@ -24,7 +24,7 @@ notifications = Notificações ## Desktop: Options -desktop-options = Opções do ambiente de trabalho +desktop-panel-options = Opções do ambiente de trabalho .desc = Ação da tecla Super, cantos ativos, opções de controlo de janelas. super-key-action = Ação da tecla Super diff --git a/i18n/pt_BR/cosmic_settings.ftl b/i18n/pt_BR/cosmic_settings.ftl index 3f6ecd0..9ead0d9 100644 --- a/i18n/pt_BR/cosmic_settings.ftl +++ b/i18n/pt_BR/cosmic_settings.ftl @@ -24,7 +24,7 @@ notifications = Notificações ## Desktop: Options -desktop-options = Opções do Desktop +desktop-panel-options = Opções do Desktop .desc = Ação da Tecla Super, cantos quentes, opções de controle de janela. super-key-action = Ação da Tecla Super diff --git a/i18n/sv/cosmic_settings.ftl b/i18n/sv/cosmic_settings.ftl index b0e136e..fab1bc2 100644 --- a/i18n/sv/cosmic_settings.ftl +++ b/i18n/sv/cosmic_settings.ftl @@ -24,7 +24,7 @@ notifications = Notifikationer ## Desktop: Options -desktop-options = Skrivbordsalternativ +desktop-panel-options = Skrivbordsalternativ .desc = Supertangent funktion, heta hörn, och fönsterkontroll alternativ. super-key-action = Supertangentfunktion