diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e6ca28b --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,8 @@ +- [ ] I have disclosed use of any AI generated code in my commit messages. + - If you are using an LLM, and do not fully understand the changes it is making to the code base, do not create a PR. + - In our experience, AI generated code often results in overly complex code that lacks enough context for a proper fix or feature inclusion. This results in considerably longer code reviews. Due to this, AI authored or partially authored PRs may be closed without comment. +- [ ] I understand these changes in full and will be able to respond to review comments. +- [ ] My change is accurately described in the commit message. +- [ ] My contribution is tested and working as described. +- [ ] I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions. + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a54784b..7c204e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,9 +15,9 @@ jobs: name: Rustfmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain - run: rustup toolchain install 1.80.1 --component rustfmt + run: rustup toolchain install 1.90.0 --component rustfmt - name: fmt run: cargo fmt --all --check @@ -27,9 +27,9 @@ jobs: steps: - name: install system dependencies run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain - run: rustup toolchain install 1.80.1 --component clippy + run: rustup toolchain install 1.90.0 --component clippy - name: clippy run: cargo clippy --all-features @@ -39,8 +39,20 @@ jobs: steps: - name: install system dependencies run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: install toolchain run: rustup show - name: test run: cargo test --all-features + + check-features: + name: Check features + runs-on: ubuntu-24.04 + steps: + - name: install system dependencies + run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev just + - uses: actions/checkout@v6 + - name: install toolchain + run: rustup show + - name: check features + run: just check-features diff --git a/.github/workflows/validate-desktop-files.yml b/.github/workflows/validate-desktop-files.yml index 1230268..a752e6e 100644 --- a/.github/workflows/validate-desktop-files.yml +++ b/.github/workflows/validate-desktop-files.yml @@ -18,7 +18,7 @@ jobs: image: ubuntu:25.10 steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install desktop-file-utils run: | diff --git a/Cargo.lock b/Cargo.lock index 2ac9239..e9205b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,75 +20,78 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" -version = "0.16.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.22.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +dependencies = [ + "uuid", +] [[package]] name = "accesskit_atspi_common" -version = "0.9.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.15.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", "atspi-common", "serde", - "thiserror 1.0.69", - "zvariant 3.15.2", + "zvariant", ] [[package]] name = "accesskit_consumer" -version = "0.24.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.32.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", - "immutable-chunkmap", + "hashbrown 0.16.1", ] [[package]] name = "accesskit_macos" -version = "0.17.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.23.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", + "hashbrown 0.16.1", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", - "once_cell", ] [[package]] name = "accesskit_unix" -version = "0.12.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.18.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_atspi_common", "atspi", - "futures-lite 1.13.0", + "futures-lite", "serde", "tokio", "tokio-stream", - "zbus 3.15.2", + "zbus", ] [[package]] name = "accesskit_windows" -version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.30.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_consumer", - "paste", + "hashbrown 0.16.1", "static_assertions", - "windows 0.54.0", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] name = "accesskit_winit" -version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc041b1968a5af0186fa6aba3ea9cf24c8c3" +version = "0.30.0" +source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" dependencies = [ "accesskit", "accesskit_macos", @@ -101,9 +104,9 @@ dependencies = [ [[package]] name = "accounts-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] @@ -201,23 +204,21 @@ checksum = "3aa2999eb46af81abb65c2d30d446778d7e613b60bbf4e174a027e80f90a3c14" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.10.0", + "bitflags 2.11.1", "cc", - "cesu8", "jni", - "jni-sys", "libc", "log", "ndk", "ndk-context", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] @@ -247,9 +248,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -262,15 +263,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] @@ -297,9 +298,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "apply" @@ -324,9 +325,9 @@ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arc-swap" -version = "1.8.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" +checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" dependencies = [ "rustversion", ] @@ -339,7 +340,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -380,35 +381,32 @@ dependencies = [ [[package]] name = "ashpd" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +checksum = "d2f3f79755c74fd155000314eb349864caa787c6592eace6c6882dad873d9c39" dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "raw-window-handle", "serde", "serde_repr", "tokio", "url", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "zbus 5.13.1", + "zbus", ] [[package]] name = "ashpd" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618a409b91d5265798a99e3d1d0b226911605e581c4e7255e83c1e397b172bce" +checksum = "33a3c86f3fd70c0ffa500ed189abfa90b5a52398a45d5dc372fcc38ebeb7a645" dependencies = [ "enumflags2", "futures-channel", "futures-util", - "rand 0.9.2", + "rand 0.9.4", "serde", "serde_repr", "tokio", @@ -416,17 +414,7 @@ dependencies = [ "wayland-backend", "wayland-client", "wayland-protocols", - "zbus 5.13.1", -] - -[[package]] -name = "async-broadcast" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" -dependencies = [ - "event-listener 2.5.3", - "futures-core", + "zbus", ] [[package]] @@ -435,7 +423,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -455,38 +443,18 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.3.0", - "futures-lite 2.6.1", + "fastrand", + "futures-lite", "pin-project-lite", "slab", ] -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.28", - "slab", - "socket2 0.4.10", - "waker-fn", -] - [[package]] name = "async-io" version = "2.6.0" @@ -497,51 +465,25 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "parking", - "polling 3.11.0", - "rustix 1.1.3", + "polling", + "rustix 1.1.4", "slab", "windows-sys 0.61.2", ] -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-lock" version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] -[[package]] -name = "async-process" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" -dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", - "async-signal", - "blocking", - "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.44", - "windows-sys 0.48.0", -] - [[package]] name = "async-process" version = "2.5.0" @@ -549,15 +491,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel", - "async-io 2.6.0", - "async-lock 3.4.2", + "async-io", + "async-lock", "async-signal", "async-task", "blocking", "cfg-if", - "event-listener 5.4.1", - "futures-lite 2.6.1", - "rustix 1.1.3", + "event-listener", + "futures-lite", + "rustix 1.1.4", ] [[package]] @@ -568,22 +510,22 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "async-signal" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" dependencies = [ - "async-io 2.6.0", - "async-lock 3.4.2", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 1.1.3", + "rustix 1.1.4", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -603,7 +545,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -624,62 +566,48 @@ dependencies = [ [[package]] name = "atspi" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" +version = "0.29.0" +source = "git+https://github.com/wash2/atspi#e1e6e8bcd781a3155a9ff7e0b1e5193e5587f94c" dependencies = [ "atspi-common", - "atspi-connection", "atspi-proxies", ] [[package]] name = "atspi-common" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" +version = "0.13.0" +source = "git+https://github.com/wash2/atspi#e1e6e8bcd781a3155a9ff7e0b1e5193e5587f94c" dependencies = [ "enumflags2", "serde", "static_assertions", - "zbus 3.15.2", - "zbus_names 2.6.1", - "zvariant 3.15.2", -] - -[[package]] -name = "atspi-connection" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" -dependencies = [ - "atspi-common", - "atspi-proxies", - "futures-lite 1.13.0", - "zbus 3.15.2", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", ] [[package]] name = "atspi-proxies" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" +version = "0.13.0" +source = "git+https://github.com/wash2/atspi#e1e6e8bcd781a3155a9ff7e0b1e5193e5587f94c" dependencies = [ "atspi-common", "serde", - "zbus 3.15.2", + "zbus", ] [[package]] name = "auto_enums" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781" +checksum = "65398a2893f41bce5c9259f6e1a4f03fbae40637c1bdc755b4f387f48c613b03" dependencies = [ "derive_utils", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -703,7 +631,7 @@ dependencies = [ "num-traits", "pastey", "rayon", - "thiserror 2.0.17", + "thiserror 2.0.18", "v_frame", "y4m", ] @@ -724,9 +652,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" +checksum = "375082f007bd67184fb9c0374614b29f9aaa604ec301635f72338bb65386a53d" dependencies = [ "arrayvec", ] @@ -768,32 +696,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "annotate-snippets", - "bitflags 2.10.0", + "bitflags 2.11.1", "cexpr", "clang-sys", "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "shlex", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "bit-set" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bit_field" @@ -809,20 +737,20 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" dependencies = [ "serde_core", ] [[package]] name = "bitstream-io" -version = "4.9.0" +version = "4.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" dependencies = [ - "core2", + "no_std_io2", ] [[package]] @@ -873,7 +801,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] @@ -885,7 +813,7 @@ dependencies = [ "async-channel", "async-task", "futures-io", - "futures-lite 2.6.1", + "futures-lite", "piper", ] @@ -903,12 +831,22 @@ dependencies = [ [[package]] name = "bluez-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ "futures-channel", "futures-util", "tracing", - "zbus 5.13.1", + "zbus", +] + +[[package]] +name = "borsh" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "bytes", + "cfg_aliases 0.2.1", ] [[package]] @@ -949,9 +887,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "by_address" @@ -961,9 +899,9 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -976,7 +914,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -993,15 +931,15 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "calendrical_calculations" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a0b39595c6ee54a8d0900204ba4c401d0ab4eb45adaf07178e8d017541529e7" +checksum = "5abbd6eeda6885048d357edc66748eea6e0268e3dd11f326fff5bd248d779c26" dependencies = [ "core_maths", "displaydoc", @@ -1009,51 +947,25 @@ dependencies = [ [[package]] name = "calloop" -version = "0.13.0" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.10.0", - "log", - "polling 3.11.0", - "rustix 0.38.44", - "slab", - "thiserror 1.0.69", -] - -[[package]] -name = "calloop" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" -dependencies = [ - "bitflags 2.10.0", - "polling 3.11.0", - "rustix 1.1.3", + "bitflags 2.11.1", + "polling", + "rustix 1.1.4", "slab", "tracing", ] -[[package]] -name = "calloop-wayland-source" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" -dependencies = [ - "calloop 0.13.0", - "rustix 0.38.44", - "wayland-backend", - "wayland-client", -] - [[package]] name = "calloop-wayland-source" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "calloop 0.14.3", - "rustix 1.1.3", + "calloop", + "rustix 1.1.4", "wayland-backend", "wayland-client", ] @@ -1069,9 +981,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.52" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -1079,12 +991,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - [[package]] name = "cexpr" version = "0.6.0" @@ -1107,9 +1013,9 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.20.5" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21be0e1ce6cdb2ee7fff840f922fb04ead349e5cfb1e750b769132d44ce04720" +checksum = "3c6b04e07d8080154ed4ac03546d9a2b303cc2fe1901ba0b35b301516e289368" dependencies = [ "smallvec", "target-lexicon", @@ -1135,9 +1041,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ "iana-time-zone", "js-sys", @@ -1179,9 +1085,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.54" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" +checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" dependencies = [ "clap_builder", "clap_derive", @@ -1189,9 +1095,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.54" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ "anstream", "anstyle", @@ -1201,21 +1107,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "clipboard-win" @@ -1229,7 +1135,7 @@ dependencies = [ [[package]] name = "clipboard_macos" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "objc", "objc-foundation", @@ -1239,7 +1145,7 @@ dependencies = [ [[package]] name = "clipboard_wayland" version = "0.2.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "dnd", "mime 0.1.0", @@ -1249,7 +1155,7 @@ dependencies = [ [[package]] name = "clipboard_x11" version = "0.4.2" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "thiserror 1.0.69", "x11rb", @@ -1264,7 +1170,7 @@ dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", - "core-foundation", + "core-foundation 0.9.4", "core-graphics", "foreign-types", "libc", @@ -1279,18 +1185,19 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "libc", "objc", ] [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ + "serde", "termcolor", "unicode-width 0.1.14", ] @@ -1330,40 +1237,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" - -[[package]] -name = "com" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" -dependencies = [ - "com_macros", -] - -[[package]] -name = "com_macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" -dependencies = [ - "com_macros_support", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "com_macros_support" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -1384,6 +1260,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "configparser" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b" + [[package]] name = "convert_case" version = "0.8.0" @@ -1409,6 +1291,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1422,8 +1314,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "foreign-types", "libc", ] @@ -1435,17 +1327,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "libc", ] [[package]] -name = "core2" -version = "0.4.0" +name = "core-graphics-types" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "memchr", + "bitflags 2.11.1", + "core-foundation 0.10.1", + "libc", ] [[package]] @@ -1459,8 +1353,8 @@ dependencies = [ [[package]] name = "cosmic-bg-config" -version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-bg#ff506f91f73202ffb26214ce244aa77c53be8e5b" +version = "1.0.3" +source = "git+https://github.com/pop-os/cosmic-bg#06970d5945b45a634b9ed314f5ca3a86a8502fd8" dependencies = [ "cosmic-config", "derive_setters", @@ -1472,12 +1366,12 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" dependencies = [ - "bitflags 2.10.0", - "cosmic-protocols 0.1.0", + "bitflags 2.11.1", + "cosmic-protocols", "libc", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "wayland-client", "wayland-protocols", ] @@ -1485,19 +1379,19 @@ dependencies = [ [[package]] name = "cosmic-comp-config" version = "1.0.0" -source = "git+https://github.com/pop-os/cosmic-comp#0116bc0dc28bec0d4b00641faeec637a20609ab4" +source = "git+https://github.com/pop-os/cosmic-comp#4df95190db07f7410666cec4d3bf648de90f81dd" dependencies = [ "cosmic-config", "input", - "ron 0.11.0", + "ron 0.12.1", "serde", "tracing", ] [[package]] name = "cosmic-config" -version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1507,54 +1401,54 @@ dependencies = [ "iced_futures", "known-folders", "notify", - "ron 0.11.0", + "ron 0.12.1", "serde", "tokio", "tracing", "xdg", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-config-derive" -version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "cosmic-dbus-a11y" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-dbus-networkmanager" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "derive_builder", + "jiff", "procfs", - "time", - "zbus 5.13.1", - "zvariant 5.9.1", + "zbus", + "zvariant", ] [[package]] name = "cosmic-freedesktop-icons" version = "0.4.0" -source = "git+https://github.com/pop-os/freedesktop-icons#7a61a704f6d1ec41f71cbe766e3cc484858523fa" +source = "git+https://github.com/pop-os/freedesktop-icons#9c562fe3ecf03241a46a60c0078cd6ea10bd75ce" dependencies = [ "bstr", "btoi", "memchr", - "memmap2 0.9.9", - "thiserror 2.0.17", + "memmap2 0.9.10", + "thiserror 2.0.18", "tracing", "xdg", ] @@ -1562,7 +1456,7 @@ dependencies = [ [[package]] name = "cosmic-idle-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-idle#983d34ad9644930495e6d1c3ffb78408dad0c78d" +source = "git+https://github.com/pop-os/cosmic-idle#c95d066b5b640509a6369634b669ca60dc50e168" dependencies = [ "cosmic-config", "serde", @@ -1571,23 +1465,23 @@ dependencies = [ [[package]] name = "cosmic-mime-apps" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-mime-apps#157c516dbb9f2595da59c55b8cc9492070989279" +source = "git+https://github.com/pop-os/cosmic-mime-apps#673f3758920a7b20d307d356d586deef714df6b0" dependencies = [ - "freedesktop-desktop-entry 0.7.19", + "freedesktop-desktop-entry", "mime 0.3.17", - "quick-xml", + "quick-xml 0.38.4", "xdg", ] [[package]] name = "cosmic-panel-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#8eb8a1b6305213ec7402cb2ec24bef6b501b978a" +source = "git+https://github.com/pop-os/cosmic-panel#d518c7d25ef96f1a9696aa8cce008656bf66ece4" dependencies = [ "anyhow", "cosmic-config", "serde", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "tracing", "wayland-protocols-wlr", "xdg-shell-wrapper-config", @@ -1595,7 +1489,7 @@ dependencies = [ [[package]] name = "cosmic-pipewire" -version = "1.0.0" +version = "1.0.7" dependencies = [ "intmap", "libspa", @@ -1609,23 +1503,9 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" +source = "git+https://github.com/pop-os/cosmic-protocols//?rev=d0e95be#d0e95be25e423cfe523b11111a3666ed7aaf0dc4" dependencies = [ - "bitflags 2.10.0", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "wayland-server", -] - -[[package]] -name = "cosmic-protocols" -version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols#160b086abe03cd34a8a375d7fbe47b24308d1f38" -dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -1637,11 +1517,11 @@ dependencies = [ [[package]] name = "cosmic-randr" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-randr#741089cf5e3aa7d5e48042101c1d4cc813b13637" +source = "git+https://github.com/pop-os/cosmic-randr#6e8e795970fa06d434af22775e415b517f7552d3" dependencies = [ - "cosmic-protocols 0.2.0", - "indexmap 2.13.0", - "thiserror 2.0.17", + "cosmic-protocols", + "indexmap 2.14.0", + "thiserror 2.0.18", "tokio", "tracing", "wayland-client", @@ -1651,20 +1531,20 @@ dependencies = [ [[package]] name = "cosmic-randr-shell" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-randr#741089cf5e3aa7d5e48042101c1d4cc813b13637" +source = "git+https://github.com/pop-os/cosmic-randr#6e8e795970fa06d434af22775e415b517f7552d3" dependencies = [ "kdl", "slotmap", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] name = "cosmic-settings" -version = "1.0.2" +version = "1.0.7" dependencies = [ "accounts-zbus", "anyhow", - "ashpd 0.12.1", + "ashpd 0.12.3", "bluez-zbus", "chrono", "clap", @@ -1676,7 +1556,7 @@ dependencies = [ "cosmic-idle-config", "cosmic-mime-apps", "cosmic-panel-config", - "cosmic-protocols 0.2.0", + "cosmic-protocols", "cosmic-randr", "cosmic-randr-shell", "cosmic-settings-a11y-manager-subscription", @@ -1693,19 +1573,21 @@ dependencies = [ "derive_setters", "dirs", "eyre", - "fontdb 0.23.0", - "freedesktop-desktop-entry 0.8.1", + "fontdb", + "freedesktop-desktop-entry", "futures", "gettext-rs", "hostname-validator", "hostname1-zbus", "i18n-embed", "i18n-embed-fl", + "iced_winit", "icu", "image", - "indexmap 2.13.0", + "indexmap 2.14.0", "itertools 0.14.0", "itoa", + "jiff", "libcosmic", "locale1", "locales-rs", @@ -1715,14 +1597,14 @@ dependencies = [ "num-traits", "pwhash", "regex", - "ron 0.12.0", + "ron 0.12.1", "rust-embed", - "rustix 1.1.3", + "rustix 1.1.4", "secure-string", "serde", "slab", "slotmap", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "static_init", "sunrise", "sysinfo", @@ -1733,64 +1615,66 @@ dependencies = [ "udev", "upower_dbus", "url", + "which", + "xdgen", "xkb-data", "xkeysym", - "zbus 5.13.1", + "zbus", "zbus_polkit", ] [[package]] name = "cosmic-settings-a11y-manager-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ - "cosmic-protocols 0.2.0", + "cosmic-protocols", "iced_futures", "num-derive", "num-traits", - "smithay-client-toolkit 0.20.0", + "smithay-client-toolkit", "tokio", "tracing", ] [[package]] name = "cosmic-settings-accessibility-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "cosmic-dbus-a11y", "futures", "iced_futures", "tokio", "tracing", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-airplane-mode-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "futures", "iced_futures", "log", - "rustix 1.1.3", + "rustix 1.1.4", "tokio", ] [[package]] name = "cosmic-settings-bluetooth-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "bluez-zbus", "futures", "iced_futures", "tokio", "tracing", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#ef024bfd06bf9fbd57246a25c91d1fdd28153d05" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#716da6d6af0b252e2f78aba2ad72ee19ae0241e0" dependencies = [ "cosmic-config", "ron 0.11.0", @@ -1803,15 +1687,15 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-daemon-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-settings-daemon#ef024bfd06bf9fbd57246a25c91d1fdd28153d05" +source = "git+https://github.com/pop-os/cosmic-settings-daemon#716da6d6af0b252e2f78aba2ad72ee19ae0241e0" dependencies = [ "cosmic-config", "serde", @@ -1819,21 +1703,21 @@ dependencies = [ [[package]] name = "cosmic-settings-daemon-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "futures", "iced_futures", "log", "tokio", "tokio-stream", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-network-manager-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "cosmic-dbus-networkmanager", "futures", "iced_futures", @@ -1841,15 +1725,15 @@ dependencies = [ "nm-secret-agent-manager", "secret-service", "secure-string", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-page" -version = "1.0.2" +version = "1.0.7" dependencies = [ "derive_setters", "downcast-rs 2.0.2", @@ -1860,23 +1744,34 @@ dependencies = [ "url", ] +[[package]] +name = "cosmic-settings-pulse-subscription" +version = "0.1.0" +dependencies = [ + "futures", + "iced_futures", + "libpulse-binding", + "log", + "rustix 1.1.4", +] + [[package]] name = "cosmic-settings-sound-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "cosmic-pipewire", "futures", "intmap", "libcosmic", "numtoa", - "rustix 1.1.3", + "rustix 1.1.4", "tokio", "tracing", ] [[package]] name = "cosmic-settings-upower-subscription" -version = "1.0.2" +version = "1.0.7" dependencies = [ "futures", "iced_futures", @@ -1884,19 +1779,19 @@ dependencies = [ "tokio", "tokio-stream", "upower_dbus", - "zbus 5.13.1", + "zbus", ] [[package]] name = "cosmic-settings-wallpaper" -version = "1.0.2" +version = "1.0.7" dependencies = [ "cosmic-bg-config", "cosmic-randr-shell", "dirs", "eyre", "fast_image_resize", - "futures-lite 2.6.1", + "futures-lite", "futures-util", "image", "infer", @@ -1908,18 +1803,18 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.16.0" -source = "git+https://github.com/pop-os/cosmic-text.git#0d9af4f7de087878100b296c81d1baca2e05433d" +version = "0.18.2" +source = "git+https://github.com/pop-os/cosmic-text.git#4d74f795cc771fdcc7ea0f9cacba63fcf036fad6" dependencies = [ - "bitflags 2.10.0", - "fontdb 0.23.0", + "bitflags 2.11.1", + "fontdb", "harfrust", "linebender_resource_handle", "log", "rangemap", - "rustc-hash 1.1.0", + "rustc-hash 2.1.2", "self_cell", - "skrifa 0.39.0", + "skrifa", "smol_str", "swash", "sys-locale", @@ -1931,18 +1826,19 @@ dependencies = [ [[package]] name = "cosmic-theme" -version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "almost", + "configparser", "cosmic-config", "csscolorparser", "dirs", "palette", - "ron 0.11.0", + "ron 0.12.1", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -1994,6 +1890,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "cryoglyph" +version = "0.1.0" +source = "git+https://github.com/pop-os/glyphon.git?tag=cosmic-0.14#c49de15bce4d8254ac136d1be9911960cc85ce12" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.2", + "wgpu", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -2022,19 +1930,21 @@ checksum = "42aaeae719fd78ce501d77c6cdf01f7e96f26bcd5617a4903a1c2b97e388543a" [[package]] name = "csscolorparser" -version = "0.7.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda6aace1fbef3aa217b27f4c8d7d071ef2a70a5ca51050b1f17d40299d3f16" +checksum = "199f851bd3cb5004c09474252c7f74e7c047441ed0979bf3688a7106a13da952" dependencies = [ - "phf 0.11.3", + "num-traits", + "phf 0.13.1", "serde", + "uncased", ] [[package]] name = "ctor-lite" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" +checksum = "e162d0c2e2068eb736b71e5597eff0b9944e6b973cd9f37b6a288ab9bf20e300" [[package]] name = "cursor-icon" @@ -2042,17 +1952,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" -[[package]] -name = "d3d12" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbd1f579714e3c809ebd822c81ef148b1ceaeb3d535352afc73fd0c4c6a0017" -dependencies = [ - "bitflags 2.10.0", - "libloading", - "winapi", -] - [[package]] name = "darling" version = "0.20.11" @@ -2073,6 +1972,16 @@ dependencies = [ "darling_macro 0.21.3", ] +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core 0.23.0", + "darling_macro 0.23.0", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -2084,7 +1993,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2098,7 +2007,20 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", ] [[package]] @@ -2109,7 +2031,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2120,7 +2042,18 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.114", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core 0.23.0", + "quote", + "syn 2.0.117", ] [[package]] @@ -2131,25 +2064,14 @@ checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", ] -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "derive_builder" version = "0.20.2" @@ -2168,7 +2090,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2178,30 +2100,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "derive_setters" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae5c625eda104c228c06ecaf988d1c60e542176bd7a490e60eeda3493244c0c9" +checksum = "b7e6f6fa1f03c14ae082120b84b3c7fbd7b8588d924cf2d7c3daf9afd49df8b9" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "derive_utils" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +checksum = "362f47930db19fe7735f527e6595e4900316b893ebf6d48ad3d31be928d57dd6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2245,22 +2167,16 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - [[package]] name = "dispatch2" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.6.2", "libc", - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] @@ -2271,14 +2187,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "dlib" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ "libloading", ] @@ -2286,12 +2202,12 @@ dependencies = [ [[package]] name = "dnd" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "mime 0.1.0", "raw-window-handle", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "smithay-clipboard", ] @@ -2318,8 +2234,8 @@ checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc" [[package]] name = "dpi" -version = "0.1.1" -source = "git+https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#12a5f17d1811cdebbcbd310a3d92965e9142fa12" +version = "0.1.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" [[package]] name = "drm" @@ -2327,7 +2243,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", "drm-ffi", "drm-fourcc", @@ -2396,7 +2312,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2416,7 +2332,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2453,30 +2369,13 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.11" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" dependencies = [ "num-traits", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.4.1" @@ -2494,7 +2393,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener", "pin-project-lite", ] @@ -2531,32 +2430,23 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" [[package]] name = "fast_image_resize" -version = "5.1.4" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d372ab3252d8f162d858d675a3d88a8c33ba24a6238837c50c8851911c7e89cd" +checksum = "12dd43e5011e8d8411a3215a0d57a2ec5c68282fb90eb5d7221fab0113442174" dependencies = [ "bytemuck", "cfg-if", "document-features", "image", "num-traits", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "fastrand" -version = "1.9.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" [[package]] name = "fax" @@ -2575,7 +2465,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2598,15 +2488,15 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixed_decimal" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35eabf480f94d69182677e37571d3be065822acfafd12f2f085db44fbbcc8e57" +checksum = "79c3c892f121fff406e5dd6b28c1b30096b95111c30701a899d4f2b18da6d1bd" dependencies = [ "displaydoc", "smallvec", @@ -2615,9 +2505,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2629,6 +2519,15 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +[[package]] +name = "float-cmp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" +dependencies = [ + "num-traits", +] + [[package]] name = "float_next_after" version = "1.0.0" @@ -2655,7 +2554,7 @@ dependencies = [ "fluent-syntax", "intl-memoizer", "intl_pluralrules", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "self_cell", "smallvec", "unic-langid", @@ -2677,7 +2576,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198" dependencies = [ "memchr", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2693,10 +2592,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] -name = "font-types" -version = "0.10.1" +name = "foldhash" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "font-types" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7" dependencies = [ "bytemuck", ] @@ -2710,20 +2615,6 @@ dependencies = [ "roxmltree", ] -[[package]] -name = "fontdb" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e32eac81c1135c1df01d4e6d4233c47ba11f6a6d07f33e0bba09d18797077770" -dependencies = [ - "fontconfig-parser", - "log", - "memmap2 0.9.9", - "slotmap", - "tinyvec", - "ttf-parser 0.21.1", -] - [[package]] name = "fontdb" version = "0.23.0" @@ -2732,10 +2623,10 @@ checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" dependencies = [ "fontconfig-parser", "log", - "memmap2 0.9.9", + "memmap2 0.9.10", "slotmap", "tinyvec", - "ttf-parser 0.25.1", + "ttf-parser", ] [[package]] @@ -2756,7 +2647,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2774,21 +2665,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "freedesktop-desktop-entry" -version = "0.7.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528df05c8ed0bfd569c7018914ba1995be2a133ba9ead17628ddb0ff94b86331" -dependencies = [ - "bstr", - "gettext-rs", - "log", - "memchr", - "thiserror 2.0.17", - "unicase", - "xdg", -] - [[package]] name = "freedesktop-desktop-entry" version = "0.8.1" @@ -2799,16 +2675,26 @@ dependencies = [ "gettext-rs", "log", "memchr", - "thiserror 2.0.17", + "thiserror 2.0.18", "unicase", "xdg", ] [[package]] -name = "fs-err" -version = "3.2.2" +name = "freedesktop_entry_parser" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf68cef89750956493a66a10f512b9e58d9db21f2a573c079c0bdf1207a54a7" +checksum = "fc6d3a3635983a889f065aa9ce760384713f23a9b4a04f696f86c39a5d7a6a5a" +dependencies = [ + "indexmap 2.14.0", + "nom 8.0.0", +] + +[[package]] +name = "fs-err" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fde052dbfc920003cfd2c8e2c6e6d4cc7c1091538c3a24226cec0665ab08c0" dependencies = [ "autocfg", "tokio", @@ -2825,9 +2711,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -2840,9 +2726,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -2850,42 +2736,26 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" @@ -2893,7 +2763,7 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ - "fastrand 2.3.0", + "fastrand", "futures-core", "futures-io", "parking", @@ -2902,32 +2772,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -2937,7 +2807,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -2957,7 +2826,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.3", + "rustix 1.1.4", "windows-link 0.2.1", ] @@ -2980,10 +2849,23 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + [[package]] name = "gettext-rs" version = "0.7.7" @@ -3016,9 +2898,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" dependencies = [ "color_quant", "weezl", @@ -3055,9 +2937,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "glow" -version = "0.13.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -3080,7 +2962,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "gpu-alloc-types", ] @@ -3090,20 +2972,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] name = "gpu-allocator" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd4240fc91d3433d5e5b0fc5b67672d771850dc19bbee03c1381e19322803d7" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" dependencies = [ "log", "presser", "thiserror 1.0.69", - "winapi", - "windows 0.52.0", + "windows 0.58.0", ] [[package]] @@ -3112,7 +2993,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "gpu-descriptor-types", "hashbrown 0.15.5", ] @@ -3123,7 +3004,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] @@ -3150,19 +3031,20 @@ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "num-traits", "zerocopy", ] [[package]] name = "harfrust" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0caaee032384c10dd597af4579c67dee16650d862a9ccbe1233ff1a379abc07" +checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", "core_maths", - "read-fonts 0.36.0", + "read-fonts", "smallvec", ] @@ -3178,7 +3060,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -3186,21 +3068,15 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "foldhash 0.2.0", +] [[package]] -name = "hassle-rs" -version = "0.11.0" +name = "hashbrown" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" -dependencies = [ - "bitflags 2.10.0", - "com", - "libc", - "libloading", - "thiserror 1.0.69", - "widestring", - "winapi", -] +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" [[package]] name = "heck" @@ -3275,9 +3151,9 @@ checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" [[package]] name = "hostname1-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] @@ -3307,7 +3183,7 @@ dependencies = [ "i18n-embed-impl", "intl-memoizer", "log", - "parking_lot 0.12.5", + "parking_lot", "rust-embed", "sys-locale", "thiserror 1.0.69", @@ -3330,7 +3206,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.114", + "syn 2.0.117", "unic-langid", ] @@ -3344,14 +3220,14 @@ dependencies = [ "i18n-config", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -3373,26 +3249,29 @@ dependencies = [ [[package]] name = "iced" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "dnd", "iced_accessibility", "iced_core", + "iced_debug", "iced_futures", + "iced_program", "iced_renderer", + "iced_runtime", "iced_widget", "iced_winit", "image", "mime 0.1.0", - "thiserror 1.0.69", + "thiserror 2.0.18", "window_clipboard", ] [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "accesskit", "accesskit_winit", @@ -3400,61 +3279,59 @@ dependencies = [ [[package]] name = "iced_core" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytes", "cosmic-client-toolkit", "dnd", "glam", "iced_accessibility", + "lilt", "log", "mime 0.1.0", "num-traits", - "once_cell", "palette", "raw-window-handle", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "serde", "smol_str", - "thiserror 1.0.69", + "thiserror 2.0.18", "web-time", "window_clipboard", ] +[[package]] +name = "iced_debug" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" +dependencies = [ + "iced_core", + "iced_futures", + "log", +] + [[package]] name = "iced_futures" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "futures", "iced_core", "log", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "tokio", "wasm-bindgen-futures", - "wasm-timer", -] - -[[package]] -name = "iced_glyphon" -version = "0.6.0" -source = "git+https://github.com/pop-os/glyphon.git?tag=iced-0.14-dev#6ef9d12a20cfd0f7bdf38136a26ded9f7459ec8b" -dependencies = [ - "cosmic-text", - "etagere", - "lru", - "rustc-hash 2.1.1", - "wgpu", + "wasmtimer", ] [[package]] name = "iced_graphics" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", "cosmic-text", "half", @@ -3464,29 +3341,37 @@ dependencies = [ "kamadak-exif", "log", "lyon_path", - "once_cell", "raw-window-handle", - "rustc-hash 2.1.1", - "thiserror 1.0.69", + "rustc-hash 2.1.2", + "thiserror 2.0.18", "unicode-segmentation", ] +[[package]] +name = "iced_program" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" +dependencies = [ + "iced_graphics", + "iced_runtime", +] + [[package]] name = "iced_renderer" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "thiserror 1.0.69", + "thiserror 2.0.18", ] [[package]] name = "iced_runtime" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3495,48 +3380,49 @@ dependencies = [ "iced_core", "iced_futures", "raw-window-handle", - "thiserror 1.0.69", + "thiserror 2.0.18", "window_clipboard", ] [[package]] name = "iced_tiny_skia" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "bytemuck", "cosmic-text", + "iced_debug", "iced_graphics", "kurbo 0.10.4", "log", "resvg", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "softbuffer", "tiny-skia", ] [[package]] name = "iced_wgpu" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "as-raw-xcb-connection", - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", "cosmic-client-toolkit", + "cryoglyph", "futures", "glam", "guillotiere", - "iced_glyphon", + "iced_debug", "iced_graphics", "log", "lyon", - "once_cell", "raw-window-handle", "resvg", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustix 0.38.44", - "thiserror 1.0.69", + "thiserror 2.0.18", "tiny-xlib", "wayland-backend", "wayland-client", @@ -3548,8 +3434,8 @@ dependencies = [ [[package]] name = "iced_widget" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.2" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3558,32 +3444,33 @@ dependencies = [ "iced_runtime", "log", "num-traits", - "once_cell", "ouroboros", "qrcode", - "rustc-hash 2.1.1", - "thiserror 1.0.69", + "rustc-hash 2.1.2", + "thiserror 2.0.18", "unicode-segmentation", "window_clipboard", ] [[package]] name = "iced_winit" -version = "0.14.0-dev" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "0.14.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "cosmic-client-toolkit", + "cursor-icon", "dnd", "iced_accessibility", + "iced_debug", "iced_futures", "iced_graphics", + "iced_program", "iced_runtime", "log", "raw-window-handle", - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", "rustix 0.38.44", - "thiserror 1.0.69", - "tracing", + "thiserror 2.0.18", "wasm-bindgen-futures", "wayland-backend", "wayland-client", @@ -3592,6 +3479,7 @@ dependencies = [ "winapi", "window_clipboard", "winit", + "winit-core", "xkbcommon 0.7.0", "xkbcommon-dl", "xkeysym", @@ -3599,9 +3487,9 @@ dependencies = [ [[package]] name = "icu" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ab713dd86fa032cb5487f9ac3a85d47b5dcf4c7b8c7dd00210b3cadd6a6551" +checksum = "00380f83691e089bcfa4aeb03a2d96a910b1c9ea406d6f822fc19dfb8b58d1ec" dependencies = [ "icu_calendar", "icu_casemap", @@ -3623,9 +3511,9 @@ dependencies = [ [[package]] name = "icu_calendar" -version = "2.1.1" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f0e52e009b6b16ba9c0693578796f2dd4aaa59a7f8f920423706714a89ac4e" +checksum = "a2b2acc6263f494f1df50685b53ff8e57869e47d5c6fe39c23d518ae9a4f3e45" dependencies = [ "calendrical_calculations", "displaydoc", @@ -3641,15 +3529,15 @@ dependencies = [ [[package]] name = "icu_calendar_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527f04223b17edfe0bd43baf14a0cb1b017830db65f3950dc00224860a9a446d" +checksum = "118577bcf3a0fa7c6ac0a7d6e951814da84ee56b9b1f68fb4d8d10b08cefaf4d" [[package]] name = "icu_casemap" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ca9983e8bf51223c2f89014fa4eaa9e9b336c47f3af0d000538f86f841fba1" +checksum = "070f98b5b82798fcb93654bf96ed9f40064fc44c86f51a09ea711092cd5cc5be" dependencies = [ "icu_casemap_data", "icu_collections", @@ -3663,15 +3551,15 @@ dependencies = [ [[package]] name = "icu_casemap_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d4663d0f99b301033a19e0acf94e9d2fa4b107638580165e5a6ccc49ad1450" +checksum = "846b0857ca091204be3c874bc93daaf89d4777e8d2d20b0d3ffe8f671d98014b" [[package]] name = "icu_collator" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32eed11a5572f1088b63fa21dc2e70d4a865e5739fc2d10abc05be93bae97019" +checksum = "b521b92a2666061ddda902769d8a4cf730b5c9529a845cc1b69770b12a6c9a71" dependencies = [ "icu_collator_data", "icu_collections", @@ -3688,19 +3576,20 @@ dependencies = [ [[package]] name = "icu_collator_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab06f0e83a613efddba3e4913e00e43ed4001fae651cb7d40fc7e66b83b6fb9" +checksum = "038ed8e5817f2059c2f3efb0945ba78d060d3d25e8f1a1bea5139f821a21a2f0" [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", "serde", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -3708,9 +3597,9 @@ dependencies = [ [[package]] name = "icu_datetime" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9d49f41ded8e63761b6b4c3120dfdc289415a1ed10107db6198eb311057ca5" +checksum = "989d56ea5bbc43ae2b4e0388874b002884eaf4ed3a76c84a6c8c5ad575e04d72" dependencies = [ "displaydoc", "fixed_decimal", @@ -3731,20 +3620,23 @@ dependencies = [ [[package]] name = "icu_datetime_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf2a384725c67fcd32d27737bc7ba9dc5fe21311dfe3ba530f4b4d53e72bacc" +checksum = "40d3cc1b690d9703202bc319692ac8a1f3a6390686f0930ff40542450fa34f0b" [[package]] name = "icu_decimal" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38c52231bc348f9b982c1868a2af3195199623007ba2c7650f432038f5b3e8e" +checksum = "288247df2e32aa776ac54fdd64de552149ac43cb840f2761811f0e8d09719dd4" dependencies = [ + "displaydoc", "fixed_decimal", "icu_decimal_data", "icu_locale", "icu_locale_core", + "icu_pattern", + "icu_plurals", "icu_provider", "serde", "writeable", @@ -3753,15 +3645,15 @@ dependencies = [ [[package]] name = "icu_decimal_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2905b4044eab2dd848fe84199f9195567b63ab3a93094711501363f63546fef7" +checksum = "6f14a5ca9e8af29eef62064f269078424283d90dbaffeac5225addf62aaabc22" [[package]] name = "icu_experimental" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ffa4d60b9cb8b024082afaf9e94d853184e483ec69322c74dc437bf8a882a5" +checksum = "0a881116e620fd635f564fd9cb9bc36c256b9da2221df8b3f55643d8ef32140f" dependencies = [ "displaydoc", "either", @@ -3792,15 +3684,15 @@ dependencies = [ [[package]] name = "icu_experimental_data" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2578ea93f0373bb28800f7d1100e7e771c4d248d0d3759250fed08fa27694139" +checksum = "f72090d4f08a2bc94565cb02de6d5b87939424e462d9927d73a34f6f8e5d1232" [[package]] name = "icu_list" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a0b7b126e2fc42777d3c348611553d540bd3683caa39b387c5dd1036bb21a8" +checksum = "aeeaf517689324395bed4767f7c65504f5455942ed4c14ee54c2087ca00b816e" dependencies = [ "icu_list_data", "icu_locale", @@ -3813,15 +3705,15 @@ dependencies = [ [[package]] name = "icu_list_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51044c242fe2a882cc0a464314bbdb9f441556a1cb238fb527fc47355ec2827b" +checksum = "ed62dbf114db9a4163481ed071509c4cd52cbcef9cb85979eba08a95549d73f3" [[package]] name = "icu_locale" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532b11722e350ab6bf916ba6eb0efe3ee54b932666afec989465f9243fe6dd60" +checksum = "d5a396343c7208121dc86e35623d3dfe19814a7613cfd14964994cdc9c9a2e26" dependencies = [ "icu_collections", "icu_locale_core", @@ -3834,9 +3726,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -3848,15 +3740,15 @@ dependencies = [ [[package]] name = "icu_locale_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03e2fcaefecdf05619f3d6f91740e79ab969b4dd54f77cbf546b1d0d28e3147" +checksum = "d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993" [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -3871,15 +3763,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_pattern" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7ff8c0ff6f61cdce299dcb54f557b0a251adbc78f6f0c35a21332c452b4a1b" +checksum = "1c4c568054ffe735398a9f4c55aec37ad7c768844553cc0978f09cc9b933a1fb" dependencies = [ "displaydoc", "either", @@ -3891,9 +3783,9 @@ dependencies = [ [[package]] name = "icu_plurals" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9cfe49f5b1d1163cc58db451562339916a9ca5cbcaae83924d41a0bf839474" +checksum = "2a50023f1d49ad5c4333380328a0d4a19e4b9d6d842ec06639affd5ba47c8103" dependencies = [ "fixed_decimal", "icu_locale", @@ -3904,15 +3796,15 @@ dependencies = [ [[package]] name = "icu_plurals_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f018a98dccf7f0eb02ba06ac0ff67d102d8ded80734724305e924de304e12ff0" +checksum = "8485497155dc865f901decb93ecc20d3e467df67bfeceb91e3ba34e2b11e8e1d" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -3925,15 +3817,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -3948,9 +3840,9 @@ dependencies = [ [[package]] name = "icu_segmenter" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a807a7488f3f758629ae86d99d9d30dce24da2fb2945d74c80a4f4a62c71db73" +checksum = "5c0794db0b1a86193ac9c48768d0e6c52c54448e0870ad87907d456ee0dac964" dependencies = [ "core_maths", "icu_collections", @@ -3964,15 +3856,15 @@ dependencies = [ [[package]] name = "icu_segmenter_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ebbb7321d9e21d25f5660366cb6c08201d0175898a3a6f7a41ee9685af21c80" +checksum = "e4a2c462a4d927d512f5f882a033ddd62f33a05bb9f230d98f736ac3dc85938f" [[package]] name = "icu_time" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8242b00da3b3b6678f731437a11c8833a43c821ae081eca60ba1b7579d45b6d8" +checksum = "ec3af0c141da0a61d4f6970cd1d5f4b388b17ea22f8124f8f6049d3d5147586a" dependencies = [ "calendrical_calculations", "displaydoc", @@ -3988,9 +3880,15 @@ dependencies = [ [[package]] name = "icu_time_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e10b0e5e87a2c84bd5fa407705732052edebe69291d347d0c3033785470edbf" +checksum = "6f2f8aeca682d874a5247084aa4fb7d1cef9ba45d889c21209a8818dcaaa0ec9" + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "ident_case" @@ -4021,26 +3919,35 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", "color_quant", "exr", - "gif 0.14.1", + "gif 0.14.2", "image-webp", "moxcms", "num-traits", - "png 0.18.0", + "png 0.18.1", "qoi", "ravif", "rayon", "rgb", "tiff", - "zune-core 0.5.0", - "zune-jpeg 0.5.7", + "zune-core 0.5.1", + "zune-jpeg 0.5.15", +] + +[[package]] +name = "image-extras" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d29ba92ef6970a2685cc758b455d190842b8b9e96c865ffd31cdb9954b7548" +dependencies = [ + "image", ] [[package]] @@ -4055,9 +3962,9 @@ dependencies = [ [[package]] name = "imagesize" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" +checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" [[package]] name = "imgref" @@ -4065,15 +3972,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" -[[package]] -name = "immutable-chunkmap" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3e98b1520e49e252237edc238a39869da9f3241f2ec19dc788c1d24694d1e4" -dependencies = [ - "arrayvec", -] - [[package]] name = "indenter" version = "0.3.4" @@ -4093,12 +3991,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.0", "serde", "serde_core", ] @@ -4114,11 +4012,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "inotify-sys", "libc", ] @@ -4148,7 +4046,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "input-sys", "libc", "log", @@ -4157,18 +4055,9 @@ dependencies = [ [[package]] name = "input-sys" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd4f5b4d1c00331c5245163aacfe5f20be75b564c7112d45893d4ae038119eb0" - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] +checksum = "36eee07d8e02bd95bf52b2e642cf13d33701b94c6e4b04fbf1d1fb07e9cb19e7" [[package]] name = "interpolate_name" @@ -4178,7 +4067,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -4243,37 +4132,114 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "ixdtf" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84de9d95a6d2547d9b77ee3f25fa0ee32e3c3a6484d47a55adebc0439c077992" +checksum = "2ceaf4c6c48465bead8cb6a0b7c4ee0c86ecbb31239032b9c66ab9a08d2f3ee1" + +[[package]] +name = "jiff" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-sys 0.61.2", +] + +[[package]] +name = "jiff-static" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.69", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] [[package]] name = "jobserver" @@ -4285,18 +4251,14 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] @@ -4483,9 +4445,9 @@ dependencies = [ [[package]] name = "kamadak-exif" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +checksum = "1130d80c7374efad55a117d715a3af9368f0fa7a2c54573afc15a188cd984837" dependencies = [ "mutate_once", ] @@ -4501,6 +4463,16 @@ dependencies = [ "winnow 0.6.24", ] +[[package]] +name = "keyboard-types" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" +dependencies = [ + "bitflags 2.11.1", + "serde", +] + [[package]] name = "khronos-egl" version = "6.0.0" @@ -4520,9 +4492,9 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "known-folders" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d463f34ca3c400fde3a054da0e0b8c6ffa21e4590922f3e18281bb5eeef4cbdc" +checksum = "7a1886916523694cd6ea3d175f03a1e5010699a2a4cc13696d83d7bea1d80638" dependencies = [ "windows-sys 0.61.2", ] @@ -4574,6 +4546,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "lebe" version = "0.5.3" @@ -4582,19 +4560,18 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.185" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" [[package]] name = "libcosmic" -version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic#b9c24d24212a865977db4871efc13ff890055648" +version = "1.0.0" +source = "git+https://github.com/pop-os/libcosmic#3f9e93067b31d9ba81a4e3a28653b3380c61c352" dependencies = [ "apply", - "ashpd 0.12.1", + "ashpd 0.12.3", "auto_enums", - "chrono", "cosmic-client-toolkit", "cosmic-config", "cosmic-freedesktop-icons", @@ -4603,7 +4580,8 @@ dependencies = [ "cosmic-theme", "css-color", "derive_setters", - "freedesktop-desktop-entry 0.8.1", + "float-cmp 0.10.0", + "freedesktop-desktop-entry", "futures", "i18n-embed", "i18n-embed-fl", @@ -4618,33 +4596,34 @@ dependencies = [ "iced_widget", "iced_winit", "image", + "image-extras", + "jiff", "libc", "log", "mime 0.3.17", "palette", "phf 0.13.1", - "raw-window-handle", "rfd", - "ron 0.11.0", + "ron 0.12.1", "rust-embed", - "rustix 1.1.3", + "rustix 1.1.4", "serde", "shlex", "slotmap", "taffy", - "thiserror 2.0.17", + "thiserror 2.0.18", "tokio", "tracing", "unicode-segmentation", "url", - "zbus 5.13.1", + "zbus", ] [[package]] name = "libfuzzer-sys" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" +checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" dependencies = [ "arbitrary", "cc", @@ -4662,19 +4641,47 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libpulse-binding" +version = "2.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909eb3049e16e373680fe65afe6e2a722ace06b671250cc4849557bc57d6a397" +dependencies = [ + "bitflags 2.11.1", + "libc", + "libpulse-sys", + "num-derive", + "num-traits", + "winapi", +] + +[[package]] +name = "libpulse-sys" +version = "1.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d74371848b22e989f829cc1621d2ebd74960711557d8b45cfe740f60d0a05e61" +dependencies = [ + "libc", + "num-derive", + "num-traits", + "pkg-config", + "winapi", +] [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "libc", - "redox_syscall 0.7.0", + "plain", + "redox_syscall 0.7.4", ] [[package]] @@ -4683,13 +4690,13 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6b8cfa2a7656627b4c92c6b9ef929433acd673d5ab3708cda1b18478ac00df4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "cc", "convert_case", "cookie-factory", "libc", "libspa-sys", - "nix 0.30.1", + "nix", "nom 8.0.0", "system-deps", ] @@ -4715,18 +4722,21 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "lilt" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67562e5eff6b20553fa9be1c503356768420994e28f67e3eafe6f41910e57ad" +dependencies = [ + "web-time", +] + [[package]] name = "linebender_resource_handle" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -4741,15 +4751,15 @@ checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -4760,9 +4770,9 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "locale1" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] @@ -4786,7 +4796,7 @@ dependencies = [ "fs-err", "serde", "serde_json", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -4815,15 +4825,15 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.5" +version = "0.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" [[package]] name = "lyon" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcb7d54d54c8937364c9d41902d066656817dce1e03a44e5533afebd1ef4352" +checksum = "bd0578bdecb7d6d88987b8b2b1e3a4e2f81df9d0ece1078623324a567904e7b7" dependencies = [ "lyon_algorithms", "lyon_tessellation", @@ -4831,9 +4841,9 @@ dependencies = [ [[package]] name = "lyon_algorithms" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c0829e28c4f336396f250d850c3987e16ce6db057ffe047ce0dd54aab6b647" +checksum = "9815fac08e6fd96733a11dce4f9d15a3f338e96a2e2311ee21e1b738efc2bc0f" dependencies = [ "lyon_path", "num-traits", @@ -4841,9 +4851,9 @@ dependencies = [ [[package]] name = "lyon_geom" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e260b6de923e6e47adfedf6243013a7a874684165a6a277594ee3906021b2343" +checksum = "4336502e29e32af93cf2dad2214ed6003c17ceb5bd499df77b1de663b9042b92" dependencies = [ "arrayvec", "euclid", @@ -4852,9 +4862,9 @@ dependencies = [ [[package]] name = "lyon_path" -version = "1.0.16" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aeca86bcfd632a15984ba029b539ffb811e0a70bf55e814ef8b0f54f506fdeb" +checksum = "5c463f9c428b7fc5ec885dcd39ce4aa61e29111d0e33483f6f98c74e89d8621e" dependencies = [ "lyon_geom", "num-traits", @@ -4862,9 +4872,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.16" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f586142e1280335b1bc89539f7c97dd80f08fc43e9ab1b74ef0a42b04aa353" +checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552" dependencies = [ "float_next_after", "lyon_path", @@ -4912,9 +4922,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" @@ -4927,22 +4937,13 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -4954,13 +4955,13 @@ dependencies = [ [[package]] name = "metal" -version = "0.29.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block", - "core-graphics-types", + "core-graphics-types 0.2.0", "foreign-types", "log", "objc", @@ -4980,7 +4981,7 @@ dependencies = [ [[package]] name = "mime" version = "0.1.0" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "smithay-clipboard", ] @@ -5009,9 +5010,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "log", @@ -5021,9 +5022,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -5037,23 +5038,28 @@ checksum = "13d2233c9842d08cfe13f9eac96e207ca6a2ea10b80259ebe8ad0268be27d2af" [[package]] name = "naga" -version = "22.1.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd5a652b6faf21496f2cfd88fc49989c8db0825d1f6746b1a71a6ede24a63ad" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", - "bitflags 2.10.0", - "cfg_aliases 0.1.1", + "bitflags 2.11.1", + "cfg-if", + "cfg_aliases 0.2.1", "codespan-reporting", + "half", + "hashbrown 0.16.1", "hexf-parse", - "indexmap 2.13.0", + "indexmap 2.14.0", + "libm", "log", + "num-traits", + "once_cell", "rustc-hash 1.1.0", "spirv", - "termcolor", - "thiserror 1.0.69", - "unicode-xid", + "thiserror 2.0.18", + "unicode-ident", ] [[package]] @@ -5062,10 +5068,10 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.10.0", - "jni-sys", + "bitflags 2.11.1", + "jni-sys 0.3.1", "log", - "ndk-sys 0.6.0+11769913", + "ndk-sys", "num_enum", "raw-window-handle", "thiserror 1.0.69", @@ -5077,22 +5083,13 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-sys" -version = "0.5.0+25.2.9519653" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" -dependencies = [ - "jni-sys", -] - [[package]] name = "ndk-sys" version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -5101,25 +5098,13 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", -] - [[package]] name = "nix" version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -5128,9 +5113,18 @@ dependencies = [ [[package]] name = "nm-secret-agent-manager" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", +] + +[[package]] +name = "no_std_io2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b51ed7824b6e07d354605f4abb3d9d300350701299da96642ee084f5ce631550" +dependencies = [ + "memchr", ] [[package]] @@ -5164,7 +5158,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "fsevent-sys", "inotify", "kqueue", @@ -5178,15 +5172,18 @@ dependencies = [ [[package]] name = "notify-types" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags 2.11.1", +] [[package]] name = "ntapi" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70f219e21142367c70c0b30c6a9e3a14d55b4d12a204d897fbec83a0363f081" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ "winapi", ] @@ -5235,9 +5232,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -5247,7 +5244,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5291,21 +5288,11 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi 0.5.2", - "libc", -] - [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", "rustversion", @@ -5313,21 +5300,21 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "numtoa" -version = "1.0.0-alpha1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3f98606e662e333dada0fa9fb6723a3c363fb4a66b51e47ce964cfaf58833d2" +checksum = "9e4d8a81ede501fad07191e746a299f4d79f6dcd053bab1b97af4ff5a90099f2" [[package]] name = "objc" @@ -5367,9 +5354,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -5380,7 +5367,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5396,43 +5383,20 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.6.2", - "objc2 0.6.3", + "objc2 0.6.4", + "objc2-core-foundation", "objc2-foundation 0.3.2", ] -[[package]] -name = "objc2-cloud-kit" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" -dependencies = [ - "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-contacts" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-core-data" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5444,9 +5408,21 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", + "block2 0.6.2", "dispatch2", - "objc2 0.6.3", + "objc2 0.6.4", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.1", + "libc", + "objc2-core-foundation", ] [[package]] @@ -5462,15 +5438,14 @@ dependencies = [ ] [[package]] -name = "objc2-core-location" -version = "0.2.2" +name = "objc2-core-video" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-contacts", - "objc2-foundation 0.2.2", + "bitflags 2.11.1", + "objc2-core-foundation", + "objc2-core-graphics", ] [[package]] @@ -5485,9 +5460,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.5.1", - "dispatch", "libc", "objc2 0.5.2", ] @@ -5498,8 +5472,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", + "bitflags 2.11.1", + "block2 0.6.2", + "objc2 0.6.4", "objc2-core-foundation", ] @@ -5513,25 +5488,13 @@ dependencies = [ "objc2-core-foundation", ] -[[package]] -name = "objc2-link-presentation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5543,66 +5506,23 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", "objc2-metal", ] -[[package]] -name = "objc2-symbols" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" -dependencies = [ - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - [[package]] name = "objc2-ui-kit" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-image", - "objc2-core-location", - "objc2-foundation 0.2.2", - "objc2-link-presentation", - "objc2-quartz-core", - "objc2-symbols", - "objc2-uniform-type-identifiers", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-uniform-type-identifiers" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" -dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", - "objc2-foundation 0.2.2", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" -dependencies = [ - "bitflags 2.10.0", - "block2 0.5.1", - "objc2 0.5.2", - "objc2-core-location", - "objc2-foundation 0.2.2", + "bitflags 2.11.1", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", ] [[package]] @@ -5625,9 +5545,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -5649,14 +5569,23 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orbclient" -version = "0.3.50" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" +checksum = "59aed3b33578edcfa1bc96a321d590d31832b6ad55a26f0313362ce687e9abd6" dependencies = [ "libc", "libredox", ] +[[package]] +name = "ordered-float" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-stream" version = "0.2.0" @@ -5688,7 +5617,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5697,14 +5626,14 @@ version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ - "ttf-parser 0.25.1", + "ttf-parser", ] [[package]] name = "owo-colors" -version = "4.2.3" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" [[package]] name = "palette" @@ -5728,7 +5657,7 @@ dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5737,17 +5666,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[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.6", -] - [[package]] name = "parking_lot" version = "0.12.5" @@ -5755,21 +5673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.12", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -5840,7 +5744,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ - "fastrand 2.3.0", + "fastrand", "phf_shared 0.13.1", ] @@ -5854,7 +5758,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -5867,7 +5771,8 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", + "uncased", ] [[package]] @@ -5886,6 +5791,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ "siphasher", + "uncased", ] [[package]] @@ -5896,29 +5802,29 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -5928,12 +5834,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", - "fastrand 2.3.0", + "fastrand", "futures-io", ] @@ -5944,14 +5850,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9688b89abf11d756499f7c6190711d6dbe5a3acdb30c8fbf001d6596d06a8d44" dependencies = [ "anyhow", - "bitflags 2.10.0", + "bitflags 2.11.1", "libc", "libspa", "libspa-sys", - "nix 0.30.1", + "nix", "once_cell", "pipewire-sys", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -5967,9 +5873,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "png" @@ -5986,33 +5898,17 @@ dependencies = [ [[package]] name = "png" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "crc32fast", "fdeflate", "flate2", "miniz_oxide", ] -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - [[package]] name = "polling" version = "3.11.0" @@ -6023,7 +5919,7 @@ dependencies = [ "concurrent-queue", "hermit-abi 0.5.2", "pin-project-lite", - "rustix 1.1.3", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -6034,10 +5930,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" [[package]] -name = "potential_utf" -version = "0.1.4" +name = "portable-atomic" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "serde_core", "writeable", @@ -6066,22 +5977,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "proc-macro2", + "syn 2.0.117", ] [[package]] name = "proc-macro-crate" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "toml_edit", ] [[package]] @@ -6103,14 +6014,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "proc-macro2" -version = "1.0.105" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -6123,7 +6034,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "version_check", "yansi", ] @@ -6134,9 +6045,9 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "procfs-core", - "rustix 1.1.3", + "rustix 1.1.4", ] [[package]] @@ -6145,7 +6056,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "hex", ] @@ -6165,7 +6076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6185,12 +6096,9 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "qoi" @@ -6218,15 +6126,25 @@ name = "quick-xml" version = "0.38.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.43" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] @@ -6237,6 +6155,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" @@ -6250,12 +6174,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.4", + "rand_core 0.9.5", ] [[package]] @@ -6275,7 +6199,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.4", + "rand_core 0.9.5", ] [[package]] @@ -6289,18 +6213,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1b3bc831f92381018fd9c6350b917c7b21f1eed35a65a51900e0e55a3d7afa" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] [[package]] name = "range-alloc" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" +checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" [[package]] name = "rangemap" @@ -6335,19 +6259,19 @@ dependencies = [ "num-traits", "paste", "profiling", - "rand 0.9.2", + "rand 0.9.4", "rand_chacha 0.9.0", "simd_helpers", - "thiserror 2.0.17", + "thiserror 2.0.18", "v_frame", "wasm-bindgen", ] [[package]] name = "ravif" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" dependencies = [ "avif-serialize", "imgref", @@ -6366,9 +6290,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -6386,50 +6310,31 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" -dependencies = [ - "bytemuck", - "font-types", -] - -[[package]] -name = "read-fonts" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eaa2941a4c05443ee3a7b26ab076a553c343ad5995230cc2b1d3e993bdc6345" +checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" dependencies = [ "bytemuck", "core_maths", "font-types", ] -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] name = "redox_syscall" -version = "0.7.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] @@ -6440,7 +6345,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -6460,14 +6365,14 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -6477,9 +6382,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -6488,9 +6393,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "renderdoc-sys" @@ -6500,32 +6405,33 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "resvg" -version = "0.42.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944d052815156ac8fa77eaac055220e95ba0b01fa8887108ca710c03805d9051" +checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" dependencies = [ "gif 0.13.3", - "jpeg-decoder", + "image-webp", "log", "pico-args", "rgb", "svgtypes", "tiny-skia", "usvg", + "zune-jpeg 0.4.21", ] [[package]] name = "rfd" -version = "0.15.4" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" dependencies = [ - "ashpd 0.11.0", + "ashpd 0.11.1", "block2 0.6.2", "dispatch2", "js-sys", "log", - "objc2 0.6.3", + "objc2 0.6.4", "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -6535,14 +6441,14 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rgb" -version = "0.8.52" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" dependencies = [ "bytemuck", ] @@ -6554,7 +6460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db09040cc89e461f1a265139777a2bde7f8d8c67c4936f700c63ce3e2904d468" dependencies = [ "base64", - "bitflags 2.10.0", + "bitflags 2.11.1", "serde", "serde_derive", "unicode-ident", @@ -6562,11 +6468,11 @@ dependencies = [ [[package]] name = "ron" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd490c5b18261893f14449cbd28cb9c0b637aebf161cd77900bfdedaff21ec32" +checksum = "4147b952f3f819eca0e99527022f7d6a8d05f111aeb0a62960c74eb283bec8fc" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "once_cell", "serde", "serde_derive", @@ -6582,9 +6488,9 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rust-embed" -version = "8.9.0" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "947d7f3fad52b283d261c4c99a084937e2fe492248cb9a68a8435a861b8798ca" +checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -6593,22 +6499,22 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.9.0" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2" +checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.114", + "syn 2.0.117", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.9.0" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475" +checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ "sha2 0.10.9", "walkdir", @@ -6616,9 +6522,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" @@ -6628,22 +6534,17 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] -name = "rustix" -version = "0.37.28" +name = "rustc_version" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", + "semver", ] [[package]] @@ -6652,7 +6553,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6661,14 +6562,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] @@ -6680,14 +6581,16 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustybuzz" -version = "0.14.1" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c" +checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", + "core_maths", + "log", "smallvec", - "ttf-parser 0.21.1", + "ttf-parser", "unicode-bidi-mirroring", "unicode-ccc", "unicode-properties", @@ -6717,9 +6620,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", "ref-cast", @@ -6741,14 +6644,14 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +checksum = "1dd3accc0f3f4bbaf2c9e1957a030dc582028130c67660d44c0a0345a22ca69b" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.9", - "smithay-client-toolkit 0.19.2", + "memmap2 0.9.10", + "smithay-client-toolkit", "tiny-skia", ] @@ -6768,7 +6671,7 @@ dependencies = [ "once_cell", "serde", "sha2 0.10.9", - "zbus 5.13.1", + "zbus", ] [[package]] @@ -6787,6 +6690,12 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + [[package]] name = "serde" version = "1.0.228" @@ -6826,7 +6735,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6835,7 +6744,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -6851,31 +6760,31 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "serde_spanned" -version = "1.0.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] [[package]] name = "serde_with" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.0", + "indexmap 2.14.0", "schemars 0.9.0", - "schemars 1.2.0", + "schemars 1.2.1", "serde_core", "serde_json", "serde_with_macros", @@ -6884,14 +6793,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.1" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -6907,17 +6816,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - [[package]] name = "sha2" version = "0.9.9" @@ -6969,9 +6867,19 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] [[package]] name = "simd_helpers" @@ -6982,6 +6890,12 @@ dependencies = [ "quote", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "simplecss" version = "0.2.2" @@ -6993,35 +6907,25 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "skrifa" -version = "0.37.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" dependencies = [ "bytemuck", - "read-fonts 0.35.0", -] - -[[package]] -name = "skrifa" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9eb0b904a04d09bd68c65d946617b8ff733009999050f3b851c32fb3cfb60e" -dependencies = [ - "bytemuck", - "read-fonts 0.36.0", + "read-fonts", ] [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" @@ -7038,48 +6942,23 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -[[package]] -name = "smithay-client-toolkit" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" -dependencies = [ - "bitflags 2.10.0", - "calloop 0.13.0", - "calloop-wayland-source 0.3.0", - "cursor-icon", - "libc", - "log", - "memmap2 0.9.9", - "rustix 0.38.44", - "thiserror 1.0.69", - "wayland-backend", - "wayland-client", - "wayland-csd-frame", - "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", - "wayland-scanner", - "xkeysym", -] - [[package]] name = "smithay-client-toolkit" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "bytemuck", - "calloop 0.14.3", - "calloop-wayland-source 0.4.1", + "calloop", + "calloop-wayland-source", "cursor-icon", "libc", "log", - "memmap2 0.9.9", + "memmap2 0.9.10", "pkg-config", - "rustix 1.1.3", - "thiserror 2.0.17", + "rustix 1.1.4", + "thiserror 2.0.18", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -7096,41 +6975,32 @@ dependencies = [ [[package]] name = "smithay-clipboard" version = "0.8.0" -source = "git+https://github.com/pop-os/smithay-clipboard?tag=pop-dnd-5#5a3007def49eb678d1144850c9ee04b80707c56a" +source = "git+https://github.com/pop-os/smithay-clipboard?tag=sctk-0.20#859b02c88f45c554049a67c6ddeec1692ce0e20b" dependencies = [ "libc", "raw-window-handle", - "smithay-client-toolkit 0.19.2", + "smithay-client-toolkit", "wayland-backend", ] [[package]] name = "smol_str" -version = "0.2.2" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" dependencies = [ - "serde", + "borsh", + "serde_core", ] [[package]] name = "socket2" -version = "0.4.10" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" -dependencies = [ - "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -7144,11 +7014,11 @@ dependencies = [ "cocoa", "core-graphics", "drm", - "fastrand 2.3.0", + "fastrand", "foreign-types", "js-sys", "log", - "memmap2 0.9.9", + "memmap2 0.9.10", "objc", "raw-window-handle", "redox_syscall 0.5.18", @@ -7169,7 +7039,7 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", ] [[package]] @@ -7193,8 +7063,8 @@ dependencies = [ "bitflags 1.3.2", "cfg_aliases 0.2.1", "libc", - "parking_lot 0.12.5", - "parking_lot_core 0.9.12", + "parking_lot", + "parking_lot_core", "static_init_macro", "winapi", ] @@ -7218,7 +7088,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" dependencies = [ - "float-cmp", + "float-cmp 0.9.0", ] [[package]] @@ -7235,9 +7105,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "sunrise" -version = "2.1.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0733c9f1eaa06ed6d103d88e21f784449d08a6733c2ca2b39381cbcbcfe89272" +checksum = "15eecb5ec59a060dd9fe8f88c48b701abecd6be9d9c28d55081b80bdda73981c" dependencies = [ "chrono", ] @@ -7260,11 +7130,11 @@ dependencies = [ [[package]] name = "swash" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a" +checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" dependencies = [ - "skrifa 0.37.0", + "skrifa", "yazi", "zeno", ] @@ -7282,9 +7152,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -7299,7 +7169,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7313,28 +7183,28 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.37.2" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" +checksum = "fe840c5b1afe259a5657392a4dbb74473a14c8db999c3ec2f4ae812e028a94da" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.3", + "windows 0.62.2", ] [[package]] name = "system-deps" -version = "7.0.7" +version = "7.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c8f33736f986f16d69b6cb8b03f55ddcad5c41acc4ccc39dd88e84aa805e7f" +checksum = "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da127796e7" dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.9.11+spec-1.1.0", + "toml 1.1.2+spec-1.1.0", "version-compare", ] @@ -7364,14 +7234,14 @@ checksum = "83176759e9416cf81ee66cb6508dbfe9c96f20b8b56265a39917551c23c70964" [[package]] name = "tempfile" -version = "3.24.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ - "fastrand 2.3.0", - "getrandom 0.3.4", + "fastrand", + "getrandom 0.4.2", "once_cell", - "rustix 1.1.3", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -7395,11 +7265,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -7410,18 +7280,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7435,44 +7305,44 @@ dependencies = [ [[package]] name = "tiff" -version = "0.10.3" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ "fax", "flate2", "half", "quick-error", "weezl", - "zune-jpeg 0.4.21", + "zune-jpeg 0.5.15", ] [[package]] name = "time" -version = "0.3.44" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -7481,9 +7351,9 @@ dependencies = [ [[package]] name = "timedate-zbus" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ - "zbus 5.13.1", + "zbus", ] [[package]] @@ -7527,9 +7397,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "serde_core", @@ -7538,9 +7408,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -7553,16 +7423,16 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" dependencies = [ "bytes", "libc", "mio", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.1", + "socket2", "tokio-macros", "tracing", "windows-sys 0.61.2", @@ -7570,13 +7440,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7601,71 +7471,54 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.11+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "serde_core", "serde_spanned", - "toml_datetime 0.7.5+spec-1.1.0", + "toml_datetime", "toml_parser", "toml_writer", - "winnow 0.7.14", + "winnow 1.0.1", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.25.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.6.11", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime 0.7.5+spec-1.1.0", + "indexmap 2.14.0", + "toml_datetime", "toml_parser", - "winnow 0.7.14", + "winnow 1.0.1", ] [[package]] name = "toml_parser" -version = "1.0.6+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 0.7.14", + "winnow 1.0.1", ] [[package]] name = "toml_writer" -version = "1.0.6+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tracing" @@ -7687,7 +7540,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -7723,9 +7576,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -7739,12 +7592,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "ttf-parser" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" - [[package]] name = "ttf-parser" version = "0.25.1" @@ -7760,7 +7607,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.1", + "rustc-hash 2.1.2", ] [[package]] @@ -7789,13 +7636,22 @@ dependencies = [ [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", - "winapi", + "windows-sys 0.61.2", +] + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", ] [[package]] @@ -7831,21 +7687,21 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-bidi-mirroring" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" +checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" [[package]] name = "unicode-ccc" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" +checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-linebreak" @@ -7867,9 +7723,9 @@ checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" [[package]] name = "unicode-vo" @@ -7898,11 +7754,11 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "upower_dbus" version = "0.3.2" -source = "git+https://github.com/pop-os/dbus-settings-bindings#87c3c35666b926a24a1e8045fd70be2db1145e34" +source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" dependencies = [ "serde", "serde_repr", - "zbus 5.13.1", + "zbus", ] [[package]] @@ -7926,14 +7782,14 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "usvg" -version = "0.42.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ea542ae85c715f07b082438a4231c3760539d902e11d093847a0b22963032" +checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" dependencies = [ "base64", "data-url", "flate2", - "fontdb 0.18.0", + "fontdb", "imagesize", "kurbo 0.11.3", "log", @@ -7971,9 +7827,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.19.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" dependencies = [ "js-sys", "serde_core", @@ -8009,12 +7865,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "walkdir" version = "2.5.0" @@ -8033,18 +7883,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" dependencies = [ "cfg-if", "once_cell", @@ -8055,22 +7914,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.56" +version = "0.4.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" dependencies = [ - "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8078,50 +7934,83 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" dependencies = [ "unicode-ident", ] [[package]] -name = "wasm-timer" -version = "0.2.5" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", - "parking_lot 0.11.2", + "parking_lot", "pin-utils", + "slab", "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", ] [[package]] name = "wayland-backend" -version = "0.3.12" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" dependencies = [ "cc", "downcast-rs 1.2.1", - "rustix 1.1.3", + "rustix 1.1.4", "scoped-tls", "smallvec", "wayland-sys", @@ -8129,12 +8018,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.12" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.10.0", - "rustix 1.1.3", + "bitflags 2.11.1", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] @@ -8145,29 +8034,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.12" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.3", + "rustix 1.1.4", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.10" +version = "0.32.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" +checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -8180,7 +8069,7 @@ version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8189,11 +8078,11 @@ dependencies = [ [[package]] name = "wayland-protocols-misc" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8202,11 +8091,11 @@ dependencies = [ [[package]] name = "wayland-protocols-plasma" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8215,11 +8104,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -8229,33 +8118,33 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.8" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml", + "quick-xml 0.39.2", "quote", ] [[package]] name = "wayland-server" -version = "0.31.11" +version = "0.31.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9297ab90f8d1f597711d36455c5b1b2290eca59b8134485e377a296b80b118c9" +checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "downcast-rs 1.2.1", - "rustix 1.1.3", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] [[package]] name = "wayland-sys" -version = "0.31.8" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", "log", @@ -8265,9 +8154,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.83" +version = "0.3.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" dependencies = [ "js-sys", "wasm-bindgen", @@ -8291,17 +8180,21 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "wgpu" -version = "22.1.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d1c4ba43f80542cf63a0a6ed3134629ae73e8ab51e4b765a67f3aa062eb433" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", - "cfg_aliases 0.1.1", + "bitflags 2.11.1", + "cfg-if", + "cfg_aliases 0.2.1", "document-features", + "hashbrown 0.16.1", "js-sys", "log", "naga", - "parking_lot 0.12.5", + "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "smallvec", @@ -8316,50 +8209,85 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "22.1.0" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0348c840d1051b8e86c3bcd31206080c5e71e5933dabd79be1ce732b0b2f089a" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", + "bit-set", "bit-vec", - "bitflags 2.10.0", - "cfg_aliases 0.1.1", + "bitflags 2.11.1", + "bytemuck", + "cfg_aliases 0.2.1", "document-features", - "indexmap 2.13.0", + "hashbrown 0.16.1", + "indexmap 2.14.0", "log", "naga", "once_cell", - "parking_lot 0.12.5", + "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.18", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] [[package]] -name = "wgpu-hal" -version = "22.0.0" +name = "wgpu-core-deps-apple" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6bbf4b4de8b2a83c0401d9e5ae0080a2792055f25859a02bf9be97952bbed4f" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.10.0", + "bitflags 2.11.1", "block", - "cfg_aliases 0.1.1", - "core-graphics-types", - "d3d12", + "bytemuck", + "cfg-if", + "cfg_aliases 0.2.1", + "core-graphics-types 0.2.0", "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", - "hassle-rs", + "hashbrown 0.16.1", "js-sys", "khronos-egl", "libc", @@ -8367,39 +8295,48 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", + "ndk-sys", "objc", "once_cell", - "parking_lot 0.12.5", + "ordered-float", + "parking_lot", + "portable-atomic", + "portable-atomic-util", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash 1.1.0", "smallvec", - "thiserror 1.0.69", + "thiserror 2.0.18", "wasm-bindgen", "web-sys", "wgpu-types", - "winapi", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] name = "wgpu-types" -version = "22.0.0" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9d91f0e2c4b51434dfa6db77846f2793149d8e73f800fa2e41f52b8eac3c5d" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", + "bytemuck", "js-sys", + "log", + "thiserror 2.0.18", "web-sys", ] [[package]] -name = "widestring" -version = "1.2.1" +name = "which" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" +checksum = "81995fafaaaf6ae47a7d0cc83c67caf92aeb7e5331650ae6ff856f7c0c60c459" +dependencies = [ + "libc", +] [[package]] name = "winapi" @@ -8435,7 +8372,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "window_clipboard" version = "0.4.1" -source = "git+https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab87bea9cebec6ae036906fd67fed254f5f" +source = "git+https://github.com/pop-os/window_clipboard.git?tag=sctk-0.20#f68595ee0e62fbd6589f4709b5aaa5c3c7ea5f6c" dependencies = [ "clipboard-win", "clipboard_macos", @@ -8449,23 +8386,11 @@ dependencies = [ [[package]] name = "windows" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.52.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" -dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -8475,11 +8400,23 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", + "windows-collections 0.2.0", "windows-core 0.61.2", - "windows-future", + "windows-future 0.2.1", "windows-link 0.1.3", - "windows-numerics", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections 0.3.2", + "windows-core 0.62.2", + "windows-future 0.3.2", + "windows-numerics 0.3.1", ] [[package]] @@ -8492,21 +8429,24 @@ dependencies = [ ] [[package]] -name = "windows-core" -version = "0.52.0" +name = "windows-collections" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-targets 0.52.6", + "windows-core 0.62.2", ] [[package]] name = "windows-core" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-result 0.1.2", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] @@ -8544,18 +8484,29 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core 0.61.2", "windows-link 0.1.3", - "windows-threading", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", + "windows-threading 0.2.1", ] [[package]] name = "windows-implement" -version = "0.53.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8566,18 +8517,18 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "windows-interface" -version = "0.53.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8588,7 +8539,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -8614,10 +8565,20 @@ dependencies = [ ] [[package]] -name = "windows-result" -version = "0.1.2" +name = "windows-numerics" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" +dependencies = [ + "windows-core 0.62.2", + "windows-link 0.2.1", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ "windows-targets 0.52.6", ] @@ -8640,6 +8601,16 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.4.2" @@ -8658,15 +8629,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" @@ -8712,21 +8674,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-targets" version = "0.48.5" @@ -8785,10 +8732,13 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" +name = "windows-threading" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link 0.2.1", +] [[package]] name = "windows_aarch64_gnullvm" @@ -8808,12 +8758,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -8832,12 +8776,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -8868,12 +8806,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -8892,12 +8824,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -8916,12 +8842,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -8940,12 +8860,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -8966,62 +8880,217 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.30.5" -source = "git+https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#12a5f17d1811cdebbcbd310a3d92965e9142fa12" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "ahash", - "android-activity", - "atomic-waker", - "bitflags 2.10.0", - "block2 0.5.1", - "bytemuck", - "calloop 0.13.0", + "bitflags 2.11.1", "cfg_aliases 0.2.1", - "concurrent-queue", - "core-foundation", - "core-graphics", "cursor-icon", "dpi", - "js-sys", "libc", - "memmap2 0.9.9", - "ndk", - "objc2 0.5.2", - "objc2-app-kit 0.2.2", - "objc2-foundation 0.2.2", - "objc2-ui-kit", - "orbclient", - "percent-encoding", - "pin-project", "raw-window-handle", - "redox_syscall 0.5.18", - "rustix 0.38.44", - "sctk-adwaita", - "smithay-client-toolkit 0.19.2", + "rustix 1.1.4", "smol_str", "tracing", - "unicode-segmentation", - "wasm-bindgen", - "wasm-bindgen-futures", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-plasma", - "web-sys", - "web-time", - "windows-sys 0.52.0", + "winit-android", + "winit-appkit", + "winit-common", + "winit-core", + "winit-orbital", + "winit-uikit", + "winit-wayland", + "winit-web", + "winit-win32", + "winit-x11", +] + +[[package]] +name = "winit-android" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "android-activity", + "bitflags 2.11.1", + "dpi", + "ndk", + "raw-window-handle", + "smol_str", + "tracing", + "winit-core", +] + +[[package]] +name = "winit-appkit" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "bitflags 2.11.1", + "block2 0.6.2", + "dispatch2", + "dpi", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-video", + "objc2-foundation 0.3.2", + "raw-window-handle", + "smol_str", + "tracing", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-common" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "memmap2 0.9.10", + "objc2 0.6.4", + "objc2-core-foundation", + "smol_str", + "tracing", + "winit-core", "x11-dl", - "x11rb", "xkbcommon-dl", ] [[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +name = "winit-core" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" dependencies = [ - "memchr", + "bitflags 2.11.1", + "cursor-icon", + "dpi", + "keyboard-types", + "raw-window-handle", + "smol_str", + "web-time", +] + +[[package]] +name = "winit-orbital" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "bitflags 2.11.1", + "dpi", + "libredox", + "orbclient", + "raw-window-handle", + "redox_syscall 0.7.4", + "smol_str", + "tracing", + "winit-core", +] + +[[package]] +name = "winit-uikit" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "bitflags 2.11.1", + "block2 0.6.2", + "dispatch2", + "dpi", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "objc2-ui-kit", + "raw-window-handle", + "smol_str", + "tracing", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-wayland" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "ahash", + "bitflags 2.11.1", + "calloop", + "cursor-icon", + "dpi", + "libc", + "memmap2 0.9.10", + "raw-window-handle", + "rustix 1.1.4", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "winit-common", + "winit-core", +] + +[[package]] +name = "winit-web" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "atomic-waker", + "bitflags 2.11.1", + "concurrent-queue", + "cursor-icon", + "dpi", + "js-sys", + "pin-project", + "raw-window-handle", + "smol_str", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winit-core", +] + +[[package]] +name = "winit-win32" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "bitflags 2.11.1", + "cursor-icon", + "dpi", + "raw-window-handle", + "smol_str", + "tracing", + "unicode-segmentation", + "windows-sys 0.59.0", + "winit-core", +] + +[[package]] +name = "winit-x11" +version = "0.31.0-beta.2" +source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#261cda54017f98a12dc55569c864430fe6770366" +dependencies = [ + "bitflags 2.11.1", + "bytemuck", + "calloop", + "cursor-icon", + "dpi", + "libc", + "percent-encoding", + "raw-window-handle", + "rustix 1.1.4", + "smol_str", + "tracing", + "winit-common", + "winit-core", + "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] @@ -9035,18 +9104,109 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.14" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.14.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "write16" @@ -9056,9 +9216,9 @@ checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" dependencies = [ "either", ] @@ -9085,7 +9245,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix 1.1.3", + "rustix 1.1.4", "x11rb-protocol", "xcursor", ] @@ -9108,30 +9268,32 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "xdg-shell-wrapper-config" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-panel#8eb8a1b6305213ec7402cb2ec24bef6b501b978a" +source = "git+https://github.com/pop-os/cosmic-panel#d518c7d25ef96f1a9696aa8cce008656bf66ece4" dependencies = [ "serde", "wayland-protocols-wlr", ] [[package]] -name = "xkb-data" -version = "0.2.1" +name = "xdgen" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddbaf7dc9e1a13a8a6dd4beb794d463ae16d150879092c757f4aea2d17b81305" +checksum = "25af88f104f06d5aeb80c77e5eb85e6f6f355f86f6e34307a14befd716efe4bf" +dependencies = [ + "fluent", + "freedesktop_entry_parser", + "unic-langid", + "xmltree", +] + +[[package]] +name = "xkb-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bde286fb1aad6e18459bdf90da78b611bb8a1993605de5d1ddacca4995c10a" dependencies = [ "serde", "serde-xml-rs", @@ -9155,7 +9317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" dependencies = [ "libc", - "memmap2 0.9.9", + "memmap2 0.9.10", "xkeysym", ] @@ -9166,7 +9328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a974f48060a14e95705c01f24ad9c3345022f4d97441b8a36beb7ed5c4a02d" dependencies = [ "libc", - "memmap2 0.9.9", + "memmap2 0.9.10", "xkeysym", ] @@ -9176,7 +9338,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.1", "dlib", "log", "once_cell", @@ -9192,12 +9354,27 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "xml" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8aa498d22c9bbaf482329839bc5620c46be275a19a812e9a22a2b07529a642a" + [[package]] name = "xml-rs" version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +[[package]] +name = "xmltree" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc04313cab124e498ab1724e739720807b6dc405b9ed0edc5860164d2e4ff70" +dependencies = [ + "xml", +] + [[package]] name = "xmlwriter" version = "0.1.0" @@ -9224,9 +9401,9 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -9235,75 +9412,39 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure", ] [[package]] name = "zbus" -version = "3.15.2" +version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" dependencies = [ - "async-broadcast 0.5.1", - "async-process 1.8.1", - "async-recursion", - "async-trait", - "byteorder", - "derivative", - "enumflags2", - "event-listener 2.5.3", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix 0.26.4", - "once_cell", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tokio", - "tracing", - "uds_windows", - "winapi", - "xdg-home", - "zbus_macros 3.15.2", - "zbus_names 2.6.1", - "zvariant 3.15.2", -] - -[[package]] -name = "zbus" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f79257df967b6779afa536788657777a0001f5b42524fcaf5038d4344df40b" -dependencies = [ - "async-broadcast 0.7.2", + "async-broadcast", "async-executor", - "async-io 2.6.0", - "async-lock 3.4.2", - "async-process 2.5.0", + "async-io", + "async-lock", + "async-process", "async-recursion", "async-task", "async-trait", "blocking", "enumflags2", - "event-listener 5.4.1", + "event-listener", "futures-core", - "futures-lite 2.6.1", + "futures-lite", "hex", "libc", "ordered-stream", - "rustix 1.1.3", + "rustix 1.1.4", "serde", "serde_repr", "tokio", @@ -9311,50 +9452,49 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.14", - "zbus_macros 5.13.1", - "zbus_names 4.3.1", - "zvariant 5.9.1", + "winnow 0.7.15", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "zbus-lockstep", + "zbus_xml", + "zvariant", ] [[package]] name = "zbus_macros" -version = "3.15.2" +version = "5.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", - "regex", - "syn 1.0.109", - "zvariant_utils 1.0.1", -] - -[[package]] -name = "zbus_macros" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aad23e2d2f91cae771c7af7a630a49e755f1eb74f8a46e9f6d5f7a146edf5a37" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", - "zbus_names 4.3.1", - "zvariant 5.9.1", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zbus_names" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" -dependencies = [ - "serde", - "static_assertions", - "zvariant 3.15.2", + "syn 2.0.117", + "zbus_names", + "zvariant", + "zvariant_utils", ] [[package]] @@ -9364,8 +9504,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", - "winnow 0.7.14", - "zvariant 5.9.1", + "winnow 0.7.15", + "zvariant", ] [[package]] @@ -9378,7 +9518,19 @@ dependencies = [ "serde", "serde_repr", "static_assertions", - "zbus 5.13.1", + "zbus", +] + +[[package]] +name = "zbus_xml" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "441a0064125265655bccc3a6af6bef56814d9277ac83fce48b1cd7e160b80eac" +dependencies = [ + "quick-xml 0.38.4", + "serde", + "zbus_names", + "zvariant", ] [[package]] @@ -9389,42 +9541,42 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" -version = "0.8.33" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.33" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure", ] @@ -9436,20 +9588,21 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", "zerofrom", + "zerovec", ] [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "serde", "yoke", @@ -9459,20 +9612,20 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "zmij" -version = "1.0.13" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac93432f5b761b22864c774aac244fa5c0fd877678a4c37ebf6cf42208f9c9ec" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zune-core" @@ -9482,9 +9635,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-core" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-inflate" @@ -9506,77 +9659,39 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.5.7" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d915729b0e7d5fe35c2f294c5dc10b30207cc637920e5b59077bfa3da63f28" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" dependencies = [ - "zune-core 0.5.0", + "zune-core 0.5.1", ] [[package]] name = "zvariant" -version = "3.15.2" +version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" -dependencies = [ - "byteorder", - "enumflags2", - "libc", - "serde", - "static_assertions", - "zvariant_derive 3.15.2", -] - -[[package]] -name = "zvariant" -version = "5.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "326aaed414f04fe839777b4c443d4e94c74e7b3621093bd9c5e649ac8aa96543" +checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" dependencies = [ "endi", "enumflags2", "serde", "url", - "winnow 0.7.14", - "zvariant_derive 5.9.1", - "zvariant_utils 3.3.0", + "winnow 0.7.15", + "zvariant_derive", + "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "3.15.2" +version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", - "zvariant_utils 1.0.1", -] - -[[package]] -name = "zvariant_derive" -version = "5.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba44e1f8f4da9e6e2d25d2a60b116ef8b9d0be174a7685e55bb12a99866279a7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", - "zvariant_utils 3.3.0", -] - -[[package]] -name = "zvariant_utils" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "syn 2.0.117", + "zvariant_utils", ] [[package]] @@ -9588,6 +9703,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.114", - "winnow 0.7.14", + "syn 2.0.117", + "winnow 0.7.15", ] diff --git a/Cargo.toml b/Cargo.toml index 3ec1c40..5a67aae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,14 +4,22 @@ default-members = ["cosmic-settings"] resolver = "3" [workspace.package] -rust-version = "1.85" +rust-version = "1.90" [workspace.dependencies] cosmic-randr = { git = "https://github.com/pop-os/cosmic-randr" } tokio = { version = "1.49.0", features = ["macros"] } +iced_winit = { git = "https://github.com/pop-os/libcosmic", default-features = false } [workspace.dependencies.libcosmic] -features = ["dbus-config", "desktop", "multi-window", "winit", "tokio", "qr_code"] +features = [ + "dbus-config", + "desktop", + "multi-window", + "winit", + "tokio", + "qr_code", +] git = "https://github.com/pop-os/libcosmic" [workspace.dependencies.cosmic-config] @@ -54,21 +62,32 @@ debug = true # [patch.'https://github.com/pop-os/cosmic-text'] # cosmic-text = { git = "https://github.com/pop-os/cosmic-text//", rev = "b017d7c" } -# [patch.'https://github.com/pop-os/cosmic-protocols'] -# cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "d0e95be" } -# cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "d0e95be" } +[patch.'https://github.com/pop-os/cosmic-protocols'] +cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "d0e95be" } +cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "d0e95be" } # [patch.'https://github.com/pop-os/cosmic-settings-daemon'] # cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" } # For development and testing purposes -# [patch.'https://github.com/pop-os/libcosmic'] -# libcosmic = { path = "../libcosmic" } -# cosmic-config = { path = "../libcosmic/cosmic-config" } -# cosmic-theme = { path = "../libcosmic/cosmic-theme" } -# iced_futures = { path = "../libcosmic/iced/futures" } +[patch.'https://github.com/pop-os/libcosmic'] +libcosmic = { path = "../libcosmic" } +cosmic-config = { path = "../libcosmic/cosmic-config" } +cosmic-theme = { path = "../libcosmic/cosmic-theme" } +iced_futures = { path = "../libcosmic/iced/futures" } +iced_winit = { path = "../libcosmic/iced/winit" } + +# libcosmic = { git = "https://github.com/pop-os/libcosmic//" } +# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } +# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" } +# iced_futures = { git = "https://github.com/pop-os/libcosmic//" } +# iced_winit = { git = "https://github.com/pop-os/libcosmic//" } # [patch.'https://github.com/pop-os/dbus-settings-bindings'] # cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" } # upower_dbus = { path = "../dbus-settings-bindings/upower" } # nm-secret-agent-manager = { git = "https://github.com/pop-os/dbus-settings-bindings//", branch = "nm-secret-agent" } + +[patch.crates-io] +atspi = { git = "https://github.com/wash2/atspi" } +atspi-common = { git = "https://github.com/wash2/atspi" } diff --git a/TESTING.md b/TESTING.md index bc31c83..43b75fc 100644 --- a/TESTING.md +++ b/TESTING.md @@ -10,6 +10,12 @@ This document provides a regression testing checklist for COSMIC Settings and th - [ ] Able to disconnect from and connect to a network. +#### Bluetooth + +- [ ] Bluetooth device connects. +- [ ] Paired device can be disconnected & reconnected. +- [ ] Paired device can be forgotten & connecting again works. + ### Desktop #### Wallpaper @@ -32,7 +38,7 @@ This document provides a regression testing checklist for COSMIC Settings and th #### Dock - [ ] Enable tiling. "Automatically hide dock" takes effect immediately. -- [ ] Disable tiling; maximize a window. "Autommatically hide dock" takes effect immediately. +- [ ] Disable tiling; maximize a window. "Automatically hide dock" takes effect immediately. - [ ] Changing position on screen works. - [ ] All Style settings take effect as expected. @@ -63,13 +69,13 @@ TBD after devices/profiles are fixed. #### X11 Applications Compatibility -- [ ] Global Shortcuts in X11 Applications works (in e.g. Discord). +- [ ] Global Shortcuts in X11 Applications work (in e.g. Discord). ### Time & Language #### Date & Time -- [ ] Changing time zome works. +- [ ] Changing time zone works. - [ ] Toggling 24-hour time takes effect in Settings preview, on top panel, and on the lock screen. - [ ] Toggling seconds takes effect in Settings preview and on top panel. - [ ] Changing first day of week takes effect in Calendar applet. diff --git a/cosmic-settings/Cargo.toml b/cosmic-settings/Cargo.toml index 9b8d28e..03c7a70 100644 --- a/cosmic-settings/Cargo.toml +++ b/cosmic-settings/Cargo.toml @@ -1,18 +1,22 @@ [package] name = "cosmic-settings" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "GPL-3.0-only" publish = false +[build-dependencies] +xdgen = "0.1" + [dependencies] accounts-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } anyhow = "1.0" ashpd = { version = "0.12", default-features = false, features = [ "tokio", ], optional = true } -chrono = "0.4.42" -clap = { version = "4.5.54", features = ["derive"] } +chrono = "0.4" +jiff = "0.2" +clap = { version = "4.5.59", features = ["derive"] } color-eyre = "0.6.5" cosmic-bg-config.workspace = true cosmic-comp-config = { workspace = true, optional = true } @@ -37,11 +41,11 @@ cosmic-settings-sound-subscription = { path = "../subscriptions/sound", optional ] } cosmic-settings-wallpaper = { path = "../pages/wallpapers" } cosmic-settings-daemon-config = { git = "https://github.com/pop-os/cosmic-settings-daemon", optional = true } -derive_setters = "0.1.8" +derive_setters = "0.1.9" dirs = "6.0.0" eyre = "0.6.12" freedesktop-desktop-entry = "0.8.1" -futures = "0.3.31" +futures = "0.3.32" hostname-validator = "1.1.1" hostname1-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } i18n-embed-fl = "0.10.0" @@ -56,31 +60,32 @@ indexmap = "2.13.0" itertools = "0.14.0" itoa = "1.0.17" libcosmic.workspace = true +iced_winit.workspace = true locale1 = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } -sysinfo = { version = "0.37.2", optional = true } +sysinfo = { version = "=0.38.0", optional = true } mime-apps = { package = "cosmic-mime-apps", git = "https://github.com/pop-os/cosmic-mime-apps", optional = true } notify = "8.2.0" -regex = "1.12.2" +regex = "1.12.3" ron = "0.12" -rust-embed = "8.9.0" +rust-embed = "8.11.0" sctk = { workspace = true, optional = true } secure-string = "0.3.0" serde = { version = "1.0.228", features = ["derive"] } -slab = "0.4.11" +slab = "0.4.12" slotmap = "1.1.1" static_init = "1.0.4" -sunrise = "2.1.0" +sunrise = "3.0.0" timedate-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } -tokio = { workspace = true, features = ["fs", "io-util", "sync"] } +tokio = { workspace = true, features = ["fs", "io-util", "process", "sync"] } tracing = "0.1.44" tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } udev = { version = "0.9.3", optional = true } upower_dbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } bluez-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings", optional = true } url = "2.5.8" -xkb-data = "0.2.1" +xkb-data = "0.2.2" xkeysym = { version = "0.2.1", optional = true } -zbus = { version = "5.13.1", default-features = false, features = [ +zbus = { version = "5.13.2", default-features = false, features = [ "tokio", ], optional = true } zbus_polkit = { version = "5.0.0", optional = true } @@ -92,6 +97,7 @@ gettext-rs = { version = "0.7.7", features = [ ], optional = true } num-traits = "0.2" pwhash = "1" +which = "8.0.0" [dependencies.icu] version = "2.1.1" @@ -112,6 +118,7 @@ gettext = ["dep:gettext-rs"] # Default features for Linux linux = [ + "cosmic-comp-config", "page-accessibility", "page-about", "page-bluetooth", @@ -133,9 +140,9 @@ linux = [ # Pages page-accessibility = [ + "cosmic-comp-config", "dep:sctk", "dep:cosmic-protocols", - "dep:cosmic-comp-config", "dep:cosmic-settings-config", "dep:cosmic-settings-daemon-config", "dep:cosmic-settings-accessibility-subscription", @@ -151,14 +158,14 @@ page-date = ["dep:timedate-zbus", "dep:zbus"] page-default-apps = ["dep:cosmic-settings-config", "dep:mime-apps"] page-display = ["dep:udev"] page-input = [ + "cosmic-comp-config", "gettext", - "dep:cosmic-comp-config", "dep:cosmic-settings-config", "dep:udev", "dep:xkeysym", "wayland", ] -page-legacy-applications = ["dep:cosmic-comp-config"] +page-legacy-applications = ["cosmic-comp-config", "dep:cosmic-randr"] page-networking = [ "dep:cosmic-settings-network-manager-subscription", "xdg-portal", @@ -167,18 +174,25 @@ page-networking = [ "dep:zbus", ] page-power = ["dep:upower_dbus", "dep:zbus"] -page-region = ["gettext", "dep:locales-rs", "dep:locale1", "dep:zbus"] +page-region = [ + "gettext", + "dep:locales-rs", + "dep:locale1", + "dep:zbus", + "dep:accounts-zbus", +] page-sound = ["dep:cosmic-settings-sound-subscription"] page-users = ["xdg-portal", "dep:accounts-zbus", "dep:zbus", "dep:zbus_polkit"] -page-window-management = ["dep:cosmic-settings-config"] -page-workspaces = ["dep:cosmic-comp-config"] +page-window-management = ["cosmic-comp-config", "dep:cosmic-settings-config"] +page-workspaces = ["cosmic-comp-config"] # Other features a11y = ["libcosmic/a11y"] ashpd = ["dep:ashpd"] +cosmic-comp-config = ["dep:cosmic-comp-config"] dbus-config = ["libcosmic/dbus-config", "cosmic-config/dbus"] single-instance = ["libcosmic/single-instance"] test = [] -wayland = ["libcosmic/wayland", "dep:cosmic-panel-config", "dep:cosmic-randr"] +wayland = ["libcosmic/wayland", "dep:cosmic-panel-config", "dep:cosmic-randr", "iced_winit/cctk"] wgpu = ["libcosmic/wgpu"] xdg-portal = ["ashpd", "libcosmic/xdg-portal"] diff --git a/cosmic-settings/build.rs b/cosmic-settings/build.rs new file mode 100644 index 0000000..4f0dd04 --- /dev/null +++ b/cosmic-settings/build.rs @@ -0,0 +1,223 @@ +use std::{env, fs, path::PathBuf}; +use xdgen::{App, Context, FluentString}; + +fn main() { + let ctx = Context::new("../i18n", env::var("CARGO_PKG_NAME").unwrap()).unwrap(); + + [ + ( + "com.system76.CosmicSettings", + "app", + "xdg-entry-comment", + "xdg-entry-keywords", + ), + ( + "com.system76.CosmicSettings.About", + "xdg-entry-about", + "xdg-entry-about-comment", + "xdg-entry-about-keywords", + ), + ( + "com.system76.CosmicSettings.Accessibility", + "xdg-entry-ally", + "xdg-entry-a11y-comment", + "xdg-entry-a11y-keywords", + ), + ( + "com.system76.CosmicSettings.Appearance", + "appearance", + "xdg-entry-appearance-comment", + "xdg-entry-appearance-keywords", + ), + ( + "com.system76.CosmicSettings.Applications", + "xdg-entry-applications", + "xdg-entry-applications-comment", + "xdg-entry-applications-keywords", + ), + ( + "com.system76.CosmicSettings.Bluetooth", + "bluetooth", + "xdg-entry-bluetooth-comment", + "xdg-entry-bluetooth-keywords", + ), + ( + "com.system76.CosmicSettings.DateTime", + "xdg-entry-date-time", + "xdg-entry-date-time-comment", + "xdg-entry-date-time-keywords", + ), + ( + "com.system76.CosmicSettings.DefaultApps", + "xdg-entry-default-apps", + "xdg-entry-default-apps-comment", + "xdg-entry-default-apps-keywords", + ), + ( + "com.system76.CosmicSettings.Desktop", + "xdg-entry-desktop", + "xdg-entry-desktop-comment", + "xdg-entry-desktop-keywords", + ), + ( + "com.system76.CosmicSettings.Displays", + "xdg-entry-displays", + "xdg-entry-displays-comment", + "xdg-entry-displays-keywords", + ), + ( + "com.system76.CosmicSettings.Dock", + "xdg-entry-dock", + "xdg-entry-dock-comment", + "xdg-entry-dock-keywords", + ), + ( + "com.system76.CosmicSettings.Input", + "xdg-entry-input", + "xdg-entry-input-comment", + "xdg-entry-input-keywords", + ), + ( + "com.system76.CosmicSettings.Keyboard", + "xdg-entry-keyboard", + "xdg-entry-keyboard-comment", + "xdg-entry-keyboard-keywords", + ), + ( + "com.system76.CosmicSettings.Mouse", + "xdg-entry-mouse", + "xdg-entry-mouse-comment", + "xdg-entry-mouse-keywords", + ), + ( + "com.system76.CosmicSettings.Network", + "xdg-entry-network", + "xdg-entry-network-comment", + "xdg-entry-network-keywords", + ), + ( + "com.system76.CosmicSettings.Notifications", + "xdg-entry-notifications", + "xdg-entry-notifications-comment", + "xdg-entry-notifications-keywords", + ), + ( + "com.system76.CosmicSettings.Panel", + "xdg-entry-panel", + "xdg-entry-panel-comment", + "xdg-entry-panel-keywords", + ), + ( + "com.system76.CosmicSettings.Power", + "xdg-entry-power", + "xdg-entry-power-comment", + "xdg-entry-power-keywords", + ), + ( + "com.system76.CosmicSettings.RegionLanguage", + "xdg-entry-region-language", + "xdg-entry-region-language-comment", + "xdg-entry-region-language-keywords", + ), + ( + "com.system76.CosmicSettings.Sound", + "xdg-entry-sound", + "xdg-entry-sound-comment", + "xdg-entry-sound-keywords", + ), + ( + "com.system76.CosmicSettings.StartupApps", + "xdg-entry-startup-apps", + "xdg-entry-startup-apps-comment", + "xdg-entry-startup-apps-keywords", + ), + ( + "com.system76.CosmicSettings.System", + "xdg-entry-system", + "xdg-entry-system-comment", + "xdg-entry-system-keywords", + ), + ( + "com.system76.CosmicSettings.Time", + "xdg-entry-time-language", + "xdg-entry-time-language-comment", + "xdg-entry-time-language-keywords", + ), + ( + "com.system76.CosmicSettings.Touchpad", + "xdg-entry-touchpad", + "xdg-entry-touchpad-comment", + "xdg-entry-touchpad-keywords", + ), + ( + "com.system76.CosmicSettings.Users", + "xdg-entry-users", + "xdg-entry-users-comment", + "xdg-entry-users-keywords", + ), + ( + "com.system76.CosmicSettings.Vpn", + "vpn", + "xdg-entry-vpn-comment", + "xdg-entry-vpn-keywords", + ), + ( + "com.system76.CosmicSettings.Wallpaper", + "xdg-entry-wallpaper", + "xdg-entry-wallpaper-comment", + "xdg-entry-wallpaper-keywords", + ), + ( + "com.system76.CosmicSettings.WindowManagement", + "xdg-entry-window-management", + "xdg-entry-window-management-comment", + "xdg-entry-window-management-keywords", + ), + ( + "com.system76.CosmicSettings.Wired", + "xdg-entry-wired", + "xdg-entry-wired-comment", + "xdg-entry-wired-keywords", + ), + ( + "com.system76.CosmicSettings.Wireless", + "xdg-entry-wireless", + "xdg-entry-wireless-comment", + "xdg-entry-wireless-keywords", + ), + ( + "com.system76.CosmicSettings.Workspaces", + "xdg-entry-workspaces", + "xdg-entry-workspaces-comment", + "xdg-entry-workspaces-keywords", + ), + ( + "com.system76.CosmicSettings.LegacyApplications", + "xdg-entry-x11-applications", + "xdg-entry-x11-applications-comment", + "xdg-entry-x11-applications-keywords", + ), + ] + .into_iter() + .map(|(id, name, comment, keywords)| { + let app = App::new(FluentString(name)) + .comment(FluentString(comment)) + .keywords(FluentString(keywords)); + + let output = PathBuf::from("../target/xdgen"); + + (id, app, output) + }) + .for_each(|(id, app, output)| { + fs::create_dir_all(&output).unwrap(); + fs::write( + output.join(format!("{}.desktop", id)), + app.expand_desktop( + dbg!(format!("../resources/applications/{}.desktop", id)), + &ctx, + ) + .unwrap(), + ) + .unwrap(); + }); +} diff --git a/cosmic-settings/src/app.rs b/cosmic-settings/src/app.rs index 7305897..dfac360 100644 --- a/cosmic-settings/src/app.rs +++ b/cosmic-settings/src/app.rs @@ -39,7 +39,7 @@ use cosmic::{ settings, text_input, }, }; -#[cfg(any(feature = "page-window-management", feature = "page-accessibility"))] +#[cfg(feature = "cosmic-comp-config")] use cosmic_comp_config::CosmicCompConfig; #[cfg(feature = "wayland")] use cosmic_panel_config::CosmicPanelConfig; @@ -99,6 +99,7 @@ impl SettingsApp { PageCommands::Displays => self.pages.page_id::(), #[cfg(feature = "wayland")] PageCommands::Dock => self.pages.page_id::(), + #[cfg(feature = "wayland")] PageCommands::DockApplet => self.pages.page_id::(), #[cfg(feature = "page-input")] PageCommands::Input => self.pages.page_id::(), @@ -114,6 +115,7 @@ impl SettingsApp { PageCommands::Network => self.pages.page_id::(), #[cfg(feature = "wayland")] PageCommands::Panel => self.pages.page_id::(), + #[cfg(feature = "wayland")] PageCommands::PanelApplet => { self.pages.page_id::() } @@ -146,9 +148,9 @@ impl SettingsApp { } } - fn id(&self) -> cosmic::iced_core::id::Id { + fn id(&self) -> cosmic::iced::id::Id { let cur_page_name = self.pages.info[self.active_page].id.as_ref(); - cosmic::iced_core::id::Id::new(cur_page_name.to_owned()) + cosmic::iced::id::Id::new(cur_page_name.to_owned()) } } @@ -167,7 +169,7 @@ pub enum Message { PageMessage(crate::pages::Message), #[cfg(feature = "wayland")] PanelConfig(Box), - #[cfg(any(feature = "page-window-management", feature = "page-accessibility"))] + #[cfg(feature = "cosmic-comp-config")] CompConfig(Box), SearchActivate, SearchActivateWith(String), @@ -356,7 +358,7 @@ impl cosmic::Application for SettingsApp { Message::PanelConfig(Box::new(update.config)) }), page.subscription(self.core()).map(Message::PageMessage), - #[cfg(any(feature = "page-window-management", feature = "page-accessibility"))] + #[cfg(feature = "cosmic-comp-config")] self.core() .watch_config::("com.system76.CosmicComp") .map(|update| { @@ -684,6 +686,13 @@ impl cosmic::Application for SettingsApp { return page.update(message).map(Into::into); } } + + #[cfg(feature = "page-workspaces")] + crate::pages::Message::Workspaces(message) => { + if let Some(page) = self.pages.page_mut::() { + return page.update(message).map(Into::into); + } + } }, #[cfg(feature = "wayland")] @@ -778,7 +787,7 @@ impl cosmic::Application for SettingsApp { return Task::batch(tasks); } - #[cfg(any(feature = "page-window-management", feature = "page-accessibility"))] + #[cfg(feature = "cosmic-comp-config")] Message::CompConfig(comp_config) => { let mut tasks = Vec::new(); @@ -879,7 +888,7 @@ impl cosmic::Application for SettingsApp { } else if let Some(sub_pages) = self.pages.sub_pages(self.active_page) { self.sub_page_view(sub_pages) } else { - return self.page_container(row::row()); + return self.page_container(cosmic::widget::space()); }; container(view).into() @@ -1048,7 +1057,7 @@ impl SettingsApp { Message::Page(parent), ); - let mut page_header_content: cosmic::iced_widget::Row<'_, Message, Theme> = + let mut page_header_content: cosmic::iced::widget::Row<'_, Message, Theme> = row::with_capacity(2) .align_y(iced::Alignment::End) .push(page_header); diff --git a/cosmic-settings/src/pages/accessibility/magnifier.rs b/cosmic-settings/src/pages/accessibility/magnifier.rs index 92606ba..d476b71 100644 --- a/cosmic-settings/src/pages/accessibility/magnifier.rs +++ b/cosmic-settings/src/pages/accessibility/magnifier.rs @@ -3,8 +3,8 @@ use std::fmt::Write; use cosmic::{ Apply, - iced::{Element, Length}, - iced_core::text::Wrapping, + iced::core::text::Wrapping, + iced::{Element, Length, stream}, surface, widget::{self, icon, settings, svg, text}, }; @@ -129,9 +129,9 @@ impl page::Page for Page { Ok((tx, mut rx)) => { self.wayland_thread = Some(tx); - return cosmic::Task::stream(cosmic::iced_futures::stream::channel( + return cosmic::Task::stream(stream::channel( 1, - |mut sender| async move { + |mut sender: futures::channel::mpsc::Sender| async move { while let Some(event) = rx.recv().await { let _ = sender .send(crate::pages::Message::AccessibilityMagnifier( @@ -219,19 +219,18 @@ pub fn magnifier( .add( settings::item::builder(&descriptions[magnifier]) .description(&descriptions[controls]) - .control( - widget::toggler(page.magnifier_state).on_toggle(Message::SetMagnifier), - ), + .toggler(page.magnifier_state, Message::SetMagnifier), + ) + .add( + settings::item::builder(&descriptions[scroll_controls]).toggler( + page.zoom_config.enable_mouse_zoom_shortcuts, + Message::SetMouseShortcuts, + ), + ) + .add( + settings::item::builder(&descriptions[show_overlay]) + .toggler(page.zoom_config.show_overlay, Message::SetOverlay), ) - .add(settings::item( - &descriptions[scroll_controls], - widget::toggler(page.zoom_config.enable_mouse_zoom_shortcuts) - .on_toggle(Message::SetMouseShortcuts), - )) - .add(settings::item( - &descriptions[show_overlay], - widget::toggler(page.zoom_config.show_overlay).on_toggle(Message::SetOverlay), - )) .add(settings::item( &descriptions[increment], widget::dropdown::popup_dropdown( @@ -247,10 +246,10 @@ pub fn magnifier( }, ), )) - .add(settings::item( - &descriptions[signin], - widget::toggler(page.zoom_config.start_on_login).on_toggle(Message::SetSignin), - )) + .add( + settings::item::builder(&descriptions[signin]) + .toggler(page.zoom_config.start_on_login, Message::SetSignin), + ) .apply(Element::from) .map(crate::pages::Message::AccessibilityMagnifier) }) @@ -300,36 +299,21 @@ pub fn view_movement() -> section::Section { settings::section() .title(§ion.title) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[continuous]), - ZoomMovement::Continuously, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[onedge]), - ZoomMovement::OnEdge, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(&descriptions[centered]), - ZoomMovement::Centered, - Some(page.zoom_config.view_moves), - Message::SetMovement, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[continuous]).radio( + ZoomMovement::Continuously, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) + .add(settings::item::builder(&descriptions[onedge]).radio( + ZoomMovement::OnEdge, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) + .add(settings::item::builder(&descriptions[centered]).radio( + ZoomMovement::Centered, + Some(page.zoom_config.view_moves), + Message::SetMovement, + )) .apply(Element::from) .map(crate::pages::Message::AccessibilityMagnifier) }) diff --git a/cosmic-settings/src/pages/accessibility/mod.rs b/cosmic-settings/src/pages/accessibility/mod.rs index cad369c..f8b75f2 100644 --- a/cosmic-settings/src/pages/accessibility/mod.rs +++ b/cosmic-settings/src/pages/accessibility/mod.rs @@ -1,10 +1,11 @@ use cosmic::{ - Task, + Apply, Element, Task, cosmic_theme::{CosmicPalette, ThemeBuilder}, - iced_core::text::Wrapping, + iced::core::text::Wrapping, + iced::stream, surface, theme::CosmicTheme, - widget::{dropdown, settings, text, toggler}, + widget::{dropdown, settings, text}, }; pub use cosmic_comp_config::ZoomMovement; use cosmic_config::CosmicConfigEntry; @@ -127,9 +128,9 @@ impl page::Page for Page { Ok((tx, mut rx)) => { self.wayland_thread = Some(tx); - return cosmic::Task::stream(cosmic::iced_futures::stream::channel( + return cosmic::Task::stream(stream::channel( 1, - |mut sender| async move { + |mut sender: futures::channel::mpsc::Sender| async move { while let Some(event) = rx.recv().await { let _ = sender .send(crate::pages::Message::Accessibility(Message::Event( @@ -199,6 +200,22 @@ pub fn vision() -> section::Section { .view::(move |binder, page, section| { let descriptions = §ion.descriptions; + let (magnifier_entity, _magnifier_info) = binder + .info + .iter() + .find(|(_, v)| v.id == "accessibility_magnifier") + .expect("magnifier page not found"); + + let status_text = if page.wayland_available.is_some() { + if page.magnifier_state { + &descriptions[on] + } else { + &descriptions[off] + } + } else { + &descriptions[unavailable] + }; + settings::section() .title(§ion.title) .add( @@ -209,31 +226,13 @@ pub fn vision() -> section::Section { }, ), ) - .add({ - let (magnifier_entity, _magnifier_info) = binder - .info - .iter() - .find(|(_, v)| v.id == "accessibility_magnifier") - .expect("magnifier page not found"); - - let status_text = if page.wayland_available.is_some() { - if page.magnifier_state { - &descriptions[on] - } else { - &descriptions[off] - } - } else { - &descriptions[unavailable] - }; - - crate::widget::go_next_with_item( - &descriptions[magnifier], - text::body(status_text).wrapping(Wrapping::Word), - page.wayland_available - .is_some() - .then_some(crate::pages::Message::Page(magnifier_entity)), - ) - }) + .add(crate::widget::go_next_with_item( + &descriptions[magnifier], + text::body(status_text).wrapping(Wrapping::Word), + page.wayland_available + .is_some() + .then_some(crate::pages::Message::Page(magnifier_entity)), + )) .add( settings::item::builder(&descriptions[high_contrast]) .toggler(page.theme.is_high_contrast, |enable| { @@ -241,21 +240,19 @@ pub fn vision() -> section::Section { }), ) .add( - settings::item::builder(&descriptions[invert_colors]).control( - toggler(page.screen_inverted).on_toggle_maybe( - page.wayland_available - .is_some_and(|ver| ver >= 2) - .then_some(|set| Message::SetScreenInverted(set).into()), - ), + settings::item::builder(&descriptions[invert_colors]).toggler_maybe( + page.screen_inverted, + page.wayland_available + .is_some_and(|ver| ver >= 2) + .then_some(|set| Message::SetScreenInverted(set).into()), ), ) .add( - settings::item::builder(&descriptions[color_filters]).control( - toggler(page.screen_filter_active).on_toggle_maybe( - page.wayland_available - .is_some_and(|ver| ver >= 2) - .then_some(|set| Message::SetScreenFilterActive(set).into()), - ), + settings::item::builder(&descriptions[color_filters]).toggler_maybe( + page.screen_filter_active, + page.wayland_available + .is_some_and(|ver| ver >= 2) + .then_some(|set| Message::SetScreenFilterActive(set).into()), ), ) .add({ @@ -303,13 +300,11 @@ pub fn hearing() -> section::Section { settings::section() .title(§ion.title) .add( - cosmic::Element::from( - settings::item::builder(&descriptions[mono]) - .toggler(page.daemon_config.mono_sound, Message::SetSoundMono), - ) - .map(crate::pages::Message::Accessibility), + settings::item::builder(&descriptions[mono]) + .toggler(page.daemon_config.mono_sound, Message::SetSoundMono), ) - .into() + .apply(Element::from) + .map(crate::pages::Message::Accessibility) }) } diff --git a/cosmic-settings/src/pages/applications/default_apps.rs b/cosmic-settings/src/pages/applications/default_apps.rs index 1584218..89b28c0 100644 --- a/cosmic-settings/src/pages/applications/default_apps.rs +++ b/cosmic-settings/src/pages/applications/default_apps.rs @@ -10,7 +10,9 @@ use std::{ }; use cosmic::{ - Apply, Element, Task, surface, + Apply, Element, Task, + iced::Alignment, + surface, widget::{self, dropdown, icon, settings}, }; use cosmic_config::{ConfigGet, ConfigSet}; @@ -103,7 +105,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("default-apps", "preferences-default-applications-symbolic") .title(fl!("default-apps")) - .description(fl!("default-apps", "desc")) + .description(fl!("xdg-entry-default-apps-comment")) } fn on_enter(&mut self) -> Task { @@ -282,146 +284,265 @@ impl Page { fn apps() -> Section { Section::default().view::(move |_binder, page, section| { let Some(mime_apps) = page.mime_apps.as_ref() else { - return widget::row().into(); + return widget::space().into(); }; + // Avoid creating popup_dropdown for empty app lists. + // Empty categories are rendered as non-interactive text to prevent Wayland crashes. settings::section() .title(§ion.title) .add({ let meta = &mime_apps.apps[DROPDOWN_WEB_BROWSER]; - settings::flex_item( - fl!("default-apps", "web-browser"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::WebBrowser, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "web-browser"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) - .min_item_width(300.0) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "web-browser"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::WebBrowser, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + .min_item_width(300.0) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_FILE_MANAGER]; - settings::flex_item( - fl!("default-apps", "file-manager"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::FileManager, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "file-manager"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "file-manager"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::FileManager, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_MAIL]; - settings::flex_item( - fl!("default-apps", "mail-client"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Mail, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "mail-client"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "mail-client"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Mail, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_MUSIC]; - settings::flex_item( - fl!("default-apps", "music"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Audio, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "music"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "music"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Audio, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_VIDEO]; - settings::flex_item( - fl!("default-apps", "video"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Video, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "video"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "video"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Video, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_PHOTO]; - settings::flex_item( - fl!("default-apps", "photos"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Image, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "photos"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "photos"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Image, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_CALENDAR]; - settings::flex_item( - fl!("default-apps", "calendar"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Calendar, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "calendar"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "calendar"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Calendar, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_TERMINAL]; - settings::flex_item( - fl!("default-apps", "terminal"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::Terminal, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "terminal"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "terminal"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::Terminal, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .add({ let meta = &mime_apps.apps[DROPDOWN_TEXT_EDITOR]; - settings::flex_item( - fl!("default-apps", "text-editor"), - dropdown::popup_dropdown( - &meta.apps, - meta.selected, - |id| Message::SetDefault(Category::TextEditor, id), - cosmic::iced::window::Id::RESERVED, - Message::Surface, - |a| crate::app::Message::PageMessage(crate::pages::Message::DefaultApps(a)), + if meta.apps.is_empty() { + settings::flex_item( + fl!("default-apps", "text-editor"), + widget::text(fl!("default-apps", "not-installed")), ) - .icons(Cow::Borrowed(&meta.icons)), - ) + .align_items(Alignment::Center) + } else { + settings::flex_item( + fl!("default-apps", "text-editor"), + dropdown::popup_dropdown( + &meta.apps, + meta.selected, + |id| Message::SetDefault(Category::TextEditor, id), + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage( + crate::pages::Message::DefaultApps(a), + ) + }, + ) + .icons(Cow::Borrowed(&meta.icons)), + ) + .align_items(Alignment::Center) + } }) .apply(Element::from) .map(crate::pages::Message::DefaultApps) diff --git a/cosmic-settings/src/pages/applications/legacy_applications.rs b/cosmic-settings/src/pages/applications/legacy_applications.rs index 4a94867..a21d605 100644 --- a/cosmic-settings/src/pages/applications/legacy_applications.rs +++ b/cosmic-settings/src/pages/applications/legacy_applications.rs @@ -12,16 +12,15 @@ use std::{ use cosmic::{ Apply, Element, Task, cosmic_config::{self, ConfigGet, ConfigSet}, - iced::Length, + iced::stream, surface, - widget::{self, dropdown, text}, + widget::{self, dropdown, settings, text}, }; use cosmic_comp_config::{EavesdroppingKeyboardMode, XwaylandDescaling, XwaylandEavesdropping}; use cosmic_randr_shell::List; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use futures::SinkExt; -use slab::Slab; use slotmap::SlotMap; use tokio::sync::oneshot; use tracing::error; @@ -104,7 +103,7 @@ impl page::Page for Page { "preferences-X11-applications-symbolic", ) .title(fl!("legacy-applications")) - .description(fl!("legacy-applications", "desc")) + .description(fl!("xdg-entry-x11-applications-comment")) } fn on_enter(&mut self) -> Task { @@ -136,9 +135,9 @@ impl page::Page for Page { }); // Forward messages from another thread to prevent the monitoring thread from blocking. - let (randr_task, randr_handle) = Task::stream(cosmic::iced_futures::stream::channel( + let (randr_task, randr_handle) = Task::stream(stream::channel( 1, - |mut sender| async move { + |mut sender: futures::channel::mpsc::Sender<_>| async move { while let Some(message) = rx.recv().await { if let cosmic_randr::Message::ManagerDone = message && !refresh_pending.swap(true, Ordering::SeqCst) @@ -265,89 +264,75 @@ impl Page { } pub fn legacy_application_global_shortcuts() -> Section { - let mut descriptions = Slab::new(); - - let desc = descriptions.insert(fl!("legacy-app-global-shortcuts", "desc")); - let none = descriptions.insert(fl!("legacy-app-global-shortcuts", "none")); - let modifiers = descriptions.insert(fl!("legacy-app-global-shortcuts", "modifiers")); - let combination = descriptions.insert(fl!("legacy-app-global-shortcuts", "combination")); - let all = descriptions.insert(fl!("legacy-app-global-shortcuts", "all")); - let mouse = descriptions.insert(fl!("legacy-app-global-shortcuts", "mouse")); + crate::slab!(descriptions { + desc = fl!("legacy-app-global-shortcuts", "desc"); + none = fl!("legacy-app-global-shortcuts", "none"); + modifiers = fl!("legacy-app-global-shortcuts", "modifiers"); + combination = fl!("legacy-app-global-shortcuts", "combination"); + all = fl!("legacy-app-global-shortcuts", "all"); + mouse = fl!("legacy-app-global-shortcuts", "mouse"); + }); Section::default() .title(fl!("legacy-app-global-shortcuts")) .descriptions(descriptions) .view::(move |_binder, page, section| { - let title = widget::text::body(§ion.title).font(cosmic::font::bold()); - let description = widget::text::body(§ion.descriptions[desc]); + let title = text::body(§ion.title).font(cosmic::font::bold()); + let description = text::body(§ion.descriptions[desc]); - let content = widget::settings::section::<'_, crate::pages::Message>() - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[none]), - EavesdroppingKeyboardMode::None, - Some(page.comp_config_xwayland_eavesdropping.keyboard), - |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[modifiers]), + let content = settings::section::<'_, crate::pages::Message>() + .add(settings::item::builder(§ion.descriptions[none]).radio( + EavesdroppingKeyboardMode::None, + Some(page.comp_config_xwayland_eavesdropping.keyboard), + |t| Message::SetXwaylandKeyboardMode(t).into(), + )) + .add( + settings::item::builder(§ion.descriptions[modifiers]).radio( EavesdroppingKeyboardMode::Modifiers, Some(page.comp_config_xwayland_eavesdropping.keyboard), |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[combination]), + ), + ) + .add( + settings::item::builder(§ion.descriptions[combination]).radio( EavesdroppingKeyboardMode::Combinations, Some(page.comp_config_xwayland_eavesdropping.keyboard), |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - text::body(§ion.descriptions[all]), - EavesdroppingKeyboardMode::All, - Some(page.comp_config_xwayland_eavesdropping.keyboard), - |t| Message::SetXwaylandKeyboardMode(t).into(), - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item( - §ion.descriptions[mouse], - widget::toggler(page.comp_config_xwayland_eavesdropping.pointer) - .on_toggle(|t| Message::SetXwaylandMouseButtonMode(t).into()), - )); + ), + ) + .add(settings::item::builder(§ion.descriptions[all]).radio( + EavesdroppingKeyboardMode::All, + Some(page.comp_config_xwayland_eavesdropping.keyboard), + |t| Message::SetXwaylandKeyboardMode(t).into(), + )) + .add( + settings::item::builder(§ion.descriptions[mouse]) + .toggler(page.comp_config_xwayland_eavesdropping.pointer, |t| { + Message::SetXwaylandMouseButtonMode(t).into() + }), + ); widget::column::with_capacity(3) .push(title) .push(description) .push(content) - .spacing(cosmic::theme::active().cosmic().spacing.space_xxs) + .spacing(cosmic::theme::spacing().space_xxs) .apply(cosmic::Element::from) .map(Into::into) }) } pub fn legacy_application_scaling() -> Section { - let mut descriptions = Slab::new(); + crate::slab!(descriptions { + gaming = fl!("legacy-app-scaling", "scaled-gaming"); + gaming_desc = fl!("legacy-app-scaling", "gaming-description"); + apps = fl!("legacy-app-scaling", "scaled-applications"); + apps_desc = fl!("legacy-app-scaling", "applications-description"); + compat = fl!("legacy-app-scaling", "scaled-compatibility"); + compat_desc = fl!("legacy-app-scaling", "compatibility-description"); + preferred_display = fl!("legacy-app-scaling", "preferred-display"); - let gaming = descriptions.insert(fl!("legacy-app-scaling", "scaled-gaming")); - let gaming_desc = descriptions.insert(fl!("legacy-app-scaling", "gaming-description")); - let apps = descriptions.insert(fl!("legacy-app-scaling", "scaled-applications")); - let apps_desc = descriptions.insert(fl!("legacy-app-scaling", "applications-description")); - let compat = descriptions.insert(fl!("legacy-app-scaling", "scaled-compatibility")); - let compat_desc = descriptions.insert(fl!("legacy-app-scaling", "compatibility-description")); - let preferred_display = descriptions.insert(fl!("legacy-app-scaling", "preferred-display")); + }); Section::default() .title(fl!("legacy-app-scaling")) @@ -356,42 +341,33 @@ pub fn legacy_application_scaling() -> Section { let descriptions = §ion.descriptions; widget::settings::section() .title(§ion.title) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column() - .push(text::body(&descriptions[gaming])) - .push(text::caption(&descriptions[gaming_desc])), - XwaylandDescaling::Fractional, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column() - .push(text::body(&descriptions[apps])) - .push(text::caption(&descriptions[apps_desc])), - XwaylandDescaling::Enabled, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) - .add(widget::settings::item_row(vec![ - widget::radio( - widget::column() - .push(text::body(&descriptions[compat])) - .push(text::caption(&descriptions[compat_desc])), - XwaylandDescaling::Disabled, - Some(page.comp_config_descale_xwayland), - Message::SetXwaylandDescaling, - ) - .width(Length::Fill) - .into(), - ])) + .add( + widget::settings::item::builder(&descriptions[gaming]) + .description(&descriptions[gaming_desc]) + .radio( + XwaylandDescaling::Fractional, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) + .add( + widget::settings::item::builder(&descriptions[apps]) + .description(&descriptions[apps_desc]) + .radio( + XwaylandDescaling::Enabled, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) + .add( + widget::settings::item::builder(&descriptions[compat]) + .description(&descriptions[compat_desc]) + .radio( + XwaylandDescaling::Disabled, + Some(page.comp_config_descale_xwayland), + Message::SetXwaylandDescaling, + ), + ) .add(widget::settings::item( &descriptions[preferred_display], dropdown::popup_dropdown( diff --git a/cosmic-settings/src/pages/applications/startup_apps.rs b/cosmic-settings/src/pages/applications/startup_apps.rs index 6c65e2e..bbe4488 100644 --- a/cosmic-settings/src/pages/applications/startup_apps.rs +++ b/cosmic-settings/src/pages/applications/startup_apps.rs @@ -101,7 +101,7 @@ impl page::Page for Page { fn info(&self) -> Info { page::Info::new("startup-apps", "preferences-startup-applications-symbolic") .title(fl!("startup-apps")) - .description(fl!("startup-apps", "desc")) + .description(fl!("xdg-entry-startup-apps-comment")) } fn content( &self, @@ -132,6 +132,9 @@ impl page::Page for Page { } fn on_enter(&mut self) -> Task { + if self.app_to_remove.is_some() { + return Task::none(); + } let (task, on_enter_handle) = Task::future(async move { let locales = freedesktop_desktop_entry::get_languages_from_env(); @@ -262,6 +265,7 @@ impl Page { if !confirm { self.app_to_remove = Some(app); self.target_directory_type = Some(directory_type); + return cosmic::task::message(crate::app::Message::Page(self.entity)); } else { let mut file_name = app.clone().appid; file_name.push_str(".desktop"); diff --git a/cosmic-settings/src/pages/bluetooth/mod.rs b/cosmic-settings/src/pages/bluetooth/mod.rs index 4e22e42..f8d1338 100644 --- a/cosmic-settings/src/pages/bluetooth/mod.rs +++ b/cosmic-settings/src/pages/bluetooth/mod.rs @@ -1,15 +1,14 @@ // Copyright 2024 System76 // SPDX-License-Identifier: GPL-3.0-only +use cosmic::iced::core::text::Wrapping; use cosmic::iced::{Alignment, Length, color}; -use cosmic::iced_core::text::Wrapping; -use cosmic::widget::{self, settings, text}; +use cosmic::widget::{self, settings, space::horizontal as horizontal_space, text}; use cosmic::{Apply, Element, Task, theme}; use cosmic_settings_bluetooth_subscription::*; use cosmic_settings_page::{self as page, Section, section}; use futures::channel::oneshot; use futures::{SinkExt, StreamExt}; -use slab::Slab; use slotmap::SlotMap; use std::collections::{HashMap, HashSet}; use std::sync::Arc; @@ -167,7 +166,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("bluetooth", "bluetooth-symbolic") .title(fl!("bluetooth")) - .description(fl!("bluetooth", "desc")) + .description(fl!("xdg-entry-bluetooth-comment")) } fn content( @@ -725,9 +724,9 @@ impl Page { } fn status() -> Section { - let mut descriptions = Slab::new(); - - let bluetooth = descriptions.insert(fl!("bluetooth")); + crate::slab!(descriptions { + bluetooth = fl!("bluetooth"); + }); Section::default() .descriptions(descriptions) @@ -773,12 +772,10 @@ fn status() -> Section { } widget::list_column() - .add( - bluetooth_toggle.control( - widget::toggler(matches!(status, Active::Enabling | Active::Enabled)) - .on_toggle(|active| Message::SetActive(active).into()), - ), - ) + .add(bluetooth_toggle.toggler( + matches!(status, Active::Enabling | Active::Enabled), + |active| Message::SetActive(active).into(), + )) .apply(Element::from) }) } @@ -812,7 +809,7 @@ fn connected_devices() -> Section { page.model.selected_adapter.as_ref().map(|adapter| { page.model .devices_for_adapter(adapter) - .any(|(_, device)| device.paired) + .any(|(_, device)| device.paired || device.is_connected()) }) == Some(true) && page.model.active != Active::Disabled }) @@ -823,7 +820,7 @@ fn connected_devices() -> Section { page.model .devices_for_adapter(page.model.selected_adapter.as_ref().unwrap()) .filter_map(|(path, device)| { - if !device.paired { + if !(device.paired || device.is_connected()) { return None; } @@ -840,17 +837,19 @@ fn connected_devices() -> Section { .position(widget::popover::Position::Bottom) .on_close(Message::PopupDevice(None)) .popup( - widget::column() + widget::column::with_capacity(2) .push_maybe(device.is_connected().then(|| { popup_button( Some(Message::DisconnectDevice(path.clone())), &descriptions[device_disconnect], ) })) - .push(popup_button( - Some(Message::ForgetDevice(path.clone())), - &descriptions[device_forget], - )) + .push_maybe(device.paired.then(|| { + popup_button( + Some(Message::ForgetDevice(path.clone())), + &descriptions[device_forget], + ) + })) .width(Length::Fixed(200.0)) .apply(widget::container) .padding(theme::spacing().space_xxs) @@ -879,7 +878,7 @@ fn connected_devices() -> Section { .wrapping(Wrapping::Word) .into() }, - widget::horizontal_space().into(), + horizontal_space().into(), match device.enabled { Active::Enabled => widget::text(&descriptions[device_connected]).into(), Active::Enabling => widget::text(&descriptions[device_connecting]) @@ -903,9 +902,10 @@ fn connected_devices() -> Section { } fn available_devices() -> Section { - let mut descriptions = Slab::new(); - - let device_connecting = descriptions.insert(fl!("bluetooth", "connecting")); + crate::slab!(descriptions { + device_connect = fl!("bluetooth", "connect"); + device_connecting = fl!("bluetooth", "connecting"); + }); Section::default() .title(fl!("bluetooth-available")) @@ -914,7 +914,7 @@ fn available_devices() -> Section { page.model.selected_adapter.as_ref().map(|adapter| { page.model .devices_for_adapter(adapter) - .any(|(_, device)| !device.paired) + .any(|(_, device)| !device.paired || !device.is_connected()) }) == Some(true) && page.model.active != Active::Disabled }) @@ -925,7 +925,7 @@ fn available_devices() -> Section { page.model .devices_for_adapter(page.model.selected_adapter.as_ref().unwrap()) .filter_map(|(path, device)| { - if device.paired { + if device.paired || device.is_connected() { return None::>; } @@ -936,21 +936,26 @@ fn available_devices() -> Section { let mut items = vec![ widget::icon::from_name(device.icon).size(16).into(), text(device.alias_or_addr()).wrapping(Wrapping::Word).into(), - widget::horizontal_space().into(), + horizontal_space().into(), ]; - if device.enabled == Active::Enabling { + if device.enabled == Active::Disabled { + items.push( + widget::button::text(&descriptions[device_connect]) + .on_press(Message::ConnectDevice(path.clone())) + .into(), + ) + } + + if device.enabled == Active::Enabling || device.enabled == Active::Enabled { items.push( text(&descriptions[device_connecting]) .class(theme::Text::Color(color!(128, 128, 128))) .into(), ); } - Some( - widget::mouse_area(settings::item_row(items)) - .on_press(Message::ConnectDevice(path.clone())) - .into(), - ) + + Some(widget::mouse_area(settings::item_row(items)).into()) }) .fold(section, settings::Section::add) .apply(Element::from) @@ -959,9 +964,9 @@ fn available_devices() -> Section { } fn multiple_adapter() -> Section { - let mut descriptions = Slab::new(); - - let device_connected = descriptions.insert(fl!("bluetooth", "connected")); + crate::slab!(descriptions { + device_connected = fl!("bluetooth", "connected"); + }); Section::default() .title(fl!("bluetooth-adapters")) @@ -981,11 +986,9 @@ fn multiple_adapter() -> Section { widget::icon::from_name("bluetooth-symbolic") .size(20) .into(), - widget::horizontal_space() - .width(theme::spacing().space_xxs) - .into(), + horizontal_space().width(theme::spacing().space_xxs).into(), text(&adapter.alias).wrapping(Wrapping::Word).into(), - widget::horizontal_space().into(), + horizontal_space().into(), widget::icon::from_name("go-next-symbolic").into(), ]; if page.model.adapter_connected(path) { diff --git a/cosmic-settings/src/pages/desktop/appearance/commands.rs b/cosmic-settings/src/pages/desktop/appearance/commands.rs index c181417..aa2a680 100644 --- a/cosmic-settings/src/pages/desktop/appearance/commands.rs +++ b/cosmic-settings/src/pages/desktop/appearance/commands.rs @@ -41,14 +41,14 @@ pub fn import_theme(path: &Path) -> color_eyre::Result<()> { let mut manager = Manager::default(); - if manager.mode().is_dark != is_dark { - if let Err(err) = manager.dark_mode(is_dark) { - return Err(color_eyre::eyre::eyre!( - "Failed to set {} mode: {:?}", - mode_str, - err - )); - } + if manager.mode().is_dark != is_dark + && let Err(err) = manager.dark_mode(is_dark) + { + return Err(color_eyre::eyre::eyre!( + "Failed to set {} mode: {:?}", + mode_str, + err + )); } manager diff --git a/cosmic-settings/src/pages/desktop/appearance/drawer.rs b/cosmic-settings/src/pages/desktop/appearance/drawer.rs index 85430a6..7b7caa0 100644 --- a/cosmic-settings/src/pages/desktop/appearance/drawer.rs +++ b/cosmic-settings/src/pages/desktop/appearance/drawer.rs @@ -2,7 +2,7 @@ use cosmic::app::{ContextDrawer, context_drawer}; use cosmic::config::CosmicTk; use cosmic::cosmic_config::{Config, ConfigSet}; use cosmic::cosmic_theme::Spacing; -use cosmic::iced_core::{Color, Length}; +use cosmic::iced::core::{Color, Length}; use cosmic::widget::{ ColorPickerModel, color_picker::ColorPickerUpdate, container, flex_row, settings, text, }; @@ -42,11 +42,11 @@ pub struct Content { tk_config: Option, comp_config: cosmic_config::Config, - clip_floating: bool, - clip_tiled: bool, - shadow_tiled: bool, + #[cfg(feature = "cosmic-comp-config")] + appearance_conf: cosmic_comp_config::AppearanceConfig, } +#[cfg(feature = "cosmic-comp-config")] #[derive(Debug, Clone)] pub enum CornerMessage { ClipFloating(bool), @@ -79,6 +79,7 @@ impl From<&theme_manager::Manager> for Content { fn from(theme_manager: &theme_manager::Manager) -> Self { let theme = theme_manager.theme(); let comp_config = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap(); + #[cfg(feature = "cosmic-comp-config")] let appearance_conf = comp_config .get::("appearance_settings") .unwrap_or_default(); @@ -129,9 +130,8 @@ impl From<&theme_manager::Manager> for Content { icon_handles: Vec::new(), tk_config: CosmicTk::config().ok(), comp_config, - clip_floating: appearance_conf.clip_floating_windows, - clip_tiled: appearance_conf.clip_tiled_windows, - shadow_tiled: appearance_conf.shadow_tiled_windows, + #[cfg(feature = "cosmic-comp-config")] + appearance_conf, } } } @@ -257,6 +257,7 @@ impl Content { Task::none() } + #[cfg(feature = "cosmic-comp-config")] pub fn update_shadow_and_corners( &mut self, message: CornerMessage, @@ -264,22 +265,20 @@ impl Content { ) -> Task { match message { CornerMessage::ClipFloating(enabled) => { - self.clip_floating = enabled; + self.appearance_conf.clip_floating_windows = enabled; } CornerMessage::ClipTiled(enabled) => { - self.clip_tiled = enabled; + self.appearance_conf.clip_tiled_windows = enabled; } CornerMessage::ShadowTiled(enabled) => { - self.shadow_tiled = enabled; + self.appearance_conf.shadow_tiled_windows = enabled; } } - let conf = cosmic_comp_config::AppearanceConfig { - clip_floating_windows: self.clip_floating, - clip_tiled_windows: self.clip_tiled, - shadow_tiled_windows: self.shadow_tiled, - }; - if let Err(err) = self.comp_config.set("appearance_settings", conf) { + if let Err(err) = self + .comp_config + .set("appearance_settings", self.appearance_conf) + { error!(?err, "Failed to set config 'appearance_settings'"); } @@ -471,6 +470,7 @@ impl Content { crate::pages::Message::CloseContextDrawer, ), + #[cfg(feature = "cosmic-comp-config")] ContextView::ShadowAndCorners => context_drawer( self.shadow_and_corners(), crate::pages::Message::CloseContextDrawer, @@ -527,13 +527,14 @@ impl Content { .map(crate::pages::Message::Appearance) } + #[cfg(feature = "cosmic-comp-config")] pub fn shadow_and_corners(&self) -> Element<'_, crate::pages::Message> { let Spacing { space_m, .. } = cosmic::theme::spacing(); cosmic::iced::widget::column![ settings::section().title(fl!("shadows-floating")).add( settings::item::builder(fl!("shadows-floating", "clip")) - .toggler(self.clip_floating, |b| { + .toggler(self.appearance_conf.clip_floating_windows, |b| { Message::DrawerCorners(CornerMessage::ClipFloating(b)) }) ), @@ -541,13 +542,13 @@ impl Content { .title(fl!("shadows-tiling")) .add( settings::item::builder(fl!("shadows-tiling", "clip")) - .toggler(self.clip_tiled, |b| { + .toggler(self.appearance_conf.clip_tiled_windows, |b| { Message::DrawerCorners(CornerMessage::ClipTiled(b)) }) ) .add( settings::item::builder(fl!("shadows-tiling", "shadow")) - .toggler(self.shadow_tiled, |b| { + .toggler(self.appearance_conf.shadow_tiled_windows, |b| { Message::DrawerCorners(CornerMessage::ShadowTiled(b)) }) ) diff --git a/cosmic-settings/src/pages/desktop/appearance/font_config.rs b/cosmic-settings/src/pages/desktop/appearance/font_config.rs index d3651b4..d2b2558 100644 --- a/cosmic-settings/src/pages/desktop/appearance/font_config.rs +++ b/cosmic-settings/src/pages/desktop/appearance/font_config.rs @@ -1,18 +1,17 @@ // Copyright 2024 System76 // SPDX-License-Identifier: GPL-3.0-only -use std::rc::Rc; use std::sync::Arc; use cosmic::{ Apply, Element, Task, config::{CosmicTk, FontConfig}, - iced_core::text::Wrapping, - widget::{self, settings, svg}, + widget, }; use cosmic_config::ConfigSet; use crate::app; +use crate::widget::selection_context_item; use super::{ContextView, Message, drawer}; @@ -177,10 +176,6 @@ impl Model { context_view: &ContextView, callback: impl Fn(Arc) -> super::Message, ) -> Element<'_, super::Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - let (mut families, current_font) = match *context_view { ContextView::MonospaceFont => { (&self.monospace_font_families, &self.monospace_font.family) @@ -193,36 +188,17 @@ impl Model { families = &self.font_filter; } - let list = families.iter().fold(widget::list_column(), |list, family| { - let selected = &**family == current_font; - list.add( - settings::item_row(vec![ - widget::text::body(&**family) - .class(if selected { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(cosmic::iced::Length::Fill) - .into(), - if selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() - } else { - widget::horizontal_space().width(16).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(callback(family.clone())), - ) - }); + let list = families.iter().fold( + widget::list_column::with_capacity(families.len()), + |list, family| { + let selected = &**family == current_font; + list.add(selection_context_item( + family, + selected, + callback(family.clone()), + )) + }, + ); list.into() } diff --git a/cosmic-settings/src/pages/desktop/appearance/icon_themes.rs b/cosmic-settings/src/pages/desktop/appearance/icon_themes.rs index 53357da..5dc4620 100644 --- a/cosmic-settings/src/pages/desktop/appearance/icon_themes.rs +++ b/cosmic-settings/src/pages/desktop/appearance/icon_themes.rs @@ -32,11 +32,11 @@ pub fn button( let theme = theme.cosmic(); let background = Background::Color(theme.palette.neutral_4.into()); - cosmic::widget::column() + cosmic::widget::column::with_capacity(2) .push( cosmic::widget::button::custom_image_button( cosmic::widget::column::with_children([ - cosmic::widget::row() + cosmic::widget::row::with_capacity(ICON_PREV_ROW) .extend( handles .iter() @@ -47,7 +47,7 @@ pub fn button( ) .spacing(theme.space_xxxs()) .into(), - cosmic::widget::row() + cosmic::widget::row::with_capacity(ICON_PREV_ROW) .extend( handles .iter() diff --git a/cosmic-settings/src/pages/desktop/appearance/mod.rs b/cosmic-settings/src/pages/desktop/appearance/mod.rs index 8983235..aa28ea8 100644 --- a/cosmic-settings/src/pages/desktop/appearance/mod.rs +++ b/cosmic-settings/src/pages/desktop/appearance/mod.rs @@ -16,13 +16,13 @@ use cosmic::app::ContextDrawer; use cosmic::config::CosmicTk; use cosmic::cosmic_config::{Config, ConfigSet, CosmicConfigEntry}; use cosmic::cosmic_theme::palette::{FromColor, Hsv, Srgb}; -use cosmic::cosmic_theme::{CornerRadii, Density, ThemeBuilder}; +use cosmic::cosmic_theme::{CornerRadii, Density, ThemeBuilder, ThemeMode}; #[cfg(feature = "xdg-portal")] use cosmic::dialog::file_chooser::{self, FileFilter}; -use cosmic::iced_core::{Alignment, Length}; +use cosmic::iced::Subscription; +use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::{ - button, color_picker::ColorPickerUpdate, container, horizontal_space, radio, row, settings, - text, + button, color_picker::ColorPickerUpdate, container, row, settings, space::horizontal, text, }; use cosmic::{Apply, Element, Task, widget}; #[cfg(feature = "wayland")] @@ -30,7 +30,6 @@ use cosmic_panel_config::CosmicPanelConfig; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use ron::ser::PrettyConfig; -use slab::Slab; use slotmap::{Key, SlotMap}; use crate::app; @@ -41,6 +40,7 @@ pub enum ContextView { ApplicationBackground, ContainerBackground, ControlComponent, + #[cfg(feature = "cosmic-comp-config")] ShadowAndCorners, CustomAccent, IconsAndToolkit, @@ -123,9 +123,11 @@ pub enum Message { Autoswitch(bool), DarkMode(bool), Density(Density), + ThemeModeUpdate(ThemeMode), DrawerOpen(ContextView), DrawerColor(ColorPickerUpdate), + #[cfg(feature = "cosmic-comp-config")] DrawerCorners(drawer::CornerMessage), DrawerFont(drawer::FontMessage), DrawerIcon(drawer::IconMessage), @@ -265,6 +267,7 @@ impl Page { } } + #[cfg(feature = "cosmic-comp-config")] Message::DrawerCorners(message) => { if let Some(context_view) = self.context_view.as_ref() { tasks.push(self.drawer.update_shadow_and_corners(message, context_view)); @@ -323,6 +326,10 @@ impl Page { } else { ThemeBuilder::light() }; + + self.roundness = builder.corner_radii.into(); + self.density = Density::Standard; + self.theme_manager.set_active_hint(builder.active_hint); self.theme_manager @@ -479,6 +486,9 @@ impl Page { tracing::error!(?err, "Error setting dark mode"); } + self.roundness = builder.corner_radii.into(); + self.density = Density::Standard; + self.theme_manager .selected_customizer_mut() .set_builder(*builder.clone()) @@ -488,6 +498,8 @@ impl Page { self.drawer.reset(&self.theme_manager); + self.can_reset = self.can_reset(); + return cosmic::task::future(async move { app::Message::SetTheme(cosmic::theme::system_preference()) }); @@ -530,6 +542,20 @@ impl Page { self.day_time = day_time; return Task::none(); } + + Message::ThemeModeUpdate(mode) => { + let was_dark = self.theme_manager.mode().is_dark; + let was_auto = self.theme_manager.mode().auto_switch; + + self.theme_manager.sync_mode(mode); + + // If auto-switch flipped while the page is open, keep the UI in sync. + if was_dark != self.theme_manager.mode().is_dark + || was_auto != self.theme_manager.mode().auto_switch + { + self.drawer.reset(&self.theme_manager); + } + } } let mut tasks = cosmic::Task::batch(tasks); @@ -538,11 +564,7 @@ impl Page { tasks = tasks.chain(self.theme_manager.build_theme(stage)) } - self.can_reset = if self.theme_manager.mode().is_dark { - *self.theme_manager.builder() != ThemeBuilder::dark() - } else { - *self.theme_manager.builder() != ThemeBuilder::light() - }; + self.can_reset = self.can_reset(); tasks } @@ -598,6 +620,7 @@ impl Page { } } + #[cfg(feature = "wayland")] pub fn update_dock_padding(roundness: Roundness) { let dock_config_helper = CosmicPanelConfig::cosmic_config("Dock").ok(); @@ -655,6 +678,14 @@ impl Page { } }; } + + fn can_reset(&self) -> bool { + if self.theme_manager.mode().is_dark { + *self.theme_manager.builder() != ThemeBuilder::dark() + } else { + *self.theme_manager.builder() != ThemeBuilder::light() + } + } } impl page::Page for Page { @@ -694,7 +725,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("appearance", "preferences-appearance-symbolic") .title(fl!("appearance")) - .description(fl!("appearance", "desc")) + .description(fl!("xdg-entry-appearance-comment")) } fn on_enter(&mut self) -> Task { @@ -727,6 +758,17 @@ impl page::Page for Page { cosmic::task::batch(tasks) } + fn subscription(&self, core: &cosmic::Core) -> Subscription { + // Keep the Appearance page in sync when the daemon auto-switches light/dark. + core.watch_config::("com.system76.CosmicTheme.Mode") + .map(|update| { + for why in update.errors { + tracing::error!(?why, "theme mode config load error"); + } + crate::pages::Message::Appearance(Message::ThemeModeUpdate(update.config)) + }) + } + fn context_drawer(&self) -> Option> { self.drawer.context_drawer(self.context_view) } @@ -747,36 +789,21 @@ pub fn interface_density() -> Section { settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[compact]), - Density::Compact, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[comfortable]), - Density::Standard, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[spacious]), - Density::Spacious, - Some(page.density), - Message::Density, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[compact]).radio( + Density::Compact, + Some(page.density), + Message::Density, + )) + .add(settings::item::builder(&descriptions[comfortable]).radio( + Density::Standard, + Some(page.density), + Message::Density, + )) + .add(settings::item::builder(&descriptions[spacious]).radio( + Density::Spacious, + Some(page.density), + Message::Density, + )) .apply(Element::from) .map(crate::pages::Message::Appearance) }) @@ -784,10 +811,10 @@ pub fn interface_density() -> Section { #[allow(clippy::too_many_lines)] pub fn window_management() -> Section { - let mut descriptions = Slab::new(); - - let active_hint = descriptions.insert(fl!("window-management-appearance", "active-hint")); - let gaps = descriptions.insert(fl!("window-management-appearance", "gaps")); + crate::slab!(descriptions { + active_hint = fl!("window-management-appearance", "active-hint"); + gaps = fl!("window-management-appearance", "gaps"); + }); Section::default() .title(fl!("window-management-appearance")) @@ -855,17 +882,21 @@ pub fn experimental() -> Section { Message::DrawerOpen(ContextView::IconsAndToolkit), ); - let shadow_and_corners = crate::widget::go_next_item( - &descriptions[shadow_and_corners_txt], - Message::DrawerOpen(ContextView::ShadowAndCorners), - ); - - settings::section() + let mut section = settings::section() .title(&*section.title) .add(system_font) .add(mono_font) - .add(icons_and_toolkit) - .add(shadow_and_corners) + .add(icons_and_toolkit); + + #[cfg(feature = "cosmic-comp-config")] + { + section = section.add(crate::widget::go_next_item( + &descriptions[shadow_and_corners_txt], + Message::DrawerOpen(ContextView::ShadowAndCorners), + )); + } + + section .apply(Element::from) .map(crate::pages::Message::Appearance) }) @@ -873,9 +904,9 @@ pub fn experimental() -> Section { #[allow(clippy::too_many_lines)] pub fn reset_button() -> Section { - let mut descriptions = Slab::new(); - - let reset_to_default = descriptions.insert(fl!("reset-to-default")); + crate::slab!(descriptions { + reset_to_default = fl!("reset-to-default"); + }); Section::default() .descriptions(descriptions) @@ -886,7 +917,7 @@ pub fn reset_button() -> Section { .on_press(Message::Reset) .into() } else { - horizontal_space().width(1).apply(Element::from) + horizontal().width(1.).apply(Element::from) } .map(crate::pages::Message::Appearance) }) diff --git a/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs b/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs index 808e007..01b31d0 100644 --- a/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs +++ b/cosmic-settings/src/pages/desktop/appearance/mode_and_colors.rs @@ -2,9 +2,9 @@ use crate::pages::desktop::wallpaper::widgets::color_image; use cosmic::cosmic_theme::Spacing; use cosmic::cosmic_theme::palette::Srgba; use cosmic::iced::ContentFit; -use cosmic::iced_core::{Alignment, Length}; +use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::icon::{from_name, icon}; -use cosmic::widget::{self, button, container, settings, text}; +use cosmic::widget::{self, button, container, list, settings, text}; use cosmic::{Apply, Element}; use cosmic_settings_page::Section; use cosmic_settings_wallpaper as wallpaper; @@ -64,105 +64,117 @@ fn container_background<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; let go_next_icon = from_name("go-next-symbolic").handle(); - settings::item::builder(&descriptions[labels["container_bg"]]) - .description(&descriptions[labels["container_bg_desc"]]) - .control( - if page - .drawer - .container_background - .get_applied_color() - .is_some() - { - Element::from( - page.drawer - .container_background - .picker_button( - |_| Message::DrawerOpen(ContextView::ContainerBackground), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) - } else { - container( - button::text(&descriptions[labels["auto"]]) - .trailing_icon(go_next_icon.clone()) - .on_press(Message::DrawerOpen(ContextView::ContainerBackground)), - ) - .into() - }, - ) + list::button( + settings::item::builder(&descriptions[labels["container_bg"]]) + .description(&descriptions[labels["container_bg_desc"]]) + .control( + if page + .drawer + .container_background + .get_applied_color() + .is_some() + { + Element::from( + page.drawer + .container_background + .picker_button( + |_| Message::DrawerOpen(ContextView::ContainerBackground), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ) + } else { + container( + button::text(&descriptions[labels["auto"]]) + .trailing_icon(go_next_icon.clone()) + .on_press(Message::DrawerOpen(ContextView::ContainerBackground)), + ) + .into() + }, + ), + ) + .on_press(Message::DrawerOpen(ContextView::ContainerBackground)) } fn application_background<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["app_bg"]]).control( - page.drawer - .application_background - .picker_button( - |_| Message::DrawerOpen(ContextView::ApplicationBackground), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), + list::button( + settings::item::builder(&descriptions[labels["app_bg"]]).control( + page.drawer + .application_background + .picker_button( + |_| Message::DrawerOpen(ContextView::ApplicationBackground), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), ) + .on_press(Message::DrawerOpen(ContextView::ApplicationBackground)) } fn control_tint<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["control_tint"]]) - .description(&descriptions[labels["control_tint_desc"]]) - .control( - page.drawer - .control_component - .picker_button( - |_| Message::DrawerOpen(ContextView::ControlComponent), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) + list::button( + settings::item::builder(&descriptions[labels["control_tint"]]) + .description(&descriptions[labels["control_tint_desc"]]) + .control( + page.drawer + .control_component + .picker_button( + |_| Message::DrawerOpen(ContextView::ControlComponent), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), + ) + .on_press(Message::DrawerOpen(ContextView::ControlComponent)) } fn interface_text<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; - settings::item::builder(&descriptions[labels["text_tint"]]) - .description(&descriptions[labels["text_tint_desc"]]) - .control( - page.drawer - .interface_text - .picker_button( - |_| Message::DrawerOpen(ContextView::InterfaceText), - Some(24), - ) - .width(Length::Fixed(48.0)) - .height(Length::Fixed(24.0)), - ) + list::button( + settings::item::builder(&descriptions[labels["text_tint"]]) + .description(&descriptions[labels["text_tint_desc"]]) + .control( + page.drawer + .interface_text + .picker_button( + |_| Message::DrawerOpen(ContextView::InterfaceText), + Some(24), + ) + .width(Length::Fixed(48.0)) + .height(Length::Fixed(24.0)), + ), + ) + .on_press(Message::DrawerOpen(ContextView::InterfaceText)) } fn auto_switch<'a>( page: &Page, section: &'a Section, labels: &HashMap, -) -> impl Into> { +) -> list::ListButton<'a, Message> { let descriptions = §ion.descriptions; settings::item::builder(&descriptions[labels["auto_switch"]]) diff --git a/cosmic-settings/src/pages/desktop/appearance/style.rs b/cosmic-settings/src/pages/desktop/appearance/style.rs index 1b2ec12..6db3477 100644 --- a/cosmic-settings/src/pages/desktop/appearance/style.rs +++ b/cosmic-settings/src/pages/desktop/appearance/style.rs @@ -1,19 +1,18 @@ -use cosmic::iced_core::{Alignment, Length, text::Wrapping}; +use cosmic::iced::core::{Alignment, Length, text::Wrapping}; use cosmic::widget::icon::{from_name, icon}; use cosmic::widget::{button, container, settings, text}; use cosmic::{Apply, Element}; use cosmic_settings_page::Section; -use slab::Slab; use super::{Message, Page, Roundness}; #[allow(clippy::too_many_lines)] pub fn section() -> Section { - let mut descriptions = Slab::new(); - - let round = descriptions.insert(fl!("style", "round")); - let slightly_round = descriptions.insert(fl!("style", "slightly-round")); - let square = descriptions.insert(fl!("style", "square")); + crate::slab!(descriptions { + round = fl!("style", "round"); + slightly_round = fl!("style", "slightly-round"); + square = fl!("style", "square"); + }); let dark_round_style = from_name("illustration-appearance-dark-style-round").handle(); let light_round_style = from_name("illustration-appearance-light-style-round").handle(); diff --git a/cosmic-settings/src/pages/desktop/appearance/theme_manager.rs b/cosmic-settings/src/pages/desktop/appearance/theme_manager.rs index 88f01e7..12d8cc6 100644 --- a/cosmic-settings/src/pages/desktop/appearance/theme_manager.rs +++ b/cosmic-settings/src/pages/desktop/appearance/theme_manager.rs @@ -4,7 +4,7 @@ use cosmic::cosmic_theme::{ CornerRadii, DARK_THEME_BUILDER_ID, LIGHT_THEME_BUILDER_ID, Spacing, Theme, ThemeBuilder, ThemeMode, }; -use cosmic::iced_core::Color; +use cosmic::iced::core::Color; use cosmic::Task; use cosmic::theme::ThemeType; @@ -260,6 +260,13 @@ impl Manager { &self.mode.0 } + /// Update the locally cached `ThemeMode` from an external source (daemon / config watcher). + /// + /// This must not write back to config, since the daemon is the source of truth. + pub fn sync_mode(&mut self, mode: ThemeMode) { + self.mode.0 = mode; + } + #[inline] pub fn builder(&self) -> &ThemeBuilder { &self.selected_customizer().builder.0 diff --git a/cosmic-settings/src/pages/desktop/dock/mod.rs b/cosmic-settings/src/pages/desktop/dock/mod.rs index 4df45dd..40738aa 100644 --- a/cosmic-settings/src/pages/desktop/dock/mod.rs +++ b/cosmic-settings/src/pages/desktop/dock/mod.rs @@ -4,11 +4,10 @@ use cosmic::Apply; use cosmic::{ Element, Task, cosmic_config::{ConfigSet, CosmicConfigEntry}, - widget::{settings, text, toggler}, + widget::{settings, text}, }; use cosmic_panel_config::{CosmicPanelConfig, CosmicPanelContainerConfig}; use cosmic_settings_page::{self as page, Section, section}; -use slab::Slab; use slotmap::SlotMap; use tracing::error; @@ -158,9 +157,9 @@ impl Default for Page { } pub(crate) fn enable() -> Section { - let mut descriptions = Slab::new(); - - let dock = descriptions.insert(fl!("dock")); + crate::slab!(descriptions { + dock = fl!("dock"); + }); Section::default() .descriptions(descriptions) @@ -171,16 +170,15 @@ pub(crate) fn enable() -> Section { }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[dock], - toggler( + .add( + settings::item::builder(&descriptions[dock]).toggler( container_config .config_list .iter() .any(|e| e.name.as_str() == "Dock"), - ) - .on_toggle(Message::EnableDock), - )) + Message::EnableDock, + ), + ) .apply(Element::from) .map(crate::pages::Message::Dock) }) @@ -216,7 +214,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("dock", "preferences-dock-symbolic") .title(fl!("dock")) - .description(fl!("dock", "desc")) + .description(fl!("xdg-entry-dock-comment")) } fn on_enter(&mut self) -> Task { diff --git a/cosmic-settings/src/pages/desktop/panel/applets_inner.rs b/cosmic-settings/src/pages/desktop/panel/applets_inner.rs index e131302..bd0ed6c 100644 --- a/cosmic-settings/src/pages/desktop/panel/applets_inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/applets_inner.rs @@ -6,22 +6,22 @@ use cosmic::iced::clipboard::dnd::{ use cosmic::iced::clipboard::mime::AsMimeTypes; use cosmic::iced::id::Internal; -use cosmic::iced_core; -use cosmic::iced_core::clipboard::IconSurface; +use cosmic::iced; +use cosmic::iced::core::clipboard::IconSurface; use cosmic::widget::{Column, button, column, container, icon, list_column, row, text, text_input}; use cosmic::{ Apply, Element, cosmic_config::{Config, CosmicConfigEntry}, + iced::core::{ + Clipboard, Shell, Widget, layout, renderer, + widget::{Operation, Tree, tree}, + }, + iced::runtime::{Task, core::id::Id}, iced::{ Alignment, Border, Color, Length, Point, Rectangle, Size, Vector, core::window, event, mouse, overlay, touch, }, - iced_runtime::{Task, core::id::Id}, - iced_widget::core::{ - Clipboard, Shell, Widget, layout, renderer, - widget::{Operation, Tree, tree}, - }, theme, }; @@ -650,7 +650,7 @@ impl<'a, Message: 'static + Clone> AppletReorderList<'a, Message> { let is_dragged = active_dnd.as_ref().is_some_and(|dnd| dnd.id == info.id); let content = if is_dragged { - row().height(Length::Fixed(32.0)) + row([]).height(Length::Fixed(32.0)) } else { row::with_children(vec![ icon::from_name("grip-lines-symbolic") @@ -899,30 +899,28 @@ where } fn layout( - &self, + &mut self, tree: &mut Tree, renderer: &cosmic::Renderer, limits: &layout::Limits, ) -> layout::Node { - let inner_layout = self - .inner - .as_widget() - .layout(&mut tree.children[0], renderer, limits); + let inner_layout = + self.inner + .as_widget_mut() + .layout(&mut tree.children[0], renderer, limits); layout::Node::with_children(inner_layout.size(), vec![inner_layout]) } fn operate( - &self, + &mut self, tree: &mut Tree, layout: layout::Layout<'_>, renderer: &cosmic::Renderer, operation: &mut dyn Operation<()>, ) { - let state = tree.state.downcast_mut::(); + operation.container(Some(&self.id), layout.bounds()); - operation.custom(state, Some(&self.id)); - - self.inner.as_widget().operate( + self.inner.as_widget_mut().operate( &mut tree.children[0], layout.children().next().unwrap(), renderer, @@ -931,31 +929,31 @@ where } #[allow(clippy::too_many_lines, clippy::needless_match)] - fn on_event( + fn update( &mut self, tree: &mut Tree, - event: event::Event, + event: &event::Event, layout: layout::Layout<'_>, cursor_position: mouse::Cursor, renderer: &cosmic::Renderer, clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, - ) -> event::Status { + ) { let space_xxs = theme::spacing().space_xxs; - let mut ret = match self.inner.as_widget_mut().on_event( + self.inner.as_widget_mut().update( &mut tree.children[0], - event.clone(), + event, layout.children().next().unwrap(), cursor_position, renderer, clipboard, shell, viewport, - ) { - event::Status::Captured => return event::Status::Captured, - event::Status::Ignored => event::Status::Ignored, - }; + ); + if shell.is_event_captured() { + return; + } let height = (layout.bounds().height - space_xxs as f32 * (self.info.len().saturating_sub(1)) as f32) @@ -967,15 +965,14 @@ where DraggingState::Dragging(applet) => match &event { event::Event::Dnd(DndEvent::Source(source_event)) => match source_event { SourceEvent::Cancelled => { - ret = event::Status::Captured; + shell.capture_event(); if let Some(on_cancel) = self.on_cancel.clone() { shell.publish(on_cancel); } DraggingState::None } SourceEvent::Finished => { - ret = event::Status::Captured; - + shell.capture_event(); DraggingState::None } _ => DraggingState::Dragging(applet), @@ -989,7 +986,7 @@ where | event::Event::Touch(touch::Event::FingerPressed { .. }) if cursor_position.is_over(layout.bounds()) => { - ret = event::Status::Captured; + shell.capture_event(); DraggingState::Pressed(cursor_position.position().unwrap_or_default()) } @@ -1023,24 +1020,25 @@ where )); let p = applet.path.to_path_buf(); - iced_core::clipboard::start_dnd::< + iced::core::clipboard::start_dnd::< cosmic::Theme, cosmic::Renderer, >( clipboard, false, - Some(iced_core::clipboard::DndSource::Widget( + Some(iced::core::clipboard::DndSource::Widget( self.id.clone(), )), Some(IconSurface::new( dnd_icon(applet.clone(), &layout).into(), - iced_core::widget::tree::State::new(state.clone()), - iced_core::Vector::new(0.0, 0.0), + iced::core::widget::tree::State::new(state.clone()), + iced::core::Vector::new(0.0, 0.0), )), Box::new(AppletString(p.clone())), DndAction::Move, ); - ret = event::Status::Captured; + shell.capture_event(); + let reordered = self .info .iter() @@ -1063,7 +1061,7 @@ where | event::Event::Touch( touch::Event::FingerLifted { .. } | touch::Event::FingerLost { .. }, ) => { - ret = event::Status::Captured; + shell.capture_event(); DraggingState::None } _ => DraggingState::Pressed(start), @@ -1161,8 +1159,6 @@ where _ => DndOfferState::HandlingOffer, }, }; - - ret } fn draw( @@ -1189,14 +1185,16 @@ where fn overlay<'b>( &'b mut self, tree: &'b mut Tree, - layout: layout::Layout<'_>, + layout: layout::Layout<'b>, renderer: &cosmic::Renderer, + viewport: &Rectangle, translation: Vector, ) -> Option> { self.inner.as_widget_mut().overlay( &mut tree.children[0], layout.children().next().unwrap(), renderer, + viewport, translation, ) } @@ -1243,7 +1241,7 @@ where _state: &Tree, layout: layout::Layout<'_>, _renderer: &cosmic::Renderer, - dnd_rectangles: &mut cosmic::iced_core::clipboard::DndDestinationRectangles, + dnd_rectangles: &mut cosmic::iced::core::clipboard::DndDestinationRectangles, ) { let Rectangle { x, diff --git a/cosmic-settings/src/pages/desktop/panel/inner.rs b/cosmic-settings/src/pages/desktop/panel/inner.rs index 446ec1d..bcd7bb3 100644 --- a/cosmic-settings/src/pages/desktop/panel/inner.rs +++ b/cosmic-settings/src/pages/desktop/panel/inner.rs @@ -4,10 +4,8 @@ use cosmic::{ cosmic_config::{self, CosmicConfigEntry}, cosmic_theme::Density, iced::{Alignment, Length}, - surface, theme, - widget::{ - button, container, dropdown, horizontal_space, icon, row, settings, slider, text, toggler, - }, + surface, + widget::{button, container, dropdown, row, settings, slider, space, text}, }; use cosmic::Apply; @@ -17,7 +15,6 @@ use cosmic_panel_config::{ CosmicPanelOuput, PanelAnchor, PanelSize, }; use cosmic_settings_page::{self as page, Section}; -use slab::Slab; use std::{collections::HashMap, time::Duration}; use crate::pages::desktop::appearance::Roundness; @@ -25,6 +22,7 @@ use crate::pages::desktop::appearance::Roundness; pub struct PageInner { pub(crate) config_helper: Option, pub(crate) panel_config: Option, + pub size: Option, pub opacity: f32, pub opacity_changing: bool, pub outputs: Vec, @@ -42,6 +40,7 @@ impl Default for PageInner { Self { config_helper: Option::default(), panel_config: Option::default(), + size: Option::default(), opacity: 0.0, opacity_changing: false, outputs: vec![fl!("all-displays")], @@ -102,11 +101,11 @@ pub(crate) fn behavior_and_position< p: &P, msg_map: T, ) -> Section { - let mut descriptions = Slab::new(); - - let autohide_label = descriptions.insert(p.autohide_label()); - let position = descriptions.insert(fl!("panel-behavior-and-position", "position")); - let display = descriptions.insert(fl!("panel-behavior-and-position", "display")); + crate::slab!(descriptions { + autohide_label = p.autohide_label(); + position = fl!("panel-behavior-and-position", "position"); + display = fl!("panel-behavior-and-position", "display"); + }); Section::default() .title(fl!("panel-behavior-and-position")) @@ -119,10 +118,10 @@ pub(crate) fn behavior_and_position< }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[autohide_label], - toggler(panel_config.autohide.is_some()).on_toggle(Message::AutoHidePanel), - )) + .add( + settings::item::builder(&descriptions[autohide_label]) + .toggler(panel_config.autohide.is_some(), Message::AutoHidePanel), + ) .add(settings::item( &descriptions[position], dropdown::popup_dropdown( @@ -161,13 +160,13 @@ pub(crate) fn style< p: &P, msg_map: T, ) -> Section { - let mut descriptions = Slab::new(); - - let gap_label = descriptions.insert(p.gap_label()); - let extend_label = descriptions.insert(p.extend_label()); - let appearance = descriptions.insert(fl!("panel-style", "appearance")); - let background_opacity = descriptions.insert(fl!("panel-style", "background-opacity")); - let size = descriptions.insert(fl!("panel-style", "size")); + crate::slab!(descriptions { + gap_label = p.gap_label(); + extend_label = p.extend_label(); + appearance = fl!("panel-style", "appearance"); + background_opacity = fl!("panel-style", "background-opacity"); + size = fl!("panel-style", "size"); + }); Section::default() .title(fl!("panel-style")) @@ -180,14 +179,14 @@ pub(crate) fn style< }; settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[gap_label], - toggler(panel_config.anchor_gap).on_toggle(Message::AnchorGap), - )) - .add(settings::item( - &descriptions[extend_label], - toggler(panel_config.expand_to_edges).on_toggle(Message::ExtendToEdge), - )) + .add( + settings::item::builder(&descriptions[gap_label]) + .toggler(panel_config.anchor_gap, Message::AnchorGap), + ) + .add( + settings::item::builder(&descriptions[extend_label]) + .toggler(panel_config.expand_to_edges, Message::ExtendToEdge), + ) .add(settings::item( &descriptions[appearance], dropdown::popup_dropdown( @@ -204,14 +203,15 @@ pub(crate) fn style< move |a| crate::app::Message::PageMessage(msg_map(a)), ), )) - .add(settings::flex_item( - &descriptions[size], + .add(settings::item::builder(&descriptions[size]).flex_control({ // TODO custom discrete slider variant row::with_children(vec![ text::body(fl!("small")).into(), slider( 0..=4, - match panel_config.size { + match inner.size.as_ref().expect( + "PageInner.size is None even though PageInner.panel_config is Some", + ) { PanelSize::XS => 0, PanelSize::S => 1, PanelSize::M => 2, @@ -233,35 +233,44 @@ pub(crate) fn style< } }, ) + .on_release(Message::PanelSizeCommit) + .width(Length::Fill) + .apply(cosmic::widget::container) + .max_width(250) .into(), text::body(fl!("large")).into(), ]) .align_y(Alignment::Center) - .spacing(8), - )) - .add(settings::flex_item( - &descriptions[background_opacity], - row::with_capacity(2) - .align_y(Alignment::Center) - .spacing(8) - .push( - text::body(fl!( - "number", - HashMap::from_iter(vec![( + .spacing(8) + .width(Length::Fill) + })) + .add( + settings::item::builder(&descriptions[background_opacity]).flex_control({ + row::with_capacity(2) + .align_y(Alignment::Center) + .spacing(8) + .width(Length::Fill) + .push( + text::body(fl!( "number", - (panel_config.opacity * 100.0) as i32 - )]) - )) - .width(Length::Fixed(22.0)) - .align_x(Alignment::Center), - ) - .push( - slider(0..=100, (panel_config.opacity * 100.0) as i32, |v| { - Message::OpacityRequest(v as f32 / 100.0) - }) - .breakpoints(&[50]), - ), - )) + HashMap::from_iter(vec![( + "number", + (panel_config.opacity * 100.0) as i32 + )]) + )) + .width(Length::Fixed(22.0)) + .align_x(Alignment::Center), + ) + .push( + slider(0..=100, (panel_config.opacity * 100.0) as i32, |v| { + Message::OpacityRequest(v as f32 / 100.0) + }) + .width(Length::Fill) + .apply(container) + .max_width(250), + ) + }), + ) .apply(Element::from) .map(msg_map) }) @@ -270,9 +279,9 @@ pub(crate) fn style< pub(crate) fn configuration + PanelPage>( p: &P, ) -> Section { - let mut descriptions = Slab::new(); - - let applets_label = descriptions.insert(p.configure_applets_label()); + crate::slab!(descriptions { + applets_label = p.configure_applets_label(); + }); Section::default() .title(fl!("panel-applets")) @@ -285,21 +294,10 @@ pub(crate) fn configuration + PanelPage>( .iter() .find(|(_, v)| v.id == page.applets_page_id()) { - let control = row::with_children(vec![ - horizontal_space().into(), - icon::from_name("go-next-symbolic").size(16).into(), - ]); - - settings.add( - settings::item::builder(&*descriptions[applets_label]) - .control(control) - .spacing(16) - .apply(container) - .class(theme::Container::List) - .apply(button::custom) - .class(theme::Button::Transparent) - .on_press(crate::pages::Message::Page(panel_applets_entity)), - ) + settings.add(crate::widget::go_next_item( + &descriptions[applets_label], + crate::pages::Message::Page(panel_applets_entity), + )) } else { settings }; @@ -315,9 +313,9 @@ pub(crate) fn add_panel< >( msg_map: T, ) -> Section { - let mut descriptions = Slab::new(); - - let reset_to_default = descriptions.insert(fl!("reset-to-default")); + crate::slab!(descriptions { + reset_to_default = fl!("reset-to-default"); + }); Section::default() .title(fl!("panel-missing")) @@ -338,9 +336,9 @@ pub fn reset_button< >( msg_map: T, ) -> Section { - let mut descriptions = Slab::new(); - - let reset_to_default = descriptions.insert(fl!("reset-to-default")); + crate::slab!(descriptions { + reset_to_default = fl!("reset-to-default"); + }); Section::default() .descriptions(descriptions) @@ -348,7 +346,7 @@ pub fn reset_button< let descriptions = §ion.descriptions; let inner = page.inner(); if inner.system_default == inner.panel_config { - Element::from(horizontal_space().width(1)) + Element::from(space()) } else { button::standard(&descriptions[reset_to_default]) .on_press(Message::ResetPanel) @@ -427,6 +425,7 @@ pub enum Message { Output(usize), AnchorGap(bool), PanelSize(PanelSize), + PanelSizeCommit, Appearance(usize), ExtendToEdge(bool), OpacityRequest(f32), @@ -507,6 +506,7 @@ impl PageInner { if let Err(err) = default.write_entry(config) { tracing::error!(?err, "Error resetting panel config."); } + self.size = Some(default.size.clone()); self.system_default = Some(default.clone()); self.panel_config.clone_from(&self.system_default); } else { @@ -605,7 +605,16 @@ impl PageInner { _ = panel_config.set_border_radius(helper, new_radius).unwrap(); } Message::PanelSize(size) => { - _ = panel_config.set_size(helper, size); + self.size = Some(size); + } + Message::PanelSizeCommit => { + _ = panel_config.set_size( + helper, + self.size + .as_ref() + .expect("PageInner.size is None even though it should be Some, since PageInner.panel_config is Some") + .clone() + ); // Reset any size overrides the user might have set _ = panel_config.set_size_center(helper, None); _ = panel_config.set_size_wings(helper, None); @@ -668,6 +677,7 @@ impl PageInner { } } Message::PanelConfig(c) => { + self.size = Some(c.size.clone()); self.panel_config = Some(*c); return Task::none(); } diff --git a/cosmic-settings/src/pages/desktop/panel/mod.rs b/cosmic-settings/src/pages/desktop/panel/mod.rs index ad5c087..7748618 100644 --- a/cosmic-settings/src/pages/desktop/panel/mod.rs +++ b/cosmic-settings/src/pages/desktop/panel/mod.rs @@ -79,6 +79,7 @@ impl Default for Page { // If the config is not present, it will be created with the default values and the name will not match (panel_config.name == "Panel").then_some(panel_config) }); + let size = panel_config.as_ref().map(|c| c.size.clone()); let system_default = cosmic::cosmic_config::Config::system( &format!("{}.Panel", cosmic_panel_config::NAME), CosmicPanelConfig::VERSION, @@ -98,6 +99,7 @@ impl Default for Page { inner: PageInner { config_helper, panel_config, + size, container_config, outputs_map: HashMap::new(), system_default, @@ -137,7 +139,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("panel", "preferences-panel-symbolic") .title(fl!("panel")) - .description(fl!("panel", "desc")) + .description(fl!("xdg-entry-panel-comment")) } fn on_enter(&mut self) -> Task { diff --git a/cosmic-settings/src/pages/desktop/wallpaper/config.rs b/cosmic-settings/src/pages/desktop/wallpaper/config.rs index 29fa2e6..7ab6978 100644 --- a/cosmic-settings/src/pages/desktop/wallpaper/config.rs +++ b/cosmic-settings/src/pages/desktop/wallpaper/config.rs @@ -15,6 +15,7 @@ const CUSTOM_COLORS: &str = "custom-colors"; const CUSTOM_IMAGES: &str = "custom-images"; const RECENT_FOLDERS: &str = "recent-folders"; const BACKGROUNDS_DIR: &str = "backgrounds"; +const ROTATION_FREQUENCY: &str = "rotation-frequency"; #[derive(Debug, Default)] pub struct Config { @@ -24,6 +25,7 @@ pub struct Config { custom_colors: Vec, custom_images: Vec, recent_folders: VecDeque, + pub rotation_frequency: u64, } impl Config { @@ -94,6 +96,15 @@ impl Config { } } + // Get rotation frequency from cosmic-config. + if let Ok(frequency) = context.get::(ROTATION_FREQUENCY) { + // Set rotation frequency if it exists. + config.rotation_frequency = frequency; + } else { + // Set default value if it does not exists. + config.rotation_frequency = 300; + } + config.context = Some(context); config.state = Some(state); @@ -251,6 +262,21 @@ impl Config { Ok(()) } + /// Sets a new slideshow wallpaper rotation frequency + /// + /// # Errors + /// + /// Returns an error if the on-disk configuration could not be updated. + pub fn change_rotation_frequency( + &mut self, + frequency: u64, + ) -> Result<(), cosmic_config::Error> { + self.rotation_frequency = frequency; + self.update_rotation_frequency()?; + + Ok(()) + } + fn update( &self, key: &str, @@ -274,4 +300,8 @@ impl Config { fn update_recent_folders(&self) -> Result<(), cosmic_config::Error> { self.update(RECENT_FOLDERS, &self.recent_folders) } + + fn update_rotation_frequency(&self) -> Result<(), cosmic_config::Error> { + self.update(ROTATION_FREQUENCY, &self.rotation_frequency) + } } diff --git a/cosmic-settings/src/pages/desktop/wallpaper/mod.rs b/cosmic-settings/src/pages/desktop/wallpaper/mod.rs index 8233583..7f99b25 100644 --- a/cosmic-settings/src/pages/desktop/wallpaper/mod.rs +++ b/cosmic-settings/src/pages/desktop/wallpaper/mod.rs @@ -17,15 +17,18 @@ use std::{ use cosmic::dialog::file_chooser; use cosmic::{ Apply, Element, Task, + iced::core::text::{Ellipsize, EllipsizeHeightLimit}, widget::{ColorPickerModel, color_picker::ColorPickerUpdate, icon}, }; -use cosmic::{app::ContextDrawer, iced_runtime::core::image::Handle as ImageHandle}; +use cosmic::{app::ContextDrawer, iced::runtime::core::image::Handle as ImageHandle}; use cosmic::{ iced::Subscription, widget::{ button, dropdown, list_column, row, segmented_button::{self, SingleSelectModel}, - settings, tab_bar, text, toggler, + settings, + space::horizontal as horizontal_space, + tab_bar, text, }, }; use cosmic::{ @@ -38,7 +41,6 @@ use cosmic_settings_page::{self as page, section}; use cosmic_settings_wallpaper::{self as wallpaper, Entry, ScalingMode}; use image::imageops::FilterType::Lanczos3; use image::{ImageBuffer, Rgba}; -use slab::Slab; use slotmap::{DefaultKey, Key, SecondaryMap, SlotMap}; use crate::subscription::WallpaperEvent; @@ -80,8 +82,6 @@ pub enum Message { CacheDisplayImage, /// Selects an option in the category dropdown menu. ChangeCategory(Category), - /// Changes the displayed images in the wallpaper view. - ChangeFolder(Context), /// Emits a wallpaper event. Event(WallpaperEvent), /// Handles messages from the color dialog. @@ -182,9 +182,6 @@ pub struct Page { /// Model for selecting between display outputs. outputs: SingleSelectModel, - /// Current value of the slideshow rotation frequency. - rotation_frequency: u64, - /// Model for available options for rotation frequencies. rotation_options: Vec, @@ -216,7 +213,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("wallpaper", "preferences-desktop-wallpaper-symbolic") .title(fl!("wallpaper")) - .description(fl!("wallpaper", "desc")) + .description(fl!("xdg-entry-wallpaper-comment")) } fn on_enter(&mut self) -> Task { @@ -292,6 +289,9 @@ impl page::AutoBind for Page {} impl Default for Page { fn default() -> Self { + let config = Config::new(); + let selected_rotation = Self::get_selected_rotation(config.rotation_frequency); + let mut page = Page { entity: page::Entity::null(), on_enter_handle: None, @@ -328,10 +328,9 @@ impl Default for Page { }, wallpaper_service_config: wallpaper::Config::default(), color_model: ColorPickerModel::new(fl!("hex"), fl!("rgb"), None, Some(Color::WHITE)), - config: Config::new(), + config, fit_options: vec![fl!("fill"), fl!("fit-to-screen")], outputs: SingleSelectModel::default(), - rotation_frequency: 300, rotation_options: vec![ // FIX: fluent is inserting extra unicode characters in formatting fl!("x-minutes", number = 5) @@ -354,7 +353,7 @@ impl Default for Page { .replace('\u{2069}', ""), ], selected_fit: 0, - selected_rotation: 0, + selected_rotation, selection: Context::default(), update_config: None, }; @@ -366,6 +365,18 @@ impl Default for Page { } impl Page { + fn get_selected_rotation(rotation_frequency: u64) -> usize { + match rotation_frequency { + 0..=300 => MINUTES_5, + 301..=600 => MINUTES_10, + 601..=900 => MINUTES_15, + 901..=1800 => MINUTES_30, + 1801..=3600 => HOUR_1, + 3601..=7200 => HOUR_2, + _ => HOUR_2, + } + } + fn add_recent_folder(&mut self, folder: PathBuf) { if let Err(why) = self.config.add_recent_folder(folder) { tracing::error!(?why, "cannot add recent folder to config"); @@ -629,10 +640,10 @@ impl Page { } /// Changes the slideshow wallpaper rotation frequency - pub fn change_rotation_frequency(&mut self, option: usize) { + pub fn change_rotation_frequency(&mut self, option: usize) -> Result<(), cosmic_config::Error> { self.selected_rotation = option; - self.rotation_frequency = match self.selected_rotation { + let rotation_frequency = match self.selected_rotation { MINUTES_5 => 300, MINUTES_10 => 600, MINUTES_15 => 900, @@ -641,6 +652,8 @@ impl Page { HOUR_2 => 7200, _ => 10800, }; + self.config.change_rotation_frequency(rotation_frequency)?; + Ok(()) } /// Updates configuration for wallpaper image. @@ -661,7 +674,7 @@ impl Page { let entry = Entry::new(output, wallpaper::Source::Path(path)) .scaling_mode(scaling_mode) - .rotation_frequency(self.rotation_frequency); + .rotation_frequency(self.config.rotation_frequency); if let Some(old_entry) = old_entry { entry @@ -681,7 +694,10 @@ impl Page { .width(Length::Fixed(SIMULATED_WIDTH as f32)) .into(), - None => cosmic::widget::Space::new(SIMULATED_WIDTH, SIMULATED_HEIGHT).into(), + None => cosmic::widget::Space::new() + .width(Length::Fixed(SIMULATED_WIDTH as f32)) + .height(Length::Fixed(SIMULATED_HEIGHT as f32)) + .into(), } } @@ -696,27 +712,6 @@ impl Page { Message::CacheDisplayImage => self.cache_display_image(), - Message::ChangeFolder(mut context) => { - // Reassign custom colors and images to the new context. - std::mem::swap(&mut context, &mut self.selection); - - for color in context.custom_colors { - self.selection.add_custom_color(color); - } - - for image in context.custom_images { - let path = context.paths.remove(image); - let display = context.display_images.remove(image); - let selection = context.selection_handles.remove(image); - - if let Some(((display, selection), path)) = display.zip(selection).zip(path) { - self.selection.add_custom_image(path, display, selection); - } - } - - self.select_first_wallpaper(); - } - Message::ColorAdd(message) => { match message { ColorPickerUpdate::ActionFinished => { @@ -841,7 +836,11 @@ impl Page { return Task::none(); } - Message::RotationFrequency(pos) => self.change_rotation_frequency(pos), + Message::RotationFrequency(pos) => { + if let Err(err) = self.change_rotation_frequency(pos) { + tracing::warn!("Failed to save rotation frequency: {err}"); + } + } Message::SameWallpaper(value) => { self.wallpaper_service_config.same_on_all = value; @@ -1112,7 +1111,7 @@ impl Page { _ => self.selected_rotation = MINUTES_5, } - self.rotation_frequency = entry.rotation_frequency; + self.config.rotation_frequency = entry.rotation_frequency; self.cache_display_image(); } @@ -1160,6 +1159,10 @@ impl Context { } fn add_custom_image(&mut self, path: PathBuf, display: Image, selection: ImageHandle) { + if self.paths.values().any(|p| p == &path) { + return; + } + let key = self.paths.insert(path); self.is_custom.insert(key, ()); self.display_images.insert(key, display); @@ -1191,12 +1194,12 @@ impl Context { #[allow(clippy::too_many_lines)] pub fn settings() -> Section { - let mut descriptions = Slab::new(); - - let same_label = descriptions.insert(fl!("wallpaper", "same")); - let fit_label = descriptions.insert(fl!("wallpaper", "fit")); - let slide_label = descriptions.insert(fl!("wallpaper", "slide")); - let change_label = descriptions.insert(fl!("wallpaper", "change")); + crate::slab!(descriptions { + same_label = fl!("wallpaper", "same"); + fit_label = fl!("wallpaper", "fit"); + slide_label = fl!("wallpaper", "slide"); + change_label = fl!("wallpaper", "change"); + }); Section::default() .descriptions(descriptions) @@ -1255,6 +1258,7 @@ pub fn settings() -> Section { } else if page.show_tab_bar { let element = tab_bar::horizontal(&page.outputs) .button_alignment(Alignment::Center) + .ellipsize(Ellipsize::End(EllipsizeHeightLimit::Lines(1))) .on_activate(Message::Output); children.push(element.into()); @@ -1271,18 +1275,17 @@ pub fn settings() -> Section { children.push({ let mut column = list_column() - .add(settings::item( - &descriptions[same_label], - toggler(page.wallpaper_service_config.same_on_all) - .on_toggle(Message::SameWallpaper), + .add(settings::item::builder(&descriptions[same_label]).toggler( + page.wallpaper_service_config.same_on_all, + Message::SameWallpaper, )) .add(settings::item(&descriptions[fit_label], wallpaper_fit)); if show_slideshow_toggle { - column = column.add(settings::item( - &descriptions[slide_label], - toggler(slideshow_enabled).on_toggle(Message::Slideshow), - )); + column = column.add( + settings::item::builder(&descriptions[slide_label]) + .toggler(slideshow_enabled, Message::Slideshow), + ); } // The rotation frequency dropdown should only be shown when the slideshow is enabled. @@ -1345,7 +1348,7 @@ pub fn settings() -> Section { }, ) .push(category_selection) - .push(cosmic::widget::horizontal_space()) + .push(horizontal_space()) .push_maybe(add_button) .into(), ); diff --git a/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs b/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs index f1e5e08..f9d2bcb 100644 --- a/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs +++ b/cosmic-settings/src/pages/desktop/wallpaper/widgets.rs @@ -3,9 +3,9 @@ use super::Message; use cosmic::iced::Radius; -use cosmic::iced_core::Border; -use cosmic::iced_core::{self, Background, Color, Degrees, Length, gradient::Linear}; -use cosmic::iced_runtime::core::image::Handle as ImageHandle; +use cosmic::iced::core::Border; +use cosmic::iced::core::{Background, Color, Degrees, Length, gradient::Linear}; +use cosmic::iced::runtime::core::image::Handle as ImageHandle; use cosmic::prelude::*; use cosmic::widget::{Space, button, container}; use cosmic::{Element, iced}; @@ -47,11 +47,12 @@ pub fn color_image<'a, M: 'a>( height: u16, border_radius: Option, ) -> Element<'a, M> { - container(Space::new(width, height)) + container(Space::new().width(width).height(height)) .class(cosmic::theme::Container::custom(move |theme| { container::Style { icon_color: None, text_color: None, + snap: true, background: Some(match &color { wallpaper::Color::Single([r, g, b]) => { Background::Color(Color::from_rgb(*r, *g, *b)) @@ -68,7 +69,7 @@ pub fn color_image<'a, M: 'a>( stop += stop_increment; } - Background::Gradient(iced_core::Gradient::Linear(linear)) + Background::Gradient(iced::core::Gradient::Linear(linear)) } }), diff --git a/cosmic-settings/src/pages/desktop/window_management.rs b/cosmic-settings/src/pages/desktop/window_management.rs index 7ab58c1..7b68acc 100644 --- a/cosmic-settings/src/pages/desktop/window_management.rs +++ b/cosmic-settings/src/pages/desktop/window_management.rs @@ -5,7 +5,7 @@ use cosmic::{ Apply, Element, iced::Length, surface, - widget::{self, settings, toggler}, + widget::{self, settings}, }; use cosmic_comp_config::CosmicCompConfig; @@ -13,7 +13,6 @@ use cosmic_config::{ConfigGet, ConfigSet}; use cosmic_settings_config::{Action, Binding, Shortcuts, shortcuts}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; -use slab::Slab; use slotmap::SlotMap; use tracing::error; @@ -28,6 +27,7 @@ pub enum Message { ShowActiveWindowHint(bool), ShowMaximizeButton(bool), ShowMinimizeButton(bool), + WindowControlsPositionStart(bool), SetEdgeSnapThreshold(u32), Surface(surface::Action), } @@ -178,6 +178,19 @@ impl Page { .set_show_minimize(&config, value); } } + Message::WindowControlsPositionStart(left) => { + if let Ok(config) = cosmic::config::CosmicTk::config() { + let position = if left { + cosmic::widget::WindowControlsPosition::Start + } else { + cosmic::widget::WindowControlsPosition::End + }; + let _res = cosmic::config::COSMIC_TK + .write() + .unwrap() + .set_window_controls_position(&config, position); + } + } Message::ShowActiveWindowHint(value) => { self.show_active_hint = value; if let Err(err) = self.comp_config.set("active_hint", value) { @@ -222,22 +235,21 @@ impl page::Page for Page { "preferences-window-management-symbolic", ) .title(fl!("window-management")) - .description(fl!("window-management", "desc")) + .description(fl!("xdg-entry-window-management-comment")) } } impl page::AutoBind for Page {} pub fn window_management() -> Section { - let mut descriptions = Slab::new(); - - let super_key = descriptions.insert(fl!("super-key")); - let _launcher = descriptions.insert(fl!("super-key", "launcher")); - let _workspaces = descriptions.insert(fl!("super-key", "workspaces")); - let _applications = descriptions.insert(fl!("super-key", "applications")); - let _disable = descriptions.insert(fl!("super-key", "disable")); - - let edge_gravity = descriptions.insert(fl!("edge-gravity")); + crate::slab!(descriptions { + super_key = fl!("super-key"); + _launcher = fl!("super-key", "launcher"); + _workspaces = fl!("super-key", "workspaces"); + _applications = fl!("super-key", "applications"); + _disable = fl!("super-key", "disable"); + edge_gravity = fl!("edge-gravity"); + }); Section::default() .descriptions(descriptions) @@ -260,23 +272,24 @@ pub fn window_management() -> Section { }, ), )) - .add(settings::flex_item( - &descriptions[edge_gravity], - toggler(page.edge_snap_threshold != 0).on_toggle(|is_enabled| { - Message::SetEdgeSnapThreshold(if is_enabled { 10 } else { 0 }) - }), - )) + .add( + settings::item::builder(&descriptions[edge_gravity]) + .toggler(page.edge_snap_threshold != 0, |is_enabled| { + Message::SetEdgeSnapThreshold(if is_enabled { 10 } else { 0 }) + }), + ) .apply(Element::from) .map(crate::pages::Message::WindowManagement) }) } pub fn window_controls() -> Section { - let mut descriptions = Slab::new(); - - let maximize = descriptions.insert(fl!("window-controls", "maximize")); - let minimize = descriptions.insert(fl!("window-controls", "minimize")); - let active_window_hint = descriptions.insert(fl!("window-controls", "active-window-hint")); + crate::slab!(descriptions { + maximize = fl!("window-controls", "maximize"); + minimize = fl!("window-controls", "minimize"); + active_window_hint = fl!("window-controls", "active-window-hint"); + position_start = fl!("window-controls", "position-start"); + }); Section::default() .title(fl!("window-controls")) @@ -286,17 +299,24 @@ pub fn window_controls() -> Section { settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[active_window_hint], - toggler(page.show_active_hint).on_toggle(Message::ShowActiveWindowHint), - )) - .add(settings::item( - &descriptions[maximize], - toggler(cosmic::config::show_maximize()).on_toggle(Message::ShowMaximizeButton), - )) - .add(settings::item( - &descriptions[minimize], - toggler(cosmic::config::show_minimize()).on_toggle(Message::ShowMinimizeButton), + .add( + settings::item::builder(&descriptions[active_window_hint]) + .toggler(page.show_active_hint, Message::ShowActiveWindowHint), + ) + .add( + settings::item::builder(&descriptions[maximize]) + .toggler(cosmic::config::show_maximize(), Message::ShowMaximizeButton), + ) + .add( + settings::item::builder(&descriptions[minimize]) + .toggler(cosmic::config::show_minimize(), Message::ShowMinimizeButton), + ) + .add(settings::item::builder(&descriptions[position_start]).toggler( + matches!( + cosmic::config::window_controls_position(), + cosmic::widget::WindowControlsPosition::Start + ), + Message::WindowControlsPositionStart, )) .apply(Element::from) .map(crate::pages::Message::WindowManagement) @@ -304,12 +324,11 @@ pub fn window_controls() -> Section { } pub fn focus_navigation() -> Section { - let mut descriptions = Slab::new(); - - let focus_follows_cursor = descriptions.insert(fl!("focus-navigation", "focus-follows-cursor")); - let focus_follows_cursor_delay = - descriptions.insert(fl!("focus-navigation", "focus-follows-cursor-delay")); - let cursor_follows_focus = descriptions.insert(fl!("focus-navigation", "cursor-follows-focus")); + crate::slab!(descriptions { + focus_follows_cursor = fl!("focus-navigation", "focus-follows-cursor"); + focus_follows_cursor_delay = fl!("focus-navigation", "focus-follows-cursor-delay"); + cursor_follows_focus = fl!("focus-navigation", "cursor-follows-focus"); + }); Section::default() .title(fl!("focus-navigation")) @@ -319,10 +338,10 @@ pub fn focus_navigation() -> Section { settings::section() .title(§ion.title) - .add(settings::item( - &descriptions[focus_follows_cursor], - toggler(page.focus_follows_cursor).on_toggle(Message::SetFocusFollowsCursor), - )) + .add( + settings::item::builder(&descriptions[focus_follows_cursor]) + .toggler(page.focus_follows_cursor, Message::SetFocusFollowsCursor), + ) .add(settings::item( &descriptions[focus_follows_cursor_delay], widget::editable_input("", &page.focus_delay_text, false, |editing| { @@ -333,10 +352,10 @@ pub fn focus_navigation() -> Section { .on_submit(|_| Message::SaveFocusFollowsCursorDelay(true)) .width(Length::Fixed(80.0)), )) - .add(settings::item( - &descriptions[cursor_follows_focus], - toggler(page.cursor_follows_focus).on_toggle(Message::SetCursorFollowsFocus), - )) + .add( + settings::item::builder(&descriptions[cursor_follows_focus]) + .toggler(page.cursor_follows_focus, Message::SetCursorFollowsFocus), + ) .apply(Element::from) .map(crate::pages::Message::WindowManagement) }) diff --git a/cosmic-settings/src/pages/desktop/workspaces.rs b/cosmic-settings/src/pages/desktop/workspaces.rs index a916939..6f5e1f2 100644 --- a/cosmic-settings/src/pages/desktop/workspaces.rs +++ b/cosmic-settings/src/pages/desktop/workspaces.rs @@ -6,28 +6,32 @@ use cosmic::{ Apply, Element, cosmic_config::{self, ConfigGet, ConfigSet}, - iced::Length, - widget::{radio, settings, text}, + surface, + widget::{self, settings}, }; -use cosmic_comp_config::workspace::{WorkspaceConfig, WorkspaceLayout, WorkspaceMode}; +use cosmic_comp_config::workspace::{Action, WorkspaceConfig, WorkspaceLayout, WorkspaceMode}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; -use slab::Slab; use slotmap::SlotMap; use tracing::error; #[derive(Clone, Debug)] pub enum Message { + SetActionOnTyping(usize), SetWorkspaceMode(WorkspaceMode), SetWorkspaceLayout(WorkspaceLayout), + SetWorkspaceWraparound(bool), SetShowName(bool), SetShowNumber(bool), + Surface(surface::Action), } pub struct Page { config: cosmic_config::Config, comp_config: cosmic_config::Config, comp_workspace_config: WorkspaceConfig, + action_on_typing_selections: Vec, + action_on_typing_active: Option, show_workspace_name: bool, show_workspace_number: bool, } @@ -43,6 +47,8 @@ impl Default for Page { WorkspaceConfig::default() }); let config = cosmic_config::Config::new("com.system76.CosmicWorkspaces", 1).unwrap(); + let action_on_typing_active = + into_active_selection(&comp_workspace_config.action_on_typing); let show_workspace_name = config.get("show_workspace_name").unwrap_or_else(|err| { if err.is_err() { error!(?err, "Failed to read config 'show_workspace_name'"); @@ -61,6 +67,12 @@ impl Default for Page { config, comp_config, comp_workspace_config, + action_on_typing_selections: vec![ + fl!("workspaces-overview", "none"), + fl!("workspaces-overview", "launcher"), + fl!("workspaces-overview", "applications"), + ], + action_on_typing_active, show_workspace_name, show_workspace_number, } @@ -73,15 +85,17 @@ impl page::Page for Page { sections: &mut SlotMap>, ) -> Option { Some(vec![ + sections.insert(action_on_typing()), sections.insert(multi_behavior()), sections.insert(workspace_orientation()), + sections.insert(workspace_navigation()), ]) } fn info(&self) -> page::Info { page::Info::new("workspaces", "preferences-workspaces-symbolic") .title(fl!("workspaces")) - .description(fl!("workspaces", "desc")) + .description(fl!("xdg-entry-workspaces-comment")) } } @@ -97,7 +111,7 @@ impl Page { } } - pub fn update(&mut self, message: Message) { + pub fn update(&mut self, message: Message) -> cosmic::iced::Task { match message { Message::SetWorkspaceMode(value) => { self.comp_workspace_config.workspace_mode = value; @@ -107,6 +121,16 @@ impl Page { self.comp_workspace_config.workspace_layout = value; self.save_comp_config(); } + Message::SetActionOnTyping(value) => { + self.comp_workspace_config.action_on_typing = into_action(value); + self.action_on_typing_active = + into_active_selection(&self.comp_workspace_config.action_on_typing); + self.save_comp_config(); + } + Message::SetWorkspaceWraparound(value) => { + self.comp_workspace_config.workspace_wraparound = value; + self.save_comp_config(); + } Message::SetShowName(value) => { self.show_workspace_name = value; if let Err(err) = self.config.set("show_workspace_name", value) { @@ -119,15 +143,69 @@ impl Page { error!(?err, "Failed to set config 'show_workspace_number'"); } } + Message::Surface(a) => { + return cosmic::task::message(crate::app::Message::Surface(a)); + } } + cosmic::iced::Task::none() } } -fn multi_behavior() -> Section { - let mut descriptions = Slab::new(); +fn into_active_selection(action_on_typing: &Action) -> Option { + match action_on_typing { + Action::None => Some(0), + Action::OpenLauncher => Some(1), + Action::OpenApplications => Some(2), + } +} - let span = descriptions.insert(fl!("workspaces-multi-behavior", "span")); - let separate = descriptions.insert(fl!("workspaces-multi-behavior", "separate")); +fn into_action(value: usize) -> Action { + match value { + 1 => Action::OpenLauncher, + 2 => Action::OpenApplications, + _ => Action::None, + } +} + +pub fn action_on_typing() -> Section { + crate::slab!(descriptions { + action_on_typing = fl!("workspaces-overview", "action-on-typing"); + }); + + Section::default() + .title(fl!("workspaces-overview")) + .descriptions(descriptions) + .view::(move |_binder, page, section| { + let descriptions = §ion.descriptions; + + settings::section() + .title(§ion.title) + .add( + settings::item::builder(&descriptions[action_on_typing]).control( + widget::dropdown::popup_dropdown( + &page.action_on_typing_selections, + page.action_on_typing_active, + Message::SetActionOnTyping, + cosmic::iced::window::Id::RESERVED, + Message::Surface, + |a| { + crate::app::Message::PageMessage(crate::pages::Message::Workspaces( + a, + )) + }, + ), + ), + ) + .apply(Element::from) + .map(crate::pages::Message::Workspaces) + }) +} + +fn multi_behavior() -> Section { + crate::slab!(descriptions { + span = fl!("workspaces-multi-behavior", "span"); + separate = fl!("workspaces-multi-behavior", "separate"); + }); Section::default() .title(fl!("workspaces-multi-behavior")) @@ -136,36 +214,26 @@ fn multi_behavior() -> Section { let descriptions = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[span]), - WorkspaceMode::Global, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[separate]), - WorkspaceMode::OutputBound, - Some(page.comp_workspace_config.workspace_mode), - Message::SetWorkspaceMode, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[span]).radio( + WorkspaceMode::Global, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + )) + .add(settings::item::builder(&descriptions[separate]).radio( + WorkspaceMode::OutputBound, + Some(page.comp_workspace_config.workspace_mode), + Message::SetWorkspaceMode, + )) .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) } fn workspace_orientation() -> Section { - let mut descriptions = Slab::new(); - - let vertical = descriptions.insert(fl!("workspaces-orientation", "vertical")); - let horizontal = descriptions.insert(fl!("workspaces-orientation", "horizontal")); + crate::slab!(descriptions { + vertical = fl!("workspaces-orientation", "vertical"); + horizontal = fl!("workspaces-orientation", "horizontal"); + }); Section::default() .title(fl!("workspaces-orientation")) @@ -174,26 +242,37 @@ fn workspace_orientation() -> Section { let descriptions = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[vertical]), - WorkspaceLayout::Vertical, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, - ) - .width(Length::Fill) - .into(), - ])) - .add(settings::item_row(vec![ - radio( - text::body(&descriptions[horizontal]), - WorkspaceLayout::Horizontal, - Some(page.comp_workspace_config.workspace_layout), - Message::SetWorkspaceLayout, - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[vertical]).radio( + WorkspaceLayout::Vertical, + Some(page.comp_workspace_config.workspace_layout), + Message::SetWorkspaceLayout, + )) + .add(settings::item::builder(&descriptions[horizontal]).radio( + WorkspaceLayout::Horizontal, + Some(page.comp_workspace_config.workspace_layout), + Message::SetWorkspaceLayout, + )) + .apply(Element::from) + .map(crate::pages::Message::DesktopWorkspaces) + }) +} + +fn workspace_navigation() -> Section { + crate::slab!(descriptions { + description = fl!("workspaces-navigation", "wraparound"); + }); + + Section::default() + .title(fl!("workspaces-navigation")) + .descriptions(descriptions) + .view::(move |_binder, page, section| { + let descriptions = §ion.descriptions; + settings::section() + .title(§ion.title) + .add(settings::item::builder(&descriptions[description]).toggler( + page.comp_workspace_config.workspace_wraparound, + Message::SetWorkspaceWraparound, + )) .apply(Element::from) .map(crate::pages::Message::DesktopWorkspaces) }) diff --git a/cosmic-settings/src/pages/display/arrangement.rs b/cosmic-settings/src/pages/display/arrangement.rs index 71a29ed..61d99e4 100644 --- a/cosmic-settings/src/pages/display/arrangement.rs +++ b/cosmic-settings/src/pages/display/arrangement.rs @@ -2,14 +2,14 @@ // SPDX-License-Identifier: MPL-2.0 use cosmic::Renderer; -use cosmic::iced_core::renderer::Quad; -use cosmic::iced_core::widget::{Tree, tree}; -use cosmic::iced_core::{ +use cosmic::iced::core::renderer::Quad; +use cosmic::iced::core::widget::{Tree, tree}; +use cosmic::iced::core::{ self as core, Border, Clipboard, Element, Layout, Length, Rectangle, Renderer as IcedRenderer, Shell, Size, Widget, }; -use cosmic::iced_core::{Point, layout, mouse, renderer, touch}; -use cosmic::iced_core::{alignment, event, text}; +use cosmic::iced::core::{Point, layout, mouse, renderer, touch}; +use cosmic::iced::core::{alignment, text}; use cosmic::widget::segmented_button::{self, SingleSelectModel}; use cosmic_randr_shell::{self as randr, OutputKey}; use randr::Transform; @@ -96,7 +96,7 @@ impl Widget for Arrangement<'_ } fn layout( - &self, + &mut self, tree: &mut Tree, _renderer: &Renderer, limits: &layout::Limits, @@ -157,17 +157,17 @@ impl Widget for Arrangement<'_ layout::Node::new(size) } - fn on_event( + fn update( &mut self, tree: &mut Tree, - event: cosmic::iced_core::Event, + event: &cosmic::iced::Event, layout: Layout<'_>, cursor: mouse::Cursor, _renderer: &Renderer, _clipboard: &mut dyn Clipboard, shell: &mut Shell<'_, Message>, viewport: &Rectangle, - ) -> event::Status { + ) { let bounds = layout.bounds(); match event { @@ -198,7 +198,7 @@ impl Widget for Arrangement<'_ ), ); - return event::Status::Captured; + shell.capture_event(); } } } @@ -217,7 +217,7 @@ impl Widget for Arrangement<'_ state.drag_from = position; state.offset = (position.x - output_region.x, position.y - output_region.y); state.dragging = Some((output_key, output_region)); - return event::Status::Captured; + shell.capture_event(); } } } @@ -239,7 +239,8 @@ impl Widget for Arrangement<'_ } } - return event::Status::Captured; + shell.capture_event(); + return; } if let Some(ref on_placement) = self.on_placement { @@ -253,14 +254,12 @@ impl Widget for Arrangement<'_ )); } - return event::Status::Captured; + shell.capture_event(); } } _ => (), } - - event::Status::Ignored } fn mouse_interaction( @@ -333,6 +332,7 @@ impl Widget for Arrangement<'_ width: 3.0, }, shadow: Default::default(), + snap: true, }, core::Background::Color(background.into()), ); @@ -352,6 +352,7 @@ impl Widget for Arrangement<'_ ..Default::default() }, shadow: Default::default(), + snap: true, }, core::Background::Color(cosmic_theme.palette.neutral_1.into()), ); @@ -364,10 +365,11 @@ impl Widget for Arrangement<'_ line_height: core::text::LineHeight::Relative(1.2), font: cosmic::font::bold(), bounds: id_bounds.size(), - horizontal_alignment: alignment::Horizontal::Center, - vertical_alignment: alignment::Vertical::Center, + align_x: text::Alignment::Center, + align_y: alignment::Vertical::Center, shaping: text::Shaping::Basic, wrapping: text::Wrapping::Word, + ellipsize: text::Ellipsize::None, }, core::Point { x: id_bounds.center_x(), diff --git a/cosmic-settings/src/pages/display/mod.rs b/cosmic-settings/src/pages/display/mod.rs index 7de2ef4..1b73211 100644 --- a/cosmic-settings/src/pages/display/mod.rs +++ b/cosmic-settings/src/pages/display/mod.rs @@ -6,10 +6,11 @@ pub mod arrangement; use crate::{app, pages}; use arrangement::Arrangement; -use cosmic::iced::{Alignment, Length, time}; -use cosmic::iced_widget::scrollable::RelativeOffset; +use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit}; +use cosmic::iced::widget::scrollable::RelativeOffset; +use cosmic::iced::{Alignment, Length, stream, time}; use cosmic::widget::{ - self, column, container, dropdown, list_column, segmented_button, tab_bar, text, toggler, + self, column, container, dropdown, list_column, segmented_button, tab_bar, text, }; use cosmic::{Apply, Element, Task, surface}; use cosmic_randr_shell::{ @@ -18,7 +19,6 @@ use cosmic_randr_shell::{ use cosmic_settings_page::{self as page, Section, section}; use futures::SinkExt; use indexmap::Equivalent; -use slab::Slab; use slotmap::{Key, SecondaryMap, SlotMap}; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::{Arc, LazyLock}; @@ -231,7 +231,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("display", "preferences-desktop-display-symbolic") .title(fl!("display")) - .description(fl!("display", "desc")) + .description(fl!("xdg-entry-displays-comment")) } #[cfg(not(feature = "test"))] @@ -286,9 +286,9 @@ impl page::Page for Page { }); // Forward messages from another thread to prevent the monitoring thread from blocking. - let (randr_task, randr_handle) = Task::stream(cosmic::iced_futures::stream::channel( + let (randr_task, randr_handle) = Task::stream(stream::channel( 1, - |mut emitter| async move { + |mut emitter: futures::channel::mpsc::Sender<_>| async move { while let Some(message) = rx.recv().await { if let cosmic_randr::Message::ManagerDone = message && !refreshing_page.swap(true, Ordering::SeqCst) @@ -358,9 +358,9 @@ impl page::Page for Page { }); // Forward messages from the DRM hotplug thread. - let (hotplug_task, hotplug_handle) = Task::stream(cosmic::iced_futures::stream::channel( + let (hotplug_task, hotplug_handle) = Task::stream(stream::channel( 1, - |mut emitter| async move { + |mut emitter: futures::channel::mpsc::Sender| async move { while let Some(message) = rx.recv().await { _ = emitter.send(message).await; } @@ -610,8 +610,8 @@ impl Page { return cosmic::iced::widget::scrollable::snap_to( self.display_arrangement_scrollable.clone(), RelativeOffset { - x: self.last_pan, - y: 0.0, + x: Some(self.last_pan), + y: None, }, ); } @@ -663,7 +663,10 @@ impl Page { self.last_pan = 0.5; cosmic::iced::widget::scrollable::snap_to( self.display_arrangement_scrollable.clone(), - RelativeOffset { x: 0.5, y: 0.5 }, + RelativeOffset { + x: Some(0.5), + y: Some(0.5), + }, ) } @@ -1183,10 +1186,10 @@ impl Page { /// View for the display arrangement section. pub fn display_arrangement() -> Section { - let mut descriptions = Slab::new(); - - _ = descriptions.insert(fl!("display", "arrangement")); - let display_arrangement_desc = descriptions.insert(fl!("display", "arrangement-desc")); + crate::slab!(descriptions { + _display_arrangement = fl!("display", "arrangement"); + display_arrangement_desc = fl!("display", "arrangement-desc"); + }); Section::default() .title(fl!("display", "arrangement")) @@ -1199,7 +1202,7 @@ pub fn display_arrangement() -> Section { space_xxs, space_m, .. } = cosmic::theme::spacing(); - column() + column::with_capacity(2) .push( text::body(&descriptions[display_arrangement_desc]) .apply(container) @@ -1227,18 +1230,18 @@ pub fn display_arrangement() -> Section { /// View for the display configuration section. pub fn display_configuration() -> Section { - let mut descriptions = Slab::new(); - - let _display = descriptions.insert(fl!("display")); - let refresh_rate = descriptions.insert(fl!("display", "refresh-rate")); - let vrr = descriptions.insert(fl!("vrr")); - let resolution = descriptions.insert(fl!("display", "resolution")); - let scale = descriptions.insert(fl!("display", "scale")); - let additional_scale_options = descriptions.insert(fl!("display", "additional-scale-options")); - let orientation = descriptions.insert(fl!("orientation")); - let enable_label = descriptions.insert(fl!("display", "enable")); - let options_label = descriptions.insert(fl!("display", "options")); - let mirroring_label = descriptions.insert(fl!("mirroring")); + crate::slab!(descriptions { + _display = fl!("display"); + refresh_rate = fl!("display", "refresh-rate"); + vrr = fl!("vrr"); + resolution = fl!("display", "resolution"); + scale = fl!("display", "scale"); + additional_scale_options = fl!("display", "additional-scale-options"); + orientation = fl!("orientation"); + enable_label = fl!("display", "enable"); + options_label = fl!("display", "options"); + mirroring_label = fl!("mirroring"); + }); Section::default() .descriptions(descriptions) @@ -1246,7 +1249,7 @@ pub fn display_configuration() -> Section { let descriptions = §ion.descriptions; let Some(&active_id) = page.display_tabs.active_data::() else { - return column().into(); + return widget::space().into(); }; let active_output = &page.list.outputs[active_id]; @@ -1348,11 +1351,12 @@ pub fn display_configuration() -> Section { items }); - let mut content = column().spacing(cosmic::theme::spacing().space_xs); + let mut content = column::with_capacity(2).spacing(cosmic::theme::spacing().space_xs); if page.list.outputs.len() > 1 { let display_switcher = tab_bar::horizontal(&page.display_tabs) .button_alignment(Alignment::Center) + .ellipsize(Ellipsize::End(EllipsizeHeightLimit::Lines(1))) .on_activate(Message::Display); let mut display_enable = if page @@ -1366,10 +1370,10 @@ pub fn display_configuration() -> Section { || !active_output.enabled { list_column() - .add(widget::settings::item( - &descriptions[enable_label], - toggler(active_output.enabled).on_toggle(Message::DisplayToggle), - )) + .add( + widget::settings::item::builder(&descriptions[enable_label]) + .toggler(active_output.enabled, Message::DisplayToggle), + ) .add(widget::settings::item( &descriptions[mirroring_label], widget::dropdown::multi::dropdown( diff --git a/cosmic-settings/src/pages/display/night_light.rs b/cosmic-settings/src/pages/display/night_light.rs index 0b92734..796c8b7 100644 --- a/cosmic-settings/src/pages/display/night_light.rs +++ b/cosmic-settings/src/pages/display/night_light.rs @@ -3,7 +3,7 @@ use super::{Message, NightLight}; use crate::pages; -use cosmic::iced_core::{Alignment, Length}; +use cosmic::iced::core::{Alignment, Length}; use cosmic::widget::{ button, column, container, icon, list_column, row, settings, text, toggler, vertical_space, }; diff --git a/cosmic-settings/src/pages/input/keyboard/mod.rs b/cosmic-settings/src/pages/input/keyboard/mod.rs index c741a16..468ecbb 100644 --- a/cosmic-settings/src/pages/input/keyboard/mod.rs +++ b/cosmic-settings/src/pages/input/keyboard/mod.rs @@ -11,12 +11,11 @@ use cosmic::{ cosmic_config::{self, ConfigSet}, iced::{Alignment, Length}, theme, - widget::{self, ListColumn, button, container, icon, radio, row, settings}, + widget::{self, ListColumn, button, container, icon, list, row, settings}, }; use cosmic_comp_config::{KeyboardConfig, NumlockState, XkbConfig}; use cosmic_settings_page::{self as page, Section, section}; use itertools::Itertools; -use slab::Slab; use slotmap::{DefaultKey, Key, SlotMap}; static COMPOSE_OPTIONS: &[(&str, &str)] = &[ @@ -49,6 +48,7 @@ static CAPS_LOCK_OPTIONS: &[(&str, &str)] = &[ ("Backspace", "caps:backspace"), ("Super", "caps:super"), ("Control", "caps:ctrl_modifier"), + ("Swap with Control", "ctrl:swapcaps"), ]; #[derive(Clone, Debug)] @@ -84,6 +84,7 @@ pub type Description = String; pub enum LayoutSource { Base, Extra, + Custom, } const KB_REPEAT_DELAY_DEFAULT: u32 = 600; @@ -151,11 +152,11 @@ impl SpecialKey { } } - pub fn prefix(self) -> &'static str { + pub fn prefixes(self) -> &'static [&'static str] { match self { - Self::Compose => "compose:", - Self::AlternateCharacters => "lv3:", - Self::CapsLock => "caps:", + Self::Compose => &["compose:"], + Self::AlternateCharacters => &["lv3:"], + Self::CapsLock => &["caps:", "ctrl:"], } } } @@ -243,15 +244,10 @@ fn special_char_radio_row<'a>( desc: &'a str, value: Option<&'static str>, current_value: Option<&'a str>, -) -> cosmic::Element<'a, Message> { - settings::item_row(vec![ - radio(desc, value, Some(current_value), |_| { - Message::SpecialCharacterSelect(value) - }) - .width(Length::Fill) - .into(), - ]) - .into() +) -> list::ListButton<'a, Message> { + settings::item::builder(desc).radio(value, Some(current_value), |_| { + Message::SpecialCharacterSelect(value) + }) } impl page::Page for Page { @@ -275,7 +271,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("keyboard", "input-keyboard-symbolic") .title(fl!("keyboard")) - .description(fl!("keyboard", "desc")) + .description(fl!("xdg-entry-keyboard-comment")) } fn context_drawer(&self) -> Option> { @@ -332,6 +328,22 @@ impl page::Page for Page { ) .collect::>(); + // Add user-defined layouts if any are found + let user_layouts = xkb_data::user_keyboard_layouts(); + match user_layouts { + Ok(ref custom) => { + sorted_layouts.extend( + custom + .layouts() + .iter() + .map(|layout| (layout, LayoutSource::Custom)), + ); + } + Err(why) => { + tracing::error!(?why, "failed to get user keyboard layouts"); + } + } + sorted_layouts.sort_unstable_by(|(a, _), (b, _)| { match (a.name(), b.name()) { // Place US at the top of the list as it's the default @@ -497,10 +509,10 @@ impl Page { Message::SpecialCharacterSelect(id) => { if let Some(Context::SpecialCharacter(special_key)) = self.context { let options = self.xkb.options.as_deref().unwrap_or_default(); - let prefix = special_key.prefix(); + let prefixes = special_key.prefixes(); let new_options = options .split(',') - .filter(|x| !x.starts_with(prefix)) + .filter(|x| !prefixes.iter().any(|prefix| x.starts_with(prefix))) .chain(id) .join(","); @@ -536,9 +548,11 @@ impl Page { pub fn add_input_source_view(&self) -> Element<'_, crate::pages::Message> { let space_l = theme::spacing().space_l; - let toggler = settings::item::builder(fl!("show-extended-input-sources")).toggler( - self.show_extended_input_sources, - Message::SetShowExtendedInputSources, + let toggler = settings::section().add( + settings::item::builder(fl!("show-extended-input-sources")).toggler( + self.show_extended_input_sources, + Message::SetShowExtendedInputSources, + ), ); let mut list = widget::list_column(); @@ -553,7 +567,7 @@ impl Page { } } - widget::column() + widget::column::with_capacity(2) .spacing(space_l) .push(toggler) .push(list) @@ -594,13 +608,13 @@ impl Page { SpecialKey::AlternateCharacters => (ALTERNATE_CHARACTER_OPTIONS, None), SpecialKey::CapsLock => (CAPS_LOCK_OPTIONS, None), }; - let prefix = special_key.prefix(); + let prefixes = special_key.prefixes(); let current = self .xkb .options .iter() .flat_map(|x| x.split(',')) - .find(|x| x.starts_with(prefix)); + .find(|x| prefixes.iter().any(|prefix| x.starts_with(prefix))); // TODO layout default @@ -637,16 +651,11 @@ impl Page { let mut list = cosmic::widget::list_column(); for (desc, state) in options { - list = list.add(settings::item_row(vec![ - radio( - cosmic::widget::text(desc), - Some(state), - Some(Some(current)), - |_| Message::SetNumlockState(state), - ) - .width(Length::Fill) - .into(), - ])); + list = list.add(settings::item::builder(desc).radio( + Some(state), + Some(Some(current)), + |_| Message::SetNumlockState(state), + )); } list.into() @@ -710,11 +719,11 @@ fn input_sources() -> Section { } fn special_character_entry() -> Section { - let mut descriptions = Slab::new(); - - let alternate = descriptions.insert(fl!("keyboard-special-char", "alternate")); - let compose = descriptions.insert(fl!("keyboard-special-char", "compose")); - let caps = descriptions.insert(fl!("keyboard-special-char", "caps")); + crate::slab!(descriptions { + alternate = fl!("keyboard-special-char", "alternate"); + compose = fl!("keyboard-special-char", "compose"); + caps = fl!("keyboard-special-char", "caps"); + }); Section::default() .title(fl!("keyboard-special-char")) @@ -742,9 +751,9 @@ fn special_character_entry() -> Section { } fn keyboard_shortcuts() -> Section { - let mut descriptions = Slab::new(); - - let shortcuts_desc = descriptions.insert(fl!("keyboard-shortcuts", "desc")); + crate::slab!(descriptions { + shortcuts_desc = fl!("keyboard-shortcuts", "desc"); + }); Section::default() .title(fl!("keyboard-shortcuts")) @@ -768,14 +777,14 @@ fn keyboard_shortcuts() -> Section { } fn keyboard_typing_assist() -> Section { - let mut descriptions = Slab::new(); - - let repeat_delay = descriptions.insert(fl!("keyboard-typing-assist", "repeat-delay")); - let repeat_rate = descriptions.insert(fl!("keyboard-typing-assist", "repeat-rate")); - let short = descriptions.insert(fl!("short")); - let long = descriptions.insert(fl!("long")); - let slow = descriptions.insert(fl!("slow")); - let fast = descriptions.insert(fl!("fast")); + crate::slab!(descriptions { + repeat_delay = fl!("keyboard-typing-assist", "repeat-delay"); + repeat_rate = fl!("keyboard-typing-assist", "repeat-rate"); + short = fl!("short"); + long = fl!("long"); + slow = fl!("slow"); + fast = fl!("fast"); + }); Section::default() .title(fl!("keyboard-typing-assist")) @@ -785,55 +794,63 @@ fn keyboard_typing_assist() -> Section { settings::section() .title(§ion.title) - .add(settings::flex_item(&descriptions[repeat_delay], { - // Delay - let delay_slider = cosmic::widget::slider( - KB_REPEAT_DELAY_MIN..=KB_REPEAT_DELAY_MAX, - page.xkb.repeat_delay, - Message::SetRepeatKeysDelay, - ) - .width(Length::Fill) - .breakpoints(&[KB_REPEAT_DELAY_DEFAULT]) - .step(50_u32) - .apply(widget::container) - .max_width(250); + .add( + settings::item::builder(&descriptions[repeat_delay]) + .flex_control({ + // Delay + let delay_slider = cosmic::widget::slider( + KB_REPEAT_DELAY_MIN..=KB_REPEAT_DELAY_MAX, + page.xkb.repeat_delay, + Message::SetRepeatKeysDelay, + ) + .width(Length::Fill) + .breakpoints(&[KB_REPEAT_DELAY_DEFAULT]) + .step(50_u32) + .apply(widget::container) + .max_width(250); - row::with_capacity(3) - .align_y(Alignment::Center) - .spacing(theme::spacing().space_s) - .push(widget::text::body(&descriptions[short])) - .push(delay_slider) - .push(widget::text::body(&descriptions[long])) - })) - .add(settings::flex_item(&descriptions[repeat_rate], { - // Repeat rate - let rate_slider = cosmic::widget::slider( - KB_REPEAT_RATE_MIN..=KB_REPEAT_RATE_MAX, - page.xkb.repeat_rate, - Message::SetRepeatKeysRate, - ) - .width(Length::Fill) - .breakpoints(&[KB_REPEAT_RATE_DEFAULT]) - .step(5_u32) - .apply(widget::container) - .max_width(250); + row::with_capacity(3) + .align_y(Alignment::Center) + .spacing(theme::spacing().space_s) + .push(widget::text::body(&descriptions[short])) + .push(delay_slider) + .push(widget::text::body(&descriptions[long])) + }) + .align_items(Alignment::Center), + ) + .add( + settings::item::builder(&descriptions[repeat_rate]) + .flex_control({ + // Repeat rate + let rate_slider = cosmic::widget::slider( + KB_REPEAT_RATE_MIN..=KB_REPEAT_RATE_MAX, + page.xkb.repeat_rate, + Message::SetRepeatKeysRate, + ) + .width(Length::Fill) + .breakpoints(&[KB_REPEAT_RATE_DEFAULT]) + .step(5_u32) + .apply(widget::container) + .max_width(250); - row::with_capacity(3) - .align_y(Alignment::Center) - .spacing(theme::spacing().space_s) - .push(widget::text::body(&descriptions[slow])) - .push(rate_slider) - .push(widget::text::body(&descriptions[fast])) - })) + row::with_capacity(3) + .align_y(Alignment::Center) + .spacing(theme::spacing().space_s) + .push(widget::text::body(&descriptions[slow])) + .push(rate_slider) + .push(widget::text::body(&descriptions[fast])) + }) + .align_items(Alignment::Center), + ) .apply(cosmic::Element::from) .map(crate::pages::Message::Keyboard) }) } fn keyboard_num_lock() -> Section { - let mut descriptions = Slab::new(); - - let boot_state = descriptions.insert(fl!("keyboard-numlock-boot", "boot-state")); + crate::slab!(descriptions { + boot_state = fl!("keyboard-numlock-boot", "boot-state"); + }); Section::default() .title(fl!("keyboard-numlock-boot")) diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/accessibility.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/accessibility.rs index 976c77f..a93dba8 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/accessibility.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/accessibility.rs @@ -3,6 +3,7 @@ use super::{ShortcutMessage, ShortcutModel}; use cosmic::app::ContextDrawer; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::System as SystemAction; @@ -17,10 +18,13 @@ impl Default for Page { fn default() -> Self { Self { model: super::Model::default().actions(|defaults, keybindings| { - actions().iter().fold(Slab::new(), |mut slab, action| { - slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); - slab - }) + actions().iter().cloned().fold( + Slab::with_capacity(actions().len()), + |mut slab, action| { + slab.insert(ShortcutModel::new(defaults, keybindings, action)); + slab + }, + ) }), } } @@ -72,10 +76,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -101,7 +102,7 @@ pub const fn actions() -> &'static [Action] { } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs index 9fd87fd..70e1952 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs @@ -5,12 +5,15 @@ use cosmic::app::ContextDrawer; use cosmic::iced::event::listen_with; use cosmic::iced::keyboard::key::Named; use cosmic::iced::keyboard::{Key, Location, Modifiers}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; +use cosmic::iced::platform_specific::shell::wayland::keymap; use cosmic::iced::{self, Alignment, Length}; use cosmic::widget::{self, button, icon, settings, text}; -use cosmic::{Apply, Element, Task, iced_winit, theme}; +use cosmic::{Apply, Element, Task, theme}; use cosmic_config::{ConfigGet, ConfigSet}; use cosmic_settings_config::shortcuts::{self, Action, Binding, Shortcuts}; use cosmic_settings_page as page; +use iced_winit::conversion; use slab::Slab; use slotmap::Key as SlotmapKey; use std::borrow::Cow; @@ -29,6 +32,7 @@ pub enum ShortcutMessage { ResetBindings, ShowShortcut(usize, String), SubmitBinding(usize), + TabPressed, Inhibited(bool), ProtocolUnavailable, ModifiersChanged(Modifiers), @@ -48,6 +52,7 @@ pub struct ShortcutBinding { impl ShortcutBinding { pub fn reset(&mut self) { + self.pending = self.binding.clone(); self.input = self.binding.to_string(); } } @@ -323,10 +328,10 @@ impl Model { shortcut.reset(); return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), - widget::text_input::focus(shortcut.id.clone()), - widget::text_input::select_all(shortcut.id.clone()) - ]); + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), + widget::text_input::focus(shortcut.id.clone()), + widget::text_input::select_all(shortcut.id.clone()), + ]); } // Create a new input and focus it. @@ -341,10 +346,10 @@ impl Model { })); return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), - widget::text_input::focus(id.clone()), - widget::text_input::select_all(id) - ]); + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), + widget::text_input::focus(id.clone()), + widget::text_input::select_all(id), + ]); } } ShortcutMessage::ApplyReplace => { @@ -428,7 +433,7 @@ impl Model { } return Task::batch(vec![ cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } if let Some(short_id) = self.shortcut_context @@ -439,12 +444,12 @@ impl Model { self.editing = Some(id); shortcut.input = shortcut.binding.to_string(); return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), - widget::text_input::select_all(shortcut.id.clone()) - ]); + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), + widget::text_input::select_all(shortcut.id.clone()), + ]); } else if self.editing == Some(id) { self.editing = None; - return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(); + return keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(); } } } @@ -528,22 +533,43 @@ impl Model { // XX for now avoid applying the keycode shortcut.binding.keycode = None; return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), - self.submit_binding(id), - cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - ]); + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + self.submit_binding(id), + cosmic::widget::text_input::focus( + self.add_keybindings_button_id.clone(), + ), + ]); } else if old.alt || old.ctrl || old.shift { self.editing = None; shortcut.reset(); return Task::batch(vec![ - cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() - ]); + cosmic::widget::text_input::focus( + self.add_keybindings_button_id.clone(), + ), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + ]); } } shortcut.input = shortcut.pending.to_string(); } } + // libcosmic requires we set on_tab() and manually process here + // otherwise it'll consume the tab key event for navigation + ShortcutMessage::TabPressed => { + if let Some((short_id, id)) = self.shortcut_context.zip(self.editing) + && let Some(model) = self.shortcut_models.get_mut(short_id) + && let Some(shortcut) = model.bindings.get_mut(id) + { + shortcut.pending.key = Some(xkeysym::Keysym::Tab); + shortcut.pending.keycode = None; + shortcut.input = shortcut.pending.to_string(); + return Task::batch(vec![ + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + self.submit_binding(id), + cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), + ]); + } + } ShortcutMessage::KeyReleased(keycode, _, _) => { if let Some((short_id, id)) = self.shortcut_context.zip(self.editing) && let Some(model) = self.shortcut_models.get_mut(short_id) @@ -556,24 +582,29 @@ impl Model { if shortcut.pending.modifiers != cosmic_settings_config::shortcuts::Modifiers::new() || shortcut.pending.key.is_some_and(|key| { - key.is_misc_function_key() - || matches!(key.raw(), 0x10080001..=0x1008FFFF) + !cosmic_settings_config::shortcuts::is_forbidden_unmodified_keysym( + key, + ) }) { shortcut.input = shortcut.pending.to_string(); // XX for now avoid applying the keycode shortcut.binding.keycode = None; return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), - self.submit_binding(id), - cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - ]); + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + self.submit_binding(id), + cosmic::widget::text_input::focus( + self.add_keybindings_button_id.clone(), + ), + ]); } return Task::batch(vec![ - cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() - ]); + cosmic::widget::text_input::focus( + self.add_keybindings_button_id.clone(), + ), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + ]); } } } @@ -586,9 +617,11 @@ impl Model { binding.reset(); self.editing = None; return Task::batch(vec![ - cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() - ]); + cosmic::widget::text_input::focus( + self.add_keybindings_button_id.clone(), + ), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + ]); } return Task::none(); } @@ -597,11 +630,7 @@ impl Model { && let Some(shortcut) = model.bindings.get_mut(id) { shortcut.pending.keycode = Some(keycode); - shortcut.pending.key = - iced_winit::platform_specific::wayland::keymap::key_to_keysym( - unmodified_keysym, - location, - ); + shortcut.pending.key = keymap::key_to_keysym(unmodified_keysym, location); } } } @@ -628,11 +657,10 @@ impl Model { if matches!( key, Key::Named(Named::Super | Named::Alt | Named::Control | Named::Shift) - ) || matches!((&key, modifiers), (Key::Named(Named::Tab), modifiers) if modifiers.is_empty() || modifiers == Modifiers::SHIFT) - { + ) { return None; } - cosmic::iced_winit::conversion::physical_to_scancode(physical_key) + conversion::physical_to_scancode(physical_key) .map(|code| ShortcutMessage::KeyPressed(code, key, location, modifiers)) } iced::event::Event::Keyboard(iced::keyboard::Event::KeyReleased { @@ -649,7 +677,7 @@ impl Model { ) { return None; } - cosmic::iced_winit::conversion::physical_to_scancode(physical_key) + conversion::physical_to_scancode(physical_key) .map(|code| ShortcutMessage::KeyReleased(code, key, location)) } iced::event::Event::Keyboard(iced::keyboard::Event::ModifiersChanged(e)) => { @@ -751,10 +779,7 @@ fn context_drawer<'a>( show_action: bool, ) -> Element<'a, ShortcutMessage> { let cosmic::cosmic_theme::Spacing { - space_xxs, - space_xs, - space_l, - .. + space_xs, space_l, .. } = theme::spacing(); let model = &shortcuts[id]; @@ -770,7 +795,7 @@ fn context_drawer<'a>( }); let bindings = model.bindings.iter().enumerate().fold( - widget::list_column().spacing(space_xxs), + widget::list_column(), |section, (_, (bind_id, shortcut))| { let editing = editing == Some(bind_id); let text: Cow<'_, str> = if !editing && shortcut.binding.is_set() { @@ -787,6 +812,7 @@ fn context_drawer<'a>( .on_input(move |text| ShortcutMessage::InputBinding(bind_id, text)) .on_unfocus(ShortcutMessage::SubmitBinding(bind_id)) .on_submit(move |_| ShortcutMessage::SubmitBinding(bind_id)) + .on_tab(ShortcutMessage::TabPressed) // capture Tab to prevent focus navigation .padding([0, space_xs]) .id(shortcut.id.clone()) .into(); @@ -881,6 +907,7 @@ fn shortcut_item(custom: bool, id: usize, data: &ShortcutModel) -> Element<'_, S settings::item::builder(&data.description) .flex_control(control) + .align_items(Alignment::Center) .spacing(16) .apply(widget::container) .class(theme::Container::List) diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs index 96dcff9..7b04dea 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/custom.rs @@ -9,13 +9,15 @@ use super::{ShortcutBinding, ShortcutMessage, ShortcutModel}; use cosmic::app::ContextDrawer; use cosmic::iced::keyboard::key::Named; use cosmic::iced::keyboard::{Key, Location, Modifiers}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; +use cosmic::iced::platform_specific::shell::wayland::keymap; use cosmic::iced::{Alignment, Length}; -use cosmic::iced_winit; use cosmic::widget::{self, button, icon}; use cosmic::{Apply, Element, Task}; use cosmic_settings_config::Binding; use cosmic_settings_config::shortcuts::{Action, Shortcuts}; use cosmic_settings_page::{self as page, Section, section}; +use iced_winit::conversion; use slab::Slab; use slotmap::{Key as SlotKey, SlotMap}; @@ -67,6 +69,7 @@ pub enum Message { Shortcut(ShortcutMessage), /// Open the add shortcut context drawer ShortcutContext, + TabPressed, ModifiersChanged(Modifiers), KeyReleased(u32, Key, Location), KeyPressed(u32, Key, Location, Modifiers), @@ -112,13 +115,13 @@ impl Page { Message::KeyEditing(id, enable) => { if enable { self.add_shortcut.editing = Some(id); - return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(); + return keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(); } else if self.add_shortcut.editing == Some(id) { self.add_shortcut.editing = None; return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } } @@ -151,7 +154,7 @@ impl Page { self.add_shortcut.editing = Some(*index); return Task::batch(vec![ widget::text_input::focus(binding.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } else { // make a new empty binding if none exist @@ -163,7 +166,7 @@ impl Page { ); return Task::batch(vec![ widget::text_input::focus(new_id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), ]); } } @@ -174,10 +177,7 @@ impl Page { return Task::batch(vec![ widget::text_input::focus(id.clone()), widget::text_input::select_all(id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - true, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), ]); } } @@ -189,10 +189,8 @@ impl Page { } Message::ReplaceApply => { - if let Some((mut binding, ..)) = self.replace_dialog.pop() { - self.model.config_remove(&binding); - binding.keycode = None; - self.add_shortcut(binding); + if let Some((binding, ..)) = self.replace_dialog.pop() { + self.add_shortcut(binding, true); if self.replace_dialog.is_empty() { self.add_shortcut = Default::default(); @@ -262,7 +260,8 @@ impl Page { .keys .get_mut(self.add_shortcut.editing.unwrap()) else { - return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(); + return keyboard_shortcuts_inhibit::inhibit_shortcuts(false) + .discard(); }; k.0 = binding.to_string(); @@ -271,22 +270,22 @@ impl Page { { return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } - self.add_shortcut(binding); + self.add_shortcut(binding, false); _ = self.model.on_enter(); return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } else if old.alt || old.ctrl || old.shift { self.add_shortcut = Default::default(); _ = self.model.on_enter(); return Task::batch(vec![ - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } } @@ -299,6 +298,26 @@ impl Page { } } } + // libcosmic requires we set on_tab() and manually process here + // otherwise it'll consume the tab key event for navigation + Message::TabPressed => { + if self.add_shortcut.editing.is_some() && self.add_shortcut.active { + self.add_shortcut.binding.key = Some(xkeysym::Keysym::Tab); + self.add_shortcut.binding.keycode = Some(0); + if let Some(k) = self + .add_shortcut + .keys + .get_mut(self.add_shortcut.editing.unwrap()) + { + k.0 = self.add_shortcut.binding.to_string(); + } + return self.update(Message::KeyReleased( + 0, + Key::Named(Named::Tab), + Location::Standard, + )); + } + } Message::KeyReleased(keycode, _, _) => { // if the currently selected shortcut matches, finish selecting shortcut if self.add_shortcut.editing.is_some() @@ -312,7 +331,7 @@ impl Page { && self.add_shortcut.binding.modifiers != cosmic_settings_config::shortcuts::Modifiers::new() || self.add_shortcut.binding.key.is_some_and(|key| { - key.is_misc_function_key() || matches!(key.raw(), 0x10080001..=0x1008FFFF) + !cosmic_settings_config::shortcuts::is_forbidden_unmodified_keysym(key) }) { // XX for now avoid applying the keycode @@ -327,7 +346,7 @@ impl Page { .keys .get_mut(self.add_shortcut.editing.unwrap()) else { - return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(); + return keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(); }; k.0 = binding.to_string(); @@ -336,15 +355,15 @@ impl Page { { return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } - self.add_shortcut(binding); + self.add_shortcut(binding, false); _ = self.model.on_enter(); return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } } @@ -353,16 +372,13 @@ impl Page { self.add_shortcut.editing = None; return Task::batch(vec![ widget::text_input::focus(widget::Id::unique()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard(), ]); } if self.add_shortcut.active { self.add_shortcut.binding.keycode = Some(keycode); self.add_shortcut.binding.key = - iced_winit::platform_specific::wayland::keymap::key_to_keysym( - unmodified_keysym, - location, - ); + keymap::key_to_keysym(unmodified_keysym, location); if let Some(k) = self .add_shortcut .keys @@ -387,11 +403,8 @@ impl Page { binding.clear(); return Task::batch(vec![ - widget::text_input::focus(id.clone()), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - true, - ) - .discard(), + widget::text_input::focus(id.clone()), + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), ]); } @@ -405,10 +418,7 @@ impl Page { Task::batch(vec![ widget::text_input::focus(new_id.clone()), widget::text_input::select_all(new_id), - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - true, - ) - .discard(), + keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(), ]) } @@ -425,24 +435,24 @@ impl Page { .on_submit(|_| Message::EditCombination) .id(self.task_id.clone()); - let name_control = widget::column() + let name_control = widget::column::with_capacity(2) .spacing(4) .push(widget::text::body(fl!("shortcut-name"))) .push(name_input); - let command_control = widget::column() + let command_control = widget::column::with_capacity(2) .spacing(4) .push(widget::text::body(fl!("command"))) .push(task_input); - let input_fields = widget::column() + let input_fields = widget::column::with_capacity(2) .spacing(12) .push(name_control) .push(command_control) .padding([16, 24]); let keys = self.add_shortcut.keys.iter().fold( - widget::list_column().spacing(0), + widget::list_column(), |column, (id, (text, widget_id))| { let key_combination = widget::editable_input( fl!("type-key-combination"), @@ -454,6 +464,7 @@ impl Page { .select_on_focus(true) .on_input(move |input| Message::KeyInput(id, input)) .on_submit(|_| Message::AddKeybinding) + .on_tab(Message::TabPressed) // capture Tab to prevent focus navigation .padding([0, 12]) .id(widget_id.clone()) .apply(widget::container) @@ -463,7 +474,7 @@ impl Page { }, ); - let controls = widget::list_column().add(input_fields).add(keys).spacing(0); + let controls = widget::list_column().add(input_fields).add(keys); let add_keybinding_button = widget::button::standard(fl!("add-another-keybinding")) .on_press(Message::AddShortcut) @@ -471,19 +482,22 @@ impl Page { .width(Length::Fill) .align_x(Alignment::End); - widget::column() + widget::column::with_capacity(2) .spacing(32) .push(controls) .push(add_keybinding_button) .into() } - fn add_shortcut(&mut self, mut binding: Binding) { - if let Some(action) = self.model.config_contains(&binding) { + fn add_shortcut(&mut self, mut binding: Binding, replace: bool) { + if replace { + self.model.config_remove(&binding); + } else if let Some(action) = self.model.config_contains(&binding) { let action_str = super::localize_action(&action); self.replace_dialog.push((binding, action, action_str)); return; } + binding.keycode = None; binding.description = Some(self.add_shortcut.name.clone()); let new_action = Action::Spawn(self.add_shortcut.task.clone()); self.model.config_add(new_action, binding); @@ -568,10 +582,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -598,17 +609,14 @@ impl page::Page for Page { if matches!( key, Key::Named(Named::Super | Named::Alt | Named::Control | Named::Shift) - ) || matches!((&key, modifiers), (Key::Named(Named::Tab), modifiers) if modifiers.is_empty() || modifiers == Modifiers::SHIFT) - { + ) { return None; } - cosmic::iced_winit::conversion::physical_to_scancode(physical_key).map( - |code| { - crate::pages::Message::CustomShortcuts(Message::KeyPressed( - code, key, location, modifiers, - )) - }, - ) + conversion::physical_to_scancode(physical_key).map(|code| { + crate::pages::Message::CustomShortcuts(Message::KeyPressed( + code, key, location, modifiers, + )) + }) } iced::event::Event::Keyboard(iced::keyboard::Event::KeyReleased { key, @@ -623,13 +631,11 @@ impl page::Page for Page { ) { return None; } - cosmic::iced_winit::conversion::physical_to_scancode(physical_key).map( - |code| { - crate::pages::Message::CustomShortcuts(Message::KeyReleased( - code, key, location, - )) - }, - ) + conversion::physical_to_scancode(physical_key).map(|code| { + crate::pages::Message::CustomShortcuts(Message::KeyReleased( + code, key, location, + )) + }) } iced::event::Event::Keyboard(iced::keyboard::Event::ModifiersChanged(e)) => { Some(crate::pages::Message::CustomShortcuts( @@ -717,7 +723,7 @@ fn shortcuts() -> Section { .width(Length::Fill) .align_x(Alignment::End); - widget::column() + widget::column::with_capacity(2) .push(content) .push(add_shortcut) .spacing(24) diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/manage_windows.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/manage_windows.rs index ac31e5e..3d14669 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/manage_windows.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/manage_windows.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-only use super::{ShortcutMessage, ShortcutModel}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task, app::ContextDrawer}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::ResizeDirection; @@ -70,10 +71,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -102,7 +100,7 @@ pub const fn actions() -> &'static [Action] { ] } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs index ff5cf3f..5a5b1bb 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/mod.rs @@ -405,28 +405,31 @@ impl Search { self.localized[*id].to_lowercase().contains(&input) || shortcut_search_actions.contains(action) }) - .fold(Slab::new(), |mut slab, (_, action)| { - slab.insert(ShortcutModel::new( - &self.defaults, - &self.shortcuts, - action.clone(), - )); + .fold( + Slab::with_capacity(self.actions.len()), + |mut slab, (_, action)| { + slab.insert(ShortcutModel::new( + &self.defaults, + &self.shortcuts, + action.clone(), + )); - slab - }) + slab + }, + ) } } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); - - let accessibility = descriptions.insert(fl!("accessibility")); - let custom_label = descriptions.insert(fl!("custom")); - let manage_window_label = descriptions.insert(fl!("manage-windows")); - let move_window_label = descriptions.insert(fl!("move-windows")); - let nav_label = descriptions.insert(fl!("nav-shortcuts")); - let system_label = descriptions.insert(fl!("system-shortcut")); - let window_tiling_label = descriptions.insert(fl!("window-tiling")); + crate::slab!(descriptions { + accessibility = fl!("accessibility"); + custom_label = fl!("custom"); + manage_window_label = fl!("manage-windows"); + move_window_label = fl!("move-windows"); + nav_label = fl!("nav-shortcuts"); + system_label = fl!("system-shortcut"); + window_tiling_label = fl!("window-tiling"); + }); Section::default() .descriptions(descriptions) @@ -434,7 +437,7 @@ fn shortcuts() -> Section { let descriptions = §ion.descriptions; let search = widget::search_input("", &page.search.input) - .width(314) + .width(314.) .on_clear(Message::Search(String::new())) .on_input(Message::Search) .apply(widget::container) @@ -500,7 +503,7 @@ fn category_item(category: Category, name: &str, modified: u16) -> Element<'_, M let control = if modified == 0 { Element::from(icon) } else { - widget::row() + widget::row::with_capacity(2) .push(text::body(fl!("modified", count = modified))) .push(icon) .into() @@ -513,6 +516,7 @@ fn category_item(category: Category, name: &str, modified: u16) -> Element<'_, M .class(theme::Container::List) .apply(widget::button::custom) .class(theme::Button::Transparent) + .width(Length::Fill) .on_press(Message::Category(category)) .into() } diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/move_window.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/move_window.rs index 6e7d20e..f0ca09c 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/move_window.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/move_window.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-only // use super::{ShortcutMessage, ShortcutModel}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task, app::ContextDrawer}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::Direction; @@ -16,10 +17,13 @@ impl Default for Page { fn default() -> Self { Self { model: super::Model::default().actions(|defaults, keybindings| { - actions().iter().fold(Slab::new(), |mut slab, action| { - slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); - slab - }) + actions().iter().cloned().fold( + Slab::with_capacity(actions().len()), + |mut slab, action| { + slab.insert(ShortcutModel::new(defaults, keybindings, action)); + slab + }, + ) }), } } @@ -70,10 +74,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -116,7 +117,7 @@ pub const fn actions() -> &'static [Action] { } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/nav.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/nav.rs index 7528db7..3f3217e 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/nav.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/nav.rs @@ -3,6 +3,7 @@ use super::{ShortcutMessage, ShortcutModel}; use cosmic::app::ContextDrawer; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::{Direction, FocusDirection}; @@ -17,10 +18,13 @@ impl Default for Page { fn default() -> Self { Self { model: super::Model::default().actions(|defaults, keybindings| { - actions().iter().fold(Slab::new(), |mut slab, action| { - slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); - slab - }) + actions().iter().cloned().fold( + Slab::with_capacity(actions().len()), + |mut slab, action| { + slab.insert(ShortcutModel::new(defaults, keybindings, action)); + slab + }, + ) }), } } @@ -71,10 +75,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -119,7 +120,7 @@ pub const fn actions() -> &'static [Action] { } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/system.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/system.rs index f0ae2e2..02c2277 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/system.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/system.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-only use super::{ShortcutMessage, ShortcutModel}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task, app::ContextDrawer}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::System as SystemAction; @@ -16,10 +17,13 @@ impl Default for Page { fn default() -> Self { Self { model: super::Model::default().actions(|defaults, keybindings| { - actions().iter().fold(Slab::new(), |mut slab, action| { - slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); - slab - }) + actions().iter().cloned().fold( + Slab::with_capacity(actions().len()), + |mut slab, action| { + slab.insert(ShortcutModel::new(defaults, keybindings, action)); + slab + }, + ) }), } } @@ -70,10 +74,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -122,7 +123,7 @@ pub const fn actions() -> &'static [Action] { } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/tiling.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/tiling.rs index 52eb734..aa0717d 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/tiling.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/tiling.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-only use super::{ShortcutMessage, ShortcutModel}; +use cosmic::iced::platform_specific::shell::wayland::commands::keyboard_shortcuts_inhibit; use cosmic::{Element, Task, app::ContextDrawer}; use cosmic_settings_config::shortcuts::Action; use cosmic_settings_config::shortcuts::action::Orientation; @@ -16,10 +17,13 @@ impl Default for Page { fn default() -> Self { Self { model: super::Model::default().actions(|defaults, keybindings| { - actions().iter().fold(Slab::new(), |mut slab, action| { - slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); - slab - }) + actions().iter().cloned().fold( + Slab::with_capacity(actions().len()), + |mut slab, action| { + slab.insert(ShortcutModel::new(defaults, keybindings, action)); + slab + }, + ) }), } } @@ -70,10 +74,7 @@ impl page::Page for Page { fn on_leave(&mut self) -> Task { self.model.on_clear(); - cosmic::iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts( - false, - ) - .discard() + keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard() } #[cfg(feature = "wayland")] @@ -103,7 +104,7 @@ pub fn actions() -> &'static [Action] { } fn shortcuts() -> Section { - let mut descriptions = Slab::new(); + let mut descriptions = Slab::with_capacity(actions().len()); // Make these searchable in the global settings search. for action in actions() { diff --git a/cosmic-settings/src/pages/input/mod.rs b/cosmic-settings/src/pages/input/mod.rs index e1b94d6..560f740 100644 --- a/cosmic-settings/src/pages/input/mod.rs +++ b/cosmic-settings/src/pages/input/mod.rs @@ -188,7 +188,7 @@ impl page::Page for Page { // XXX icon? page::Info::new("input-devices", "preferences-input-devices-symbolic") .title(fl!("input-devices")) - .description(fl!("input-devices", "desc")) + .description(fl!("xdg-entry-input-comment")) } } diff --git a/cosmic-settings/src/pages/input/mouse.rs b/cosmic-settings/src/pages/input/mouse.rs index bf6bb5b..a32eb57 100644 --- a/cosmic-settings/src/pages/input/mouse.rs +++ b/cosmic-settings/src/pages/input/mouse.rs @@ -7,7 +7,6 @@ use cosmic::{Apply, Element}; use cosmic_comp_config::input::AccelProfile; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; -use slab::Slab; use slotmap::SlotMap; use super::Message; @@ -41,19 +40,19 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("mouse", "input-mouse-symbolic") .title(fl!("mouse")) - .description(fl!("mouse", "desc")) + .description(fl!("xdg-entry-mouse-comment")) } } impl page::AutoBind for Page {} fn mouse() -> Section { - let mut descriptions = Slab::new(); - - let mouse_acceleration = descriptions.insert(fl!("mouse", "acceleration")); - let mouse_speed = descriptions.insert(fl!("mouse", "speed")); - let primary_button = descriptions.insert(fl!("primary-button")); - let acceleration_desc = descriptions.insert(fl!("acceleration-desc")); + crate::slab!(descriptions { + mouse_acceleration = fl!("mouse", "acceleration"); + mouse_speed = fl!("mouse", "speed"); + primary_button = fl!("primary-button"); + acceleration_desc = fl!("acceleration-desc"); + }); Section::default() .descriptions(descriptions) @@ -63,12 +62,15 @@ fn mouse() -> Section { settings::section() .title(§ion.title) - .add(settings::flex_item( - &descriptions[primary_button], - cosmic::widget::segmented_control::horizontal(&input.primary_button) - .minimum_button_width(0) - .on_activate(|x| Message::PrimaryButtonSelected(x, false)), - )) + .add( + settings::flex_item( + &descriptions[primary_button], + cosmic::widget::segmented_control::horizontal(&input.primary_button) + .minimum_button_width(0) + .on_activate(|x| Message::PrimaryButtonSelected(x, false)), + ) + .align_items(Alignment::Center), + ) .add( settings::item::builder(&descriptions[mouse_speed]).flex_control({ let value = (input @@ -116,11 +118,11 @@ fn mouse() -> Section { } fn scrolling() -> Section { - let mut descriptions = Slab::new(); - - let natural = descriptions.insert(fl!("scrolling", "natural")); - let natural_desc = descriptions.insert(fl!("scrolling", "natural-desc")); - let scroll_speed = descriptions.insert(fl!("scrolling", "speed")); + crate::slab!(descriptions { + natural = fl!("scrolling", "natural"); + natural_desc = fl!("scrolling", "natural-desc"); + scroll_speed = fl!("scrolling", "speed"); + }); Section::default() .title(fl!("scrolling")) @@ -131,35 +133,39 @@ fn scrolling() -> Section { settings::section() .title(§ion.title) - .add(settings::flex_item(&descriptions[scroll_speed], { - let value = input - .input_default - .scroll_config - .as_ref() - .and_then(|x| x.scroll_factor) - .unwrap_or(1.) - .log(2.) - * 10.0 - + 50.0; + .add( + settings::item::builder(&descriptions[scroll_speed]) + .flex_control({ + let value = input + .input_default + .scroll_config + .as_ref() + .and_then(|x| x.scroll_factor) + .unwrap_or(1.) + .log(2.) + * 10.0 + + 50.0; - let slider = widget::slider(1.0..=100.0, value, |value| { - Message::SetScrollFactor(2f64.powf((value - 50.0) / 10.0), false) - }) - .width(Length::Fill) - .breakpoints(&[50.0]) - .apply(widget::container) - .max_width(250); + let slider = widget::slider(1.0..=100.0, value, |value| { + Message::SetScrollFactor(2f64.powf((value - 50.0) / 10.0), false) + }) + .width(Length::Fill) + .breakpoints(&[50.0]) + .apply(widget::container) + .max_width(250); - row::with_capacity(2) - .align_y(Alignment::Center) - .spacing(8) - .push( - text::body(format!("{:.0}", value.round())) - .width(Length::Fixed(22.0)) - .align_x(Alignment::Center), - ) - .push(slider) - })) + row::with_capacity(2) + .align_y(Alignment::Center) + .spacing(8) + .push( + text::body(format!("{:.0}", value.round())) + .width(Length::Fixed(22.0)) + .align_x(Alignment::Center), + ) + .push(slider) + }) + .align_items(Alignment::Center), + ) .add( settings::item::builder(&descriptions[natural]) .description(&descriptions[natural_desc]) diff --git a/cosmic-settings/src/pages/input/touchpad.rs b/cosmic-settings/src/pages/input/touchpad.rs index 3606c5f..ba667ef 100644 --- a/cosmic-settings/src/pages/input/touchpad.rs +++ b/cosmic-settings/src/pages/input/touchpad.rs @@ -10,7 +10,6 @@ use cosmic_comp_config::input::{AccelProfile, ClickMethod, ScrollMethod}; use cosmic_comp_config::workspace::{WorkspaceConfig, WorkspaceLayout}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; -use slab::Slab; use slotmap::SlotMap; use tracing::error; @@ -52,21 +51,21 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("touchpad", "input-touchpad-symbolic") .title(fl!("touchpad")) - .description(fl!("touchpad", "desc")) + .description(fl!("xdg-entry-touchpad-comment")) } } impl page::AutoBind for Page {} fn touchpad() -> Section { - let mut descriptions = Slab::new(); - - let primary_button = descriptions.insert(fl!("primary-button")); - let primary_button_desc = descriptions.insert(fl!("primary-button", "desc")); - let touchpad_speed = descriptions.insert(fl!("touchpad", "speed")); - let acceleration = descriptions.insert(fl!("touchpad", "acceleration")); - let acceleration_desc = descriptions.insert(fl!("acceleration-desc")); - let disable_while_typing = descriptions.insert(fl!("disable-while-typing")); + crate::slab!(descriptions { + primary_button = fl!("primary-button"); + primary_button_desc = fl!("primary-button", "desc"); + touchpad_speed = fl!("touchpad", "speed"); + acceleration = fl!("touchpad", "acceleration"); + acceleration_desc = fl!("acceleration-desc"); + disable_while_typing = fl!("disable-while-typing"); + }); Section::default() .descriptions(descriptions) @@ -148,12 +147,12 @@ fn touchpad() -> Section { } fn click_behavior() -> Section { - let mut descriptions = Slab::new(); - - let click_finger = descriptions.insert(fl!("click-behavior", "click-finger")); - let button_areas = descriptions.insert(fl!("click-behavior", "button-areas")); - let tap_to_click = descriptions.insert(fl!("tap-to-click")); - let _tap_to_click_desc = descriptions.insert(fl!("tap-to-click", "desc")); + crate::slab!(descriptions { + click_finger = fl!("click-behavior", "click-finger"); + button_areas = fl!("click-behavior", "button-areas"); + tap_to_click = fl!("tap-to-click"); + _tap_to_click_desc = fl!("tap-to-click", "desc"); + }); Section::default() .title(fl!("click-behavior")) @@ -167,27 +166,17 @@ fn click_behavior() -> Section { settings::section() .title(&*section.title) // Secondary click via two fingers, and middle-click via three fingers - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[click_finger]), - ClickMethod::Clickfinger, - page.input_touchpad.click_method, - |option| Message::SetSecondaryClickBehavior(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[click_finger]).radio( + ClickMethod::Clickfinger, + page.input_touchpad.click_method, + |option| Message::SetSecondaryClickBehavior(Some(option), true), + )) // Secondary and middle-click via button areas. - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[button_areas]), - ClickMethod::ButtonAreas, - page.input_touchpad.click_method, - |option| Message::SetSecondaryClickBehavior(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + .add(settings::item::builder(&descriptions[button_areas]).radio( + ClickMethod::ButtonAreas, + page.input_touchpad.click_method, + |option| Message::SetSecondaryClickBehavior(Some(option), true), + )) .add( settings::item::builder(&descriptions[tap_to_click]).toggler( page.input_touchpad @@ -203,13 +192,13 @@ fn click_behavior() -> Section { } fn scrolling() -> Section { - let mut descriptions = Slab::new(); - - let edge = descriptions.insert(fl!("scrolling", "edge")); - let natural = descriptions.insert(fl!("scrolling", "natural")); - let natural_desc = descriptions.insert(fl!("scrolling", "natural-desc")); - let scroll_speed = descriptions.insert(fl!("scrolling", "speed")); - let two_finger = descriptions.insert(fl!("scrolling", "two-finger")); + crate::slab!(descriptions { + edge = fl!("scrolling", "edge"); + natural = fl!("scrolling", "natural"); + natural_desc = fl!("scrolling", "natural-desc"); + scroll_speed = fl!("scrolling", "speed"); + two_finger = fl!("scrolling", "two-finger"); + }); Section::default() .title(fl!("scrolling")) @@ -223,33 +212,27 @@ fn scrolling() -> Section { settings::section() .title(§ion.title) // Two-finger scrolling toggle - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[two_finger]), + .add( + settings::item::builder(&descriptions[two_finger]).radio( ScrollMethod::TwoFinger, page.input_touchpad .scroll_config .as_ref() .and_then(|x| x.method), |option| Message::SetScrollMethod(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + ), + ) // Edge scrolling toggle - .add(settings::item_row(vec![ - widget::radio( - text::body(&descriptions[edge]), + .add( + settings::item::builder(&descriptions[edge]).radio( ScrollMethod::Edge, page.input_touchpad .scroll_config .as_ref() .and_then(|x| x.method), |option| Message::SetScrollMethod(Some(option), true), - ) - .width(Length::Fill) - .into(), - ])) + ), + ) // Scroll speed slider .add(settings::item(&descriptions[scroll_speed], { let value = page @@ -298,7 +281,11 @@ fn scrolling() -> Section { } fn gestures() -> Section { - let mut descriptions = Slab::new(); + crate::slab!(descriptions { + switch_workspaces = fl!("switch-workspaces"); + switch_workspaces_horizontal = fl!("switch-workspaces", "horizontal"); + switch_workspaces_vertical = fl!("switch-workspaces", "vertical"); + }); // let four_finger_down = descriptions.insert(fl!("gestures", "four-finger-down")); // let four_finger_left = descriptions.insert(fl!("gestures", "four-finger-left")); @@ -310,10 +297,6 @@ fn gestures() -> Section { // let open_workspaces_view = descriptions.insert(fl!("open-workspaces-view")); // let switch_between_windows = descriptions.insert(fl!("switch-between-windows")); - let switch_workspaces = descriptions.insert(fl!("switch-workspaces")); - let switch_workspaces_horizontal = descriptions.insert(fl!("switch-workspaces", "horizontal")); - let switch_workspaces_vertical = descriptions.insert(fl!("switch-workspaces", "vertical")); - Section::default() .title(fl!("gestures")) .descriptions(descriptions) diff --git a/cosmic-settings/src/pages/mod.rs b/cosmic-settings/src/pages/mod.rs index b453932..3a148af 100644 --- a/cosmic-settings/src/pages/mod.rs +++ b/cosmic-settings/src/pages/mod.rs @@ -103,6 +103,8 @@ pub enum Message { WindowManagement(desktop::window_management::Message), #[cfg(feature = "page-networking")] Wired(networking::wired::Message), + #[cfg(feature = "page-workspaces")] + Workspaces(desktop::workspaces::Message), // Common page functionality CloseContextDrawer, diff --git a/cosmic-settings/src/pages/networking/mod.rs b/cosmic-settings/src/pages/networking/mod.rs index 5b5cfdf..8382e38 100644 --- a/cosmic-settings/src/pages/networking/mod.rs +++ b/cosmic-settings/src/pages/networking/mod.rs @@ -84,9 +84,9 @@ impl page::Page for Page { sections: &mut SlotMap>, ) -> Option { crate::slab!(descriptions { - wifi_desc = fl!("connections-and-profiles", variant = "wifi"); - wired_desc = fl!("connections-and-profiles", variant = "wired"); - vpn_desc = fl!("connections-and-profiles", variant = "vpn"); + wifi_desc = fl!("xdg-entry-wireless-comment"); + wired_desc = fl!("xdg-entry-wired-comment"); + vpn_desc = fl!("xdg-entry-vpn-comment"); }); let device_list = Section::default().descriptions(descriptions).view::( @@ -202,7 +202,7 @@ impl page::Page for Page { let device_list = wifi_devices .chain(wired_devices) - .fold(widget::column(), |column, device| column.push(device)) + .fold(widget::column([]), |column, device| column.push(device)) .push(crate::widget::page_list_item( fl!("vpn"), &descs[vpn_desc], diff --git a/cosmic-settings/src/pages/networking/vpn/mod.rs b/cosmic-settings/src/pages/networking/vpn/mod.rs index 75f446a..651022e 100644 --- a/cosmic-settings/src/pages/networking/vpn/mod.rs +++ b/cosmic-settings/src/pages/networking/vpn/mod.rs @@ -9,12 +9,11 @@ use std::sync::{Arc, LazyLock}; use anyhow::Context; use cosmic::dialog::file_chooser::FileFilter; use cosmic::task; -use cosmic::widget::text_input::focus; use cosmic::{ Apply, Element, Task, + iced::core::text::Wrapping, iced::{Alignment, Length}, - iced_core::text::Wrapping, - widget::{self, icon}, + widget::{self, icon, space::horizontal as horizontal_space, text_input::focus}, }; use cosmic_settings_network_manager_subscription::nm_secret_agent::{self, PasswordFlag}; use cosmic_settings_network_manager_subscription::{ @@ -211,7 +210,7 @@ impl page::Page for Page { fn info(&self) -> cosmic_settings_page::Info { page::Info::new("vpn", "preferences-vpn-symbolic") .title(fl!("vpn")) - .description(fl!("connections-and-profiles", variant = "vpn")) + .description(fl!("xdg-entry-vpn-comment")) } fn content( @@ -841,12 +840,12 @@ impl Page { Message::FocusSecureInput => { // retry until the widget is in the tree and focused or the dialog is removed. if matches!(self.dialog, Some(VpnDialog::Password { .. })) { - return cosmic::iced_runtime::task::widget( - cosmic::iced_core::widget::operation::focusable::find_focused(), + return cosmic::iced::runtime::task::widget( + cosmic::iced::core::widget::operation::focusable::find_focused(), ) .collect() .then(|id| { - if id.get(0).is_some_and(|id| *id == SECURE_INPUT_VPN.clone()) { + if id.first().is_some_and(|id| *id == SECURE_INPUT_VPN.clone()) { Task::none() } else { focus(SECURE_INPUT_VPN.clone()) @@ -991,7 +990,7 @@ fn devices_view() -> Section { ref active_conns, .. }) = page.nm_state else { - return cosmic::widget::column().into(); + return cosmic::widget::space().into(); }; let spacing = cosmic::theme::spacing(); @@ -1051,7 +1050,7 @@ fn devices_view() -> Section { .position(widget::popover::Position::Bottom) .on_close(Message::ViewMore(None)) .popup( - widget::column() + widget::column::with_capacity(3) .push_maybe(is_connected.then(|| { popup_button( Message::Deactivate(uuid.clone()), @@ -1086,7 +1085,7 @@ fn devices_view() -> Section { let widget = widget::settings::item_row(vec![ identifier.into(), - widget::horizontal_space().into(), + horizontal_space().into(), controls.into(), ]); diff --git a/cosmic-settings/src/pages/networking/wifi.rs b/cosmic-settings/src/pages/networking/wifi.rs index 7a8a09a..cc1f43b 100644 --- a/cosmic-settings/src/pages/networking/wifi.rs +++ b/cosmic-settings/src/pages/networking/wifi.rs @@ -10,17 +10,15 @@ use anyhow::Context; use cosmic::{ Apply, Element, Task, app::ContextDrawer, - iced::{Alignment, Length}, - iced_core::text::Wrapping, - iced_widget::focus_next, + iced::core::text::Wrapping, + iced::{Alignment, Length, widget::operation::focus_next}, task, - widget::{self, column, icon, text_input::focus}, + widget::{self, column, icon, space::horizontal, text_input::focus}, }; use cosmic_settings_network_manager_subscription::{ self as network_manager, NetworkManagerState, available_wifi::{AccessPoint, NetworkType}, current_networks::ActiveConnectionInfo, - hw_address::HwAddress, nm_secret_agent, }; use cosmic_settings_page::{self as page, Section, section}; @@ -84,6 +82,8 @@ pub enum Message { ViewMore(Option), /// Toggle WiFi access WiFiEnable(bool), + /// Update search query for filtering networks + SearchQuery(String), } impl From for crate::app::Message { @@ -103,7 +103,6 @@ enum WiFiDialog { Forget(network_manager::SSID), Password { ssid: network_manager::SSID, - hw_address: HwAddress, identity: Option, password: SecureString, password_hidden: bool, @@ -139,6 +138,8 @@ pub struct Page { qr_code_data: Option, /// QR code context drawer state qr_drawer: Option, + /// Search query for filtering WiFi networks + search_query: String, } #[derive(Debug)] @@ -159,7 +160,7 @@ impl page::Page for Page { fn info(&self) -> cosmic_settings_page::Info { page::Info::new("wifi", "preferences-wireless-symbolic") .title(fl!("wifi")) - .description(fl!("connections-and-profiles", variant = "wifi")) + .description(fl!("xdg-entry-wireless-comment")) } fn content( @@ -194,7 +195,7 @@ impl page::Page for Page { widget::button::standard(fl!("cancel")).on_press(Message::CancelDialog); let control: Element<_> = if let Some(identity) = identity { - column::column() + column::with_capacity(2) .spacing(8) .push( widget::text_input::text_input(fl!("identity"), identity) @@ -262,7 +263,7 @@ impl page::Page for Page { info_items = info_items.add(widget::settings::item(fl!("password"), pass.unsecure())); } - let content = column::column() + let content = column::with_capacity(3) .spacing(spacing.space_s) .push(qr_section) .push(description) @@ -322,6 +323,7 @@ impl page::Page for Page { self.connecting.clear(); self.withheld_state = None; self.withheld_devices = None; + self.search_query.clear(); if let Some(cancel) = self.nm_task.take() { _ = cancel.send(()); @@ -353,12 +355,7 @@ impl Page { } match req { - network_manager::Request::Authenticate { - ssid, - identity, - hw_address, - .. - } => { + network_manager::Request::Authenticate { ssid, identity, .. } => { if success { self.connecting.remove(ssid.as_str()); } else { @@ -366,7 +363,6 @@ impl Page { self.dialog = Some(WiFiDialog::Password { ssid: ssid.into(), identity, - hw_address, password: SecureString::from(""), password_hidden: true, tx: Arc::new(Mutex::new(None)), @@ -377,9 +373,9 @@ impl Page { network_manager::Request::SelectAccessPoint( ssid, - hw_address, network_type, _tx, + _interface, ) => { if success || matches!(network_type, NetworkType::Open) { self.connecting.remove(ssid.as_ref()); @@ -388,7 +384,6 @@ impl Page { ssid, identity: matches!(network_type, NetworkType::EAP) .then(String::new), - hw_address, password: SecureString::from(""), password_hidden: true, tx: Arc::new(Mutex::new(None)), @@ -456,7 +451,7 @@ impl Page { let escaped_ssid = escape_wifi_qr_string(ssid.as_ref()); let qr_string = if let Some(ref pass) = password { let security = match security_type { - NetworkType::PSK => "WPA", + NetworkType::PskOrSae => "WPA", NetworkType::EAP => "WPA", NetworkType::Open => "", }; @@ -499,9 +494,9 @@ impl Page { .sender .unbounded_send(network_manager::Request::SelectAccessPoint( ssid, - ap.hw_address, ap.network_type, self.secret_tx.clone(), + self.active_device.as_ref().map(|d| d.interface.clone()), )); } } @@ -528,7 +523,6 @@ impl Page { self.dialog = Some(WiFiDialog::Password { ssid, identity: matches!(ap.network_type, NetworkType::EAP).then(String::new), - hw_address: ap.hw_address, password: SecureString::from(""), password_hidden: true, tx: Arc::new(Mutex::new(None)), @@ -553,7 +547,6 @@ impl Page { ssid, identity, password, - hw_address, tx, .. } = dialog @@ -562,6 +555,7 @@ impl Page { self.connecting.insert(ssid.clone()); let nm_sender = nm.sender.clone(); let secret_tx = self.secret_tx.clone(); + let interface = self.active_device.as_ref().map(|d| d.interface.clone()); return Task::future(async move { let mut guard = tx.lock().await; if let Some(tx) = guard.take() { @@ -570,9 +564,9 @@ impl Page { _ = nm_sender.unbounded_send(network_manager::Request::Authenticate { ssid: ssid.to_string(), identity, - hw_address, password, secret_tx, + interface, }); } }) @@ -674,6 +668,11 @@ impl Page { // TODO: Per-device wifi connection handling. self.active_device = Some(device); } + + Message::SearchQuery(query) => { + self.search_query = query; + } + Message::NetworkManagerConnect(conn) => { return cosmic::task::batch(vec![ self.connect(conn.clone()), @@ -718,7 +717,6 @@ impl Page { ssid, password: previous, password_hidden: true, - hw_address: ap.hw_address, identity: matches!(ap.network_type, NetworkType::EAP).then(String::new), tx, }); @@ -736,7 +734,6 @@ impl Page { ssid, password, identity, - hw_address, .. }) = self.dialog.take() { @@ -746,7 +743,6 @@ impl Page { tx: Arc::new(Mutex::new(None)), ssid, identity, - hw_address, }); return task::message(Message::FocusSecureInput); } @@ -755,12 +751,15 @@ impl Page { Message::FocusSecureInput => { // retry until the widget is in the tree and focused or the dialog is removed. if matches!(self.dialog, Some(WiFiDialog::Password { .. })) { - return cosmic::iced_runtime::task::widget( - cosmic::iced_core::widget::operation::focusable::find_focused(), + return cosmic::iced::runtime::task::widget( + cosmic::iced::core::widget::operation::focusable::find_focused(), ) .collect() .then(|id| { - if id.get(0).is_some_and(|id| *id == SECURE_INPUT_WIFI.clone()) { + if id + .first() + .is_some_and(|id| *id == SECURE_INPUT_WIFI.clone()) + { Task::none() } else { focus(SECURE_INPUT_WIFI.clone()) @@ -867,6 +866,7 @@ fn devices_view() -> Section { forget_txt = fl!("wifi", "forget"); known_networks_txt = fl!("known-networks"); no_networks_txt = fl!("no-networks"); + no_search_results_txt = fl!("no-search-results"); settings_txt = fl!("settings"); share_txt = fl!("share"); visible_networks_txt = fl!("visible-networks"); @@ -877,13 +877,13 @@ fn devices_view() -> Section { .descriptions(descriptions) .view::(move |_binder, page, section| { let Some(NmState { ref state, .. }) = page.nm_state else { - return cosmic::widget::column().into(); + return cosmic::widget::space().into(); }; let spacing = cosmic::theme::spacing(); let wifi_enable = widget::settings::item::builder(§ion.descriptions[wifi_txt]) - .control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable)); + .toggler(state.wifi_enabled, Message::WiFiEnable); let mut view = widget::column::with_capacity(4) .push(widget::list_column().add(wifi_enable)) @@ -907,54 +907,48 @@ fn devices_view() -> Section { view = view.push(no_networks_found); } else { + // Collect known SSIDs for deduplication + let known_ssids: BTreeSet<&str> = state + .known_access_points + .iter() + .map(|ap| ap.ssid.as_ref()) + .chain(state.active_conns.iter().filter_map(|active| { + if let ActiveConnectionInfo::WiFi { name, .. } = active { + Some(name.as_str()) + } else { + None + } + })) + .collect(); + + // Build Known Networks section (always unfiltered) + let mut known_networks = + widget::settings::section().title(§ion.descriptions[known_networks_txt]); let mut has_known = false; - let mut has_visible = false; - // Create separate sections for known and visible networks. - let (known_networks, visible_networks) = state.wireless_access_points.iter().fold( - ( - widget::settings::section() - .title(§ion.descriptions[known_networks_txt]), - widget::settings::section() - .title(§ion.descriptions[visible_networks_txt]), - ), - |(mut known_networks, mut visible_networks), network| { + // Add visible networks that are known + for network in &state.wireless_access_points { + if known_ssids.contains(network.ssid.as_ref()) { + has_known = true; let is_connected = is_connected(state, network); + let is_known = known_ssids.contains(network.ssid.as_ref()); + let needs_password = network.network_type != NetworkType::Open; - let is_known = state - .known_access_points - .iter() - .map(|known| known.ssid.as_ref()) - .chain(state.active_conns.iter().filter_map(|active| { - if let ActiveConnectionInfo::WiFi { name, .. } = active { - Some(name.as_str()) - } else { - None - } - })) - .any(|known| known == network.ssid.as_ref()); - - let is_encrypted = network.network_type != NetworkType::Open; - - let (connect_txt, connect_msg) = if is_connected { + let (connect_label, connect_msg) = if is_connected { (§ion.descriptions[connected_txt], None) } else if page.connecting.contains(&network.ssid) { (§ion.descriptions[connecting_txt], None) } else { ( §ion.descriptions[connect_txt], - Some(if is_known || !is_encrypted { - Message::Connect(network.ssid.clone()) - } else { - Message::PasswordRequest(network.ssid.clone()) - }), + Some(Message::Connect(network.ssid.clone())), ) }; let identifier = widget::row::with_capacity(3) .push(widget::icon::from_name(wifi_icon(network.strength))) .push_maybe( - is_encrypted + needs_password .then(|| widget::icon::from_name("connection-secure-symbolic")), ) .push( @@ -963,9 +957,9 @@ fn devices_view() -> Section { .spacing(spacing.space_xxs); let connect: Element<'_, Message> = if let Some(msg) = connect_msg { - widget::button::text(connect_txt).on_press(msg).into() + widget::button::text(connect_label).on_press(msg).into() } else { - widget::text::body(connect_txt) + widget::text::body(connect_label) .align_y(Alignment::Center) .into() }; @@ -982,7 +976,7 @@ fn devices_view() -> Section { .position(widget::popover::Position::Bottom) .on_close(Message::ViewMore(None)) .popup( - widget::column() + widget::column::with_capacity(4) .push_maybe(is_connected.then(|| { popup_button( Message::Disconnect(network.ssid.clone()), @@ -1011,12 +1005,10 @@ fn devices_view() -> Section { .class(cosmic::theme::Container::Dropdown), ) .apply(|e| Some(Element::from(e))) - } else if is_known { + } else { view_more_button .on_press(Message::ViewMore(Some(network.ssid.clone()))) .apply(|e| Some(Element::from(e))) - } else { - None }; let controls = widget::row::with_capacity(2) @@ -1025,30 +1017,233 @@ fn devices_view() -> Section { .align_y(Alignment::Center) .spacing(spacing.space_xxs); - let widget = widget::settings::item_row(vec![ + let item = widget::settings::item_row(vec![ identifier.into(), - widget::horizontal_space().into(), + horizontal().into(), controls.into(), ]); - if is_known { - has_known = true; - known_networks = known_networks.add(widget); - } else { - has_visible = true; - visible_networks = visible_networks.add(widget); - } + known_networks = known_networks.add(item); + } + } - (known_networks, visible_networks) - }, - ); + // Also add known networks that are not currently visible + for network in &state.known_access_points { + let already_added = state + .wireless_access_points + .iter() + .any(|ap| ap.ssid == network.ssid); + if !already_added { + has_known = true; + let is_connected = is_connected(state, network); + let is_encrypted = network.network_type != NetworkType::Open; + let is_known = known_ssids.contains(network.ssid.as_ref()); + + let (connect_label, connect_msg) = if is_connected { + (§ion.descriptions[connected_txt], None) + } else if page.connecting.contains(&network.ssid) { + (§ion.descriptions[connecting_txt], None) + } else { + ( + §ion.descriptions[connect_txt], + Some(Message::Connect(network.ssid.clone())), + ) + }; + + let identifier = widget::row::with_capacity(3) + .push(widget::icon::from_name(wifi_icon(network.strength))) + .push_maybe( + is_encrypted + .then(|| widget::icon::from_name("connection-secure-symbolic")), + ) + .push( + widget::text::body(network.ssid.as_ref()).wrapping(Wrapping::Glyph), + ) + .spacing(spacing.space_xxs); + + let connect: Element<'_, Message> = if let Some(msg) = connect_msg { + widget::button::text(connect_label).on_press(msg).into() + } else { + widget::text::body(connect_label) + .align_y(Alignment::Center) + .into() + }; + + let view_more_button = + widget::button::icon(widget::icon::from_name("view-more-symbolic")); + + let view_more: Element<_> = if page + .view_more_popup + .as_deref() + .is_some_and(|id| id == network.ssid.as_ref()) + { + widget::popover(view_more_button.on_press(Message::ViewMore(None))) + .position(widget::popover::Position::Bottom) + .on_close(Message::ViewMore(None)) + .popup( + widget::column::with_capacity(4) + .push_maybe(is_connected.then(|| { + popup_button( + Message::Disconnect(network.ssid.clone()), + §ion.descriptions[disconnect_txt], + ) + })) + .push(popup_button( + Message::Settings(network.ssid.clone()), + §ion.descriptions[settings_txt], + )) + .push_maybe(is_known.then(|| { + popup_button( + Message::QRCodeRequest(network.ssid.clone()), + §ion.descriptions[share_txt], + ) + })) + .push_maybe(is_known.then(|| { + popup_button( + Message::ForgetRequest(network.ssid.clone()), + §ion.descriptions[forget_txt], + ) + })) + .width(Length::Fixed(200.0)) + .apply(widget::container) + .padding(cosmic::theme::spacing().space_xxs) + .class(cosmic::theme::Container::Dropdown), + ) + .into() + } else { + view_more_button + .on_press(Message::ViewMore(Some(network.ssid.clone()))) + .into() + }; + + let controls = widget::row::with_capacity(2) + .push(connect) + .push(view_more) + .align_y(Alignment::Center) + .spacing(spacing.space_xxs); + + let item = widget::settings::item_row(vec![ + identifier.into(), + horizontal().into(), + controls.into(), + ]); + + known_networks = known_networks.add(item); + } + } if has_known { view = view.push(known_networks); } - if has_visible { - view = view.push(visible_networks); + // Build Visible Networks section (searchable when 15+ networks, filtered when user types) + let show_search = state.wireless_access_points.len() >= 15; + let search_query_lower = page.search_query.trim().to_lowercase(); + + // Filter visible networks (exclude known networks, apply search filter) + let filtered_visible: Vec<_> = state + .wireless_access_points + .iter() + .filter(|network| !known_ssids.contains(network.ssid.as_ref())) + .filter(|network| { + if show_search && !search_query_lower.is_empty() { + network + .ssid + .as_ref() + .to_lowercase() + .contains(&search_query_lower) + } else { + true + } + }) + .collect(); + + // Check if we have any visible (non-known) networks at all + let has_any_visible = state + .wireless_access_points + .iter() + .any(|network| !known_ssids.contains(network.ssid.as_ref())); + + // Only show visible networks section if there are non-known networks + if has_any_visible { + // Build visible networks section with optional search + let mut visible_section = widget::column::with_capacity(3); + + // Section title + visible_section = visible_section.push(widget::text::title4( + §ion.descriptions[visible_networks_txt], + )); + + // Search input (only shown when 15+ networks) + if show_search { + let search_input = + widget::search_input(fl!("type-to-search"), &page.search_query) + .on_input(Message::SearchQuery) + .on_clear(Message::SearchQuery(String::new())); + visible_section = visible_section.push(search_input); + } + + // Network list or "no results" message + if filtered_visible.is_empty() && show_search && !search_query_lower.is_empty() + { + // Show "no search results" message only when search is active and returns no results + visible_section = visible_section.push( + widget::container(widget::text::body( + §ion.descriptions[no_search_results_txt], + )) + .center_x(Length::Fill), + ); + } else if !filtered_visible.is_empty() { + let mut visible_networks_list = widget::list_column(); + for network in filtered_visible { + let is_encrypted = network.network_type != NetworkType::Open; + + let (connect_label, connect_msg) = + if page.connecting.contains(&network.ssid) { + (§ion.descriptions[connecting_txt], None) + } else { + ( + §ion.descriptions[connect_txt], + Some(if is_encrypted { + Message::PasswordRequest(network.ssid.clone()) + } else { + Message::Connect(network.ssid.clone()) + }), + ) + }; + + let identifier = + widget::row::with_capacity(3) + .push(widget::icon::from_name(wifi_icon(network.strength))) + .push_maybe(is_encrypted.then(|| { + widget::icon::from_name("connection-secure-symbolic") + })) + .push( + widget::text::body(network.ssid.as_ref()) + .wrapping(Wrapping::Glyph), + ) + .spacing(spacing.space_xxs); + + let connect: Element<'_, Message> = if let Some(msg) = connect_msg { + widget::button::text(connect_label).on_press(msg).into() + } else { + widget::text::body(connect_label) + .align_y(Alignment::Center) + .into() + }; + + let item = widget::settings::item_row(vec![ + identifier.into(), + horizontal().into(), + connect, + ]); + + visible_networks_list = visible_networks_list.add(item); + } + visible_section = visible_section.push(visible_networks_list); + } + + view = view.push(visible_section.spacing(spacing.space_xs)); } }; diff --git a/cosmic-settings/src/pages/networking/wired.rs b/cosmic-settings/src/pages/networking/wired.rs index b183a97..18bb8af 100644 --- a/cosmic-settings/src/pages/networking/wired.rs +++ b/cosmic-settings/src/pages/networking/wired.rs @@ -6,9 +6,9 @@ use std::{collections::BTreeSet, sync::Arc}; use anyhow::Context; use cosmic::{ Apply, Element, Task, + iced::core::text::Wrapping, iced::{Alignment, Length}, - iced_core::text::Wrapping, - widget::{self, icon}, + widget::{self, icon, space::horizontal as horizontal_space}, }; use cosmic_dbus_networkmanager::interface::enums::DeviceState; use cosmic_settings_network_manager_subscription::{ @@ -108,7 +108,7 @@ impl page::Page for Page { fn info(&self) -> cosmic_settings_page::Info { page::Info::new("wired", "preferences-wired-symbolic") .title(fl!("wired")) - .description(fl!("connections-and-profiles", variant = "wired")) + .description(fl!("xdg-entry-wired-comment")) } fn content( @@ -512,7 +512,7 @@ impl Page { .position(widget::popover::Position::Bottom) .on_close(Message::ViewMore(None)) .popup( - widget::column() + widget::column::with_capacity(3) .push_maybe(is_connected.then(|| { popup_button( Message::Deactivate(connection.uuid.clone()), @@ -549,7 +549,7 @@ impl Page { let widget = widget::settings::item_row(vec![ identifier.into(), - widget::horizontal_space().into(), + horizontal_space().into(), controls.into(), ]); @@ -575,7 +575,7 @@ fn devices_view() -> Section { .descriptions(descriptions) .view::(move |_binder, page, section| { let Some(ref nm_state) = page.nm_state else { - return cosmic::widget::column().into(); + return cosmic::widget::space().into(); }; let spacing = cosmic::theme::spacing(); diff --git a/cosmic-settings/src/pages/power/backend/mod.rs b/cosmic-settings/src/pages/power/backend/mod.rs index 02b843d..fd9ca73 100644 --- a/cosmic-settings/src/pages/power/backend/mod.rs +++ b/cosmic-settings/src/pages/power/backend/mod.rs @@ -1,5 +1,5 @@ -use chrono::{Duration, TimeDelta}; use futures::{FutureExt, Stream, StreamExt, future::join_all}; +use jiff::{Span, SpanRelativeTo, SpanRound, ToSpan, Unit}; use upower_dbus::{BatteryState, BatteryType, DeviceProxy}; use zbus::{Connection, zvariant::ObjectPath}; @@ -233,7 +233,7 @@ pub struct Battery { pub is_present: bool, pub percent: f64, pub is_charging: bool, - pub remaining_duration: Duration, + pub remaining_duration: Span, } #[derive(Default, Debug, Clone)] @@ -302,7 +302,7 @@ async fn enumerate_devices<'a>() -> Result>, zb impl Battery { pub async fn from_device(proxy: &DeviceProxy<'_>) -> Self { - let mut remaining_duration: Duration = Duration::default(); + let mut remaining_duration = Span::default(); let (is_present, percentage, battery_state) = futures::join!( proxy.is_present().map(Result::unwrap_or_default), @@ -319,15 +319,11 @@ impl Battery { && (percent - 100.0_f64).abs() < f64::EPSILON; if !is_charging { - if let Ok(time) = proxy.time_to_empty().await - && let Ok(dur) = Duration::from_std(std::time::Duration::from_secs(time as u64)) - { - remaining_duration = dur; + if let Ok(time) = proxy.time_to_empty().await { + remaining_duration = time.seconds(); } - } else if let Ok(time) = proxy.time_to_full().await - && let Ok(dur) = Duration::from_std(std::time::Duration::from_secs(time as u64)) - { - remaining_duration = dur; + } else if let Ok(time) = proxy.time_to_full().await { + remaining_duration = time.seconds(); } let battery_percent = if percent > 95.0 { @@ -378,15 +374,22 @@ impl Battery { Battery::default() } pub fn remaining_time(&self) -> String { - if self.remaining_duration <= TimeDelta::zero() { + if !self.remaining_duration.is_positive() { return String::new(); } - let total_seconds = self.remaining_duration.num_seconds(); + let balanced = self + .remaining_duration + .round( + SpanRound::new() + .largest(Unit::Day) + .relative(SpanRelativeTo::days_are_24_hours()), + ) + .unwrap(); - let days = total_seconds / 86400; - let hours = total_seconds % 86400 / 3600; - let minutes = (total_seconds % 3600) / 60; + let days = balanced.get_days(); + let hours = balanced.get_hours(); + let minutes = balanced.get_minutes(); let mut time: Vec = Vec::new(); if days > 0 { @@ -546,7 +549,7 @@ mod tests { for case in cases { let (actual, expected) = case; let battery = Battery { - remaining_duration: Duration::new(actual, 0).unwrap(), + remaining_duration: actual.seconds(), is_charging: false, ..Default::default() }; diff --git a/cosmic-settings/src/pages/power/mod.rs b/cosmic-settings/src/pages/power/mod.rs index a4e5965..b68b135 100644 --- a/cosmic-settings/src/pages/power/mod.rs +++ b/cosmic-settings/src/pages/power/mod.rs @@ -3,12 +3,12 @@ mod backend; use self::backend::{GetCurrentPowerProfile, SetPowerProfile}; use backend::{Battery, ConnectedDevice, PowerProfile}; -use chrono::TimeDelta; -use cosmic::iced::{self, Alignment, Length}; -use cosmic::iced_widget::{column, row}; -use cosmic::widget::{self, radio, settings, text}; +use cosmic::Task; +use cosmic::iced::core::text::{Ellipsize, EllipsizeHeightLimit}; +use cosmic::iced::widget::{column, row}; +use cosmic::iced::{self, Alignment, Length, stream}; +use cosmic::widget::{self, settings, space, text}; use cosmic::{Apply, surface}; -use cosmic::{Task, iced_futures}; use cosmic_config::{Config, CosmicConfigEntry}; use cosmic_idle_config::CosmicIdleConfig; use cosmic_settings_page::{self as page, Section, section}; @@ -16,6 +16,7 @@ use futures::{SinkExt, StreamExt}; use itertools::Itertools; use slab::Slab; use slotmap::SlotMap; +use std::hash::Hash; use std::iter; use std::time::Duration; use upower_dbus::DeviceProxy; @@ -101,7 +102,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("power", "preferences-power-and-battery-symbolic") .title(fl!("power")) - .description(fl!("power", "desc")) + .description(fl!("xdg-entry-power-comment")) } fn content( @@ -143,7 +144,7 @@ impl page::Page for Page { // A subscription for the system battery. let system_battery = iced::Subscription::run(|| { - iced_futures::stream::channel(1, |sender| async move { + stream::channel(1, |sender| async move { if let Ok(proxy) = backend::get_device_proxy().await { receive_battery_changes(proxy, String::new(), sender, |_, b| { Message::UpdateBattery(b) @@ -154,24 +155,50 @@ impl page::Page for Page { }); // Subscriptions for all connected device batteries. - let device_batteries = self - .connected_devices - .iter() - .filter_map(|device| { - device - .proxy - .clone() - .map(|p| (device.device_path.clone(), p)) - }) - .map(|(path, proxy)| { - iced::Subscription::run_with_id( - path.clone(), - iced_futures::stream::channel(1, |sender| async move { - receive_battery_changes(proxy, path, sender, Message::UpdateDeviceBattery) - .await - }), - ) - }); + let device_batteries = + self.connected_devices + .iter() + .filter_map(|device| { + device + .proxy + .clone() + .map(|p| (device.device_path.clone(), p)) + }) + .map(|(path, proxy)| { + #[derive(Clone)] + struct DeviceBatterySubscriptionData { + proxy: DeviceProxy<'static>, + path: String, + } + + impl Hash for DeviceBatterySubscriptionData { + fn hash(&self, state: &mut H) { + self.path.hash(state); + } + } + + iced::Subscription::run_with( + DeviceBatterySubscriptionData { proxy, path }, + |DeviceBatterySubscriptionData { proxy, path }| { + let path = path.clone(); + let proxy = proxy.clone(); + stream::channel( + 1, + move |sender: futures::channel::mpsc::Sender< + crate::pages::Message, + >| async move { + receive_battery_changes( + proxy, + path, + sender, + Message::UpdateDeviceBattery, + ) + .await + }, + ) + }, + ) + }); iced::Subscription::batch(std::iter::once(system_battery).chain(device_batteries)) } @@ -200,47 +227,56 @@ impl page::Page for Page { } }), cosmic::Task::run( - iced_futures::stream::channel(1, |mut emitter| async move { - let span = tracing::span!(tracing::Level::INFO, "power::device_stream task"); - let _span_handle = span.enter(); + stream::channel( + 1, + |mut emitter: futures::channel::mpsc::Sender| async move { + let span = + tracing::span!(tracing::Level::INFO, "power::device_stream task"); + let _span_handle = span.enter(); - let Ok(connection) = zbus::Connection::system().await else { - tracing::error!("could not established zbus connection to system"); - return; - }; + let Ok(connection) = zbus::Connection::system().await else { + tracing::error!("could not established zbus connection to system"); + return; + }; - let added_stream = ConnectedDevice::device_added_stream(&connection).await; - let removed_stream = ConnectedDevice::device_removed_stream(&connection).await; + let added_stream = ConnectedDevice::device_added_stream(&connection).await; + let removed_stream = + ConnectedDevice::device_removed_stream(&connection).await; - let mut sender = emitter.clone(); - let added_future = std::pin::pin!(async { - match added_stream { - Ok(stream) => { - let mut stream = std::pin::pin!(stream); - while let Some(device) = stream.next().await { - tracing::debug!(device = device.model, "device added"); - _ = sender.send(Message::DeviceConnect(device)).await; + let mut sender = emitter.clone(); + let added_future = std::pin::pin!(async { + match added_stream { + Ok(stream) => { + let mut stream = std::pin::pin!(stream); + while let Some(device) = stream.next().await { + tracing::debug!(device = device.model, "device added"); + _ = sender.send(Message::DeviceConnect(device)).await; + } + } + Err(err) => tracing::error!(?err, "cannot establish added stream"), + } + }); + + let removed_future = std::pin::pin!(async { + match removed_stream { + Ok(stream) => { + let mut stream = std::pin::pin!(stream); + while let Some(device_path) = stream.next().await { + tracing::debug!(device_path, "device removed"); + _ = emitter + .send(Message::DeviceDisconnect(device_path)) + .await; + } + } + Err(err) => { + tracing::error!(?err, "cannot establish removed stream") } } - Err(err) => tracing::error!(?err, "cannot establish added stream"), - } - }); + }); - let removed_future = std::pin::pin!(async { - match removed_stream { - Ok(stream) => { - let mut stream = std::pin::pin!(stream); - while let Some(device_path) = stream.next().await { - tracing::debug!(device_path, "device removed"); - _ = emitter.send(Message::DeviceDisconnect(device_path)).await; - } - } - Err(err) => tracing::error!(?err, "cannot establish removed stream"), - } - }); - - futures::future::select(added_future, removed_future).await; - }), + futures::future::select(added_future, removed_future).await; + }, + ), |msg| msg, ), ]; @@ -423,7 +459,7 @@ fn connected_devices() -> Section { widget::icon::from_name(connected_device.battery.icon_name.clone()); let battery_percent_and_time = widget::text( - if connected_device.battery.remaining_duration > TimeDelta::zero() { + if connected_device.battery.remaining_duration.is_positive() { format!( "{}% - {}", connected_device.battery.percent, @@ -437,7 +473,10 @@ fn connected_devices() -> Section { row!( widget::icon::from_name(connected_device.device_icon).size(48), column!( - text::heading(&connected_device.model).height(20.0), + text::heading(&connected_device.model) + .ellipsize(Ellipsize::End(EllipsizeHeightLimit::Lines(1))) + .height(20.0) + .width(Length::Fill), row!(battery_icon, battery_percent_and_time) .spacing(4) .align_y(Alignment::Center), @@ -450,7 +489,7 @@ fn connected_devices() -> Section { .width(Length::Fill) .height(Length::Fill), ) - .height(64) + .height(64.) .class(cosmic::theme::Container::List) .into() }) @@ -460,7 +499,7 @@ fn connected_devices() -> Section { .spacing(8) .push(text::heading(§ion.title)) .push( - widget::column() + widget::column::with_capacity(devices.len()) .extend( devices .into_iter() @@ -469,16 +508,8 @@ fn connected_devices() -> Section { .map(|mut device_row| { cosmic::Element::from( row!( - device_row.next().unwrap_or( - widget::horizontal_space() - .width(Length::Fill) - .into() - ), - device_row.next().unwrap_or( - widget::horizontal_space() - .width(Length::Fill) - .into() - ), + device_row.next().unwrap_or(space::horizontal().into()), + device_row.next().unwrap_or(space::horizontal().into()), ) .spacing(8), ) @@ -491,9 +522,9 @@ fn connected_devices() -> Section { } fn profiles() -> Section { - let mut descriptions = Slab::new(); - - let _power_desc = descriptions.insert(fl!("power", "desc")); + crate::slab!(descriptions { + _power_desc = fl!("xdg-entry-power-comment"); + }); Section::default() .title(fl!("power-mode")) @@ -508,18 +539,9 @@ fn profiles() -> Section { section = profiles .into_iter() .map(|profile| { - settings::item_row(vec![ - radio( - widget::column::with_capacity(2) - .push(text::body(profile.title())) - .push(text::caption(profile.description())), - profile, - Some(current_profile), - Message::PowerProfileChange, - ) - .width(Length::Fill) - .into(), - ]) + settings::item::builder(profile.title()) + .description(profile.description()) + .radio(profile, Some(current_profile), Message::PowerProfileChange) }) .fold(section, settings::Section::add); } diff --git a/cosmic-settings/src/pages/sound/mod.rs b/cosmic-settings/src/pages/sound/mod.rs index 2b5cf44..a2a7699 100644 --- a/cosmic-settings/src/pages/sound/mod.rs +++ b/cosmic-settings/src/pages/sound/mod.rs @@ -7,12 +7,11 @@ use cosmic::{ Apply, Element, Task, iced::{Alignment, Length, window}, surface, - widget::{self, settings}, + widget::{self, settings, space::horizontal as horizontal_space}, }; use cosmic_config::{Config, ConfigGet, ConfigSet}; use cosmic_settings_page::{self as page, Section, section}; use cosmic_settings_sound_subscription as subscription; -use slab::Slab; use slotmap::SlotMap; const AUDIO_CONFIG: &str = "com.system76.CosmicAudio"; @@ -125,7 +124,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("sound", "preferences-sound-symbolic") .title(fl!("sound")) - .description(fl!("sound", "desc")) + .description(fl!("xdg-entry-sound-comment")) } fn set_id(&mut self, entity: page::Entity) { @@ -251,20 +250,20 @@ impl Page { } fn input() -> Section { - let mut descriptions = Slab::new(); - - let volume = descriptions.insert(fl!("sound-input", "volume")); - let device = descriptions.insert(fl!("sound-input", "device")); - let _level = descriptions.insert(fl!("sound-input", "level")); - let amplification = descriptions.insert(fl!("amplification")); - let amplification_desc = descriptions.insert(fl!("amplification", "desc")); + crate::slab!(descriptions { + volume = fl!("sound-input", "volume"); + device = fl!("sound-input", "device"); + _level = fl!("sound-input", "level"); + amplification = fl!("amplification"); + amplification_desc = fl!("amplification", "desc"); + }); Section::default() .title(fl!("sound-input")) .descriptions(descriptions) .view::(move |_binder, page, section| { if page.model.sources().is_empty() { - return widget::row().into(); + return widget::space().into(); } let slider = if page.amplification_source { @@ -276,7 +275,10 @@ fn input() -> Section { widget::slider(0..=100, page.model.source_volume, |change| { Message::SetSourceVolume(change).into() }) - }; + } + .width(Length::Fill) + .apply(widget::container) + .max_width(250.); let volume_control = widget::row::with_capacity(4) .align_y(Alignment::Center) @@ -293,7 +295,7 @@ fn input() -> Section { .width(Length::Fixed(22.0)) .align_x(Alignment::Center), ) - .push(widget::horizontal_space().width(8)) + .push(horizontal_space().width(8.)) .push(slider); let devices = widget::dropdown::popup_dropdown( page.model.sources(), @@ -308,19 +310,19 @@ fn input() -> Section { let mut controls = settings::section() .title(§ion.title) - .add(settings::flex_item( - &*section.descriptions[volume], - volume_control, - )) + .add( + settings::item::builder(&*section.descriptions[volume]) + .flex_control(volume_control) + .align_items(Alignment::Center), + ) .add(settings::item(&*section.descriptions[device], devices)); controls = controls.add( settings::item::builder(&*section.descriptions[amplification]) .description(&*section.descriptions[amplification_desc]) - .control( - widget::toggler(page.amplification_source) - .on_toggle(|t| Message::ToggleOverAmplificationSource(t).into()), - ), + .toggler(page.amplification_source, |t| { + Message::ToggleOverAmplificationSource(t).into() + }), ); Element::from(controls) @@ -328,17 +330,16 @@ fn input() -> Section { } fn output() -> Section { - let mut descriptions = Slab::new(); - - let volume = descriptions.insert(fl!("sound-output", "volume")); - let device = descriptions.insert(fl!("sound-output", "device")); - let _level = descriptions.insert(fl!("sound-output", "level")); - let balance = descriptions.insert(fl!("sound-output", "balance")); - let left = descriptions.insert(fl!("sound-output", "left")); - let right = descriptions.insert(fl!("sound-output", "right")); - // let balance = descriptions.insert(fl!("sound-output", "balance")); - let amplification = descriptions.insert(fl!("amplification")); - let amplification_desc = descriptions.insert(fl!("amplification", "desc")); + crate::slab!(descriptions { + volume = fl!("sound-output", "volume"); + device = fl!("sound-output", "device"); + _level = fl!("sound-output", "level"); + balance = fl!("sound-output", "balance"); + left = fl!("sound-output", "left"); + right = fl!("sound-output", "right"); + amplification = fl!("amplification"); + amplification_desc = fl!("amplification", "desc"); + }); Section::default() .title(fl!("sound-output")) @@ -353,7 +354,10 @@ fn output() -> Section { widget::slider(0..=100, page.model.sink_volume, |change| { Message::SetSinkVolume(change).into() }) - }; + } + .width(Length::Fill) + .apply(widget::container) + .max_width(250.); let volume_control = widget::row::with_capacity(4) .align_y(Alignment::Center) @@ -370,7 +374,7 @@ fn output() -> Section { .width(Length::Fixed(22.0)) .align_x(Alignment::Center), ) - .push(widget::horizontal_space().width(8)) + .push(horizontal_space().width(8.)) .push(slider); let devices = widget::dropdown::popup_dropdown( @@ -386,21 +390,26 @@ fn output() -> Section { let mut controls = settings::section() .title(§ion.title) - .add(settings::flex_item( - &*section.descriptions[volume], - volume_control, - )) + .add( + settings::item::builder(&*section.descriptions[volume]) + .flex_control(volume_control) + .align_items(Alignment::Center), + ) .add(settings::item(&*section.descriptions[device], devices)) .add(settings::item( &*section.descriptions[balance], - widget::row::with_capacity(4) + widget::row::with_capacity(5) .align_y(Alignment::Center) .push( - widget::text::body(&*section.descriptions[left]) - .width(Length::Fixed(22.0)) - .align_x(Alignment::Center), + widget::column::with_capacity(2) + .align_x(Alignment::Center) + .push( + widget::text::body(&*section.descriptions[left]) + .align_x(Alignment::Center), + ) + .push(horizontal_space().width(22.)), ) - .push(widget::horizontal_space().width(8)) + .push(horizontal_space().width(8.)) .push( widget::slider( 0..=200, @@ -410,21 +419,24 @@ fn output() -> Section { ) .breakpoints(&[100]), ) - .push(widget::horizontal_space().width(8)) + .push(horizontal_space().width(8.)) .push( - widget::text::body(&*section.descriptions[right]) - .width(Length::Fixed(22.0)) - .align_x(Alignment::Center), + widget::column::with_capacity(2) + .align_x(Alignment::Center) + .push( + widget::text::body(&*section.descriptions[right]) + .align_x(Alignment::Center), + ) + .push(horizontal_space().width(22.0)), ), )); controls = controls.add( settings::item::builder(&*section.descriptions[amplification]) .description(&*section.descriptions[amplification_desc]) - .control( - widget::toggler(page.amplification_sink) - .on_toggle(|t| Message::ToggleOverAmplificationSink(t).into()), - ), + .toggler(page.amplification_sink, |t| { + Message::ToggleOverAmplificationSink(t).into() + }), ); Element::from(controls) @@ -442,7 +454,7 @@ fn device_profiles() -> Section { .view::(move |_binder, page, section| { let descriptions = §ion.descriptions; let button = widget::row::with_children(vec![ - widget::horizontal_space().into(), + horizontal_space().into(), widget::icon::from_name("go-next-symbolic").size(16).into(), ]); @@ -450,10 +462,13 @@ fn device_profiles() -> Section { .control(button) .spacing(16) .apply(widget::container) + .width(Length::Fill) .class(cosmic::theme::Container::List) .apply(widget::button::custom) + .width(Length::Fill) .class(cosmic::theme::Button::Transparent) - .on_press(crate::pages::Message::Page(page.device_profiles)); + .on_press(crate::pages::Message::Page(page.device_profiles)) + .width(Length::Fill); settings::section().add(device_profiles).into() }) diff --git a/cosmic-settings/src/pages/system/about.rs b/cosmic-settings/src/pages/system/about.rs index 7972a28..0ee99d0 100644 --- a/cosmic-settings/src/pages/system/about.rs +++ b/cosmic-settings/src/pages/system/about.rs @@ -1,12 +1,12 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only +use cosmic::iced::Alignment; use cosmic_settings_page::{self as page, Section, section}; use super::info::Info; use cosmic::widget::{editable_input, list_column, settings, text}; use cosmic::{Apply, Task}; -use slab::Slab; use slotmap::SlotMap; #[derive(Clone, Debug)] @@ -61,7 +61,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("about", "help-about-symbolic") .title(fl!("about")) - .description(fl!("about", "desc")) + .description(fl!("xdg-entry-about-comment")) } fn on_enter(&mut self) -> Task { @@ -162,10 +162,10 @@ async fn set_hostname_impl(hostname: &str) -> Result<(), String> { } fn device() -> Section { - let mut descriptions = Slab::new(); - - let device = descriptions.insert(fl!("about-device")); - let device_desc = descriptions.insert(fl!("about-device", "desc")); + crate::slab!(descriptions { + device = fl!("about-device"); + device_desc = fl!("about-device", "desc"); + }); Section::default() .descriptions(descriptions) @@ -178,7 +178,7 @@ fn device() -> Section { page.editing_device_name, Message::HostnameEdit, ) - .width(250) + .width(250.) .on_input(Message::HostnameInput) .on_unfocus(Message::HostnameSubmit) .on_submit(|_| Message::HostnameSubmit); @@ -195,13 +195,13 @@ fn device() -> Section { } fn hardware() -> Section { - let mut descriptions = Slab::new(); - - let model = descriptions.insert(fl!("about-hardware", "model")); - let memory = descriptions.insert(fl!("about-hardware", "memory")); - let processor = descriptions.insert(fl!("about-hardware", "processor")); - let graphics = descriptions.insert(fl!("about-hardware", "graphics")); - let disk_capacity = descriptions.insert(fl!("about-hardware", "disk-capacity")); + crate::slab!(descriptions { + model = fl!("about-hardware", "model"); + memory = fl!("about-hardware", "memory"); + processor = fl!("about-hardware", "processor"); + graphics = fl!("about-hardware", "graphics"); + disk_capacity = fl!("about-hardware", "disk-capacity"); + }); Section::default() .title(fl!("about-hardware")) @@ -211,43 +211,46 @@ fn hardware() -> Section { let mut section_builder = settings::section() .title(§ion.title) - .add(settings::flex_item( - &*desc[model], - text::body(&page.info.hardware_model), - )) - .add(settings::flex_item( - &*desc[memory], - text::body(&page.info.memory), - )) - .add(settings::flex_item( - &*desc[processor], - text::body(&page.info.processor), - )); + .add( + settings::flex_item(&*desc[model], text::body(&page.info.hardware_model)) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item(&*desc[memory], text::body(&page.info.memory)) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item(&*desc[processor], text::body(&page.info.processor)) + .align_items(Alignment::Center), + ); for card in &page.info.graphics { - section_builder = section_builder.add(settings::flex_item( - &*desc[graphics], - text::body(card.as_str()), - )); + section_builder = section_builder.add( + settings::flex_item(&*desc[graphics], text::body(card.as_str())) + .align_items(Alignment::Center), + ); } section_builder - .add(settings::flex_item( - &*desc[disk_capacity], - text::body(&page.info.disk_capacity), - )) + .add( + settings::flex_item( + &*desc[disk_capacity], + text::body(&page.info.disk_capacity), + ) + .align_items(Alignment::Center), + ) .into() }) } fn os() -> Section { - let mut descriptions = Slab::new(); - - let os = descriptions.insert(fl!("about-os", "os")); - let os_arch = descriptions.insert(fl!("about-os", "os-architecture")); - let kernel = descriptions.insert(fl!("about-os", "kernel")); - let desktop = descriptions.insert(fl!("about-os", "desktop-environment")); - let windowing_system = descriptions.insert(fl!("about-os", "windowing-system")); + crate::slab!(descriptions { + os = fl!("about-os", "os"); + os_arch = fl!("about-os", "os-architecture"); + kernel = fl!("about-os", "kernel"); + desktop = fl!("about-os", "desktop-environment"); + windowing_system = fl!("about-os", "windowing-system"); + }); Section::default() .title(fl!("about-os")) @@ -256,26 +259,32 @@ fn os() -> Section { let desc = §ion.descriptions; settings::section() .title(§ion.title) - .add(settings::flex_item( - &*desc[os], - text::body(&page.info.operating_system), - )) - .add(settings::flex_item( - &*desc[os_arch], - text::body(&page.info.os_architecture), - )) - .add(settings::flex_item( - &*desc[kernel], - text::body(&page.info.kernel_version), - )) - .add(settings::flex_item( - &*desc[desktop], - text::body(&page.info.desktop_environment), - )) - .add(settings::flex_item( - &*desc[windowing_system], - text::body(&page.info.windowing_system), - )) + .add( + settings::flex_item(&*desc[os], text::body(&page.info.operating_system)) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item(&*desc[os_arch], text::body(&page.info.os_architecture)) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item(&*desc[kernel], text::body(&page.info.kernel_version)) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item( + &*desc[desktop], + text::body(&page.info.desktop_environment), + ) + .align_items(Alignment::Center), + ) + .add( + settings::flex_item( + &*desc[windowing_system], + text::body(&page.info.windowing_system), + ) + .align_items(Alignment::Center), + ) .into() }) } diff --git a/cosmic-settings/src/pages/system/info.rs b/cosmic-settings/src/pages/system/info.rs index a1158ff..2ea3ac5 100644 --- a/cosmic-settings/src/pages/system/info.rs +++ b/cosmic-settings/src/pages/system/info.rs @@ -1,7 +1,8 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only -use cosmic::iced_wgpu::wgpu; +#[cfg(feature = "wgpu")] +use cosmic::iced::wgpu; use std::{collections::HashMap, collections::HashSet, ffi::OsStr, process::Command}; #[must_use] @@ -21,55 +22,15 @@ pub struct Info { } impl Info { - pub fn load() -> Info { - let mut info = Info { - os_architecture: architecture(), - kernel_version: kernel_version(), - hardware_model: hardware_model(), - operating_system: operating_system(), - processor: processor_name(), - ..Default::default() - }; + /// OpenGL backend reports GPU names with renderer suffixes like "/PCIe/SSE2". + /// We strip these to match against Vulkan backend's clean name. + fn normalize_gpu_name(name: &str) -> String { + name.split('/').next().unwrap_or(name).trim().to_string() + } - let mut sys = sysinfo::System::new(); - let disks = sysinfo::Disks::new_with_refreshed_list(); - sys.refresh_memory(); - - let mut total_capacity = 0; - let mut disk_set = HashSet::new(); - for disk in disks.list() { - if disk_set.contains(disk.name()) { - continue; - } - disk_set.insert(disk.name()); - total_capacity += disk.total_space(); - } - - info.disk_capacity = format_size(total_capacity); - - if let Some(name) = sysinfo::System::host_name() { - info.device_name = name; - } - - info.memory = format_size(sys.total_memory()); - - if let Ok(mut session) = std::env::var("XDG_SESSION_TYPE") { - if let Some(first) = session.get_mut(0..1) { - first.make_ascii_uppercase(); - } - info.windowing_system = session; - } - - // prefer XDG_SESSION_DESKTOP because the value is singular - if let Ok(mut session) = std::env::var("XDG_SESSION_DESKTOP") - .or_else(|_| std::env::var("XDG_CURRENT_DESKTOP")) - .or_else(|_| std::env::var("DESKTOP_SESSION")) - { - if let Some(first) = session.get_mut(0..1) { - first.make_ascii_uppercase(); - } - info.desktop_environment = session; - } + #[cfg(feature = "wgpu")] + fn wgpu_graphics() -> Vec { + let mut graphics = Vec::new(); // Use wgpu to enumerate GPUs. Works cross-platform and doesn't require external tools let instance = wgpu::Instance::default(); @@ -149,15 +110,17 @@ impl Info { continue; } - if adapter_info.device == 0 && seen_names.contains(&gpu_name) { + let normalized_gpu_name = Self::normalize_gpu_name(&gpu_name); + + if adapter_info.device == 0 && seen_names.contains(&normalized_gpu_name) { continue; } if adapter_info.device != 0 { seen_devices.insert(device_key); } - seen_names.insert(gpu_name.clone()); - info.graphics.push(gpu_name); + seen_names.insert(normalized_gpu_name); + graphics.push(gpu_name); } // NVIDIA Optimus quirk: On laptops with NVIDIA Optimus (switchable graphics), @@ -170,10 +133,68 @@ impl Info { let device_key = (vendor, device); if !seen_devices.contains(&device_key) { seen_devices.insert(device_key); - info.graphics.push(name); + graphics.push(name); } } + graphics + } + + pub fn load() -> Info { + let mut info = Info { + os_architecture: architecture(), + kernel_version: kernel_version(), + hardware_model: hardware_model(), + operating_system: operating_system(), + processor: processor_name(), + ..Default::default() + }; + + let mut sys = sysinfo::System::new(); + let disks = sysinfo::Disks::new_with_refreshed_list(); + sys.refresh_memory(); + + let mut total_capacity = 0; + let mut disk_set = HashSet::new(); + for disk in disks.list() { + if disk_set.contains(disk.name()) { + continue; + } + disk_set.insert(disk.name()); + total_capacity += disk.total_space(); + } + + info.disk_capacity = format_size(total_capacity); + + if let Some(name) = sysinfo::System::host_name() { + info.device_name = name; + } + + info.memory = format_size(sys.total_memory()); + + if let Ok(mut session) = std::env::var("XDG_SESSION_TYPE") { + if let Some(first) = session.get_mut(0..1) { + first.make_ascii_uppercase(); + } + info.windowing_system = session; + } + + // prefer XDG_SESSION_DESKTOP because the value is singular + if let Ok(mut session) = std::env::var("XDG_SESSION_DESKTOP") + .or_else(|_| std::env::var("XDG_CURRENT_DESKTOP")) + .or_else(|_| std::env::var("DESKTOP_SESSION")) + { + if let Some(first) = session.get_mut(0..1) { + first.make_ascii_uppercase(); + } + info.desktop_environment = session; + } + + #[cfg(feature = "wgpu")] + { + info.graphics = Self::wgpu_graphics(); + } + info } } diff --git a/cosmic-settings/src/pages/system/users/mod.rs b/cosmic-settings/src/pages/system/users/mod.rs index f2c07e0..5d23597 100644 --- a/cosmic-settings/src/pages/system/users/mod.rs +++ b/cosmic-settings/src/pages/system/users/mod.rs @@ -8,13 +8,12 @@ use cosmic::{ Apply, Element, dialog::file_chooser, iced::{Alignment, Length}, - widget::{self, Space, column, icon, row, settings, text}, + widget::{self, column, icon, list, row, settings, space::horizontal, text}, }; use cosmic_settings_page::{self as page, Section, section}; use image::GenericImageView; use pwhash::{bcrypt, md5_crypt, sha256_crypt, sha512_crypt}; use regex::Regex; -use slab::Slab; use slotmap::SlotMap; use std::{ collections::HashMap, @@ -200,7 +199,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("users", "system-users-symbolic") .title(fl!("users")) - .description(fl!("users", "desc")) + .description(fl!("xdg-entry-users-comment")) } fn dialog(&self) -> Option> { @@ -323,7 +322,7 @@ impl page::Page for Page { ))) .width(Length::Fill), ) - .push(Space::new(5, 0)) + .push(horizontal().width(5.)) .push(admin_toggler) .align_y(Alignment::Center), ), @@ -777,25 +776,22 @@ impl Page { impl page::AutoBind for Page {} fn user_list() -> Section { - let mut descriptions = Slab::new(); - - let user_type_standard = descriptions.insert(fl!("users", "standard")); - let user_type_admin = descriptions.insert(fl!("users", "admin")); + crate::slab!(descriptions { + user_type_standard = fl!("users", "standard"); + user_type_admin = fl!("users", "admin"); + }); Section::default() .descriptions(descriptions) .view::(move |_binder, page, section| { let descriptions = §ion.descriptions; - - let cosmic::cosmic_theme::Spacing { - space_xxs, space_m, .. - } = cosmic::theme::active().cosmic().spacing; + let space_xxs = cosmic::theme::spacing().space_xxs; let users_list = page .users .iter() .enumerate() - .flat_map(|(idx, user)| { + .map(|(idx, user)| { let expanded = matches!(page.selected_user_idx, Some(user_idx) if user_idx == idx); @@ -833,37 +829,6 @@ fn user_list() -> Section { &descriptions[user_type_standard] }); - let expanded_details = expanded.then(|| { - let mut details_list = widget::list_column() - .add(settings::item(&page.fullname_label, fullname)) - .add(settings::item(&page.username_label, username)) - .add(settings::item(&page.password_label, password)) - .add(settings::item_row(vec![ - column::with_capacity(2) - .push(text::body(crate::fl!("administrator"))) - .push(text::caption(crate::fl!("administrator", "desc"))) - .width(Length::Fill) - .into(), - Space::new(5, 0).into(), - widget::toggler(user.is_admin) - .on_toggle(|enabled| { - Message::SelectedUserSetAdmin(user.id, enabled) - }) - .into(), - ])); - - if page.users.len() > 1 { - details_list = details_list.add(settings::item_row(vec![ - widget::horizontal_space().width(Length::Fill).into(), - widget::button::destructive(crate::fl!("remove-user")) - .on_press(Message::SelectedUserDelete(user.id)) - .into(), - ])); - } - - details_list.apply(Element::from) - }); - let profile_icon_handle = user .profile_icon .clone() @@ -885,8 +850,8 @@ fn user_list() -> Section { ) .align_y(Alignment::Center) .spacing(space_xxs) + .width(Length::Fill) .into(), - widget::horizontal_space().width(Length::Fill).into(), icon::from_name(if expanded { "go-up-symbolic" } else { @@ -897,27 +862,49 @@ fn user_list() -> Section { .into(), ]); - let account_details = Some( - widget::button::custom(account_details_content) - .padding([space_xxs, space_m]) - .on_press(Message::SelectUser(idx)) - .class(cosmic::theme::Button::ListItem) + let mut user_list = widget::list_column().add( + list::button(account_details_content) .selected(expanded) - .apply(Element::from), + .on_press(Message::SelectUser(idx)), ); - vec![account_details, expanded_details] + if expanded { + user_list = user_list + .add(settings::item(&page.fullname_label, fullname)) + .add(settings::item(&page.username_label, username)) + .add(settings::item(&page.password_label, password)) + .add(settings::item_row(vec![ + column::with_capacity(2) + .push(text::body(crate::fl!("administrator"))) + .push(text::caption(crate::fl!("administrator", "desc"))) + .width(Length::Fill) + .into(), + horizontal().width(5.).into(), + widget::toggler(user.is_admin) + .on_toggle(|enabled| { + Message::SelectedUserSetAdmin(user.id, enabled) + }) + .into(), + ])); + + if page.users.len() > 1 { + user_list = user_list.add(settings::item_row(vec![ + horizontal().width(Length::Fill).into(), + widget::button::destructive(crate::fl!("remove-user")) + .on_press(Message::SelectedUserDelete(user.id)) + .into(), + ])); + } + } + + Element::from(user_list) }) - .flatten() .fold( - widget::list_column() - .spacing(0) - .padding([8, 0]) - .divider_padding(0) - .list_item_padding(0), - widget::ListColumn::add, + widget::column::with_capacity(page.users.len()), + |col, user| col.push(user), ) - .apply(|list| Element::from(settings::section::with_column(list))); + .spacing(space_xxs) + .width(Length::Fill); let add_user = widget::button::standard(crate::fl!("add-user")) .on_press(Message::Dialog(Some(Dialog::AddNewUser(User::default())))) @@ -928,7 +915,7 @@ fn user_list() -> Section { widget::column::with_capacity(2) .push(users_list) .push(add_user) - .spacing(space_m) + .spacing(space_xxs) .apply(Element::from) .map(crate::pages::Message::User) }) diff --git a/cosmic-settings/src/pages/time/date.rs b/cosmic-settings/src/pages/time/date.rs index 62bc470..16cc382 100644 --- a/cosmic-settings/src/pages/time/date.rs +++ b/cosmic-settings/src/pages/time/date.rs @@ -1,14 +1,14 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only -use chrono::{Datelike, Timelike}; +use crate::widget::selection_context_item; use cosmic::{ Apply, Element, Task, app::ContextDrawer, cosmic_config::{self, ConfigGet, ConfigSet}, - iced_core::text::Wrapping, + iced::core::text::Wrapping, surface, - widget::{self, dropdown, settings}, + widget::{self, dropdown, list, settings}, }; use cosmic_settings_page::{self as page, Section, section}; use icu::{ @@ -20,9 +20,7 @@ use icu::{ }, locale::{Locale, preferences::extensions::unicode::keywords::HourCycle}, }; -use slab::Slab; use slotmap::{Key, SlotMap}; -use std::rc::Rc; pub use timedate_zbus::TimeDateProxy; use tracing::error; @@ -139,7 +137,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("time-date", "preferences-system-time-symbolic") .title(fl!("time-date")) - .description(fl!("time-date", "desc")) + .description(fl!("xdg-entry-date-time-comment")) } fn on_enter(&mut self) -> Task { @@ -337,7 +335,11 @@ impl Page { for (id, timezone) in self.timezone_list.iter().enumerate() { if search_input.is_empty() || timezone.to_lowercase().contains(search_input) { - list = list.add(self.timezone_context_item(id, timezone)); + list = list.add(selection_context_item( + timezone, + Some(id) == self.timezone, + Message::Timezone(id), + )); } } @@ -345,40 +347,6 @@ impl Page { .map(crate::pages::Message::DateAndTime) } - fn timezone_context_item<'a>(&self, id: usize, timezone: &'a str) -> Element<'a, Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - let selected = Some(id) == self.timezone; - - widget::settings::item_row(vec![ - widget::text::body(timezone) - .class(if selected { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(cosmic::iced::Length::Fill) - .into(), - if selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() - } else { - widget::horizontal_space().width(16).into() - }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(Message::Timezone(id)) - .into() - } - fn update_local_time(&mut self) { self.local_time = Some(update_local_time()); @@ -408,9 +376,9 @@ pub enum Message { impl page::AutoBind for Page {} fn date() -> Section { - let mut descriptions = Slab::new(); - - let title = descriptions.insert(fl!("time-date")); + crate::slab!(descriptions { + title = fl!("time-date"); + }); Section::default() .title(fl!("time-date")) @@ -429,12 +397,12 @@ fn date() -> Section { } fn format() -> Section { - let mut descriptions = Slab::new(); - - let military = descriptions.insert(fl!("time-format", "twenty-four")); - let show_seconds = descriptions.insert(fl!("time-format", "show-seconds")); - let first = descriptions.insert(fl!("time-format", "first")); - let show_date = descriptions.insert(fl!("time-format", "show-date")); + crate::slab!(descriptions { + military = fl!("time-format", "twenty-four"); + show_seconds = fl!("time-format", "show-seconds"); + first = fl!("time-format", "first"); + show_date = fl!("time-format", "show-date"); + }); Section::default() .title(fl!("time-format")) @@ -492,38 +460,27 @@ fn format() -> Section { } fn timezone() -> Section { - let mut descriptions = Slab::new(); - - let time_zone = descriptions.insert(fl!("time-zone")); + crate::slab!(descriptions { + time_zone = fl!("time-zone"); + }); Section::default() .title(fl!("time-zone")) .descriptions(descriptions) .view::(move |_binder, page, section| { - let timezone_context_button = widget::row::with_capacity(2) - .spacing(12) - .push( + settings::section() + .title(§ion.title) + // Time zone select + .add(crate::widget::go_next_with_item( + §ion.descriptions[time_zone], widget::text::body( page.timezone .map(|id| &*page.timezone_list[id]) .unwrap_or_default(), ) .wrapping(Wrapping::Word), - ) - .push(widget::icon::from_name("go-next-symbolic").size(16).icon()) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(Message::TimezoneContext); - - settings::section() - .title(§ion.title) - // Time zone select - .add( - settings::item::builder(&*section.descriptions[time_zone]) - .control(timezone_context_button), - ) + Message::TimezoneContext, + )) .apply(cosmic::Element::from) .map(crate::pages::Message::DateAndTime) }) @@ -564,10 +521,11 @@ fn format_date(date: &DateTime, military: bool, show_seconds: bool) - } fn update_local_time() -> DateTime { - let now = chrono::Local::now(); + let now = jiff::Zoned::now(); DateTime { - date: Date::try_new_gregorian(now.year(), now.month() as u8, now.day() as u8).unwrap(), + date: Date::try_new_gregorian(now.year() as i32, now.month() as u8, now.day() as u8) + .unwrap(), time: Time::try_new(now.hour() as u8, now.minute() as u8, now.second() as u8, 0).unwrap(), } } diff --git a/cosmic-settings/src/pages/time/mod.rs b/cosmic-settings/src/pages/time/mod.rs index 76a3aee..ad7d106 100644 --- a/cosmic-settings/src/pages/time/mod.rs +++ b/cosmic-settings/src/pages/time/mod.rs @@ -21,7 +21,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("time", "preferences-time-and-language-symbolic") .title(fl!("time")) - .description(fl!("time", "desc")) + .description(fl!("xdg-entry-time-language-comment")) } } diff --git a/cosmic-settings/src/pages/time/region.rs b/cosmic-settings/src/pages/time/region.rs index 8359845..36128f7 100644 --- a/cosmic-settings/src/pages/time/region.rs +++ b/cosmic-settings/src/pages/time/region.rs @@ -2,13 +2,12 @@ // SPDX-License-Identifier: GPL-3.0-only use std::collections::{BTreeMap, BTreeSet}; -use std::rc::Rc; use std::sync::Arc; +use crate::widget::selection_context_item; use cosmic::app::{ContextDrawer, context_drawer}; use cosmic::iced::{Alignment, Length}; -use cosmic::iced_core::text::Wrapping; -use cosmic::widget::{self, button}; +use cosmic::widget::{self, button, list}; use cosmic::{Apply, Element}; use cosmic_config::{ConfigGet, ConfigSet}; use cosmic_settings_page::Section; @@ -26,6 +25,8 @@ use icu::{ use locales_rs as locale; use slotmap::{DefaultKey, SlotMap}; +static GNOME_LANGUAGE_SELECTOR: &str = "gnome-language-selector"; + #[derive(Clone, Debug)] pub enum Message { AddLanguage(DefaultKey), @@ -99,6 +100,7 @@ pub struct PageRefresh { region: Option, available_languages: SlotMap, system_locales: BTreeMap, + language_selector_available: bool, } #[derive(Default)] @@ -113,6 +115,8 @@ pub struct Page { registry: Option, expanded_source_popover: Option, add_language_search: String, + /// Whether gnome-language-selector is in the path. + language_selector_available: bool, /// Cached LC_NUMERIC locale in icu locale format. numeric_locale: Option, /// Cached LC_TIME locale in icu locale format. @@ -137,7 +141,7 @@ impl page::Page for Page { fn info(&self) -> page::Info { page::Info::new("time-region", "preferences-region-and-language-symbolic") .title(fl!("time-region")) - .description(fl!("time-region", "desc")) + .description(fl!("xdg-entry-region-language-comment")) } fn on_enter(&mut self) -> cosmic::Task { @@ -165,22 +169,27 @@ impl page::Page for Page { .on_clear(Message::AddLanguageSearch(String::new())) .apply(Element::from) .map(crate::pages::Message::from); - let install_additional_button = - widget::button::standard(fl!("install-additional-languages")) - .on_press(Message::InstallAdditionalLanguages) - .apply(widget::container) - .width(Length::Fill) - .align_x(Alignment::End) - .apply(Element::from) - .map(crate::pages::Message::from); - - context_drawer( + let drawer = context_drawer( self.add_language_view().map(crate::pages::Message::from), crate::pages::Message::CloseContextDrawer, ) .title(fl!("add-language", "context")) - .header(search) - .footer(install_additional_button) + .header(search); + + if self.language_selector_available { + let install_additional_button = + widget::button::standard(fl!("install-additional-languages")) + .on_press(Message::InstallAdditionalLanguages) + .apply(widget::container) + .width(Length::Fill) + .align_x(Alignment::End) + .apply(Element::from) + .map(crate::pages::Message::from); + + drawer.footer(install_additional_button) + } else { + drawer + } } ContextView::Region => { let search = widget::search_input("", &self.add_language_search) @@ -259,7 +268,7 @@ impl Page { Message::InstallAdditionalLanguages => { return cosmic::task::future(async move { - _ = tokio::process::Command::new("gnome-language-selector") + _ = tokio::process::Command::new(GNOME_LANGUAGE_SELECTOR) .status() .await; @@ -275,6 +284,7 @@ impl Page { self.language = page_refresh.language; self.region = page_refresh.region; self.registry = Some(page_refresh.registry.0); + self.language_selector_available = page_refresh.language_selector_available; self.numeric_locale = self.icu_locale_from_env("LC_NUMERIC"); self.time_locale = self.icu_locale_from_env("LC_TIME"); } @@ -313,6 +323,9 @@ impl Page { _ = config.set("system_locales", &locales); + // Build the LANGUAGE string for AccountsService (colon-separated locales) + let language_list = build_language_list(locales); + if let Some(language_code) = locales.first() && let Some(language) = self .available_languages @@ -329,6 +342,14 @@ impl Page { region.unwrap_or(language).lang_code.clone(), ) .await; + + // Set the LANGUAGE variable via AccountsService + if let Err(why) = set_user_language(language_list).await { + tracing::error!( + ?why, + "failed to set user language via AccountsService" + ); + } }); } } @@ -339,14 +360,9 @@ impl Page { } fn add_language_view(&self) -> cosmic::Element<'_, crate::pages::Message> { - let mut list = widget::list_column(); - + let mut list = widget::list_column::with_capacity(self.available_languages.len()); let search_input = &self.add_language_search.trim().to_lowercase(); - let svg_accent = Rc::new(|theme: &cosmic::Theme| cosmic::widget::svg::Style { - color: Some(theme.cosmic().accent_text_color().into()), - }); - for (id, available_language) in &self.available_languages { if search_input.is_empty() || available_language @@ -359,37 +375,15 @@ impl Page { .as_ref() .is_some_and(|(_, locales)| locales.contains(&available_language.lang_code)); - let button = widget::settings::item_row(vec![ - widget::text::body(&available_language.display_name) - .class(if is_installed { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(Length::Fill) - .into(), + list = list.add(selection_context_item( + &available_language.display_name, + is_installed, if is_installed { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() + Message::RemoveLanguage(id) } else { - widget::horizontal_space().width(16).into() + Message::AddLanguage(id) }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press(if is_installed { - Message::RemoveLanguage(id) - } else { - Message::AddLanguage(id) - }); - - list = list.add(button) + )) } } @@ -470,12 +464,7 @@ impl Page { } fn region_view(&self) -> cosmic::Element<'_, crate::pages::Message> { - let svg_accent = Rc::new(|theme: &cosmic::Theme| { - let color = theme.cosmic().accent_text_color().into(); - cosmic::widget::svg::Style { color: Some(color) } - }); - - let mut list = widget::list_column(); + let mut list = widget::list_column::with_capacity(self.available_languages.len()); let search_input = &self.add_language_search.trim().to_lowercase(); @@ -487,37 +476,15 @@ impl Page { .as_ref() .is_some_and(|l| l.lang_code == locale.lang_code); - let button = widget::settings::item_row(vec![ - widget::text::body(&locale.region_name) - .class(if is_selected { - cosmic::theme::Text::Accent - } else { - cosmic::theme::Text::Default - }) - .wrapping(Wrapping::Word) - .width(Length::Fill) - .into(), + list = list.add(selection_context_item( + &locale.region_name, + is_selected, if is_selected { - widget::icon::from_name("object-select-symbolic") - .size(16) - .icon() - .class(cosmic::theme::Svg::Custom(svg_accent.clone())) - .into() + None } else { - widget::horizontal_space().width(16).into() + Some(Message::SelectRegion(id)) }, - ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(widget::button::custom) - .class(cosmic::theme::Button::Transparent) - .on_press_maybe(if is_selected { - None - } else { - Some(Message::SelectRegion(id)) - }); - - list = list.add(button) + )) } } @@ -765,6 +732,8 @@ pub async fn page_reload() -> eyre::Result { available_languages.insert(language); } + let language_selector_available = which::which(GNOME_LANGUAGE_SELECTOR).is_ok(); + Ok(PageRefresh { config, registry: Registry(registry), @@ -772,6 +741,7 @@ pub async fn page_reload() -> eyre::Result { region, available_languages, system_locales, + language_selector_available, }) } @@ -894,6 +864,29 @@ pub async fn set_locale( .await } +/// Sets the user's preferred language list via AccountsService D-Bus. +/// This updates the LANGUAGE environment variable for gettext-based applications. +/// The language_list should be a colon-separated string like "de_DE:de:en_US:en". +pub async fn set_user_language(language_list: String) -> eyre::Result<()> { + let conn = zbus::Connection::system() + .await + .wrap_err("zbus system connection error")?; + + let uid = rustix::process::getuid().as_raw() as u64; + + let user_proxy = accounts_zbus::UserProxy::from_uid(&conn, uid) + .await + .wrap_err("failed to create AccountsService user proxy")?; + + user_proxy + .set_language(&language_list) + .await + .wrap_err("failed to set language via AccountsService")?; + + eprintln!("set user language via AccountsService: {language_list}"); + Ok(()) +} + fn parse_locale(locale: &str) -> Option { locale .split('.') @@ -973,3 +966,53 @@ fn update_time_settings_after_region_change(region: String) { ); } } + +/// Builds a colon-separated language list for the LANGUAGE environment variable. +/// Converts locales like ["de_DE.UTF-8", "en_US.UTF-8"] to "de_DE:de:en_US:en". +/// +/// Important: The list stops at English locales since English is typically the +/// source language and doesn't need translation files. This prevents fallback +/// to other languages when English is selected. +fn build_language_list(locales: &[String]) -> String { + let mut parts = Vec::new(); + + for locale in locales { + // Parse locale: language_TERRITORY[.CODESET][@MODIFIER] + // We want to extract "language_TERRITORY" without codeset or modifier + let base = strip_locale_suffix(locale); + + // Get the language-only code (e.g., "de" from "de_DE") + let lang = base.split('_').next().unwrap_or(&base); + + // Add the full locale code (e.g., "de_DE") + parts.push(base.clone()); + + // Add the language-only code as fallback if different + if lang != base { + parts.push(lang.to_string()); + } + + // Stop after English - it's the source language and needs no translation + // This matches gnome-language-selector's behavior + if lang == "en" { + break; + } + } + + parts.join(":") +} + +/// Strips the codeset (.UTF-8) and modifier (@latin) from a locale string. +/// "de_DE.UTF-8" -> "de_DE" +/// "sr_RS@latin" -> "sr_RS" +/// "sr_RS.UTF-8@latin" -> "sr_RS" +fn strip_locale_suffix(locale: &str) -> String { + // First strip the codeset (everything from '.' onwards) + let without_codeset = locale.split('.').next().unwrap_or(locale); + // Then strip the modifier (everything from '@' onwards) + without_codeset + .split('@') + .next() + .unwrap_or(without_codeset) + .to_string() +} diff --git a/cosmic-settings/src/subscription/daytime.rs b/cosmic-settings/src/subscription/daytime.rs index 2fd90ff..00b8159 100644 --- a/cosmic-settings/src/subscription/daytime.rs +++ b/cosmic-settings/src/subscription/daytime.rs @@ -1,6 +1,7 @@ use std::any::TypeId; use ashpd::desktop::location::{Location, LocationProxy}; +use chrono::NaiveDate; use cosmic::iced::{ Subscription, futures::{SinkExt, StreamExt, channel::mpsc::Sender, future}, @@ -11,15 +12,14 @@ use tokio::select; pub fn daytime() -> cosmic::iced::Subscription { struct Sunset; - Subscription::run_with_id( - TypeId::of::(), - stream::channel(2, |tx| async { + Subscription::run_with(TypeId::of::(), |_| { + stream::channel(2, |tx: Sender| async { if let Err(err) = inner(tx).await { tracing::error!("Sunset subscription error: {:?}", err); } future::pending().await - }), - ) + }) + }) } enum Event { @@ -46,28 +46,49 @@ async fn inner(mut tx: Sender) -> anyhow::Result<()> { }; let coord = Coordinates::new(loc.latitude(), loc.longitude()).unwrap(); - let now = chrono::Local::now(); - let date = now.date_naive(); - let now_in_seconds = now.timestamp(); + let now = jiff::Zoned::now(); + let now_in_seconds = now.timestamp().as_second(); + // roughly matches the dates of the spring and autumn equinoxes + let northern_tilt = (79..=266).contains(&now.day_of_year()); + let is_north = coord.lat() > 0.0; + // TODO: remove chrono if sunrise adds support for jiff - https://github.com/nathan-osman/rust-sunrise/pull/20 + let date = NaiveDate::from_ymd_opt(now.year() as i32, now.month() as u32, now.day() as u32) + .expect("jiff date is valid"); let current_solar_day = SolarDay::new(coord, date); let sunrise = current_solar_day .event_time(SolarEvent::Sunrise) - .timestamp(); - let sunset = current_solar_day.event_time(SolarEvent::Sunset).timestamp(); - let daytime = now_in_seconds >= sunrise && now_in_seconds <= sunset; + .map(|s| s.timestamp()); + let sunset = current_solar_day + .event_time(SolarEvent::Sunset) + .map(|s| s.timestamp()); + let daytime = match (sunrise, sunset) { + (Some(sunrise), Some(sunset)) => now_in_seconds >= sunrise && now_in_seconds <= sunset, + // transition into polar day + (Some(sunrise), None) => now_in_seconds >= sunrise, + // transition out of polar day + (None, Some(sunset)) => now_in_seconds <= sunset, + // polar day + (None, None) => is_north == northern_tilt, + }; tx.send(daytime).await?; - let sleep = if daytime { - sunset - now_in_seconds - } else if now_in_seconds < sunset { - sunrise - now_in_seconds + let next_event = if daytime { + sunset + } else if now_in_seconds < sunrise.unwrap_or(0) { + sunrise } else { - let tmrw = now + chrono::Duration::days(1); - let tmrw_sunrise = SolarDay::new(coord, tmrw.date_naive()) + let tmrw = now.checked_add(jiff::Span::new().days(1))?; + let tmrw_sunrise = + NaiveDate::from_ymd_opt(tmrw.year() as i32, tmrw.month() as u32, tmrw.day() as u32) + .expect("jiff date is valid"); + + SolarDay::new(coord, tmrw_sunrise) .event_time(SolarEvent::Sunrise) - .timestamp(); - tmrw_sunrise - now_in_seconds + .map(|s| s.timestamp()) }; + let sleep = next_event + .map(|ts| (ts - now_in_seconds).max(60)) + .unwrap_or(3600); next = select! { () = tokio::time::sleep(tokio::time::Duration::from_secs(sleep as u64)) => { Some(Event::Daytime) diff --git a/cosmic-settings/src/subscription/desktop_files.rs b/cosmic-settings/src/subscription/desktop_files.rs index b9bd5a2..61b439d 100644 --- a/cosmic-settings/src/subscription/desktop_files.rs +++ b/cosmic-settings/src/subscription/desktop_files.rs @@ -1,6 +1,7 @@ -use cosmic::{ - iced::{Subscription, stream}, - iced_futures::futures::{self, SinkExt}, +use cosmic::iced::{ + Subscription, + futures::{self, SinkExt}, + stream, }; use notify::{Config, EventKind, RecommendedWatcher, RecursiveMode, Watcher}; use std::fmt::Debug; @@ -15,45 +16,49 @@ pub enum Event { pub fn desktop_files( id: I, ) -> cosmic::iced::Subscription { - Subscription::run_with_id( - id, - stream::channel(1, move |mut output| async move { - let handle = tokio::runtime::Handle::current(); - let (tx, mut rx) = mpsc::channel(4); - let mut last_update = std::time::Instant::now(); + Subscription::run_with(id, |_| { + stream::channel( + 1, + move |mut output: futures::channel::mpsc::Sender| async move { + let handle = tokio::runtime::Handle::current(); + let (tx, mut rx) = mpsc::channel(4); + let mut last_update = std::time::Instant::now(); - // Automatically select the best implementation for your platform. - // You can also access each implementation directly e.g. INotifyWatcher. - let watcher = RecommendedWatcher::new( - move |res: Result| { - if let Ok(event) = res { - match event.kind { - EventKind::Create(_) | EventKind::Modify(_) | EventKind::Remove(_) => { - let now = std::time::Instant::now(); - if now.duration_since(last_update).as_secs() > 3 { - _ = handle.block_on(tx.send(())); - last_update = now; + // Automatically select the best implementation for your platform. + // You can also access each implementation directly e.g. INotifyWatcher. + let watcher = RecommendedWatcher::new( + move |res: Result| { + if let Ok(event) = res { + match event.kind { + EventKind::Create(_) + | EventKind::Modify(_) + | EventKind::Remove(_) => { + let now = std::time::Instant::now(); + if now.duration_since(last_update).as_secs() > 3 { + _ = handle.block_on(tx.send(())); + last_update = now; + } } + + _ => (), } - - _ => (), } + }, + Config::default(), + ); + + if let Ok(mut watcher) = watcher { + for path in cosmic::desktop::fde::default_paths() { + let _ = watcher.watch(path.as_ref(), RecursiveMode::Recursive); } - }, - Config::default(), - ); - if let Ok(mut watcher) = watcher { - for path in cosmic::desktop::fde::default_paths() { - let _ = watcher.watch(path.as_ref(), RecursiveMode::Recursive); + while rx.recv().await.is_some() { + _ = output.send(Event::Changed).await; + } } - while rx.recv().await.is_some() { - _ = output.send(Event::Changed).await; - } - } - - futures::future::pending().await - }), - ) + futures::future::pending().await + }, + ) + }) } diff --git a/cosmic-settings/src/subscription/wallpapers.rs b/cosmic-settings/src/subscription/wallpapers.rs index d709356..5e062b1 100644 --- a/cosmic-settings/src/subscription/wallpapers.rs +++ b/cosmic-settings/src/subscription/wallpapers.rs @@ -25,15 +25,16 @@ pub enum WallpaperEvent { } pub fn wallpapers(current_dir: PathBuf) -> cosmic::iced::Subscription { - Subscription::run_with_id( - current_dir.clone(), - stream::channel(2, |tx| async { + Subscription::run_with(current_dir, |current_dir: &PathBuf| { + let current_dir = current_dir.clone(); + stream::channel(2, move |tx: Sender| async move { + let current_dir = current_dir.clone(); if let Err(err) = inner(tx, current_dir).await { tracing::error!("Wallpapers subscription error: {:?}", err); } future::pending().await - }), - ) + }) + }) } async fn inner(tx: Sender, current_dir: PathBuf) -> anyhow::Result<()> { diff --git a/cosmic-settings/src/theme.rs b/cosmic-settings/src/theme.rs index ce465c0..df074d1 100644 --- a/cosmic-settings/src/theme.rs +++ b/cosmic-settings/src/theme.rs @@ -1,7 +1,7 @@ // Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only -use cosmic::{iced_core::Border, theme}; +use cosmic::{iced::Border, theme}; #[must_use] pub fn display_container_frame() -> cosmic::theme::Container<'static> { @@ -17,6 +17,7 @@ pub fn display_container_frame() -> cosmic::theme::Container<'static> { width: 3.0, }, shadow: Default::default(), + snap: true, } }) } @@ -35,6 +36,7 @@ pub fn display_container_screen() -> cosmic::theme::Container<'static> { width: 0.0, }, shadow: Default::default(), + snap: true, } }) } diff --git a/cosmic-settings/src/utils.rs b/cosmic-settings/src/utils.rs index 1814c6e..6286b8b 100644 --- a/cosmic-settings/src/utils.rs +++ b/cosmic-settings/src/utils.rs @@ -25,16 +25,13 @@ pub fn forward_event_loop + Send + 'st ) -> (tokio::sync::oneshot::Sender<()>, cosmic::Task) { let (cancel_tx, cancel_rx) = tokio::sync::oneshot::channel::<()>(); - let task = cosmic::Task::stream(cosmic::iced_futures::stream::channel( - 1, - |emitter| async move { - select( - std::pin::pin!(cancel_rx), - std::pin::pin!(event_loop(emitter)), - ) - .await; - }, - )); + let task = cosmic::Task::stream(cosmic::iced::stream::channel(1, |emitter| async move { + select( + std::pin::pin!(cancel_rx), + std::pin::pin!(event_loop(emitter)), + ) + .await; + })); (cancel_tx, task) } diff --git a/cosmic-settings/src/widget/mod.rs b/cosmic-settings/src/widget/mod.rs index a9362e4..a5b8322 100644 --- a/cosmic-settings/src/widget/mod.rs +++ b/cosmic-settings/src/widget/mod.rs @@ -2,14 +2,16 @@ // SPDX-License-Identifier: GPL-3.0-only use std::borrow::Cow; +use std::rc::Rc; use cosmic::cosmic_theme::Spacing; +use cosmic::iced::core::text::Wrapping; use cosmic::iced::{Alignment, Length}; -use cosmic::iced_core::text::Wrapping; use cosmic::widget::color_picker::ColorPickerUpdate; use cosmic::widget::{ - self, ColorPickerModel, button, column, container, divider, horizontal_space, icon, row, - settings, text, vertical_space, + self, ColorPickerModel, button, column, container, divider, icon, list, row, settings, + space::{horizontal, vertical}, + text, }; use cosmic::{Apply, Element, theme}; use cosmic_settings_page as page; @@ -39,7 +41,7 @@ pub fn color_picker_context_view<'a, Message: Clone + 'static>( .apply(container) .center_x(Length::Fill); - cosmic::widget::column() + column::with_capacity(2) .push_maybe(description) .push(color_picker) .align_x(Alignment::Center) @@ -74,7 +76,7 @@ pub fn search_header( .into(), ); - column_children.push(vertical_space().height(Length::Fixed(8.)).into()); + column_children.push(vertical().height(Length::Fixed(8.)).into()); column_children.push(divider::horizontal::heavy().into()); column::with_children(column_children).into() @@ -88,12 +90,12 @@ pub fn search_page_link(title: &str) -> button::TextButton<'_, pub fn page_title(page: &page::Info) -> Element<'_, Message> { row::with_capacity(2) .push(text::title3(page.title.as_str())) - .push(horizontal_space()) + .push(horizontal()) .into() } #[must_use] -pub fn unimplemented_page() -> Element<'static, Message> { +pub fn unimplemented_page() -> Element<'static, Message> { settings::section().title("") .add(text::body("We haven't created that panel yet, and/or it is using a similar idea as current Pop! designs.")) .into() @@ -150,10 +152,12 @@ pub fn page_list_item<'a, Message: 'static + Clone>( .padding([space_s, space_m]) .align_x(Alignment::Center) .class(theme::Container::List) + .width(Length::Fill) .apply(button::custom) .padding(0) .class(theme::Button::Transparent) .on_press(message) + .width(Length::Fill) .into() } @@ -181,44 +185,69 @@ pub fn sub_page_header<'a, Message: 'static + Clone>( .into() } -pub fn go_next_item( +pub fn go_next_item( description: &str, msg_opt: impl Into>, -) -> cosmic::Element<'_, Msg> { +) -> list::ListButton<'_, Msg> { settings::item_row(vec![ - text::body(description).wrapping(Wrapping::Word).into(), - horizontal_space().into(), + text::body(description) + .width(Length::Fill) + .wrapping(Wrapping::Word) + .into(), icon::from_name("go-next-symbolic").size(16).icon().into(), ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(button::custom) - .padding(0) - .class(theme::Button::Transparent) + .apply(list::button) .on_press_maybe(msg_opt.into()) - .into() } -pub fn go_next_with_item<'a, Msg: Clone + 'static>( +pub fn go_next_with_item<'a, Msg: 'static>( description: &'a str, item: impl Into>, msg_opt: impl Into>, -) -> cosmic::Element<'a, Msg> { +) -> list::ListButton<'a, Msg> { settings::item_row(vec![ text::body(description).wrapping(Wrapping::Word).into(), - horizontal_space().into(), - widget::row::with_capacity(2) + horizontal().into(), + row::with_capacity(2) .push(item) .push(icon::from_name("go-next-symbolic").size(16).icon()) .align_y(Alignment::Center) - .spacing(cosmic::theme::spacing().space_s) + .spacing(theme::spacing().space_s) .into(), ]) - .apply(widget::container) - .class(cosmic::theme::Container::List) - .apply(button::custom) - .padding(0) - .class(theme::Button::Transparent) + .apply(list::button) + .on_press_maybe(msg_opt.into()) +} + +pub fn selection_context_item<'a, Msg: 'static>( + name: &'a str, + selected: bool, + msg_opt: impl Into>, +) -> list::ListButton<'a, Msg> { + let svg_accent = Rc::new(|theme: &cosmic::Theme| widget::svg::Style { + color: Some(theme.cosmic().accent_text_color().into()), + }); + + settings::item_row(vec![ + text::body(name) + .class(if selected { + theme::Text::Accent + } else { + theme::Text::Default + }) + .wrapping(Wrapping::Word) + .width(Length::Fill) + .into(), + if selected { + icon::from_name("object-select-symbolic") + .size(16) + .icon() + .class(theme::Svg::Custom(svg_accent.clone())) + .into() + } else { + horizontal().width(16.).into() + }, + ]) + .apply(list::button) .on_press_maybe(msg_opt.into()) - .into() } diff --git a/crates/cosmic-pipewire/Cargo.toml b/crates/cosmic-pipewire/Cargo.toml index eb6d766..bcea9fb 100644 --- a/crates/cosmic-pipewire/Cargo.toml +++ b/crates/cosmic-pipewire/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-pipewire" -version = "1.0.0" +version = "1.0.7" edition = "2024" repository = "https://github.com/pop-os/cosmic-settings" rust-version.workspace = true diff --git a/crates/cosmic-pipewire/src/lib.rs b/crates/cosmic-pipewire/src/lib.rs index 2f899ae..3aefd1e 100644 --- a/crates/cosmic-pipewire/src/lib.rs +++ b/crates/cosmic-pipewire/src/lib.rs @@ -34,7 +34,7 @@ use pipewire::{ proxy::{ProxyListener, ProxyT}, types::ObjectType, }; -use std::{cell::RefCell, rc::Rc, u32}; +use std::{cell::RefCell, rc::Rc}; pub type NodeId = u32; pub type RouteId = u32; @@ -66,17 +66,18 @@ fn run_service( let registry = core.get_registry_rc()?; let state = Rc::new(RefCell::new(State { - nodes: IntMap::new(), + main_loop: main_loop.downgrade(), proxies: Proxies { devices: IntMap::new(), metadata: IntMap::new(), nodes: IntMap::new(), }, + nodes: IntMap::new(), + active_routes: IntMap::new(), routes: IntMap::new(), node_devices: IntMap::new(), node_card_profile_device: IntMap::new(), node_props: IntMap::new(), - main_loop: main_loop.downgrade(), on_event, })); @@ -180,10 +181,10 @@ fn run_service( return; } - if let Some(device) = Device::from_device(info) { - if let Some(state) = state.upgrade() { - state.borrow_mut().add_device(pw_id, device); - } + if let Some(device) = Device::from_device(info) + && let Some(state) = state.upgrade() + { + state.borrow_mut().add_device(pw_id, device); } } }) @@ -207,7 +208,9 @@ fn run_service( match param_type { ParamType::EnumProfile => { if let Some(profile) = Profile::from_pod(pod) { - state.borrow_mut().add_profile(device_id, profile); + state + .borrow_mut() + .add_profile(device_id, index, profile); } } @@ -278,10 +281,10 @@ fn run_service( .info({ let state = Rc::downgrade(&state); move |info| { - if let Some(node) = Node::from_node(info) { - if let Some(state) = state.upgrade() { - state.borrow_mut().add_node(id, node); - } + if let Some(node) = Node::from_node(info) + && let Some(state) = state.upgrade() + { + state.borrow_mut().add_node(id, node); } } }) @@ -354,24 +357,18 @@ fn run_service( "default.audio.sink" => { if let Ok(value) = serde_json::de::from_str::(value) + && let Some(state) = state.upgrade() { - if let Some(state) = state.upgrade() { - state - .borrow_mut() - .default_sink(value.name.to_owned()) - } + state.borrow_mut().default_sink(value.name.to_owned()) } } "default.audio.source" => { if let Ok(value) = serde_json::de::from_str::(value) + && let Some(state) = state.upgrade() { - if let Some(state) = state.upgrade() { - state - .borrow_mut() - .default_source(value.name.to_owned()) - } + state.borrow_mut().default_source(value.name.to_owned()) } } @@ -423,7 +420,7 @@ pub enum Event { /// A new node was detected. AddNode(Node), /// A profile was enumerated - AddProfile(DeviceId, Profile), + AddProfile(DeviceId, u32, Profile), /// A route was enumerated AddRoute(DeviceId, u32, Route), /// The default sink was changed. @@ -496,13 +493,21 @@ struct Proxies { } struct State { - nodes: IntMap)>, - pub(self) proxies: Proxies, - routes: IntMap>, - node_devices: IntMap, - node_props: IntMap, - node_card_profile_device: IntMap, main_loop: MainLoopWeak, + /// Stores pipewire objects that we are monitoring. + pub(self) proxies: Proxies, + /// Associates the pipewire ID of a node to its node and device IDs. + nodes: IntMap)>, + /// Routes which are currently in use by devices. + active_routes: IntMap>, + /// Routes which are supported by devices. + routes: IntMap>, + /// Associates node objects to their device objects. + node_devices: IntMap, + /// Additional properties of nodes for managing volume, mute, etc. + node_props: IntMap, + /// Associates a node with a card profile device for matching nodes to routes. + node_card_profile_device: IntMap, /// Handle events and exit the loop when `true` is returned. on_event: Box, } @@ -513,6 +518,16 @@ impl State { } fn active_route(&mut self, id: DeviceId, index: u32, route: Route) { + // Keep a record of routes attached to a device for setting properties. + // This will overwrite routes on updates to + let routes = self.active_routes.entry(id).or_default(); + if routes.len() < index as usize + 1 { + let additional = (index as usize + 1) - routes.capacity(); + routes.reserve_exact(additional); + routes.extend(std::iter::repeat_n(Route::default(), additional)); + } + routes[index as usize] = route.clone(); + self.on_event(Event::ActiveRoute(id, index, route)); } @@ -554,8 +569,8 @@ impl State { self.on_event(Event::AddNode(node)); } - fn add_profile(&mut self, id: DeviceId, profile: Profile) { - self.on_event(Event::AddProfile(id, profile)); + fn add_profile(&mut self, id: DeviceId, index: u32, profile: Profile) { + self.on_event(Event::AddProfile(id, index, profile)); } fn add_route(&mut self, id: DeviceId, index: u32, route: Route) { @@ -565,7 +580,7 @@ impl State { if routes.len() < index as usize + 1 { let additional = (index as usize + 1) - routes.capacity(); routes.reserve_exact(additional); - routes.extend(std::iter::repeat(Route::default()).take(additional)); + routes.extend(std::iter::repeat_n(Route::default(), additional)); } routes[index as usize] = route.clone(); @@ -592,8 +607,8 @@ impl State { self.on_event(Event::DefaultSource(name)); } - fn node_route(&self, device_id: DeviceId, route_device: i32) -> Option<&Route> { - self.routes + fn active_node_route(&self, device_id: DeviceId, route_device: i32) -> Option<&Route> { + self.active_routes .get(device_id)? .iter() .find(|r| r.devices.contains(&route_device)) @@ -682,14 +697,14 @@ impl State { fn set_mute_node(&self, id: NodeId, mute: bool) { // Prefer to mute the device instead of the node. // Muting a node will not emit a notification. - if let Some((&device_id, &route_device)) = self + if let Some((&device_id, &card_profile_device)) = self .node_devices .get(id) .zip(self.node_card_profile_device.get(id)) { - let route_device = route_device as i32; - if let Some(route) = self.node_route(device_id, route_device) { - self.set_mute(device_id, route_device, route, mute); + let card_profile_device = card_profile_device as i32; + if let Some(route) = self.active_node_route(device_id, card_profile_device) { + self.set_mute(device_id, card_profile_device, route, mute); return; }; } @@ -748,7 +763,6 @@ impl State { if let Some(param) = Pod::from_bytes(&serialized) { device.set_param(ParamType::Route, 0, param); } - return; } fn set_node_props(&mut self, id: NodeId, props: NodeProps) { @@ -762,14 +776,21 @@ impl State { }; // Prefer to change the volume of the device instead of the node. - if let Some((&device_id, &route_device)) = self + if let Some((&device_id, &card_profile_device)) = self .node_devices .get(id) .zip(self.node_card_profile_device.get(id)) { - let route_device = route_device as i32; - if let Some(route) = self.node_route(device_id, route_device) { - self.set_volume(device_id, props, route_device, route, volume, balance); + let card_profile_device = card_profile_device as i32; + if let Some(route) = self.active_node_route(device_id, card_profile_device) { + self.set_volume( + device_id, + props, + card_profile_device, + route, + volume, + balance, + ); return; }; } @@ -789,7 +810,7 @@ impl State { FormatProperties(libspa_sys::SPA_PROP_channelVolumes), ValueArray, pod::ValueArray::Float(volume::to_channel_volumes( - &props.channel_map.as_deref().unwrap_or_default(), + props.channel_map.as_deref().unwrap_or_default(), volume, balance, )) @@ -859,7 +880,7 @@ impl State { ValueArray, pod::ValueArray::Float(if matches!(route.direction, Direction::Output) { volume::to_channel_volumes( - &props.channel_map.as_deref().unwrap_or_default(), + props.channel_map.as_deref().unwrap_or_default(), volume, balance, ) diff --git a/crates/cosmic-pipewire/src/profile.rs b/crates/cosmic-pipewire/src/profile.rs index d2b01d0..aabad61 100644 --- a/crates/cosmic-pipewire/src/profile.rs +++ b/crates/cosmic-pipewire/src/profile.rs @@ -4,7 +4,7 @@ use crate::{Availability, spa_utils::string_from_pod}; use libspa::pod::Pod; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Default)] pub struct Profile { pub index: i32, pub priority: i32, diff --git a/crates/cosmic-pipewire/src/spa_utils.rs b/crates/cosmic-pipewire/src/spa_utils.rs index 7e3e859..0593dfe 100644 --- a/crates/cosmic-pipewire/src/spa_utils.rs +++ b/crates/cosmic-pipewire/src/spa_utils.rs @@ -14,10 +14,8 @@ pub fn string_from_pod(pod: &Pod) -> Option { unsafe { // SAFETY: Pod is checked to be a string beforehand - if libspa_sys::spa_pod_get_string(pod.as_raw_ptr(), &mut cstr) == 0 { - if !cstr.is_null() { - return Some(String::from_utf8_lossy(CStr::from_ptr(cstr).to_bytes()).into_owned()); - } + if libspa_sys::spa_pod_get_string(pod.as_raw_ptr(), &mut cstr) == 0 && !cstr.is_null() { + return Some(String::from_utf8_lossy(CStr::from_ptr(cstr).to_bytes()).into_owned()); } } diff --git a/debian/changelog b/debian/changelog index 198e6e9..1e3759c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cosmic-settings (1.0.7) noble; urgency=medium + + * release: 1.0.7 + + -- Michael Murphy Tue, 17 Feb 2026 17:02:45 +0100 + cosmic-settings (1.0.2) noble; urgency=medium * Released version diff --git a/i18n/af/cosmic_settings.ftl b/i18n/af/cosmic_settings.ftl index 25085f1..af2649c 100644 --- a/i18n/af/cosmic_settings.ftl +++ b/i18n/af/cosmic_settings.ftl @@ -1,20 +1,32 @@ app = COSMIC Instellings - dbus-connection-error = Koppeling aan DBus het misluk ok = OK unknown = Onbekend - number = { $number } +xdg-entry-about = Oor +xdg-entry-about-comment = Toestelnaam, hardeware-inligtings, standaardinstellings van die bedryfstelsel +xdg-entry-about-keywords = COSMIC;Oor +xdg-entry-a11y = Toeganklikhede +xdg-entry-a11y-keywords = COSMIC;Toeganklikhede;A11y;Screen;Reader;Magnifier;Contrast;Color; +xdg-entry-appearance = Weergawe +xdg-entry-appearance-comment = Aksentkleure en temas +xdg-entry-appearance-keywords = COSMIC;Weergawe;Aksentkleure;Color;Icon;Font;Temas +xdg-entry-applications = Toepassings +xdg-entry-bluetooth-comment = Bestuur Bluetooth-toestelle +xdg-entry-date-time = Datum en tyd +xdg-entry-date-time-comment = Tydsone, outomatiese klokinstellings en tydformatering +xdg-entry-default-apps = Standaard toepassings +xdg-entry-default-apps-comment = Default web browser, mail client, file browser, and other applications +xdg-entry-displays = Vertoonskerme +xdg-entry-displays-comment = Vertoonopsies, grafiese modusse en naglig +xdg-entry-displays-keywords = COSMIC;Vertoonskerme; +xdg-entry-dock = Dock +xdg-entry-dock-comment = 'n Opsionele balk vir programme en applets +xdg-entry-input = Invoertoestelle +xdg-entry-input-comment = Sleutelbord, muis, ens ## Network & Wireless -connections-and-profiles = { $variant -> - [wired] Kabelverbindings - [wifi] Wifi-verbindings - [vpn] VPN-verbindings - *[other] Onbekende verbindings -} en verbindingsprofiele. - add-network = Voeg netwerk toe .profile = Voeg profiel toe add-vpn = Voeg VPN toe @@ -36,14 +48,11 @@ settings = Instellings username = Gebruikersnaam visible-networks = Sigbare netwerke identity = Identiteit - auth-dialog = Verifikasie vereis .vpn-description = Voer die gebruikersnaam en wagwoord in wat deur die VPN-diens vereis word. .wifi-description = Voer die wagwoord of enkripsiesleutel in. U kan ook verbind deur op die “WPS”-knoppie op die roeteerder te druk. - forget-dialog = Vergeet hierdie wifi-netwerk? .description = U sal weer 'n wagwoord moet invoer as u hierdie wifi-netwerk in die toekoms gebruik wil. - network-device-state = .activated = Gekoppel .config = Verbind, wag… @@ -51,7 +60,7 @@ network-device-state = .disconnected = Het ontkoppel .failed = Kon nie verbind nie .ip-check = Verbinding nagaan… - .ip-config = IP- en roeteringsinligting opvra… + .ip-config = IP- en roeteringsinligting opvra… .need-auth = Dit benodig verifikasie .prepare = Verbinding word voorberei… .secondaries = Wag op sekondêre verbinding… @@ -59,17 +68,14 @@ network-device-state = .unknown = Status onbekend .unmanaged = Onbeheerd .unplugged = Kabel is losgekoppel - remove-connection-dialog = Hierdie verbindingsprofiel verwyder? .vpn-description = U sal weer 'n wagwoord moet invoer as u hierdie netwerk in die toekoms gaan gebruik. .wired-description = U sal hierdie profiel weer moet skep om dit in die toekoms te kan gebruik. - vpn = VPN .connections = VPN-verbindings .error = Kon nie VPN-konfigurasie byvoeg nie .remove = Verwyder verbindingsprofiel .select-file = Kies 'n VPN-konfigurasielêer - vpn-error = VPN-fout .config = Kon nie VPN-konfigurasie byvoeg nie .connect = Kon nie aan VPN koppel nie @@ -79,22 +85,20 @@ vpn-error = VPN-fout .wireguard-config-path = Ongeldige lêerpad vir WireGuard-konfigurasie .wireguard-config-path-desc = Gekose lêer moet op 'n plaaslike lêerstelsel wees. .wireguard-device = Die skepping van WireGuard-toestel het misluk - .with-password = Kon nie { $field -> - *[username] VPN-gebruikersnaam - [password] VPN-wagwoord - [password-flags] VPN-wagwoordvlae - } met nmcli stel nie - + .with-password = + Kon nie { $field -> + *[username] VPN-gebruikersnaam + [password] VPN-wagwoord + [password-flags] VPN-wagwoordvlae + } met nmcli stel nie wired = Bedraad .adapter = Bedrade adapter { $id } .connections = Bedrade verbindings .devices = Bedrade toestelle .remove = Verwyder verbindingsprofiel - wifi = Wifi .adapter = Wifi-adapter { $id } .forget = Vergeet hierdie netwerk - wireguard-dialog = Voeg WireGuard-toestel toe .description = Kies 'n toestelnaam vir die WireGuard-konfigurasie. @@ -108,10 +112,9 @@ online-accounts = Aanlyn rekeninge activate = Aktiveer confirm = Bevestig enable = Skakel in - bluetooth = Bluetooth .desc = Om bluetooth-apparate te bestuur - .status = Hierdie stelsel is sigbaar as { $aliases } wanneer u die bluetooth-instellings open hou. + .status = Hierdie stelsel is sigbaar as { $aliases } wanneer u die bluetooth-instellings open hou. .connected = Gekoppel .connecting = Verbinding maak… .disconnecting = Verbinding beëindig… @@ -122,16 +125,12 @@ bluetooth = Bluetooth .disabled = Die bluetooth-diens is gedeaktiveer .inactive = Die bluetooth-diens is nie aktief nie .unknown = Die Bluetooth-diens kon nie geaktiveer word nie. Het u BlueZ geïnstalleer? - bluetooth-paired = Voorheen gekoppelde apparate .connect = Verbind .battery = { $percentage }% battery - bluetooth-confirm-pin = Bevestig bluetooth-pinkode .description = Bevestig dat die volgende pinkode ooreenstem met dié wat op { $device } vertoon word - bluetooth-available = Apparate in die omgewing - bluetooth-adapters = Bluetooth-adapters ## Accessibility @@ -145,20 +144,21 @@ accessibility = Toeganklikheid .high-contrast = Hoë kontrastmodus .invert-colors = Keer kleure om .color-filters = Kleurfilters - hearing = Gehoor .mono = Speel stereo-klank as mono - default = Standaard magnifier = Vergrootglas - .controls = Of gebruik hierdie kortpaaie: { $zoom_in -> - [zero] {""} - *[other] {""} - {$zoom_in} om in te zoem, + .controls = + Of gebruik hierdie kortpaaie: { $zoom_in -> + [zero] { "" } + *[other] + { "" } + { $zoom_in } om in te zoem, }{ $zoom_out -> - [zero] {""} - *[other] {""} - {$zoom_out} om uit te zoem, + [zero] { "" } + *[other] + { "" } + { $zoom_out } om uit te zoem, } Super + Scroll met uw muis .scroll_controls = Aktiveer muis- of raakvlakzoem met Super + Scroll @@ -176,5 +176,3 @@ color-filter = Kleurfiltertipe .deuteranopia = Groen/Rooi (groenswakheid, Deuteranopie) .protanopia = Rooi/Groen (rooiswakheid, Protanopie) .tritanopia = Blou/Geel (bluoswakheid, Tritanopie) - - diff --git a/i18n/ar/cosmic_settings.ftl b/i18n/ar/cosmic_settings.ftl index 35b5f98..88be08f 100644 --- a/i18n/ar/cosmic_settings.ftl +++ b/i18n/ar/cosmic_settings.ftl @@ -3,22 +3,62 @@ dbus-connection-error = تعذر الاتصال بـDBus ok = حسنًا unknown = مجهول number = { $number } +xdg-entry-about = عن +xdg-entry-about-comment = اسم الجهاز ومعلومات العتاد وإعدادات نظام التشغيل المبدئية +xdg-entry-a11y = الإتاحة +xdg-entry-a11y-comment = قارئ الشاشة والمكبر والتباين العالي وتصفيات الألوان +xdg-entry-appearance = المظهر +xdg-entry-appearance-comment = ألوان التمييز والسمات +xdg-entry-applications = التطبيقات +xdg-entry-bluetooth-comment = أدِر أجهزة البلوتوث +xdg-entry-date-time = التاريخ والوقت +xdg-entry-date-time-comment = المنطقة الزمنية وإعدادات الساعة التلقائية وتنسيق الوقت +xdg-entry-default-apps = التطبيقات المبدئية +xdg-entry-default-apps-comment = متصفح الويب المبدئي، عميل البريد، متصفح الملفات، والتطبيقات الأخرى +xdg-entry-desktop = سطح المكتب +xdg-entry-desktop-comment = إعدادات خلفية الشاشة والمظهر واللوحة والمنصة وإدارة النوافذ ومساحة العمل +xdg-entry-displays = شاشات العرض +xdg-entry-displays-comment = أدِر إعدادات تضبيط العرض +xdg-entry-dock = الإرساء +xdg-entry-dock-comment = شريط إختياري للتطبيقات والبُريمجات +xdg-entry-input = أجهزة الإدخال +xdg-entry-input-comment = لوحة المفاتيح، المؤشر، إلخ +xdg-entry-keyboard = لوحة المفاتيح +xdg-entry-keyboard-comment = مصادر الإدخال، التبديل، إدخال الأحرف الخاصة، الاختصارات +xdg-entry-mouse = الفأرة +xdg-entry-mouse-comment = سرعة الفأرة، والتسارع، والتمرير الطبيعي +xdg-entry-network = الشبكة والاتصالات اللاسلكية +xdg-entry-network-comment = أدِر اتصالات الشبكة +xdg-entry-notifications = الإشعارات +xdg-entry-notifications-comment = عدم الإزعاج، إشعارات شاشة القفل، وإعدادات لكل تطبيق +xdg-entry-panel = اللوحة +xdg-entry-panel-comment = شريط النظام الأساسي للقوائم والبريمجات +xdg-entry-power = الطاقة والمُدَّخرة +xdg-entry-power-comment = أوضاع الطاقة وخيارات توفير الطاقة +xdg-entry-region-language = اللغة والمنطقة +xdg-entry-region-language-comment = نسق التواريخ والأوقات والأرقام بناءً على منطقتك +xdg-entry-sound = الصوت +xdg-entry-sound-comment = إعدادات الصوت للأجهزة والتنبيهات والتطبيقات +xdg-entry-startup-apps = تطبيقات بدء التشغيل +xdg-entry-startup-apps-comment = اضبط التطبيقات التي تعمل عند الولوج +xdg-entry-system = النظام والحسابات +xdg-entry-time-language = الوقت واللغة +xdg-entry-touchpad = لوحة اللمس +xdg-entry-touchpad-comment = سرعة لوحة اللمس، خيارات النقر، الإيماءات +xdg-entry-users = المستخدمين +xdg-entry-users-comment = الاستيثاق وحسابات المستخدمين +xdg-entry-vpn-comment = اتصالات VPN وملفات تعريف الاتصال +xdg-entry-x11-applications = توافق تطبيقات اكس11 +xdg-entry-x11-applications-comment = توسيع نطاق تطبيق نظام النوافذ اكس11 والاختصارات العامة ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] سلكي - [wifi] واي فاي - [vpn] VPN - *[other] غير معروف - } الاتصالات وملفات تعريف الاتصال. add-network = أضف شبكة .profile = أضف ملف تعريف -add-vpn = إضافة VPN +add-vpn = أضف VPN airplane-on = وضع الطائرة مفعَّل. cable-unplugged = الكابل مفصول -connect = توصيل +connect = اتصل connected = متصل connecting = يتصل… disconnect = اقطع الاتصال @@ -26,7 +66,7 @@ forget = انسَ known-networks = الشبكات المعروفة network-and-wireless = الشبكة واللاسلكي no-networks = لم يُعثر على أي شبكات. -no-vpn = لا توجد اتصالات VPN متاحة. +no-vpn = لا اتصالات VPN متوفرة. password = كلمة السر password-confirm = أكِّد كلمة السر remove = أزِل @@ -34,11 +74,11 @@ settings = الإعدادات username = اسم المستخدم visible-networks = الشبكات المرئية identity = الهوية -auth-dialog = المصادقة مطلوبة - .vpn-description = أدخل اسم المستخدم وكلمة السر المطلوبين من قبل خدمة VPN. - .wifi-description = أدخل كلمة السر أو مفتاح التشفير. يمكنك أيضًا الاتصال بالضغط على زر ”WPS“ الموجود على الراوتر. -forget-dialog = هل تريد نسيان شبكة الواي فاي هذه؟ - .description = ستحتاج إلى إدخال كلمة السر مرة أخرى لاستخدام شبكة Wi-Fi هذه في المستقبل. +auth-dialog = الاستيثاق مطلوب + .vpn-description = أدخل اسم المستخدم وكلمة السر المطلوبين من قِبل خدمة VPN. + .wifi-description = أدخل كلمة السر أو مفتاح التعمية. يمكنك أيضًا الاتصال بالضغط على زر "WPS" الموجود على جهاز التوجيه. +forget-dialog = أنسَ شبكة واي فاي هذه؟ + .description = سيتعين إدخال كلمة السر مجددًا لاستخدامها مستقبلًا. network-device-state = .activated = متصل .config = يتصل @@ -47,7 +87,7 @@ network-device-state = .failed = فشل الاتصال .ip-check = يتحقق من الاتصال .ip-config = طلب معلومات IP والتوجيه - .need-auth = يحتاج إلى مصادقة + .need-auth = يحتاج إلى الاستيثاق .prepare = التحضير للاتصال .secondaries = انتظار الاتصال الثانوي .unavailable = غير متاح @@ -99,7 +139,6 @@ activate = تفعيل confirm = أكِّد enable = فعِّل bluetooth = بلوتوث - .desc = أدر أجهزة بلوتوث .status = سيظهر النظام باسم { $aliases } حين تُفتح إعدادات بلوتوث. .connected = متصل .connecting = يتصل @@ -169,9 +208,8 @@ desktop = سطح المكتب ## Desktop: Wallpaper -wallpaper = خلفية +wallpaper = الخلفية .change = غيِّر الصورة كل - .desc = صور الخلفية والألوان وخيارات عرض الشرائح. .fit = ملاءمة الخلفية .folder-dialog = اختر مجلد الخلفية .image-dialog = اختر صورة الخلفية @@ -201,7 +239,6 @@ x-hours = ## Desktop: Appearance appearance = المظهر - .desc = ألوان التمييز والنسق accent-color = لون التمييز app-background = خلفية النافذة auto = آلي @@ -230,15 +267,15 @@ container-background = خلفية الحاوية .reset = صفِّر إلى الوضع الآلي .desc = يُستخدم في شريط التنقل الجانبي والدرج الجانبي ومربعات الحوار وعناصر واجهة المستخدم المماثلة control-tint = تحكم في لون المكون - .desc = يستخدم لخلفيات الأزرار القياسية ومدخلات البحث ومدخلات النص والمكونات المماثلة. + .desc = يستخدم لخلفيات الأزرار القياسية ومدخلات البحث ومدخلات النص والمكونات المماثلة frosted = تأثير الزجاج البلوري على واجهة النظام .desc = يطبِّق تمويه الخلفية للوحة والمرسى والبريمجات والمطلق ومكتبة التطبيقات enable-export = قم بتطبيق هذا المظهر على تطبيقات GNOME. .desc = لا تدعم جميع مجموعات الأدوات التبديل التلقائي. قد تحتاج التطبيقات غير التابعة لـ COSMIC إلى إعادة التشغيل بعد تغيير المظهر. -icon-theme = ثيم الأيقونات - .desc = يطبق مجموعة مختلفة من الأيقونات على التطبيقات. +icon-theme = نسق الأيقونات + .desc = يطبق مجموعة مختلفة من الأيقونات على التطبيقات text-tint = لون نص الواجهة - .desc = اللون المستخدم لاشتقاق ألوان نص الواجهة التي تتمتع بتباين كافٍ على الأسطح المختلفة. + .desc = اللون المستخدم لاشتقاق ألوان نص الواجهة التي تتمتع بتباين كافٍ على الأسطح المختلفة style = المظهر .round = دائري .slightly-round = دائري قليلاً @@ -261,12 +298,10 @@ monospace-font = خط أحادي المسافة ## Desktop: Notifications notifications = الإشعارات - .desc = لا تزعج، وإشعارات شاشة القفل، وإعدادات كل تطبيق على حدة. ## Desktop: Panel panel = اللوحة - .desc = شريط النظام الأساسي للقوائم والبريمجات add = أضِف add-applet = أضِف بريمج all = الكل @@ -279,7 +314,7 @@ panel-bottom = الأسفل panel-left = الشمال panel-right = اليمين panel-top = الأعلى -search-applets = ابحث البريمجات… +search-applets = ابحث عن بريمجات… small = صغير start-segment = جزء البداية panel-appearance = المظهر @@ -308,19 +343,17 @@ panel-missing = ضبط اللوحة مفقود ## Desktop: Dock -dock = حامل التطبيقات - .desc = حامل اختياري للتطبيقات والبرامج المصغرة. +dock = المرسى ## Desktop: Window management window-management = إدارة النوافذ - .desc = إجراءات مفتاح سوبر، وخيارات التحكم في النوافذ، وخيارات إضافية لتقسيم النوافذ. -super-key = إجراءات مفتاح سوبر +super-key = إجراءات مفتاح Super .launcher = فتح مشغل التطبيقات .workspaces = فتح مساحات العمل .applications = فتح التطبيقات .disable = تعطيل -edge-gravity = تنجذب النوافذ التي تطفو إلى الحواف القريبة +edge-gravity = تنجذب النوافذ العائمة إلى الحواف القريبة window-controls = تحكمات النوافذ .maximize = أظهر زر التكبير .minimize = أظهر زر التصغير @@ -333,7 +366,6 @@ focus-navigation = تنقُل التركيز ## Desktop: Workspaces workspaces = مساحات العمل - .desc = توجه وسلوك مساحة العمل. workspaces-behavior = سلوك مساحة العمل .dynamic = مساحات عمل حركيَّة .dynamic-desc = يُزيل مساحات العمل الفارغة آليًا. @@ -360,7 +392,6 @@ color = اللون .sidebar = ملفات تعريف الألوان .temperature = درجة حرارة اللون display = الشاشات - .desc = أدر الشاشات والإضاءة الليلية .arrangement = ترتيب الشاشات .arrangement-desc = اسحب الشاشات لإعادة ترتيبها. .enable = فعِّل الشاشة @@ -409,7 +440,6 @@ dialog = حوار ## Sound sound = الصوت - .desc = غير متوفر sound-output = الإخراج .volume = مستوي صوت الإخراج .device = جهاز الإخراج @@ -423,7 +453,7 @@ sound-input = الإدخال .device = جهاز الإدخال .level = مستوى الإدخال amplification = التضخيم - .desc = يسمح برفع مستوى الصوت إلى 150٪. + .desc = يسمح برفع مستوى الصوت إلى 150٪ sound-alerts = التنبيهات .volume = مستوي صوت التنبيهات .sound = صوت التنبيهات @@ -433,7 +463,6 @@ sound-applications = التطبيقات ## Power power = الطاقة والمُدَّخرة - .desc = أدر إعدادات الطاقة battery = المُدَّخرة .minute = { $value } { $value -> @@ -478,7 +507,6 @@ power-saving = خيارات توفير الطاقة acceleration-desc = يضبط حساسية التتبع آليًا بناءً على السرعة disable-while-typing = عطِّل أثناء الكتابة input-devices = أجهزة الإدخال - .desc = أجهزة الإدخال primary-button = الزر الأساسي .desc = يعيِّن ترتيب الأزرار الملموسة. .left = شمال @@ -497,7 +525,6 @@ fast = سريع short = قصير long = طويل keyboard = لوحة المفاتيح - .desc = مصادر الإدخال والتبديل وإدخال الأحرف الخاصة والاختصارات keyboard-sources = مصادر الإدخال .desc = يمكن تبديل مصادر الإدخال باستعمال تركيبة مفتاحي Super+Space. يمكن أن يُخصّص هذا من خلال إعدادات اختصارات لوحة المفاتيح. .move-up = حرِك لأعلى @@ -654,7 +681,6 @@ zoom-out = بعِّد ## Input: Mouse mouse = الفأرة - .desc = سرعة الفأرة والتسارع والتمرير الطبيعي. .speed = سرعة الفأرة .acceleration = فعِّل تسارع الفأرة @@ -663,13 +689,12 @@ mouse = الفأرة click-behavior = سلوك النقر .click-finger = النقر الثانوي بإصبعين والنقر الأوسط بثلاثة أصابع .button-areas = النقر الثانوي في الزاوية اليمنى السفلية والنقر الأوسط في المنتصف السفلي -pinch-to-zoom = الضغط للتكبير - .desc = استخدم إصبعين لتقريب المحتوى، في التطبيقات التي تدعم ذلك. +pinch-to-zoom = قرص للتكبير + .desc = استخدم إصبعين لتقريب المحتوى، في التطبيقات التي تدعم ذلك tap-to-click = اضغط للنقر .desc = يتيح الضغط بإصبع واحد للنقر الأساسي والضغط بإصبعين للنقر الثانوي والضغط بثلاثة أصابع للنقر الأوسط touchpad = لوحة اللمس .acceleration = فعِّل تسارع لوحة اللمس - .desc = سرعة لوحة اللمس وخيارات النقر والإيماءات. .speed = سرعة لوحة اللمس ## Input: Gestures @@ -690,11 +715,9 @@ open-workspaces-view = نظرة عامة على مساحات العمل المف ## Time & Language time = الوقت واللغة - .desc = غير متوفر time-date = التاريخ والوقت - .desc = المنطقة الزمنية وإعدادات الساعة الآلية وبعض تنسيقات الوقت. - .auto = الضبط الآلي - .auto-ntp = سيحدَّث التاريخ والوقت الآلي عند ضبط المنطقة الزمنية + .auto = عيِّن آليًا + .auto-ntp = سيحدَّث التاريخ والوقت الآلي عند تعيين المنطقة الزمنية time-zone = المنطقة الزمنية .auto = المنطقة الزمنية الآلية .auto-info = يتطلب خدمات الموقع والوصول إلى الإنترنت @@ -708,7 +731,6 @@ time-format = تنسيق التاريخ والوقت .sunday = الأحد .monday = الاثنين time-region = المنطقة واللغة - .desc = تنسيق التواريخ والأوقات والأرقام بناءً على منطقتك. formatting = التنسيق .dates = التواريخ .time = الوقت @@ -730,7 +752,6 @@ applications = التطبيقات ## Applications: Default Applications default-apps = التطبيقات المبدئية - .desc = متصفح الويب المبدئي وعميل البريد ومتصفح الملفات والتطبيقات الأخرى. .web-browser = متصفح الوِب .file-manager = مدير الملفات .mail-client = عميل البريد @@ -741,22 +762,21 @@ default-apps = التطبيقات المبدئية .terminal = طرفية .other-associations = جمعيات أخرى .text-editor = محرِّر نصوص + .not-installed = غير مُنصَّب ## Applications: Startup Applications startup-apps = تطبيقات بدء التشغيل - .desc = تكوين التطبيقات التي يتم تشغيلها عند تسجيل الدخول. - .add = إضافة تطبيق - .user = التطبيقات التي يتم تشغيلها عند تسجيل الدخول - .none = لم تتم إضافة أي تطبيقات بدء تشغيل - .remove-dialog-title = إزالة { $name }؟ - .remove-dialog-description = هل تريد حذف تطبيق بدء التشغيل هذا؟ - .search-for-application = البحث عن تطبيق + .add = أضِف تطبيق + .user = التطبيقات التي تُشغّل عند الولوج + .none = لم تُضاف تطبيقات بدء تشغيل + .remove-dialog-title = أزلِ { $name }؟ + .remove-dialog-description = أتريد إزالة تطبيق بدء التشغيل هذا؟ + .add-startup-app = أضِف تطبيق بدء التشغيل ## Applications: Legacy Applications legacy-applications = توافق تطبيقات اكس11 - .desc = تغيير مقياس تطبيقات نظام النوافذ اكس11 والاختصارات العامة legacy-app-global-shortcuts = اختصارات عامة في تطبيقات اكس11 .desc = تسمح الاختصارات العامة بالتعرّف على ضغطات المفاتيح وأحداث زر الفأرة المُجراة في تطبيقٍ ما لتطبيقاتٍ أخرى — لميزات مثل «اضغط لتتحدث» أو «اضغط لكتم الصوت». مبدئيًا، يُعطّل هذا في تطبيقات اكس11 لضمان عدم تمكن التطبيقات الأخرى من مراقبة أحداث لوحة المفاتيح والفأرة التي تحتوي على معلومات حساسة. .none = لا مفاتيح @@ -781,9 +801,8 @@ system = النظام والحسابات ## System: About about = عن - .desc = اسم الجهاز ومعلومات العتاد ومبدئيات نظام التشغيل about-device = اسم الجهاز - .desc = هذا الاسم يظهر للشبكات الأخرى وأجهزة بلوتوث. + .desc = هذا الاسم يظهر للشبكات الأخرى وأجهزة بلوتوث about-hardware = العتاد .model = طراز العتاد .memory = الذاكرة @@ -802,23 +821,21 @@ about-related = الإعدادات ذات الصلة ## System: Firmware firmware = البرمجيات الثابتة - .desc = تفاصيل البرمجيات الثابتة. ## System: Users users = المستخدمون - .desc = الاستيثاق وحسابات المستخدمين. .admin = مدير .standard = عادي .profile-add = اختر صورة ملف تعريف administrator = مدير - .desc = يمكن للمديرين تغيير الإعدادات لجميع المستخدمين، وإضافة مستخدمين آخرين وإزالتهم. + .desc = يمكن للمديرين تغيير الإعدادات لجميع المستخدمين، وإضافة مستخدمين آخرين وإزالتهم add-user = أضِف مستخدم change-password = غيَّر كلمة السر remove-user = أزِل المستخدم full-name = الاسم الكامل -invalid-username = اسم المستخدم غير صالح. -password-mismatch = يجب أن تتطابق كلمة السر والتأكيد. +invalid-username = اسم المستخدم غير صالح +password-mismatch = يجب أن تتطابق كلمة السر والتأكيد save = حفظ never = أبدًا keyboard-numlock-boot = Numlock @@ -837,3 +854,60 @@ shadows-tiling = النوافذ المبلطة .clip = مطابقة زوايا النظام .shadow = طبِّق الظلال shadow-and-corners = ظل النافذة وزواياها +network-name = اسم الشبكة +qr-code-unavailable = رمز QR غير متاح +scan-to-connect-description = افحص رمز QR للاتصال بهذه الشبكة. +share = شارك الشبكة +place-here = اضع البريمجات هنا +workspaces-overview = نظرة عامة على مساحات العمل + .action-on-typing = الإجراء عند الكتابة + .none = لا شيء + .launcher = فتح المشغل + .applications = فتح التطبيقات +xdg-entry-wired = سلكي +xdg-entry-about-keywords = COSMIC;عن;حول +xdg-entry-comment = تطبيق الإعدادات لسطح مكتب COSMIC +xdg-entry-keywords = COSMIC;إعدادات; +xdg-entry-window-management-comment = إجراء مفتاح Super وخيارات التحكم في النوافذ وخيارات إضافية تبليط النوافذ +xdg-entry-mouse-keywords = COSMIC;فأرة;تسارع;تمرير; +xdg-entry-notifications-keywords = COSMIC;إشعار;قفل; +xdg-entry-startup-apps-keywords = COSMIC;بدء التشغيل;تطبيق; +xdg-entry-wired-keywords = COSMIC;سلكي;LAN;شبكة;اتصال; +xdg-entry-appearance-keywords = COSMIC;تمييز;لون;أيقونة;خط;سمة;نسق +xdg-entry-dock-keywords = COSMIC;مرسى;لوحة;بريمج +xdg-entry-panel-keywords = COSMIC;لوحة;بريمج +xdg-entry-window-management = إدارة النوافذ +xdg-entry-time-language-comment = أدِر نظام التاريخ والتوقيت والمنطقة واللغة +xdg-entry-desktop-keywords = COSMIC;سطح المكتب; +xdg-entry-x11-applications-keywords = COSMIC;X11;تطبيق;لعبة;التوافق; +xdg-entry-touchpad-keywords = COSMIC;لوحة اللمس;إيماءة; +xdg-entry-system-keywords = COSMIC;النظام;المعلومات;الحسابات;البرمجيات الثابتة; +xdg-entry-wireless-keywords = COSMIC;واي فاي;Wi-Fi;شبكة;اتصال; +xdg-entry-applications-comment = التطبيقات المبدئية وتطبيقات بدء التشغيل وإعدادات توافق تطبيقات اكس11 +xdg-entry-a11y-keywords = COSMIC;الإتاحة;A11y;شاشة;قارئ;مكبر;تباين;لون; +xdg-entry-wireless-comment = اتصالات الواي فاي وملفات تعريف الاتصال +xdg-entry-date-time-keywords = COSMIC;الوقت;المنطقة; +xdg-entry-wallpaper = الخلفية +xdg-entry-bluetooth-keywords = COSMIC;بلوتوث; +xdg-entry-network-keywords = COSMIC;شبكة;لاسلكي;واي فاي;VPN;ش‌خ‌ف;شبكة خاصة افتراضية; +xdg-entry-wallpaper-comment = صور الخلفية والألوان وخيارات عرض الشرائح +xdg-entry-wireless = واي فاي +xdg-entry-workspaces-keywords = COSMIC;مساحة العمل;التوجيه;نظرة عامة;الشاشة; +xdg-entry-system-comment = معلومات النظام والحسابات وتحديثات البرامج الثابتة +xdg-entry-wallpaper-keywords = COSMIC;خلفية;خلفية الشاشة;عرض شرائح; +xdg-entry-users-keywords = COSMIC;مستخدم;حساب; +xdg-entry-vpn-keywords = COSMIC;VPN;شبكة;اتصال;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;النظام;الوقت;التاريخ;المنطقة;اللغة; +xdg-entry-input-keywords = COSMIC;إدخال;لوحة مفاتيح;ماوس;فأرة; +xdg-entry-sound-keywords = COSMIC;صوت;صوتي;تنبيه;Pipewire; +xdg-entry-power-keywords = COSMIC;طاقة;مدخرة;بطارية +xdg-entry-default-apps-keywords = COSMIC;مبدئي;تطبيق +xdg-entry-region-language-keywords = COSMIC;المنطقة;اللغة;التاريخ;التنسيق;الوقت;الإعدادات المحلية;التوطين; +xdg-entry-applications-keywords = COSMIC;افتراضي;تطبيق;بدء التشغيل;X11;توافقية;مبدئي;اكس11 +xdg-entry-keyboard-keywords = COSMIC;لوحة المفاتيح;الإدخال;المصدر;الاختصارات; +xdg-entry-window-management-keywords = COSMIC;إدارة;النوافذ;التبليط;مفتاح;Super; +xdg-entry-workspaces-comment = اتجاه مساحة العمل ونظرة عامة وسلوك الشاشات المتعدّدة +xdg-entry-displays-keywords = COSMIC;عرض; +xdg-entry-workspaces = مساحات العمل +xdg-entry-wired-comment = الاتصالات السلكية وملفات تعريف الاتصال +no-search-results = لا توجد شبكات تطابق بحثك. diff --git a/i18n/be/cosmic_settings.ftl b/i18n/be/cosmic_settings.ftl index 5d107ec..c71556b 100644 --- a/i18n/be/cosmic_settings.ftl +++ b/i18n/be/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Правадныя - [wifi] Wi-Fi - [vpn] VPN - *[other] Невядомыя - } злучэнні і профілі злучэнняў. add-network = Дадаць сетку .profile = Дадаць профіль add-vpn = Дадаць VPN @@ -549,7 +542,7 @@ migrate-workspace = navigate = Перайсці replace = Замяніць shortcut-name = Назва спалучэння -system-controls = Элементы кантроля сістэмай +system-controls = Элементы кантролю сістэмай terminate = Завяршыць toggle-stacking = Пераключыць стасаванне акна type-key-combination = Увядзіце камбінацыю клавіш @@ -654,7 +647,7 @@ window-tiling = Укладанне вокнаў .toggle-floating = Пераключыць плавучасць акна .toggle-orientation = Пераключыць арыентацыю replace-shortcut-dialog = Замянць спалучэнне? - .desc = { $shortcut } выкарыстоўваецца для { $name }. Калі вы заменіце яго, { $name } будзе адаключана. + .desc = { $shortcut } выкарыстоўваецца для { $name }. Калі вы заменіце яго, { $name } будзе адключана. zoom-in = Павялічыць zoom-out = Паменшыць @@ -671,9 +664,9 @@ click-behavior = Паводзіны пры націску .click-finger = Другасны клік актывуецца двума пальцамі, а сярэдні клік — трыма пальцамі .button-areas = Другасны клік актывуецца ў ніжнім правым вугле, а сярэдні клік — у ніжнім цэнтры pinch-to-zoom = Шчыпок для маштабавання - .desc = Выкарыстоўвайце два пальцы для маштабавання змесціва праграм, якія падтрымліваюць маштабаванне. + .desc = Выкарыстоўвайце два пальцы для маштабавання змесціва праграм, якія падтрымліваюць маштабаванне tap-to-click = Націск для кліку - .desc = Уключае націск адным пальцам для асноўнага кліку, двума пальцамі — для другаснага кліку і трыма пальцамі — для сярэдняга кліку. + .desc = Уключае націск адным пальцам для асноўнага кліку, двума пальцамі — для другаснага кліку і трыма пальцамі — для сярэдняга кліку touchpad = Сэнсарная панэль .acceleration = Уключыць паскарэнне сэнсарнай панэлі .desc = Хуткасць сэнсарнай панэлі, параметры націскаў, жэсты. @@ -699,11 +692,11 @@ open-workspaces-view = Адкрыць агляд працоўных прасто time = Час і мова .desc = N/A time-date = Дата і час - .desc = Часавы пояс, аўтаматычныя налады гадзінніка і фарматаванне часу. + .desc = Часавы пояс, аўтаматычныя налады гадзінніка і фарматаванне часу .auto = Задаваць аўтаматычна - .auto-ntp = Дата і час будуць абнаўляцца аўтаматычка, калі заданы часавы пояс. -time-zone = Часовы пояс - .auto = Аўтаматычны часовы пояс + .auto-ntp = Дата і час будуць абнаўляцца аўтаматычна, калі зададзены часавы пояс +time-zone = Часавы пояс + .auto = Аўтаматычны часавы пояс .auto-info = Патрабуецца доступ да месцазнаходжання і інтэрнэту time-format = Фармат даты і часу .twenty-four = 24-гадзінны фармат @@ -715,7 +708,7 @@ time-format = Фармат даты і часу .sunday = Нядзеля .monday = Панядзелак time-region = Рэгіён і мова - .desc = Фармат даты, часу і лікаў у адпаведнасці з рэгіёнам. + .desc = Фармат даты, часу і лікаў у адпаведнасці з рэгіёнам formatting = Фарматаванне .dates = Даты .time = Час @@ -751,21 +744,21 @@ default-apps = Праграмы па змаўчанні ## Applications: Startup Applications -startup-apps = Праграмы пры запуску +startup-apps = Праграмы для аўтазапуску .desc = Наладзьце праграмы, якія запускаюцца пры ўваходзе ў сістэму. .add = Дадаць праграму .user = Праграмы, якія запускаюцца падчас вашага ўвахода ў сістэму .none = У аўтазапуску няма праграм .remove-dialog-title = Выдаліць { $name }? - .remove-dialog-description = Вы сапраўды жадаеце выдаліць гэта як праграму для запуску? - .search-for-application = Пошук праграмы + .remove-dialog-description = Выдаліць гэта як праграму для аўтазапуску? + .add-startup-app = Дадаць праграму для аўтазапуску ## Applications: Legacy Applications legacy-applications = Сумяшчальнасць праграм X11 - .desc = Маштабаванне праграм аконнай сістэмы X11 і глабальныя спалучэнні клавіш. + .desc = Маштабаванне праграм аконнай сістэмы X11 і глабальныя спалучэнні клавіш legacy-app-global-shortcuts = Глабальныя спалучэнні клавіш у праграмах X11 - .desc = Глабальныя спалучэнні клавіш дазваляюць распазнаваць націсканні клавіш і падзеі кнопак мышы ў праграмах іншымі праграмамі для такіх функцый, як "націсні і кажы" або "націсні і адключы гук". Па змаўчанні гэта адключана ў праграмах X11, каб іншыя праграмы не маглі маніторыць падзеі клавіятуры і мышы, якія змяшчаюць канфідэнцыйную інфармацыю. + .desc = Глабальныя спалучэнні клавіш дазваляюць распазнаваць націсканні клавіш і падзеі кнопак мышы ў праграмах іншымі праграмамі для такіх функцый, як "націсні і кажы" або "націсні і адключы гук". Стандартна, Глабальныя спалучэнні адключаны ў праграмах X11, каб іншыя праграмы не маглі кантраляваць падзеі клавіятуры і мышы, якія змяшчаюць канфідэнцыяльную інфармацыю. .none = Без клавіш .modifiers = Мадыфікатары (Super, Shift, Control, Alt) .combination = Усе клавішы, пакуль націснутыя мадыфікатары Super, Control або Alt @@ -775,22 +768,22 @@ legacy-app-scaling = Маштабаванне праграм аконнай сі .scaled-gaming = Аптымізаваць для гульняў і поўнаэкранных праграм .gaming-description = Праграмы X11 могуць выглядаць крыху большымі/меншымі ў параўнанні з праграмамі Wayland. .scaled-applications = Аптымізаваць для праграм - .applications-description = Гульні і поўнаэкранныя праграмы X11 могуць не адпавядаць разрозненню вашага дысплея. + .applications-description = Гульні і поўнаэкранныя праграмы X11 могуць не адпавядаць раздзяляльнасці вашага дысплэя. .scaled-compatibility = Рэжым максімальнай сумяшчальнасці .compatibility-description = Праграмы X11 могуць выглядаць размытымі на HiDPI-экранах. - .preferred-display = Выбраны дысплей для гульняў і поўнаэкранных праграм X11 + .preferred-display = Выбраны дысплэй для гульняў і поўнаэкранных праграм X11 .no-display = Няма ## System -system = Сістэма і акаўнты +system = Сістэма і ўліковыя запісы ## System: About about = Пра сістэму - .desc = Назва прылады, інфармацыя аб абсталяванні, стандартныя налады аперацыйнай сістэмы. + .desc = Назва прылады, інфармацыя аб абсталяванні, стандартныя налады аперацыйнай сістэмы about-device = Назва прылады - .desc = Гэтая назва адлюстроўваецца іншым сеткавым або блютуз прыладам. + .desc = Гэтая назва адлюстроўваецца іншым сеткавым або блютуз прыладам about-hardware = Абсталяванне .model = Мадэль абсталявання .memory = Памяць @@ -800,6 +793,7 @@ about-hardware = Абсталяванне about-os = Аперацыйная сістэма .os = Аперацыйная сістэма .os-architecture = Архітэктура аперацыйнай сістэмы + .kernel = Версія ядра .desktop-environment = Асяроддзе працоўнага стала .windowing-system = Сістэма вокнаў about-related = Спадарожныя налады @@ -808,7 +802,7 @@ about-related = Спадарожныя налады ## System: Firmware firmware = Праграмнае забеспячэнне - .desc = Дэталі праграмнага забеспячэння. + .desc = Дэталі праграмнага забеспячэння ## System: Users @@ -818,13 +812,13 @@ users = Карыстальнікі .standard = Звычайны .profile-add = Выбраць выяву профілю administrator = Адміністратар - .desc = Адміністратары могуць змяняць налады для ўсіх карыстальнікаў, дадаваць і выдаляць іншых карыстальнікаў. + .desc = Адміністратары могуць змяняць налады для ўсіх карыстальнікаў, дадаваць і выдаляць іншых карыстальнікаў add-user = Дадаць карыстальніка change-password = Змяніць пароль remove-user = Выдаліць карыстальніка full-name = Поўнае імя -invalid-username = Недапушчальнае імя карыстальніка. -password-mismatch = Пароль і пацвярджэнне мусяць супадаць. +invalid-username = Недапушчальнае імя карыстальніка +password-mismatch = Пароль і пацвярджэнне мусяць супадаць save = Захаваць amplification = Узмацненне .desc = Дазваляе павялічваць гучнасць да 150%. diff --git a/i18n/bg/cosmic_settings.ftl b/i18n/bg/cosmic_settings.ftl index 000f57e..ac34207 100644 --- a/i18n/bg/cosmic_settings.ftl +++ b/i18n/bg/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Кабелни - [wifi] Безжични - [vpn] ВЧМ - *[other] Неизвестни - } връзки и профили на връзките. add-network = Добавяне на мрежа .profile = Добавяне на профил add-vpn = Добавяне на ВЧМ diff --git a/i18n/cs/cosmic_settings.ftl b/i18n/cs/cosmic_settings.ftl index 0f5e73d..bc33e86 100644 --- a/i18n/cs/cosmic_settings.ftl +++ b/i18n/cs/cosmic_settings.ftl @@ -2,6 +2,65 @@ app = Nastavení COSMIC unknown = Neznámé number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = O systému +xdg-entry-about-comment = Název zařízení, informace o hardwaru, výchozí nastavení operačního systému +xdg-entry-a11y = Přístupnost +xdg-entry-a11y-comment = Čtečka obrazovky, lupa, vysoký kontrast a barevné filtry +xdg-entry-appearance = Vzhled +xdg-entry-appearance-comment = Barvy zvýraznění a motivy +xdg-entry-applications = Aplikace +xdg-entry-bluetooth-comment = Správa Bluetooth zařízení +xdg-entry-date-time = Datum a čas +xdg-entry-date-time-comment = Časové pásmo, automatické nastavení hodin a formátování času +xdg-entry-default-apps = Výchozí aplikace +xdg-entry-default-apps-comment = Výchozí webový prohlížeč, poštovní klient, správce souborů a další aplikace +xdg-entry-desktop = Plocha +xdg-entry-desktop-comment = Tapeta, vzhled, panel, dok, správa oken a nastavení pracovní plochy +xdg-entry-displays = Obrazovky +xdg-entry-displays-comment = Správa nastavení obrazovek +xdg-entry-dock = Dok +xdg-entry-dock-comment = Volitelná lišta pro aplikace a applety +xdg-entry-input = Vstupní zařízení +xdg-entry-input-comment = Nastavení klávesnice a myši +xdg-entry-keyboard = Klávesnice +xdg-entry-keyboard-comment = Vstupní zdroje, přepínání, vkládání speciálních znaků, zkratky +xdg-entry-mouse = Myš +xdg-entry-mouse-comment = Rychlost myši, zrychlení, přirozené rolování +xdg-entry-network = Síť a Wi-Fi +xdg-entry-network-comment = Správa síťových připojení +xdg-entry-notifications = Oznámení +xdg-entry-notifications-comment = Režim Nerušit, oznámení na zamykací obrazovce a nastavení jednotlivých aplikací +xdg-entry-panel-comment = Hlavní systémová lišta pro menu a applety +xdg-entry-power = Napájení a baterie +xdg-entry-power-comment = Režimy napájení a možnosti úspory energie +xdg-entry-region-language = Region a jazyk +xdg-entry-region-language-comment = Formátování data, času a čísel podle vašeho regionu +xdg-entry-sound = Zvuk +xdg-entry-sound-comment = Nastavení zvuku pro zařízení, upozornění a aplikace +xdg-entry-startup-apps = Automaticky spouštěné aplikace +xdg-entry-startup-apps-comment = Správa aplikací, které se spouštějí při přihlášení +xdg-entry-system = Systém a účty +xdg-entry-system-comment = Informace o systému, účty a aktualizace firmwaru +xdg-entry-time-language = Čas a jazyk +xdg-entry-time-language-comment = Správa systémového data, času, regionu a jazyka +xdg-entry-touchpad-comment = Rychlost touchpadu, možnosti klikání a gesta +xdg-entry-users = Uživatelé +xdg-entry-users-comment = Ověření a uživatelské účty +xdg-entry-vpn-comment = VPN připojení a profily +xdg-entry-wallpaper = Tapeta +xdg-entry-wallpaper-comment = Obrázky tapet, barvy a možnosti prezentace +xdg-entry-window-management = Správa oken +xdg-entry-window-management-comment = Akce klávesy Super, možnosti ovládání oken a další možnosti dlaždicového režimu oken +xdg-entry-wired = Drátové +xdg-entry-wired-comment = Drátové připojení a profily +xdg-entry-wireless-comment = Wi-Fi připojení a profily +xdg-entry-workspaces = Pracovní plochy +xdg-entry-workspaces-comment = Orientace pracovních ploch, přehled a chování při více monitorech +xdg-entry-x11-applications = Kompatibilita aplikací X11 +xdg-entry-x11-applications-comment = Měřítko aplikací využívajících okenní systém X11, hlavní displej a globální zkratky + ## Desktop desktop = Plocha @@ -9,12 +68,10 @@ desktop = Plocha ## Desktop: Appearance appearance = Vzhled - .desc = Doplňkové barvy a témata ## Desktop: Notifications notifications = Oznámení - .desc = Nerušit, oznámení na zamykací obrazovce a nastavení pro specifické aplikace ## Desktop: Options @@ -23,19 +80,17 @@ hot-corner = Aktivní roh window-controls = Ovládání oken .maximize = Zobrazit tlačítko pro maximalizaci .minimize = Zobrazit tlačítko pro minimalizaci - .active-window-hint = Zobrazit zvýraznění aktivního okna + .active-window-hint = Zobrazit ohraničení aktivního okna dock = Dok - .desc = Volitelná lišta pro aplikace a applety ## Desktop: Panel panel = Panel - .desc = Hlavní systémová lišta pro menu a applety panel-behavior-and-position = Chování a pozice .autohide = Automaticky skrýt panel .dock-autohide = Automaticky skrýt dok .position = Pozice na obrazovce - .display = Zobrazit na displeji + .display = Zobrazit na obrazovce panel-top = Nahoře panel-bottom = Dole panel-left = Vlevo @@ -72,16 +127,15 @@ all = Všechny ## Desktop: Tapeta -wallpaper = Pozadí +wallpaper = Tapeta .change = Měnit obrázek každých - .desc = Obrázky pozadí, barvy a možnosti prezentace - .fit = Způsob umístění pozadí - .folder-dialog = Vyberte složku s obrázky pozadí - .image-dialog = Vyberte obrázek pozadí - .plural = Pozadí - .same = Stejné pozadí na všech displejích + .fit = Způsob umístění tapety + .folder-dialog = Vyberte složku s tapetami + .image-dialog = Vyberte obrázek tapety + .plural = Tapety + .same = Stejná tapeta na všech obrazovkách .slide = Prezentace -all-displays = Všechny displeje +all-displays = Všechny obrazovky colors = Barvy fit-to-screen = Přizpůsobit obrazovce x-minutes = @@ -100,15 +154,14 @@ x-hours = ## Desktop: Workspaces workspaces = Pracovní plochy - .desc = Chování a orientace pracovních ploch workspaces-behavior = Chování pracovních ploch .dynamic = Dynamické pracovní plochy .dynamic-desc = Automaticky odstraní prázdné pracovní plochy. .fixed = Fixní množství pracovních ploch .fixed-desc = Přidat nebo odstranit pracovní plochy v přehledu. workspaces-multi-behavior = Chování při více monitorech - .span = Pracovní plochy obsadí více displejů - .separate = Každý displej má svou vlastní pracovní plochu + .span = Pracovní plochy obsadí více obrazovek + .separate = Každá obrazovka má svou vlastní pracovní plochu ## Networking: Wired @@ -126,13 +179,11 @@ online-accounts = Online účty ## Time & Language time = Čas a jazyk - .desc = N/A time-date = Datum a čas - .desc = Časová zóna, automatické nastavení hodin a formátování času .auto = Nastavit automaticky - .auto-ntp = Pokud nastavíte časovou zónu, datum a čas se bude aktualizovat automaticky -time-zone = Časová zóna - .auto = Automatická časová zóna + .auto-ntp = Pokud nastavíte časové pásmo, datum a čas se bude aktualizovat automaticky +time-zone = Časové pásmo + .auto = Automatické časové pásmo .auto-info = Vyžaduje službu polohy a internet time-format = Formát data a času .twenty-four = 24 hodinový čas @@ -144,12 +195,10 @@ time-format = Formát data a času .sunday = Neděle .monday = Pondělí time-region = Region a jazyk - .desc = Formátujte datumy, časy a čísla podle vašeho regionu ## Sound sound = Zvuk - .desc = N/A sound-output = Výstup .volume = Hlasitost výstupu .device = Výstupní zařízení @@ -175,7 +224,6 @@ system = Systém a účty ## System: About about = O systému - .desc = Název zařízení, informace o hardwaru, výchozí nastavení operačního systému about-device = Název počítače .desc = Tento název se zobrazí ostatním síťovým a Bluetooth zařízením about-hardware = Hardware @@ -188,7 +236,7 @@ about-os = Operační systém .os = Operační systém .os-architecture = Architektura operačního systému .kernel = Verze jádra - .desktop-environment = Desktopové prostředí + .desktop-environment = Prostředí plochy .windowing-system = Okenní systém about-related = Podobná nastavení .support = Získat podporu @@ -196,12 +244,10 @@ about-related = Podobná nastavení ## System: Firmware firmware = Firmware - .desc = Podrobnosti o firmwaru ## System: Users users = Uživatelé - .desc = Ověření a uživatelské účty .admin = Administrátor .standard = Standardní .profile-add = Vyberte obrázek profilu @@ -223,15 +269,14 @@ scrolling = Rolování ## Input: Keyboard keyboard = Klávesnice - .desc = Metody zadávání, přepínání, vkládání speciálních znaků, zkratky -keyboard-sources = Metody zadávání - .desc = Metody zadávání se dají přepínat pomocí Super + Mezerník. Toto se dá změnit v nastavení klávesových zkratek. +keyboard-sources = Vstupní zdroje + .desc = Vstupní zdroje lze přepínat pomocí Super + Mezerník. Toto se dá změnit v nastavení klávesových zkratek. .move-up = Posunout nahoru .move-down = Posunout dolů .settings = Nastavení .view-layout = Zobrazit rozložení klávesnice .remove = Odstranit - .add = Přidat metodu zadávání + .add = Přidat vstupní zdroj keyboard-special-char = Zadávání speciálních znaků .alternate = Klávesa pro náhradní znaky .compose = Klávesa Compose @@ -241,12 +286,11 @@ keyboard-special-char = Zadávání speciálních znaků ## Input: Keyboard: Shortcuts keyboard-shortcuts = Klávesové zkratky - .desc = Zobrazit a změnit klávesové zkratky + .desc = Zobrazit a změnit zkratky ## Input: Mouse mouse = Myš - .desc = Rychlost myši, zrychlení, přirozené rolování .speed = Rychlost myši .acceleration = Povolit zrychlení myši @@ -254,7 +298,6 @@ mouse = Myš touchpad = Touchpad .acceleration = Povolit zrychlení touchpadu - .desc = Rychlost touchpadu, nastavení klikání, gesta .speed = Rychlost touchpadu dbus-connection-error = Selhalo připojení k DBus ok = OK @@ -277,15 +320,14 @@ settings = Nastavení username = Uživatelské jméno visible-networks = Viditelné sítě identity = Identita -dark = Tmavé -light = Světlé +dark = Tmavý +light = Světlý wireguard-dialog = Přidat zařízení WireGuard .description = Vyberte název zařízení pro nastavení WireGuard. activate = Aktivovat confirm = Potvrdit enable = Povolit bluetooth = Bluetooth - .desc = Správa Bluetooth zařízení. .status = Tento systém je viditelný jako { $aliases }, dokud jsou otevřena nastavení Bluetooth. .connected = Připojeno .connecting = Připojování @@ -324,14 +366,14 @@ fill = Vyplnit open-new-folder = Otevřít novou složku recent-folders = Nedávné složky never = Nikdy -accent-color = Doplňková barva +accent-color = Barva zvýraznění app-background = Pozadí okna auto = Auto close = Zavřít replace = Nahradit color-picker = Výběr barvy copied-to-clipboard = Zkopírováno do schránky -copy-to-clipboard = Zkopírovat do schránky +copy-to-clipboard = Kopírovat do schránky export = Exportovat hex = Hex import = Importovat @@ -339,7 +381,7 @@ mode-and-colors = Režim a barvy recent-colors = Nedávné barvy reset-to-default = Obnovit výchozí rgb = RGB -window-hint-accent = Barva zvýraznění aktivního okna +window-hint-accent = Barva ohraničení aktivního okna add-network = Přidat síť .profile = Přidat profil auth-dialog = Vyžadováno ověření @@ -371,19 +413,12 @@ vpn = VPN .error = Nepodařilo se přidat nastavení VPN .remove = Odstranit profil připojení .select-file = Vybrat konfigurační soubor VPN -connections-and-profiles = - { $variant -> - [wired] Drátové - [wifi] Wi-Fi - [vpn] VPN - *[other] Neznámé - } připojení a profily. vpn-error = Chyba VPN .config = Nepodařilo se přidat nastavení VPN .connect = Nepodařilo se připojit k VPN .connection-editor = Editor připojení selhal .connection-settings = Nepodařilo se získat nastavení aktivních připojení - .updating-state = Nepodařilo se aktualizovat stav síťového manažera + .updating-state = Nepodařilo se aktualizovat stav správce sítě .wireguard-config-path = Chybně zadaná cesta souboru nastavení WireGuard .wireguard-config-path-desc = Vybraný soubor musí být na lokálním souborovém systému .wireguard-device = Nepodařilo se vytvořit zařízení WireGuard @@ -396,7 +431,7 @@ vpn-error = Chyba VPN wifi = Wi-Fi .adapter = Adaptér Wi-Fi { $id } .forget = Zapomenout tuto síť -window-hint-accent-toggle = Použít doplňkovou barvu pro zvýraznění aktivního okna +window-hint-accent-toggle = Použít barvu zvýraznění pro ohraničení aktivního okna auto-switch = Automaticky přepínat mezi světlými a tmavými režimy .sunrise = Přepne na světlý režim při východu slunce .sunset = Přepne na tmavý režim při západu slunce @@ -409,16 +444,15 @@ container-background = Pozadí kontejneru control-tint = Odstín ovládacích prvků .desc = Používá se pro pozadí standardních tlačítek, vyhledávacích polí, textových vstupů a podobných komponent frosted = Efekt zmrazeného okna na systémovém rozhraní - .desc = Aplikuje rozmazané pozadí na panel, dok, applety, spouštěč a knihovnu aplikací -enable-export = Použít současné téma pro GNOME aplikace - .desc = Ne všechny toolkity podporují automatické přepínání. Aplikace, které nejsou postaveny na COSMIC toolkitu mohou vyžadovat restart po změně tématu. + .desc = Použije rozmazané pozadí pro panel, dok, applety, spouštěč a knihovnu aplikací +enable-export = Použít aktuální motiv v aplikacích GNOME + .desc = Ne všechny toolkity podporují automatické přepínání. Aplikace, které nejsou postaveny na COSMIC toolkitu mohou vyžadovat restart po změně motivu. password-mismatch = Heslo a jeho potvrzení se musí shodovat invalid-username = Neplatné uživatelské jméno -icon-theme = Téma ikon - .desc = Aplikuje jinou sadu ikon na aplikace -monospace-font = Monospace písmo +icon-theme = Motiv ikon + .desc = Použije jinou sadu ikon pro aplikace +monospace-font = Písmo s pevnou šířkou window-management = Správa oken - .desc = Akce klávesy Super, možnosti ovládání oken a další možnosti dlaždicového režimu oken window-tiling = Dlaždicový režim oken .horizontal = Nastavit horizontální orientaci .vertical = Nastavit vertikální orientaci @@ -427,8 +461,8 @@ window-tiling = Dlaždicový režim oken .toggle-stacking = Přepnout režim skládání oken .toggle-floating = Přepnout plovoucí okno .toggle-orientation = Přepnout orientaci -icons-and-toolkit = Témata ikon a toolkitů -interface-font = Systémové písmo +icons-and-toolkit = Motivy ikon a toolkitů +interface-font = Písmo systému super-key = Akce klávesy Super .launcher = Otevřít spouštěč .workspaces = Otevřít pracovní plochy @@ -483,18 +517,17 @@ color-filter = Typ barevného filtru text-tint = Odstín textu rozhraní .desc = Používá se k odvození barev textu rozhraní, které mají dostatečný kontrast na různých površích experimental-settings = Experimentální nastavení -display = Displeje - .desc = Spravujte displeje a noční světlo - .arrangement = Uspořádání displejů - .arrangement-desc = Přetáhněte displeje pro jejich uspořádání - .enable = Povolit displej - .external = { $size } { $output } Externí displej - .laptop = { $size } Displej laptopu - .options = Možnosti displeje +display = Obrazovky + .arrangement = Uspořádání obrazovek + .arrangement-desc = Přetáhněte obrazovky pro jejich uspořádání + .enable = Povolit obrazovku + .external = { $size } { $output } externí obrazovka + .laptop = { $size } obrazovka notebooku + .options = Možnosti obrazovky .refresh-rate = Obnovovací frekvence .resolution = Rozlišení - .scale = Škálování - .additional-scale-options = Další možnosti škálování + .scale = Měřítko + .additional-scale-options = Další možnosti měřítka style = Styl .round = Kulatý .slightly-round = Lehce kulatý @@ -504,7 +537,7 @@ interface-density = Hustota rozhraní .compact = Kompaktní .spacious = Prostorné window-management-appearance = Správa oken - .active-hint = Velikost zvýraznění aktivního okna + .active-hint = Velikost ohraničení aktivního okna .gaps = Mezery kolem oken v dlaždicovém režimu mirroring = Zrcadlení .id = Zrcadlení { $id } @@ -512,14 +545,14 @@ mirroring = Zrcadlení .mirror = Zrcadlit { $display } .project = Vysílat na { $display -> - [all] všechny displeje + [all] všechny obrazovky *[other] { $display } } .project-count = Vysílání na { $count } { $count -> - [one] další displej - [few] další displeje - *[other] dalších displejů + [one] další obrazovku + [few] další obrazovky + *[other] dalších obrazovek } night-light = Noční světlo .auto = Automaticky (od západu do východu) @@ -537,14 +570,19 @@ vrr = Variabilní obnovovací frekvence scheduling = Plánování .manual = Manuální plán dialog = Dialog - .title = Ponechat tato nastavení displeje? + .title = Ponechat toto nastavení obrazovky? .keep-changes = Ponechat změny - .change-prompt = Změny nastavení se automaticky zruší za { $time } sekund. - .revert-settings = Obnovit nastavení + .change-prompt = + Původní nastavení se automaticky obnoví { $time -> + [0] nyní. + [one] za 1 sekundu. + [few] za { $time } sekundy. + *[other] za { $time } sekund. + } + .revert-settings = Obnovit původní amplification = Zesílení .desc = Umožňuje zesílit zvuk až na 150% power = Napájení a baterie - .desc = Spravujte nastavení napájení battery = Baterie .minute = { $value } { $value -> @@ -584,11 +622,10 @@ power-mode = Režim napájení power-saving = Možnosti úspory energie .turn-off-screen-after = Vypnout obrazovku za .auto-suspend = Automaticky uspat za - .auto-suspend-ac = Automaticky uspávat při napájení z elektrické sítě - .auto-suspend-battery = Automaticky uspávat při napájení pouze z baterie + .auto-suspend-ac = Automaticky uspat při napájení ze sítě + .auto-suspend-battery = Automaticky uspat při napájení z baterie disable-while-typing = Zakázat při psaní input-devices = Vstupní zařízení - .desc = Vstupní zařízení modified = { $count } změněných slow = Pomalá fast = Rychlá @@ -597,16 +634,16 @@ long = Dlouhé keyboard-typing-assist = Psaní .repeat-rate = Frekvence opakování .repeat-delay = Zpoždění opakování -keyboard-numlock-boot = Numlock - .boot-state = Stav při spuštění systému +keyboard-numlock-boot = Num Lock + .boot-state = Stav klávesy při spuštění systému .last-boot = Poslední spuštění systému - .on = Zapnuto - .off = Vypnuto - .set = Nastavit stav numlock při spuštění systému + .on = Zapnutý + .off = Vypnutý + .set = Num Lock při spuštění systému added = Přidáno type-to-search = Pište pro vyhledávání... -show-extended-input-sources = Zobrazit rozšířené metody zadávání -input-source-switch = Přepnout metodu zadávání klávesnice +show-extended-input-sources = Zobrazit rozšířené vstupní zdroje +input-source-switch = Přepnout vstupní zdroj klávesnice add-another-keybinding = Přidat další klávesovou zkratku command = Příkaz custom = Vlastní @@ -661,7 +698,7 @@ manage-windows = Správa oken .minimize = Minimalizovat okno .resize-inwards = Zmenšit okno .resize-outwards = Zvětšit okno - .toggle-sticky = Přepnout přilepené okno + .toggle-sticky = Přepnout „okno vždy nahoře“ zoom-in = Přiblížit zoom-out = Oddálit preferred-languages = Preferované jazyky @@ -703,19 +740,19 @@ move-windows = Přesouvání oken .prev-workspace = Přesunout okno na předchozí pracovní plochu .next-workspace = Přesunout okno na další pracovní plochu .last-workspace = Přesunout okno na poslední pracovní plochu - .next-display = Přesunout okno na další displej - .prev-display = Přesunout okno na předchozí displej + .next-display = Přesunout okno na další obrazovku + .prev-display = Přesunout okno na předchozí obrazovku .send-to-prev-workspace = Přesunout okno na předchozí pracovní plochu .send-to-next-workspace = Přesunout okno na další pracovní plochu system-shortcut = Systém .app-library = Otevřít knihovnu aplikací - .brightness-down = Snížit jas displeje - .brightness-up = Zvýšit jas displeje - .display-toggle = Přepnout interní displej + .brightness-down = Snížit jas obrazovky + .brightness-up = Zvýšit jas obrazovky + .display-toggle = Přepnout vestavěnou obrazovku .home-folder = Otevřít domovskou složku .keyboard-brightness-down = Snížit jas klávesnice .keyboard-brightness-up = Zvýšit jas klávesnice - .launcher = Otevřít Spouštěč + .launcher = Otevřít spouštěč .log-out = Odhlásit se .lock-screen = Zamknout obrazovku .mute = Ztlumit zvukový výstup @@ -763,9 +800,8 @@ formatting = Formátování .measurement = Jednotky .paper = Papír default-apps = Výchozí aplikace - .desc = Výchozí webový prohlížeč, poštovní klient, prohlížeč souborů a další aplikace .web-browser = Webový prohlížeč - .file-manager = Prohlížeč souborů + .file-manager = Správce souborů .mail-client = Poštovní klient .music = Hudba .video = Video @@ -774,32 +810,31 @@ default-apps = Výchozí aplikace .terminal = Terminál .other-associations = Ostatní asociace .text-editor = Textový editor -startup-apps = Automatické spouštění aplikací - .desc = Nastavte aplikace, které se spustí při přihlášení + .not-installed = Není nainstalováno +startup-apps = Automaticky spouštěné aplikace .add = Přidat aplikaci .user = Aplikace spouštěné při přihlášení .none = Nejsou přidány žádné aplikace pro automatické spouštění .remove-dialog-title = Odstranit { $name }? .remove-dialog-description = Odstranit tuto aplikaci z automatického spouštění? .add-startup-app = Přidat aplikaci pro spouštění -legacy-applications = Kompatibilita X11 aplikací - .desc = Škálování a globální klávesové zkratky aplikací využívajících okenní systém X11 -legacy-app-global-shortcuts = Globální klávesové zkratky X11 aplikací - .desc = Globální klávesové zkratky umožňují, aby stisky kláves a události tlačítek myši provedené v aplikacích byly rozpoznány i jinými aplikacemi, například pro funkce typu push-to-talk nebo push-to-mute. Ve výchozím nastavení jsou v aplikacích X11 zakázány, aby jiné aplikace nemohly sledovat stisky kláves a události myši obsahující citlivé informace. +legacy-applications = Kompatibilita aplikací X11 +legacy-app-global-shortcuts = Globální zkratky aplikací X11 + .desc = Globální zkratky umožňují, aby stisky kláves a události tlačítek myši provedené v aplikacích byly rozpoznány i jinými aplikacemi, například pro funkce typu push-to-talk nebo push-to-mute. Ve výchozím nastavení jsou v aplikacích X11 zakázány, aby jiné aplikace nemohly sledovat stisky kláves a události myši obsahující citlivé informace. .none = Žádné klávesy .modifiers = Modifikátory (Super, Shift, Control, Alt) .combination = Všechny klávesy při stisku modifikátorů Super, Control nebo Alt .all = Všechny klávesy - .mouse = Události tlačítek myši v X11 aplikacích -legacy-app-scaling = Škálování aplikací v okenním systému X11 + .mouse = Události tlačítek myši v aplikacích X11 +legacy-app-scaling = Měřítko aplikací v okenním systému X11 .scaled-gaming = Optimalizovat pro hry a aplikace na celé obrazovce - .gaming-description = Aplikace X11 se mohou zdát o něco větší/menší v porovnání s Wayland aplikacemi + .gaming-description = Aplikace X11 se mohou zdát o něco větší/menší v porovnání s aplikacemi Wayland .scaled-applications = Optimalizovat pro aplikace - .applications-description = Hry a aplikace X11 na celé obrazovce nemusí odpovídat rozlišení vašeho displeje + .applications-description = Hry a aplikace X11 na celé obrazovce nemusí odpovídat rozlišení vaší obrazovky .scaled-compatibility = Režim maximální kompatibility .compatibility-description = Aplikace X11 mohou na HiDPI obrazovkách vypadat rozmazaně - .preferred-display = Preferovaný displej pro hry a aplikace X11 na celé obrazovce - .no-display = Žádný + .preferred-display = Preferovaná obrazovka pro hry a aplikace X11 na celé obrazovce + .no-display = Žádná place-here = Sem umístěte applety network-name = Název sítě qr-code-unavailable = QR kód není dostupný @@ -815,3 +850,46 @@ shadows-tiling = Okna v dlaždicovém režimu .shadow = Použít stíny shadows-floating = Plovoucí okna .clip = Sjednotit rohy podle systému a použít stíny +workspaces-overview = Přehled pracovních ploch + .action-on-typing = Akce při psaní + .none = Žádná + .launcher = Otevřít spouštěč + .applications = Otevřít aplikace +xdg-entry-notifications-keywords = COSMIC;Oznámení;Zámek;Zamykání;Zamykací; +xdg-entry-touchpad = Touchpad +xdg-entry-mouse-keywords = COSMIC;Myš;Zrychlení;Rolování; +xdg-entry-startup-apps-keywords = COSMIC;Automatické;Spuštění;Spouštění;Start;Aplikace; +xdg-entry-wired-keywords = COSMIC;Drátové;LAN;Síť;Připojení; +xdg-entry-appearance-keywords = COSMIC;Zvýraznění;Barva;Barvy;Akcent;Ikona;Ikony;Font;Písmo;Písma;Témata;Motivy; +xdg-entry-dock-keywords = COSMIC;Dok;Panel;Applet; +xdg-entry-panel-keywords = COSMIC;Panel;Applet; +xdg-entry-desktop-keywords = COSMIC;Plocha; +xdg-entry-touchpad-keywords = COSMIC;Touchpad;Gesta; +xdg-entry-system-keywords = COSMIC;Systém;Informace;Účty;Účet;Firmware; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Síť;Připojení; +xdg-entry-applications-comment = Výchozí aplikace, automaticky spouštěné aplikace a nastavení kompatibility aplikací X11 +xdg-entry-about-keywords = COSMIC;O systému; +xdg-entry-panel = Panel +xdg-entry-a11y-keywords = COSMIC;Přístupnost;A11y;Obrazovka;Obrazovky;Čtečka;Lupa;Přiblížení;Kontrast;Barva;Barvy; +xdg-entry-date-time-keywords = COSMIC;Čas;Pásmo;Zóna; +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-network-keywords = COSMIC;Síť;Bezdrátové;WiFi;VPN; +xdg-entry-wireless = Wi-Fi +xdg-entry-wallpaper-keywords = COSMIC;Tapeta;Tapety;Pozadí;Prezentace; +xdg-entry-users-keywords = COSMIC;Uživatel;Uživatelé;Účet;Účty; +xdg-entry-vpn-keywords = COSMIC;VPN;Síť;Připojení;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;Systém;Čas;Datum;Region;Oblast;Jazyk; +xdg-entry-input-keywords = COSMIC;Vstup;Klávesnice;Myš;Myši; +xdg-entry-comment = Aplikace nastavení pro prostředí COSMIC +xdg-entry-sound-keywords = COSMIC;Zvuk;Audio;Upozornění;Pipewire; +xdg-entry-power-keywords = COSMIC;Napájení;Baterie; +xdg-entry-default-apps-keywords = COSMIC;Výchozí;Aplikace; +xdg-entry-keywords = COSMIC;Nastavení;Nastavit; +xdg-entry-region-language-keywords = COSMIC;Region;Oblast;Jazyk;Datum;Formát;Čas;Lokalizace; +xdg-entry-applications-keywords = COSMIC;Výchozí;Aplikace;Automatické;Spuštění;Spouštění;Start;X11;Kompatibilita; +xdg-entry-keyboard-keywords = COSMIC;Klávesnice;Vstup;Zdroj;Zdroje;Metoda;Metody;Zkratky; +xdg-entry-window-management-keywords = COSMIC;Okno;Okna;Správa;Dlaždicový režim;Super;Klávesa; +xdg-entry-displays-keywords = COSMIC;Obrazovka;Obrazovky;Displeje;Monitory;Zobrazení;Rozlišení;Měřítko;Škálování;Orientace;Obnovovací frekvence;Variabilní;VRR; +xdg-entry-workspaces-keywords = COSMIC;Pracovní;Plocha;Plochy;Orientace;Přehled;Sledování; +xdg-entry-x11-applications-keywords = COSMIC;X11;Aplikace;Hra;Hry;Kompatibilita; +no-search-results = Žádné sítě neodpovídají vašemu vyhledávání. diff --git a/i18n/da/cosmic_settings.ftl b/i18n/da/cosmic_settings.ftl index 8c2e41c..43cc54c 100644 --- a/i18n/da/cosmic_settings.ftl +++ b/i18n/da/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Kablet - [wifi] Wi-Fi - [vpn] VPN - *[other] Ukendt - } forbindelser og forbindelsesprofiler. add-network = Tilføj Netværk .profile = Tilføj profil add-vpn = Tilføj VPN diff --git a/i18n/de/cosmic_settings.ftl b/i18n/de/cosmic_settings.ftl index 6e20055..6c0dfdf 100644 --- a/i18n/de/cosmic_settings.ftl +++ b/i18n/de/cosmic_settings.ftl @@ -1,4 +1,4 @@ -app = COSMIC Einstellungen +app = COSMIC-Einstellungen dbus-connection-error = Verbindung zum DBus ist fehlgeschlagen ok = OK unknown = Unbekannt @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Kabelgebundene Verbindungen - [wifi] Wi-Fi-Verbindungen - [vpn] VPN-Verbindungen - *[other] Unbekannte Verbindungen - } und Verbindungsprofile. add-network = Netzwerk hinzufügen .profile = Profil hinzufügen add-vpn = VPN hinzufügen @@ -36,9 +29,9 @@ visible-networks = Sichtbare Netzwerke identity = Identität auth-dialog = Authentifizierung erforderlich .vpn-description = Gib den vom VPN-Dienst geforderten Benutzernamen und das Passwort ein. - .wifi-description = Gib das Passwort oder den Verschlüsselungscode ein. Du kannst die Verbindung auch durch Drücken der „WPS“-Taste am Router herstellen. -forget-dialog = Dieses Wi-Fi-Netzwerk vergessen? - .description = Du musst erneut ein Passwort eingeben, um dieses Wi-Fi-Netzwerk in der Zukunft zu verwenden. + .wifi-description = Gib das Passwort oder den Verschlüsselungsschlüssel ein. Du kannst die Verbindung auch durch Drücken der Taste „WPS“ am Router herstellen. +forget-dialog = Dieses WLAN-Netzwerk vergessen? + .description = Du musst erneut ein Passwort eingeben, um dieses WLAN-Netzwerk in Zukunft verwenden zu können. network-device-state = .activated = Verbunden .config = Wird verbunden @@ -55,7 +48,7 @@ network-device-state = .unmanaged = Unverwaltet .unplugged = Kabel ausgesteckt remove-connection-dialog = Verbindungsprofil entfernen? - .vpn-description = Um dieses Netzwerk in der Zukunft nutzen zu können, musst du erneut ein Passwort eingeben. + .vpn-description = Du musst erneut ein Passwort eingeben, um dieses Netzwerk in Zukunft verwenden zu können. .wired-description = Du musst dieses Profil neu erstellen, um es in Zukunft verwenden zu können. vpn = VPN .connections = VPN-Verbindungen @@ -82,8 +75,8 @@ wired = Kabelgebunden .connections = Kabelgebundene Verbindungen .devices = Kabelgebundene Geräte .remove = Verbindungsprofil entfernen -wifi = Wi-Fi - .adapter = Wi-Fi-Adapter { $id } +wifi = WLAN + .adapter = WLAN-Adapter { $id } .forget = Dieses Netzwerk vergessen wireguard-dialog = WireGuard-Gerät hinzufügen .description = Wähle einen Gerätenamen für die WireGuard-Konfiguration aus. @@ -91,7 +84,7 @@ wireguard-dialog = WireGuard-Gerät hinzufügen ## Networking: Online Accounts online-accounts = Online-Konten - .desc = Hinzufügen von Konten, IMAP und SMTP, Unternehmensanmeldungen + .desc = Konten, IMAP und SMTP, Unternehmensanmeldungen hinzufügen # Bluetooth @@ -99,7 +92,6 @@ activate = Aktivieren confirm = Bestätigen enable = Aktivieren bluetooth = Bluetooth - .desc = Bluetooth-Geräte verwalten .status = Dieses System ist als { $aliases } sichtbar, während die Bluetooth-Einstellungen geöffnet sind. .connected = Verbunden .connecting = Wird verbunden @@ -121,16 +113,16 @@ bluetooth-adapters = Bluetooth-Adapter ## Accessibility -accessibility = Zugänglichkeit - .vision = Sehkraft +accessibility = Barrierefreiheit + .vision = Sehen .on = Ein .off = Aus .unavailable = Nicht verfügbar .screen-reader = Bildschirmleser - .high-contrast = Modus mit hohem Kontrast + .high-contrast = Modus für hohen Kontrast .invert-colors = Farben invertieren .color-filters = Farbfilter -hearing = Gehör +hearing = Hören .mono = Stereo-Audio als Mono abspielen default = Standard magnifier = Vergrößerungsglas @@ -156,8 +148,8 @@ magnifier = Vergrößerungsglas .continuous = Vergrößerung folgt der Maus .onedge = Bewegt sich, wenn die Maus die Kanten berürt .centered = Den Mauszeiger auf der Vergrößerung zentriert halten -color-filter = Typ des Farbfilters - .unknown = Unbekannt Filter aktiv +color-filter = Farbfiltertyp + .unknown = Unbekannter Filter aktiv .greyscale = Graustufen .deuteranopia = Grün/Rot (Grünschwäche, Deuteranopie) .protanopia = Rot/Grün (Rotschwäche, Protanopie) @@ -171,13 +163,12 @@ desktop = Desktop wallpaper = Hintergrundbild .change = Bild ändern alle - .desc = Hintergrundbilder, Farben und Diashow-Optionen. .fit = Hintergrundbild anpassen .folder-dialog = Ordner für Hintergrundbilder auswählen .image-dialog = Hintergrundbild auswählen .plural = Hintergrundbilder .same = Gleiches Hintergrundbild auf allen Bildschirmen - .slide = Diashow + .slide = Slideshow add-color = Farbe hinzufügen add-image = Bild hinzufügen all-displays = Alle Bildschirme @@ -186,7 +177,7 @@ dialog-add = Hinzufügen fill = Füllen fit-to-screen = An Bildschirm anpassen open-new-folder = Neuen Ordner öffnen -recent-folders = Letzte Ordner +recent-folders = Zuletzt verwendete Ordner x-minutes = { $number } { $number -> [one] Minute @@ -202,9 +193,8 @@ never = Nie ## Desktop: Appearance appearance = Aussehen - .desc = Akzentfarben und Themen. accent-color = Akzentfarbe -app-background = Anwendungs- oder Fensterhintergrund +app-background = Fensterhintergrund auto = Automatisch close = Schließen color-picker = Farbwähler @@ -212,34 +202,34 @@ copied-to-clipboard = In Zwischenablage kopiert copy-to-clipboard = In Zwischenablage kopieren dark = Dunkel export = Exportieren -hex = Hex +hex = Hexadezimal import = Importieren light = Hell mode-and-colors = Modus und Farben -recent-colors = Letzte Farben -reset-to-default = Auf Standardwerte zurücksetzen +recent-colors = Zuletzt verwendete Farben +reset-to-default = Auf Standard zurücksetzen rgb = RGB window-hint-accent = Hinweisfarbe für aktives Fenster -window-hint-accent-toggle = Akzentfarbe des Themas als Hinweisfarbe für aktives Fenster verwenden -auto-switch = Automatischer Wechsel zwischen hellem und dunklem Modus +window-hint-accent-toggle = Themenakzentfarbe als Hinweis für aktives Fenster verwenden +auto-switch = Automatisch zwischen hellem und dunklem Modus wechseln .sunrise = Wechselt bei Sonnenaufgang in den hellen Modus .sunset = Wechselt bei Sonnenuntergang in den dunklen Modus .next-sunrise = Wechselt beim nächsten Sonnenaufgang in den hellen Modus .next-sunset = Wechselt beim nächsten Sonnenuntergang in den dunklen Modus container-background = Container-Hintergrund - .desc-detail = Die Hintergrundfarbe des Containers wird für die Navigationsseitenleiste, die Seitenschublade, Dialoge und ähnliche Widgets verwendet. Standardmäßig wird sie automatisch vom Anwendungs- oder Fensterhintergrund abgeleitet. - .reset = Auf Automatisch zurücksetzen - .desc = Die Farbe des primären Containers wird für die Navigationsseitenleiste, die Seitenschublade, Dialoge und ähnliche Widgets verwendet. + .desc-detail = Die Hintergrundfarbe des Containers wird für die Navigationsseitenleiste, die Seitenschublade, Dialoge und ähnliche Widgets verwendet. Standardmäßig wird die Hintergrundfarbe des Containers automatisch aus dem Hintergrund des Fensters abgeleitet. + .reset = Auf automatisch zurücksetzen + .desc = Wird für die Navigationsseitenleiste, Seitenschublade, Dialoge und ähnliche Widgets verwendet control-tint = Komponententönung steuern - .desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet. + .desc = Wird für Hintergründe von Standardschaltflächen, Sucheingaben, Texteingaben und ähnlichen Komponenten verwendet frosted = Milchglaseffekt bei der Systemoberfläche - .desc = Wendet eine Hintergrundunschärfe auf Panel, Dock, Applets, Starter und Anwendungsbibliothek an. -enable-export = Dieses Thema auf GNOME-Apps anwenden. + .desc = Wendet Hintergrundunschärfe auf Panel, Dock, Applets, Starter und Anwendungsbibliothek an +enable-export = Aktuelles Thema auf GNOME-Apps anwenden .desc = Nicht alle Toolkits unterstützen den automatischen Wechsel. Nicht-COSMIC-Apps müssen nach einem Themenwechsel möglicherweise neu gestartet werden. icon-theme = Symbolthema - .desc = Wendet einen anderen Satz von Symbolen auf Anwendungen an. -text-tint = Texttönung der Oberfläche - .desc = Farbe zur Ableitung von Oberflächentextfarben, die auf verschiedenen Oberflächen einen ausreichenden Kontrast aufweisen. + .desc = Wendet einen anderen Satz von Symbolen auf Anwendungen an +text-tint = Texttönung der Benutzeroberfläche + .desc = Zum Ableiten von Textfarben der Benutzeroberfläche, die auf verschiedenen Oberflächen einen ausreichenden Kontrast aufweisen style = Stil .round = Rund .slightly-round = Leicht rund @@ -262,12 +252,10 @@ monospace-font = Nichtproportionale Schriftart ## Desktop: Notifications notifications = Benachrichtigungen - .desc = Nicht stören, Sperrbildschirm-Benachrichtigungen und Einstellungen pro Anwendung. ## Desktop: Panel panel = Panel - .desc = Obere Leiste mit Desktop-Steuerelementen und Menüs. add = Hinzufügen add-applet = Applet hinzufügen all = Alle @@ -291,7 +279,7 @@ panel-behavior-and-position = Verhalten und Positionen .autohide = Panel automatisch ausblenden .dock-autohide = Dock automatisch ausblenden .position = Position auf Bildschirm - .display = Anzeigen auf Bildschirm + .display = Auf Bildschirm anzeigen panel-style = Stil .anchor-gap = Lücke zwischen Panel und Bildschirmrändern .dock-anchor-gap = Lücke zwischen Dock und Bildschirmrändern @@ -299,23 +287,21 @@ panel-style = Stil .dock-extend = Dock bis zu den Bildschirmrändern ausdehnen .appearance = Aussehen .size = Größe - .background-opacity = Deckkraft des Hintergrunds + .background-opacity = Hintergrunddeckkraft panel-applets = Konfiguration - .dock-desc = Dock-Applets konfigurieren. - .desc = Panel-Applets konfigurieren. + .dock-desc = Dock-Applets konfigurieren + .desc = Panel-Applets konfigurieren panel-missing = Panel-Konfiguration fehlt .desc = Die Konfigurationsdatei des Panels fehlt aufgrund der Verwendung einer benutzerdefinierten Konfiguration oder sie ist beschädigt. - .fix = Auf Standardwerte zurücksetzen + .fix = Auf Standard zurücksetzen ## Desktop: Dock dock = Dock - .desc = Panel mit angehefteten Anwendungen in der App-Ablage und anderen Applets. ## Desktop: Window management window-management = Fensterverwaltung - .desc = Super-Tasten-Aktion, Optionen für die Fenstersteuerung und zusätzliche Optionen für die Fensterkachelung. super-key = Super-Tasten-Aktion .launcher = Starter öffnen .workspaces = Arbeitsflächen öffnen @@ -334,22 +320,26 @@ focus-navigation = Fokus-Navigation ## Desktop: Workspaces workspaces = Arbeitsflächen - .desc = Anzahl, Verhalten und Platzierung der Arbeitsflächen festlegen. -workspaces-behavior = Verhaltern der Arbeitsfläche +workspaces-overview = Arbeitsflächenübersicht + .action-on-typing = Aktion beim Tippen + .none = Keine + .launcher = Starter öffnen + .applications = Anwendungen öffnen +workspaces-behavior = Arbeitsflächenverhalten .dynamic = Dynamische Arbeitsflächen .dynamic-desc = Entfernt automatisch leere Arbeitsflächen. .fixed = Feste Anzahl an Arbeitsflächen .fixed-desc = Arbeitsflächen in der Übersicht hinzufügen oder entfernen. -workspaces-multi-behavior = Multi-Monitor-Verhalten +workspaces-multi-behavior = Verhalten bei mehreren Monitoren .span = Arbeitsflächen erstrecken sich über mehrere Bildschirme .separate = Bildschirme haben separate Arbeitsflächen workspaces-overview-thumbnails = Miniaturansichten der Arbeitsflächenübersicht - .show-number = Nummer der Arbeitsfläche anzeigen - .show-name = Name der Arbeitsfläche anzeigen -workspaces-orientation = Ausrichtung der Arbeitsflächen + .show-number = Arbeitsflächennummer anzeigen + .show-name = Arbeitsflächenname anzeigen +workspaces-orientation = Arbeitsflächenausrichtung .vertical = Vertikal .horizontal = Horizontal -hot-corner = Aktive Ecken +hot-corner = Aktive Ecke .top-left-corner = Aktive Ecke oben links für Arbeitsflächen aktivieren ## Displays @@ -361,7 +351,6 @@ color = Farbe .sidebar = Farbprofile .temperature = Farbtemperatur display = Bildschirme - .desc = Bildschirme, Grafikumschaltung und Nachtlicht verwalten .arrangement = Bildschirmanordnung .arrangement-desc = Bildschirme ziehen, um sie neu anzuordnen. .enable = Bildschirm aktivieren @@ -388,15 +377,15 @@ mirroring = Spiegelung } night-light = Nachtlicht .auto = Automatisch (Sonnenuntergang bis Sonnenaufgang) - .desc = Blaues Licht mittels wärmerer Farben reduzieren. + .desc = Blaues Licht mittels wärmerer Farben reduzieren orientation = Ausrichtung .standard = Standard - .rotate-90 = Um 90 Grad drehen - .rotate-180 = Um 180 Grad drehen - .rotate-270 = Um 270 Grad drehen -vrr = Variable refresh rate - .enabled = Aktiv - .force = Immer aktiv + .rotate-90 = Um 90° drehen + .rotate-180 = Um 180° drehen + .rotate-270 = Um 270° drehen +vrr = Variable Bildwiederholrate + .enabled = Aktiviert + .force = Immer .auto = Automatisch .disabled = Deaktiviert scheduling = Zeitplanung @@ -410,7 +399,6 @@ dialog = Dialog ## Sound sound = Klang - .desc = N/V sound-output = Ausgabe .volume = Ausgabelautstärke .device = Ausgabegerät @@ -424,15 +412,14 @@ sound-input = Eingang .device = Eingabegerät .level = Eingangspegel sound-alerts = Alarmsignale - .volume = Lautstärke von Alarmsignalen. - .sound = Alarmsignalklang. + .volume = Lautstärke von Alarmsignalen + .sound = Alarmsignalklang sound-applications = Anwendungen .desc = Lautstärken und Einstellungen von Anwendungen ## Energie power = Energie & Akku - .desc = Energieeinstellungen verwalten battery = Akku .minute = { $value } { $value -> @@ -474,12 +461,11 @@ power-saving = Energiesparoptionen ## Input -acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an. +acceleration-desc = Passt die Tracking-Empfindlichkeit automatisch an die Geschwindigkeit an disable-while-typing = Während dem Tippen deaktivieren input-devices = Eingabegeräte - .desc = Eingabegeräte primary-button = Primäre Taste - .desc = Legt die Reihenfolge der physischen Tasten fest. + .desc = Legt die Reihenfolge der physischen Tasten fest .left = Links .right = Rechts scrolling = Scrollen @@ -496,7 +482,6 @@ fast = Schnell short = Kurz long = Lang keyboard = Tastatur - .desc = Eingabequellen, Umschaltung, Eingabe von Sonderzeichen, Tastenkombinationen. keyboard-sources = Eingabequellen .desc = Die Eingabequellen können mit der Tastenkombination Super+Leertaste umgeschaltet werden. Dies kann in den Einstellungen für Tastenkombinationen angepasst werden. .move-up = Nach oben verschieben @@ -508,6 +493,7 @@ keyboard-sources = Eingabequellen keyboard-special-char = Eingabe von Sonderzeichen .alternate = Taste für alternative Zeichen .compose = Compose-Taste + .compose-desc = Mit der Compose-Taste kannst du viele verschiedene Zeichen eingeben. Drück einfach die Compose-Taste und dann die Zeichen, die du brauchst. Wenn du zum Beispiel die Compose-Taste und dann C und o drückst, kommt ©, und wenn du die Compose-Taste und dann a und ' drückst, kommt á. .caps = Feststelltaste keyboard-typing-assist = Tippen .repeat-rate = Wiederholungsrate @@ -526,22 +512,22 @@ show-extended-input-sources = Erweiterte Eingabequellen anzeigen keyboard-shortcuts = Tastenkombinationen .desc = Tastenkombinationen anzeigen und anpassen -add-another-keybinding = Weitere Tastenkombination hinzufügen +add-another-keybinding = Weitere Tastenbelegung hinzufügen cancel = Abbrechen command = Befehl custom = Benutzerdefiniert -debug = Debug +debug = Fehlerbehebung disabled = Deaktiviert -input-source-switch = Tastaturlayout umschalten -migrate-workspace-prev = Arbeitsfläche zur vorherigen Ausgabe migrieren -migrate-workspace-next = Arbeitsfläche zur nächsten Ausgabe migrieren +input-source-switch = Spracheingabequelle der Tastatur wechseln +migrate-workspace-prev = Arbeitsfläche zur vorherigen Ausgabe verlagern +migrate-workspace-next = Arbeitsfläche zur nächsten Ausgabe verlagern migrate-workspace = Arbeitsfläche zur { $direction -> *[down] unteren [left] linken [right] rechten [up] oberen - } Ausgabe migrieren + } Ausgabe verlagern navigate = Navigieren replace = Ersetzen shortcut-name = Name der Tastenkombination @@ -580,7 +566,7 @@ nav-shortcuts = Navigation manage-windows = Fenster verwalten .close = Fenster schließen .maximize = Fenster maximieren - .fullscreen = Fenster zum Vollbild + .fullscreen = Vollbildfenster .minimize = Fenster minimieren .resize-inwards = Fenstergröße nach innen ändern .resize-outwards = Fenstergröße nach außen ändern @@ -619,6 +605,7 @@ system-shortcut = System .app-library = App-Bibliothek öffnen .brightness-down = Bildschirmhelligkeit verringern .brightness-up = Bildschirmhelligkeit erhöhen + .display-toggle = Internen Bildschirm umschalten .home-folder = Persönlichen Ordner öffnen .keyboard-brightness-down = Tastaturhelligkeit verringern .keyboard-brightness-up = Tastaturhelligkeit erhöhen @@ -632,7 +619,9 @@ system-shortcut = System .play-prev = Vorheriger Titel .poweroff = System ausschalten .screenshot = Bildschirmfoto machen + .suspend = Bereitschaft .terminal = Terminal öffnen + .touchpad-toggle = Touchpad umschalten .volume-lower = Lautstärke der Audioausgabe verringern .volume-raise = Lautstärke der Audioausgabe erhöhen .web-browser = Webbrowser öffnen @@ -655,7 +644,6 @@ zoom-out = Herauszoomen ## Input: Mouse mouse = Maus - .desc = Mausgeschwindigkeit, -beschleunigung, natürliches Scrollen. .speed = Mausgeschwindigkeit .acceleration = Mausbeschleunigung aktivieren @@ -663,14 +651,13 @@ mouse = Maus click-behavior = Klickverhalten .click-finger = Sekundärklick mit zwei Fingern und Mittelklick mit drei Fingern - .button-areas = Sekundärklick in der rechten unteren Ecke und Mittelklick in der unteren Mitte + .button-areas = Sekundärklick in der unteren rechten Ecke und Mittelklick in der unteren Mitte pinch-to-zoom = Zwei-Finger-Zoom - .desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt. + .desc = Mit zwei Fingern in den Inhalt zoomen, wenn die Anwendung den Zoom unterstützt tap-to-click = Tippen zum Klicken - .desc = Ermöglicht das Tippen mit einem Finger für den ersten Klick, mit zwei Fingern für den zweiten Klick und mit drei Fingern für den mittleren Klick. + .desc = Ermöglicht das Tippen mit einem Finger für den Primärklick, das Tippen mit zwei Fingern für den Sekundärklick und das Tippen mit drei Fingern für den Mittelklick touchpad = Touchpad .acceleration = Touchpad-Beschleunigung aktivieren - .desc = Touchpad-Geschwindigkeit, Klickoptionen, Gesten. .speed = Touchpad-Geschwindigkeit ## Input: Gestures @@ -691,34 +678,31 @@ open-workspaces-view = Arbeitsflächenübersicht öffnen ## Time & Language time = Uhrzeit & Sprache - .desc = N/V time-date = Datum & Uhrzeit - .desc = Zeitzone, automatische Uhreinstellungen und einige Zeitformatierungen. .auto = Automatisch festlegen - .auto-ntp = Datum & Uhrzeit werden automatisch aktualisiert, wenn die Zeitzone eingestellt ist. + .auto-ntp = Datum & Uhrzeit werden automatisch aktualisiert, wenn die Zeitzone eingestellt ist time-zone = Zeitzone .auto = Automatische Zeitzone .auto-info = Erfordert Ortungsdienste und Internetzugang -time-format = Datum- & Zeitformat +time-format = Datums- & Uhrzeitformat .twenty-four = 24-Stunden-Uhrzeit .show-seconds = Sekunden anzeigen .first = Erster Tag der Woche - .show-date = Datum im oberen Panel anzeigen + .show-date = Datum im Zeit-Applet anzeigen .friday = Freitag .saturday = Samstag .sunday = Sonntag .monday = Montag time-region = Region & Sprache - .desc = Datum, Uhrzeiten und Zahlen gemäß deiner Region formatieren formatting = Formatierung - .dates = Daten + .dates = Datum .time = Uhrzeit .date-and-time = Datum & Uhrzeit .numbers = Zahlen .measurement = Maß .paper = Papier preferred-languages = Bevorzugte Sprachen - .desc = Die Reihenfolge der Sprachen bestimmt, welche Sprache für die Übersetzung des Desktops verwendet wird. Die Änderungen werden bei der nächsten Anmeldung wirksam. + .desc = Die Reihenfolge der Sprachen bestimmt, welche Sprache für die Übersetzung der Benutzeroberfläche verwendet wird. Die Änderungen werden bei der nächsten Anmeldung wirksam. add-language = Sprache hinzufügen .context = Sprache hinzufügen install-additional-languages = Zusätzliche Sprachen installieren @@ -731,7 +715,6 @@ applications = Anwendungen ## Applications: Default Applications default-apps = Standardanwendungen - .desc = Standard-Webbrowser, E-Mail-Client, Dateibrowser und andere Anwendungen. .web-browser = Webbrowser .file-manager = Dateibrowser .mail-client = E-Mail-Client @@ -740,30 +723,33 @@ default-apps = Standardanwendungen .photos = Fotos .calendar = Kalender .terminal = Terminal - .other-associations = Weitere Standardanwendungen - .text-editor = Text-Editor + .other-associations = Andere Zuordnungen + .text-editor = Texteditor + .not-installed = Nicht installiert ## Applications: Startup Applications -startup-apps = Startup-Anwendungen - .desc = Konfigurieren Sie Anwendungen, die bei der Anmeldung ausgeführt werden. +startup-apps = Startanwendungen .add = Anwendung hinzufügen - .user = Benutzerspezifische Anwendungen - .user-description = Diese Anwendungen werden gestartet, wenn Sie sich bei Ihrem aktuellen Benutzer anmelden. + .user = Anwendungen, die bei deiner Anmeldung gestartet werden + .none = Keine Startanwendungen hinzugefügt .remove-dialog-title = { $name } entfernen? - .remove-dialog-description = Sind Sie sicher, dass Sie diese Anwendung als Startup-Anwendung entfernen möchten? - .search-for-application = Nach Anwendungen suche + .remove-dialog-description = Diese Startanwendung entfernen? + .add-startup-app = Startanwendung hinzufügen ## Applications: Legacy Applications legacy-applications = Kompatibilität mit X11-Anwendungen - .desc = Anwendungsskalierung des X11-Fenstersystems und globale Tastaturkürzel. # This is still work in progress, as I didn't have enough time. Therefore, I left this here temporarily. legacy-app-scaling = Anwendungsskalierung des X11-Fenstersystems - .scaled-by-system = Alle X11-Anwendungen skalieren - .system-description = X11-Anwendungen werden auf HiDPI-Bildschirmen unscharf dargestellt. - .scaled-natively = X11-Anwendungen in nativer Auflösung rendern - .native-description = X11-Anwendungen, die keine Skalierung unterstützen, werden klein dargestellt, wenn HiDPI-Bildschirme verwendet werden. Für Spiele aktivieren, um die volle Monitorauflösung auszunutzen. + .scaled-gaming = Für Spiele und Vollbild-Apps optimieren + .gaming-description = X11-Anwendungen können im Vergleich zu Wayland-Anwendungen etwas größer/kleiner erscheinen + .scaled-applications = Für Anwendungen optimieren + .applications-description = Spiele und Vollbild-X11-Anwendungen passen möglicherweise nicht zu deiner Bildschirmauflösung + .scaled-compatibility = Modus für maximale Kompatibilität + .compatibility-description = X11-Anwendungen können auf HiDPI-Bildschirmen unscharf erscheinen + .preferred-display = Bevorzugte Anzeige für Spiele und Vollbild-X11-Anwendungen + .no-display = Keine ## System @@ -772,9 +758,8 @@ system = System & Konten ## System: Über about = Über - .desc = Gerätename, Hardwareinfo, Voreinstellungen des Betriebssystems. about-device = Gerätename - .desc = Dieser Name erscheint bei anderen Netzwerk- oder Bluetooth-Geräten. + .desc = Dieser Name erscheint bei anderen Netzwerk- oder Bluetooth-Geräten about-hardware = Hardware .model = Hardwaremodell .memory = Speicher @@ -784,7 +769,7 @@ about-hardware = Hardware about-os = Betriebssystem .os = Betriebssystem .os-architecture = Betriebssystemarchitektur - .kernel = Kernel Version + .kernel = Kernel-Version .desktop-environment = Desktopumgebung .windowing-system = Fenstersystem about-related = Zugehörige Einstellungen @@ -793,17 +778,137 @@ about-related = Zugehörige Einstellungen ## System: Firmware firmware = Firmware - .desc = Firmwaredetails. ## System: Benutzer users = Benutzer - .desc = Authentifizierung und Benutzerkonten. .admin = Administrator .standard = Standard .profile-add = Profilbild auswählen administrator = Administrator - .desc = Administratoren können die Einstellungen für alle Benutzer ändern, andere Benutzer hinzufügen und entfernen. + .desc = Administratoren können die Einstellungen für alle Benutzer ändern, andere Benutzer hinzufügen und entfernen add-user = Benutzer hinzufügen remove-user = Benutzer entfernen full-name = Vollständiger Name +network-name = Netzwerkname +xdg-entry-dock-keywords = COSMIC;Dock;Panel;Applet +xdg-entry-a11y = Barrierefreiheit +xdg-entry-displays-comment = Bildschirm-Konfigurationseinstellungen verwalten +xdg-entry-default-apps = Standardanwendungen +xdg-entry-about-keywords = COSMIC;Über +xdg-entry-desktop-comment = Hintergrundbild, Aussehen, Panel, Dock, Fensterverwaltung und Arbeitsflächeneinstellungen +xdg-entry-keyboard = Tastatur +xdg-entry-displays = Bildschirme +xdg-entry-input-comment = Tastatur- und Mauseinstellungen +xdg-entry-dock-comment = Eine optionale Leiste für Apps und Applets +xdg-entry-dock = Dock +xdg-entry-input-keywords = COSMIC;Eingabe;Tastatur;Maus;Mäuse; +xdg-entry-comment = Einstellungsanwendung für den COSMIC Desktop +xdg-entry-applications = Anwendungen +xdg-entry-default-apps-keywords = COSMIC;Standard;Anwendung +xdg-entry-keywords = COSMIC;Einstellungen; +xdg-entry-about = Über +xdg-entry-input = Eingabegeräte +xdg-entry-applications-keywords = COSMIC;Standard;Anwendung;Start;X11;Kompatibilität +xdg-entry-appearance = Aussehen +xdg-entry-displays-keywords = COSMIC;Bildschirm; +save = Speichern +share = Netzwerk teilen +scan-to-connect-description = Scanne den QR-Code, um dich mit diesem Netzwerk zu verbinden. +qr-code-unavailable = QR-Code nicht verfügbar +xdg-entry-x11-applications-keywords = COSMIC;X11;Anwendung;Spiel;Kompatibilität; +xdg-entry-x11-applications-comment = Skalierung von X11-Fenstersystemanwendungen, primärer Bildschirm und globale Tastenkombinationen +xdg-entry-x11-applications = Kompatibilität mit X11-Anwendungen +xdg-entry-workspaces-keywords = COSMIC;Arbeitsfläche;Ausrichtung;Übersicht;Monitor; +xdg-entry-wireless-keywords = COSMIC;WLAN;Netzwerk;Verbindung; +xdg-entry-wireless-comment = WLAN-Verbindungen und Verbindungsprofile +xdg-entry-wireless = WLAN +xdg-entry-wired-keywords = COSMIC;Kabelgebunden;LAN;Netzwerk;Verbindung; +xdg-entry-wired-comment = Kabelgebundene Verbindungen und Verbindungsprofile +xdg-entry-wired = Kabelgebunden +xdg-entry-window-management-keywords = COSMIC;Fenster;Verwaltung;Kachelung;Super;Taste; +xdg-entry-window-management-comment = Super-Tasten-Aktion, Fenstersteuerungsoptionen und zusätzliche Fensterkachelungsoptionen +xdg-entry-window-management = Fensterverwaltung +xdg-entry-wallpaper = Hintergrundbild +xdg-entry-vpn-keywords = COSMIC;VPN;Netzwerk;Verbindung;OpenVPN;OpenConnect; +xdg-entry-vpn-comment = VPN-Verbindungen und Verbindungsprofile +xdg-entry-users-keywords = COSMIC;Benutzer;Konto; +xdg-entry-users-comment = Authentifizierung und Benutzerkonten +xdg-entry-time-language-keywords = COSMIC;System;Uhrzeit;Datum;Region;Sprache; +xdg-entry-time-language-comment = Systemdatum, Uhrzeit, Region und Sprache verwalten +xdg-entry-system-keywords = COSMIC;System;Info;Konten;Firmware; +xdg-entry-system-comment = Systeminformationen, Konten und Firmware-Aktualisierungen +xdg-entry-system = System & Konten +xdg-entry-startup-apps-keywords = COSMIC;Start;Anwendung; +xdg-entry-startup-apps-comment = Anwendungen konfigurieren, die bei der Anmeldung ausgeführt werden +xdg-entry-startup-apps = Startanwendungen +xdg-entry-sound-keywords = COSMIC;Klang;Audio;Alarm;Pipewire; +xdg-entry-sound-comment = Audioeinstellungen für Geräte, Alarme und Anwendungen +xdg-entry-sound = Klang +xdg-entry-region-language-keywords = COSMIC;Region;Sprache;Datum;Format;Uhrzeit;Gebietsschema;Lokalisierung; +xdg-entry-region-language-comment = Datumsangaben, Uhrzeiten und Zahlen entsprechend deiner Region formatieren +xdg-entry-region-language = Region & Sprache +xdg-entry-power-keywords = COSMIC;Energie;Akku +xdg-entry-power-comment = Energiemodi und Energiesparoptionen +xdg-entry-power = Energie & Akku +xdg-entry-panel-keywords = COSMIC;Panel;Applet +xdg-entry-panel-comment = Primäre Systemleiste für Menüs und Applets +xdg-entry-panel = Panel +xdg-entry-date-time-keywords = COSMIC;Zeit;Zone; +xdg-entry-date-time-comment = Zeitzone, automatische Uhrzeiteinstellungen und Zeitformatierung +sound-device-profiles = Geräteprofile +sound-usb-audio = USB-Audio +sound-hd-audio = HD-Audio +sound-device-port-unplugged = Ausgesteckt +amplification = Verstärkung + .desc = Ermöglicht die Erhöhung der Lautstärke auf 150 % +place-here = Applets hier platzieren +shadow-and-corners = Fensterschatten und -ecken +shadows-tiling = Gekachelte Fenster + .clip = Systemecken zuordnen + .shadow = Schatten anwenden +shadows-floating = Schwebende Fenster + .clip = Systemecken zuordnen und Schatten anwenden +xdg-entry-workspaces-comment = Arbeitsflächenausrichtung, Übersicht und Verhalten bei mehreren Monitoren +xdg-entry-workspaces = Arbeitsflächen +xdg-entry-users = Benutzer +xdg-entry-touchpad-keywords = COSMIC;Touchpad;Geste; +xdg-entry-touchpad-comment = Touchpad-Geschwindigkeit, Klickoptionen und Gesten +xdg-entry-touchpad = Touchpad +xdg-entry-time-language = Uhrzeit & Sprache +xdg-entry-notifications-keywords = COSMIC;Benachrichtigung;Sperre; +xdg-entry-notifications-comment = Nicht stören, Sperrbildschirm-Benachrichtigungen und Einstellungen pro Anwendung +xdg-entry-notifications = Benachrichtigungen +xdg-entry-network-keywords = COSMIC;Netzwerk;Drahtlos;WLAN;VPN; +xdg-entry-network = Netzwerk & Drahtlos +xdg-entry-mouse-keywords = COSMIC;Maus;Beschleunigung;Scrollen; +xdg-entry-mouse-comment = Mausgeschwindigkeit, -beschleunigung und natürliches Scrollen +xdg-entry-mouse = Maus +xdg-entry-keyboard-keywords = COSMIC;Tastatur;Eingabe;Quelle;Tastenkombinationen; +xdg-entry-date-time = Datum & Uhrzeit +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-bluetooth-comment = Bluetooth-Geräte verwalten +xdg-entry-applications-comment = Standardanwendungen, Startanwendungen und Kompatibilitätseinstellungen für X11-Anwendungen +xdg-entry-wallpaper-keywords = COSMIC;Hintergrundbild;Hintergrund;Slideshow; +xdg-entry-wallpaper-comment = Hintergrundbilder, Farben und Slideshow-Optionen +xdg-entry-network-comment = Netzwerkverbindungen verwalten +xdg-entry-keyboard-comment = Eingabequellen, Umschalten, Eingabe von Sonderzeichen, Tastenkombinationen +xdg-entry-default-apps-comment = Standard-Webbrowser, E-Mail-Client, Dateibrowser und andere Anwendungen +xdg-entry-appearance-keywords = COSMIC;Akzent;Farbe;Symbol;Schriftart;Thema +xdg-entry-appearance-comment = Akzentfarben und Themen +password-mismatch = Passwort und Bestätigung müssen übereinstimmen +invalid-username = Ungültiger Benutzername +change-password = Passwort ändern +xdg-entry-about-comment = Gerätename, Hardware-Informationen, Betriebssystem-Standardeinstellungen +no-search-results = Es wurden keine Netzwerke gefunden, die deiner Suche entsprechen. +legacy-app-global-shortcuts = Globale Tastenkombinationen in X11-Anwendungen + .desc = Globale Tastenkombinationen ermöglichen es, dass in Anwendungen ausgeführte Tastenanschläge und Mausklicks von anderen Anwendungen für Funktionen wie Push-to-Talk oder Push-to-Mute erkannt werden. Standardmäßig sind globale Tastenkombinationen in X11-Anwendungen deaktiviert, um sicherzustellen, dass andere Anwendungen keine Tastatur- und Mausereignisse überwachen können, die sensible Informationen enthalten. + .none = Keine Tasten + .modifiers = Modifikatortasten (Super, Umschalt, Steuerung, Alt) + .combination = Alle Tasten, während die Modifikatortasten Super, Steuerung oder Alt gedrückt werden + .all = Alle Tasten + .mouse = Maustasten-Ereignisse in X11-Anwendungen +xdg-entry-desktop-keywords = COSMIC;Desktop; +xdg-entry-desktop = Desktop +xdg-entry-a11y-keywords = COSMIC;Barrierefreiheit;A11y;Bildschirm;Leser;Vergrößerungsglas;Kontrast;Farbe; +xdg-entry-a11y-comment = Bildschirmleser, Vergrößerungsglas, hoher Kontrast und Farbfilter diff --git a/i18n/el/cosmic_settings.ftl b/i18n/el/cosmic_settings.ftl index e69de29..a167994 100644 --- a/i18n/el/cosmic_settings.ftl +++ b/i18n/el/cosmic_settings.ftl @@ -0,0 +1 @@ +share = Κοινοποίηση δικτύου diff --git a/i18n/en/cosmic_settings.ftl b/i18n/en/cosmic_settings.ftl index d802eb0..f5a614e 100644 --- a/i18n/en/cosmic_settings.ftl +++ b/i18n/en/cosmic_settings.ftl @@ -1,19 +1,138 @@ -app = COSMIC Settings - dbus-connection-error = Failed to connect to DBus ok = OK unknown = Unknown number = { $number } -## Network & Wireless +## Freedesktop desktop entries -connections-and-profiles = { $variant -> - [wired] Wired - [wifi] Wi-Fi - [vpn] VPN - *[other] Unknown -} connections and connection profiles. +app = COSMIC Settings +xdg-entry-comment = Settings application for the COSMIC desktop +xdg-entry-keywords = COSMIC;Settings; + +xdg-entry-about = About +xdg-entry-about-comment = Device name, hardware information, operating system defaults +xdg-entry-about-keywords = COSMIC;About + +xdg-entry-a11y = Accessibility +xdg-entry-a11y-comment = Screen reader, magnifier, high contrast, and color filters +xdg-entry-a11y-keywords = COSMIC;Accessibility;A11y;Screen;Reader;Magnifier;Contrast;Color; + +xdg-entry-appearance = Appearance +xdg-entry-appearance-comment = Accent colors and theming +xdg-entry-appearance-keywords = COSMIC;Accent;Color;Icon;Font;Theme + +xdg-entry-applications = Applications +xdg-entry-applications-comment = Default applications, startup applications, and X11 application compatibility settings +xdg-entry-applications-keywords = COSMIC;Default;Application;Startup;X11;Compatibility + +xdg-entry-bluetooth-comment = Manage Bluetooth devices +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; + +xdg-entry-date-time = Date & Time +xdg-entry-date-time-comment = Time zone, automatic clock settings, and time formatting +xdg-entry-date-time-keywords = COSMIC;Time;Zone; + +xdg-entry-default-apps = Default Applications +xdg-entry-default-apps-comment = Default web browser, mail client, file browser, and other applications +xdg-entry-default-apps-keywords = COSMIC;Default;Application + +xdg-entry-desktop = Desktop +xdg-entry-desktop-comment = Wallpaper, appearance, panel, dock, window management and workspace settings +xdg-entry-desktop-keywords = COSMIC;Desktop; + +xdg-entry-displays = Displays +xdg-entry-displays-comment = Manage display configuration settings +xdg-entry-displays-keywords = COSMIC;Display; + +xdg-entry-dock = Dock +xdg-entry-dock-comment = An optional bar for apps and applets +xdg-entry-dock-keywords = COSMIC;Dock;Panel;Applet + +xdg-entry-input = Input Devices +xdg-entry-input-comment = Keyboard and mouse settings +xdg-entry-input-keywords = COSMIC;Input;Keyboard;Mouse;Mice; + +xdg-entry-keyboard = Keyboard +xdg-entry-keyboard-comment = Input sources, switching, special character entry, shortcuts +xdg-entry-keyboard-keywords = COSMIC;Keyboard;Input;Source;Shortcuts; + +xdg-entry-mouse = Mouse +xdg-entry-mouse-comment = Mouse speed, acceleration, and natural scrolling +xdg-entry-mouse-keywords = COSMIC;Mouse;Acceleration;Scrolling; + +xdg-entry-network = Network & Wireless +xdg-entry-network-comment = Manage network connections +xdg-entry-network-keywords = COSMIC;Network;Wireless;WiFi;VPN; + +xdg-entry-notifications = Notifications +xdg-entry-notifications-comment = Do Not Disturb, lockscreen notifications, and per-application settings +xdg-entry-notifications-keywords = COSMIC;Notification;Lock; + +xdg-entry-panel = Panel +xdg-entry-panel-comment = Primary system bar for menus and applets +xdg-entry-panel-keywords = COSMIC;Panel;Applet + +xdg-entry-power = Power & Battery +xdg-entry-power-comment = Power modes and power saving options +xdg-entry-power-keywords = COSMIC;Power;Battery + +xdg-entry-region-language = Region & Language +xdg-entry-region-language-comment = Format dates, times, and numbers based on your region +xdg-entry-region-language-keywords = COSMIC;Region;Language;Date;Format;Time;Locale;Localization; + +xdg-entry-sound = Sound +xdg-entry-sound-comment = Audio settings for devices, alerts, and applications +xdg-entry-sound-keywords = COSMIC;Sound;Audio;Alert;Pipewire; + +xdg-entry-startup-apps = Startup Applications +xdg-entry-startup-apps-comment = Configure applications which run on login +xdg-entry-startup-apps-keywords = COSMIC;Startup;Application; + +xdg-entry-system = System & Accounts +xdg-entry-system-comment = System information, accounts, and firmware updates +xdg-entry-system-keywords = COSMIC;System;Info;Accounts;Firmware; + +xdg-entry-time-language = Time & Language +xdg-entry-time-language-comment = Manage system date, time, region, and language +xdg-entry-time-language-keywords = COSMIC;System;Time;Date;Region;Language; + +xdg-entry-touchpad = Touchpad +xdg-entry-touchpad-comment = Touchpad speed, click options, and gestures +xdg-entry-touchpad-keywords = COSMIC;Touchpad;Gesture; + +xdg-entry-users = Users +xdg-entry-users-comment = Authentication and user accounts +xdg-entry-users-keywords = COSMIC;User;Account; + +xdg-entry-vpn-comment = VPN connections and connection profiles +xdg-entry-vpn-keywords = COSMIC;VPN;Network;Connection;OpenVPN;OpenConnect; + +xdg-entry-wallpaper = Wallpaper +xdg-entry-wallpaper-comment = Wallpaper images, colors, and slideshow options +xdg-entry-wallpaper-keywords = COSMIC;Wallpaper;Background;Slideshow; + +xdg-entry-window-management = Window Management +xdg-entry-window-management-comment = Super key action, window control options, and additional window tiling options +xdg-entry-window-management-keywords = COSMIC;Window;Management;Tiling;Super;Key; + +xdg-entry-wired = Wired +xdg-entry-wired-comment = Wired connections and connection profiles +xdg-entry-wired-keywords = COSMIC;Wired;LAN;Network;Connection; + +xdg-entry-wireless = Wi-Fi +xdg-entry-wireless-comment = Wi-Fi connections and connection profiles +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Network;Connection; + +xdg-entry-workspaces = Workspaces +xdg-entry-workspaces-comment = Workspace orientation, overview, and multi-monitor behavior +xdg-entry-workspaces-keywords = COSMIC;Workspace;Orientation;Overview;Monitor; + +xdg-entry-x11-applications = X11 Applications Compatibility +xdg-entry-x11-applications-comment = X11 window system application scaling, primary display, and global shortcuts +xdg-entry-x11-applications-keywords = COSMIC;X11;Application;Game;Compatibility; + +## Network & Wireless add-network = Add network .profile = Add profile @@ -114,7 +233,6 @@ confirm = Confirm enable = Enable bluetooth = Bluetooth - .desc = Manage Bluetooth devices .status = This system is visible as { $aliases } while Bluetooth settings are open. .connected = Connected .connecting = Connecting @@ -189,7 +307,6 @@ desktop = Desktop wallpaper = Wallpaper .change = Change image every - .desc = Wallpaper images, colors, and slideshow options .fit = Wallpaper fit .folder-dialog = Choose wallpaper folder .image-dialog = Choose wallpaper image @@ -220,7 +337,6 @@ never = Never ## Desktop: Appearance appearance = Appearance - .desc = Accent colors and theming accent-color = Accent color app-background = Window background @@ -298,12 +414,10 @@ shadow-and-corners = Window shadow and corners ## Desktop: Notifications notifications = Notifications - .desc = Do Not Disturb, lockscreen notifications, and per-application settings ## Desktop: Panel panel = Panel - .desc = Primary system bar for menus and applets add = Add add-applet = Add applet @@ -353,12 +467,10 @@ panel-missing = Panel configuration is missing ## Desktop: Dock dock = Dock - .desc = An optional bar for apps and applets ## Desktop: Window management window-management = Window management - .desc = Super key action, window control options, and additional window tiling options super-key = Super key action .launcher = Open Launcher @@ -372,6 +484,7 @@ window-controls = Window controls .maximize = Show maximize button .minimize = Show minimize button .active-window-hint = Show active window hint + .position-start = Place buttons on the left (macOS style) focus-navigation = Focus navigation .focus-follows-cursor = Focus follows cursor @@ -381,7 +494,12 @@ focus-navigation = Focus navigation ## Desktop: Workspaces workspaces = Workspaces - .desc = Workspace orientation and behavior + +workspaces-overview = Workspaces overview + .action-on-typing = Action on typing + .none = None + .launcher = Open Launcher + .applications = Open Applications workspaces-behavior = Workspace behavior .dynamic = Dynamic workspaces @@ -404,6 +522,9 @@ workspaces-orientation = Workspaces orientation hot-corner = Hot Corner .top-left-corner = Enable top-left hot corner for Workspaces +workspaces-navigation = Navigation + .wraparound = Move between first and last workspace using keyboard shortcuts and gestures + ## Displays -requires-restart = Requires restart @@ -415,7 +536,6 @@ color = Color .temperature = Color temperature display = Displays - .desc = Manage displays and night light .arrangement = Display arrangement .arrangement-desc = Drag displays to rearrange them .enable = Enable display @@ -468,7 +588,6 @@ dialog = Dialog ## Sound sound = Sound - .desc = N/A sound-output = Output .volume = Output volume @@ -504,7 +623,6 @@ sound-device-profiles = Device profiles # Power & Battery settings page power = Power & battery - .desc = Manage power settings battery = Battery .minute = { $value } { $value -> @@ -551,7 +669,7 @@ acceleration-desc = Automatically adjusts tracking sensitivity based on speed disable-while-typing = Disable while typing input-devices = Input devices - .desc = Input devices + primary-button = Primary button .desc = Sets the order of physical buttons @@ -572,7 +690,6 @@ fast = Fast short = Short long = Long keyboard = Keyboard - .desc = Input sources, switching, special character entry, shortcuts keyboard-sources = Input Sources .desc = Input sources can be switched using Super+Space key combination. This can be customized in the keyboard shortcut settings. @@ -602,6 +719,7 @@ keyboard-numlock-boot = Numlock added = Added type-to-search = Type to search... +no-search-results = No networks match your search. show-extended-input-sources = Show extended input sources ## Input: Keyboard: Shortcuts @@ -744,7 +862,6 @@ zoom-out = Zoom Out ## Input: Mouse mouse = Mouse - .desc = Mouse speed, acceleration, natural scrolling .speed = Mouse speed .acceleration = Enable mouse acceleration @@ -762,7 +879,6 @@ tap-to-click = Tap to click touchpad = Touchpad .acceleration = Enable touchpad acceleration - .desc = Touchpad speed, click options, gestures .speed = Touchpad speed ## Input: Gestures @@ -785,10 +901,8 @@ open-workspaces-view = Open Workspaces Overview ## Time & language time = Time & language - .desc = N/A time-date = Date & time - .desc = Time zone, automatic clock settings, and time formatting .auto = Set automatically .auto-ntp = Date & time will update automatically when the time zone is set @@ -807,7 +921,6 @@ time-format = Date & time format .monday = Monday time-region = Region & language - .desc = Format dates, times, and numbers based on your region formatting = Formatting .dates = Dates @@ -832,7 +945,6 @@ applications = Applications ## Applications: Default applications default-apps = Default Applications - .desc = Default web browser, mail client, file browser, and other applications .web-browser = Web browser .file-manager = File manager .mail-client = Mail client @@ -843,11 +955,12 @@ default-apps = Default Applications .terminal = Terminal .other-associations = Other associations .text-editor = Text Editor + .not-installed = Not installed + ## Applications: Startup applications startup-apps = Startup applications - .desc = Configure applications which run on login .add = Add app .user = Applications launched when you log in .none = No startup applications added @@ -858,7 +971,6 @@ startup-apps = Startup applications ## Applications: Legacy applications legacy-applications = X11 applications compatibility - .desc = X11 Window system application scaling and Global shortcuts legacy-app-global-shortcuts = Global shortcuts in X11 applications .desc = Global shortcuts allows keystrokes and mouse button events performed in applications to be recognized by other applications for features like push-to-talk or push-to-mute. By default, Global shortcuts is disabled in X11 applications to ensure other applications can’t monitor for keyboard and mouse events containing sensitive information. @@ -885,7 +997,6 @@ system = System & accounts ## System: About about = About - .desc = Device name, hardware information, operating system defaults about-device = Device name .desc = This name appears to other network or Bluetooth devices @@ -910,12 +1021,10 @@ about-related = Related settings ## System: Firmware firmware = Firmware - .desc = Firmware details ## System: Users users = Users - .desc = Authentication and user accounts .admin = Admin .standard = Standard .profile-add = Choose profile image diff --git a/i18n/es-419/cosmic_settings.ftl b/i18n/es-419/cosmic_settings.ftl index 276bee7..b8db8f7 100644 --- a/i18n/es-419/cosmic_settings.ftl +++ b/i18n/es-419/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Cableada - [wifi] Wi-Fi - [vpn] VPN - *[other] Desconocida - } conexiones y perfiles de conexión. add-network = Añadir red .profile = Añadir perfil add-vpn = Añadir VPN @@ -809,3 +802,6 @@ full-name = Nombre completo invalid-username = Nombre de usuario inválido. password-mismatch = Las contraseñas no coinciden. save = Guardar +xdg-entry-applications = Aplicaciones +xdg-entry-appearance = Apariencia +xdg-entry-a11y = Accesibilidad diff --git a/i18n/es/cosmic_settings.ftl b/i18n/es/cosmic_settings.ftl index f64bc7a..f7f5cf1 100644 --- a/i18n/es/cosmic_settings.ftl +++ b/i18n/es/cosmic_settings.ftl @@ -4,15 +4,66 @@ ok = OK unknown = Desconocido number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = A cerca de +xdg-entry-about-comment = Nombre del dispositivo, información de hardware y valores del sistema operativo +xdg-entry-a11y = Accesibilidad +xdg-entry-a11y-comment = Configuración de accesibilidad +xdg-entry-appearance = Apariencia +xdg-entry-appearance-comment = Colores de énfasis y temas +xdg-entry-applications = Aplicaciones +xdg-entry-applications-comment = Gestionar configuración de aplicaciones +xdg-entry-bluetooth-comment = Gestionar dispositivos Bluetooth +xdg-entry-date-time = Fecha y Hora +xdg-entry-date-time-comment = Zona horaria, configuración automática del reloj y formatos de hora +xdg-entry-default-apps = Aplicaciones predeterminadas +xdg-entry-default-apps-comment = Navegador web predeterminado, cliente de correo, explorador de archivos y otras aplicaciones +xdg-entry-desktop = Escritorio +xdg-entry-displays = Pantallas +xdg-entry-displays-comment = Opciones de pantalla, modos gráficos y luz nocturna +xdg-entry-dock = Dock +xdg-entry-dock-comment = Panel opcional para aplicaciones y otros applets +xdg-entry-input = Dispositivos de entrada +xdg-entry-input-comment = Teclado, ratón, etc. +xdg-entry-keyboard = Teclado +xdg-entry-keyboard-comment = Entrada de teclado, conmutación, carácteres especiales, atajos +xdg-entry-mouse = Ratón +xdg-entry-mouse-comment = Velocidad del ratón, aceleración y desplazamiento natural +xdg-entry-network = Red e inalámbrico +xdg-entry-network-comment = Gestionar conexiones de red +xdg-entry-notifications = Notificaciones +xdg-entry-notifications-comment = No molestar, notificaciones de pantalla de bloqueo y ajustes de aplicación +xdg-entry-panel = Barra +xdg-entry-panel-comment = Barra principal del sistema para menús y applets +xdg-entry-power = Energía y batería +xdg-entry-power-comment = Modos de energía y opciones de ahorro de energía +xdg-entry-region-language = Región e Idioma +xdg-entry-region-language-comment = Formato de fechas, horas y números según su región +xdg-entry-sound = Sonido +xdg-entry-sound-comment = Configuraciones de audio para dispositivos, alertas y aplicaciones +xdg-entry-system = Sistema y cuentas +xdg-entry-system-comment = Información del sistema, cuentas y firmware +xdg-entry-time-language = Hora e Idioma +xdg-entry-touchpad = Panel táctil +xdg-entry-touchpad-comment = Velocidad del panel táctil, opciones de clic, gestos +xdg-entry-users = Usuarios +xdg-entry-users-comment = Autenticación y cuentas de usuario +xdg-entry-vpn-comment = Conexiones VPN y perfiles de conexión +xdg-entry-wallpaper = Fondo de pantalla +xdg-entry-wallpaper-comment = Imágenes de fondo, colores y opciones de carrusel de imágenes +xdg-entry-window-management = Gestión de ventanas +xdg-entry-window-management-comment = Acción de la tecla Super, opciones de control de ventana y opciones adicionales de mosaico de ventana +xdg-entry-wired = Red cableada +xdg-entry-wired-comment = Conexiones cableadas y perfiles de conexión +xdg-entry-wireless-comment = Conexiones Wi-Fi y perfiles de conexión +xdg-entry-workspaces = Espacios de trabajo +xdg-entry-workspaces-comment = Orientación de los espacios de trabajo y comportamiento +xdg-entry-x11-applications = Compatibilidad para aplicaciones X11 +xdg-entry-x11-applications-comment = Escalado de aplicaciones del sistema de ventanas X11 y atajos globales + ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Cableada, - [wifi] Wi-Fi, - [vpn] VPN, - *[other] Desconocida - } conexiones y perfiles de conexión. add-network = Añadir red .profile = Añadir perfil add-vpn = Añadir VPN @@ -335,6 +386,11 @@ focus-navigation = Navegación de enfoque workspaces = Espacios de trabajo .desc = Configurar el número de espacios de trabajo, comportamiento y ubicación. +workspaces-overview = Vista general de espacios de trabajo + .action-on-typing = Acción al escribir + .none = Ninguna + .launcher = Abrir lanzador + .applications = Abrir aplicaciones workspaces-behavior = Comportamiento de los espacios de trabajo .dynamic = Espacios de trabajo dinámicos .dynamic-desc = Elimina automáticamente los espacios de trabajo vacíos. diff --git a/i18n/et/cosmic_settings.ftl b/i18n/et/cosmic_settings.ftl index 26d84cc..54ae9e4 100644 --- a/i18n/et/cosmic_settings.ftl +++ b/i18n/et/cosmic_settings.ftl @@ -86,13 +86,6 @@ remove-connection-dialog = Kas soovid ühendusprofiili eemaldada? .vpn-description = Kui tahad seda VPN-võrku hiljem kasutada, siis pead uuesti salasõna sisestama. .wired-description = Kui tahad seda võrku hiljem kasutada, siis pead profiili uuesti looma. app = COSMICu seadistused -connections-and-profiles = - { $variant -> - [wired] Traadiga - [wifi] WiFi - [vpn] VPN-i - *[other] Muud - } ühendust ja ühendusprofiili. add-network = Lisa võrk .profile = Lisa võrguprofiil color-picker = Värvivalija diff --git a/i18n/eu/cosmic_settings.ftl b/i18n/eu/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/fi/cosmic_settings.ftl b/i18n/fi/cosmic_settings.ftl index e69de29..58b2efb 100644 --- a/i18n/fi/cosmic_settings.ftl +++ b/i18n/fi/cosmic_settings.ftl @@ -0,0 +1,820 @@ +connect = Yhdistä +known-networks = Tunnetut verkot +unknown = Tuntematon +connecting = Yhdistetään… +disconnect = Katkaise yhteys +ok = OK +app = COSMICin asetukset +number = { $number } +dbus-connection-error = DBusiin yhdistäminen epäonnistui +add-vpn = Lisää VPN +connected = Yhdistetty +forget = Unohda +add-network = Lisää verkko + .profile = Lisää profiili +xdg-entry-touchpad = Kosketuslevy +xdg-entry-region-language = Alue ja kieli +xdg-entry-bluetooth-comment = Hallitse Bluetooth-laitteita +xdg-entry-mouse = Hiiri +xdg-entry-system = Järjestelmä ja tilit +xdg-entry-a11y = Esteettömyys +xdg-entry-time-language = Aika ja kieli +xdg-entry-users = Käyttäjät +xdg-entry-default-apps = Oletussovellukset +xdg-entry-about-keywords = COSMIC;About;tietoa;tietoja +xdg-entry-panel = Paneeli +xdg-entry-notifications = Ilmoitukset +xdg-entry-wireless-comment = Wi-Fi-yhteydet ja -yhteysprofiilit +xdg-entry-desktop = Työpöytä +xdg-entry-wallpaper = Taustakuva +xdg-entry-keyboard = Näppäimistö +xdg-entry-displays = Näytöt +xdg-entry-input-comment = Näppäimistön ja hiiren asetukset +xdg-entry-dock = Telakka +xdg-entry-about-comment = Laitenimi, laitteistotiedot, käyttöjärjestelmän oletukset +xdg-entry-comment = Asetussovellus COSMIC-työpöydälle +xdg-entry-applications = Sovellukset +xdg-entry-keywords = COSMIC;Settings;asetukset; +xdg-entry-input = Syötelaitteet +xdg-entry-vpn-comment = VPN-yhteydet ja -yhteysprofiilit +xdg-entry-appearance = Ulkoasu +xdg-entry-network-comment = Hallitse verkkoyhteyksiä +xdg-entry-sound = Ääni +xdg-entry-workspaces = Työtilat +xdg-entry-x11-applications = X11-sovellusten yhteensopivuus +xdg-entry-default-apps-comment = Oletusselain, sähköposti, tiedostonhallinta ja muut sovellukset +xdg-entry-desktop-keywords = COSMIC;Desktop;työpöytä; +xdg-entry-desktop-comment = Taustakuva, ulkoasu, paneeli, telakka, ikkunanhallinta ja työtilojen asetukset +xdg-entry-default-apps-keywords = COSMIC;Default;Application;oletus;sovellus;oletussovellus +xdg-entry-date-time-keywords = COSMIC;Time;Zone;aika;aikavyöhyke; +xdg-entry-date-time-comment = Aikavyöhyke, automaattiset kellon asetukset ja ajan muotoilu +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-a11y-comment = Näytönlukija, suurennuslasi, suuri kontrasti ja värisuodattimet +time-region = Alue ja kieli +region = Alue +about-hardware = Laitteisto + .model = Laitteistomalli + .memory = Muisti + .processor = Suoritin + .graphics = Grafiikka + .disk-capacity = Levyn kapasiteetti +about-os = Käyttöjärjestelmä + .os = Käyttöjärjestelmä + .os-architecture = Käyttöjärjestelmän arkkitehtuuri + .kernel = Ytimen versio + .desktop-environment = Työpöytäympäristö + .windowing-system = Ikkunointijärjestelmä +add-language = Lisää kieli + .context = Lisää kieli +firmware = Laiteohjelmisto +open-workspaces-view = Avaa työtilojen yleiskuva +preferred-languages = Ensisijaiset kielet + .desc = Kielten järjestys määrittää käyttöliittymässä käytetyn kielen. Muutokset tulevat voimaan seuraavalla kirjautumiskerralla. +about-device = Laitenimi + .desc = Tämä näkyy muille verkon käyttäjille tai Bluetooth-laitteille +window-tiling = Ikkunoiden asettelu + .horizontal = Aseta vaakasuuntaan + .vertical = Aseta pystysuuntaan + .swap-window = Vaihda ikkunaa + .toggle-tiling = Vaihda asettelun tilaa + .toggle-stacking = Vaihda ikkunoiden pinoamisen tilaa + .toggle-floating = Vaihda kelluvan ikkunan tilaa + .toggle-orientation = Vaihda suuntaa +applications = Sovellukset +legacy-applications = X11-sovellusten yhteensopivuus +install-additional-languages = Asenna lisäkieliä +replace = Korvaa +time-zone = Aikavyöhyke + .auto = Automaattinen aikavyöhyke + .auto-info = Vaatii sijaintipalvelun ja verkkoyhteyden +system = Järjestelmä ja tilit +time = Aika ja kieli +close = Sulje +password = Salasana +import = Tuo +export = Vie +appearance = Ulkoasu +light = Vaalea +identity = Identiteetti +type-to-search = Etsi kirjoittamalla… +password-confirm = Vahvista salasana +dark = Tumma +cancel = Peru +confirm = Vahvista +settings = Asetukset +xdg-entry-startup-apps-keywords = COSMIC;Startup;Application;käynnistys;sovellus; +xdg-entry-panel-keywords = COSMIC;Panel;Applet;paneeli;sovelma +xdg-entry-x11-applications-keywords = COSMIC;X11;Application;Game;Compatibility;sovellus;peli;yhteensopivuus; +xdg-entry-touchpad-keywords = COSMIC;Touchpad;Gesture;kosketuslevy;ele; +xdg-entry-workspaces-keywords = COSMIC;Workspace;Orientation;Overview;Monitor;työtila;suunta;yleiskuva;yleisnäkymä; +x-minutes = + { $number } { $number -> + [one] minuutti + *[other] minuuttia + } +vrr = Vaihteleva virkistystaajuus + .enabled = Käytössä + .force = Aina + .auto = Automaattinen + .disabled = Ei käytössä +fit-to-screen = Sovita näytölle +save = Tallenna +no-applets-found = Sovelmia ei löytynyt… +zoom-in = Lähennä +place-here = Sijoita sovelmat tähän +-requires-restart = Vaatii uudelleenkäynnistyksen +workspaces-orientation = Työtilojen suunta + .vertical = Pysty + .horizontal = Vaaka +all-displays = Kaikki näytöt +short = Lyhyt +bluetooth-available = Lähellä olevat laitteet +cable-unplugged = Kaapeli irrotettu +color-picker = Värivalitsin +interface-font = Järjestelmäfontti +remove = Poista +default = Oletus +zoom-out = Loitonna +password-mismatch = Salasanan ja vahvistuksen tulee täsmätä +switch-between-windows = Vaihda ikkunoiden välillä +sound-usb-audio = USB-ääni +all = Kaikki +remove-user = Poista käyttäjä +copy-to-clipboard = Kopioi leikepöydälle +monospace-font = Tasalevyinen fontti +experimental-settings = Kokeelliset asetukset +recent-folders = Viimeaikaiset kansiot +search-applets = Etsi sovelmia… +window-management = Ikkunanhallinta +x-hours = + { $number } { $number -> + [one] tunti + *[other] tuntia + } +added = Lisätty +full-name = Koko nimi +app-background = Ikkunan tausta +sound-device-profiles = Laiteprofiilit +dock = Telakka +sound-hd-audio = HD-ääni +network-and-wireless = Verkko ja langaton +no-vpn = VPN-yhteyksiä ei ole saatavilla. +desktop = Työpöytä +sound = Ääni +qr-code-unavailable = QR-koodi ei ole saatavilla +small = Pieni +change-password = Vaihda salasana +disable-while-typing = Poista käytöstä kirjoitettaessa +long = Pitkä +copied-to-clipboard = Kopioitu leikepöydälle +visible-networks = Näkyvät verkot +applets = Sovelmat +workspaces = Työtilat +slow = Hidas +network-name = Verkon nimi +large = Suuri +panel = Paneeli +add-user = Lisää käyttäjä +add-image = Lisää kuva +add-applet = Lisää sovelma +orientation = Suunta + .standard = Oletus + .rotate-90 = Käännä 90° + .rotate-180 = Käännä 180° + .rotate-270 = Käännä 270° +auto = Automaattinen +bluetooth-adapters = Bluetooth-sovittimet +accent-color = Korostusväri +never = Ei koskaan +keyboard = Näppäimistö +dialog-add = Lisää +fast = Nopea +add-color = Lisää väri +command = Komento +no-networks = Verkkoja ei löytynyt. +open-new-folder = Avaa uusi kansio +share = Jaa verkko +add = Lisää +fill = Täytä +color = Väri + .depth = Värisyvyys + .profile = Väriprofiili + .sidebar = Väriprofiilit + .temperature = Värilämpötila +colors = Värit +scan-to-connect-description = Yhdistä tähän verkkoon lukemalla QR-koodi. +xdg-entry-wireless = Wi-Fi +xdg-entry-wallpaper-comment = Taustakuvat, -värit ja diaesityksen valinnat +xdg-entry-users-keywords = COSMIC;User;Account;käyttäjä;tili;tunnus;käyttäjätili;käyttätunnus; +wifi = Wi-Fi + .adapter = Wi-Fi-sovitin { $id } + .forget = Unohda tämä verkko +notifications = Ilmoitukset +input-devices = Syötelaitteet +xdg-entry-wired = Kiinteä +xdg-entry-startup-apps-comment = Määritä kirjautumisen jälkeen käynnistettävät sovellukset +xdg-entry-notifications-keywords = COSMIC;Notification;Lock;ilmoitus;lukitus; +xdg-entry-keyboard-comment = Syötelähteet, vaihtaminen, erikoismerkkien syöttäminen, pikanäppäimet +xdg-entry-wired-keywords = COSMIC;Wired;LAN;Network;Connection;kiinteä;paikallisverkko;langallinen;verkko;yhteys; +xdg-entry-power = Virranhallinta ja akku +xdg-entry-dock-keywords = COSMIC;Dock;Panel;Applet;telakka;paneeli;sovelma +xdg-entry-window-management = Ikkunanhallinta +xdg-entry-time-language-comment = Hallitse järjestelmän päivää, kellonaikaa, aluetta ja kieltä +xdg-entry-system-keywords = COSMIC;System;Info;Accounts;Firmware;järjestelmä;tiedot;tilit;laiteohjelmisto; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Network;Connection;langaton;verkko;yhteys; +xdg-entry-applications-comment = Oletussovellukset, käynnistettävät sovellukset ja X11-sovellusten yhteensopivuusasetukset +xdg-entry-network = Verkko ja langaton +xdg-entry-users-comment = Tunnistus ja käyttäjätilit +xdg-entry-dock-comment = Valinnainen palkki sovelluksille ja sovelmille +xdg-entry-network-keywords = COSMIC;Network;Wireless;WiFi;VPN;verkko;langaton;erillisverkko; +xdg-entry-startup-apps = Käynnistettävät sovellukset +xdg-entry-x11-applications-comment = X11-ikkunajärjestelmän sovellusskaalaus, ensisijainen näyttö ja yleiset pikanäppäimet +xdg-entry-region-language-comment = Muotoile päivät, kellonajat ja numerot alueesi mukaisesti +xdg-entry-vpn-keywords = COSMIC;VPN;Network;Connection;OpenVPN;OpenConnect;verkko;yhteys;netti; +xdg-entry-time-language-keywords = COSMIC;System;Time;Date;Region;Language;järjestelmä;aika;kello;päivä;alue;kieli; +xdg-entry-input-keywords = COSMIC;Input;Keyboard;Mouse;Mice;syöte;sisääntulo;näppäimistö;hiiri; +xdg-entry-notifications-comment = Älä häiritse, lukitusnäytön ilmoitukset ja sovelluskohtaiset asetukset +xdg-entry-sound-keywords = COSMIC;Sound;Audio;Alert;Pipewire;ääni;hälytys; +xdg-entry-power-keywords = COSMIC;Power;Battery;virta;virranhallinta;akku +xdg-entry-region-language-keywords = COSMIC;Region;Language;Date;Format;Time;Locale;Localization;alue;kieli;päivä;päiväys;muotoile;muoto;aika;kello;lokaali;maa-asetus;lokalisointi;kotoistus; +xdg-entry-applications-keywords = COSMIC;Default;Application;Startup;X11;Compatibility;oletus;ohjelma;sovellus;äppi;käynnistys;yhteensopivuus +xdg-entry-sound-comment = Ääniasetukset laitteille, hälytyksille ja sovelluksille +xdg-entry-touchpad-comment = Kosketuslevyn nopeus, napsautusvalinnat ja eleet +xdg-entry-keyboard-keywords = COSMIC;Keyboard;Input;Source;Shortcuts;näppäimistö;syöte;sisääntulo;lähde;pikanäppäimet; +xdg-entry-window-management-keywords = COSMIC;Window;Management;Tiling;Super;Key;ikkuna;ikkunanhallinta;laatoitus;laatoita;aseta;asettelu; +xdg-entry-workspaces-comment = Työtilan suunta, yleiskuva ja usean näytön toiminta +xdg-entry-panel-comment = Ensisijainen järjestelmäpalkki valikoille ja sovelmille +xdg-entry-power-comment = Tehotilat ja virransäästön asetukset +xdg-entry-window-management-comment = Super-näppäimen toiminta, ikkunasäädinten valinnat, ikkunoiden asettelun lisävalinnat +xdg-entry-wired-comment = Kiinteät yhteydet ja yhteysprofiilit +add-another-keybinding = Lisää toinen näppäinsidos +reset-to-default = Palauta oletukseksi +airplane-on = Lentotila on käytössä. +xdg-entry-system-comment = Järjestelmän tiedot, tilit ja laiteohjelmistopäivitykset +xdg-entry-mouse-keywords = COSMIC;Mouse;Acceleration;Scrolling;hiiri;kiihdytys;vieritys;skrollaus; +xdg-entry-mouse-comment = Hiiren nopeus, kiihdytys ja luonnollinen vieritys +xdg-entry-displays-keywords = COSMIC;Display;näyttö;monitori; +xdg-entry-displays-comment = Hallitse näyttöön liittyviä asetuksia +xdg-entry-date-time = Päivä ja aika +xdg-entry-appearance-keywords = COSMIC;Accent;Color;Icon;Font;Theme;korostus;aksentti;väri;kuvake;ikoni;fontti;kirjasin;teema +xdg-entry-appearance-comment = Korostusvärit ja teemat +xdg-entry-a11y-keywords = COSMIC;Accessibility;A11y;Screen;Reader;Magnifier;Contrast;Color;esteettömyys;näytönlukija;ruudunluku;suurennuslasi;kontrasti;väri; +xdg-entry-about = Tietoa +xdg-entry-wallpaper-keywords = COSMIC;Wallpaper;Background;Slideshow;taustakuva;tausta;diaesitys; +forget-dialog = Unohdetaanko tämä Wi-Fi-verkko? + .description = Sinun tulee kirjoittaa Wi-Fi-verkon salasana uudelleen käyttääksesi tätä verkkoa myöhemmin. +username = Käyttäjätunnus +remove-connection-dialog = Poistetaanko yhteysprofiili? + .vpn-description = Yhdistääksesi tähän verkkoon myöhemmin tarvitset taas sen salasanan. + .wired-description = Käyttääksesi tätä profiilia myöhemmin se pitää luoda uudelleen. +auth-dialog = Tunnistautuminen vaaditaan + .vpn-description = Anna VPN-palvelun vaatima käyttäjätunnus ja salasana. + .wifi-description = Anna salasana tai salausavain. Voit yhdistää myös painamalla reitittimen ”WPS”-painiketta. +network-device-state = + .activated = Yhdistetty + .config = Yhdistetään + .deactivating = Katkaistaan yhteyttä + .disconnected = Yhteys katkaistu + .failed = Yhdistäminen epäonnistui + .ip-check = Tarkistetaan yhteyttä + .ip-config = Kysellään IP- ja reititystietoa + .need-auth = Vaatii tunnistautumisen + .prepare = Valmistellaan yhteyttä + .secondaries = Odotetaan toissijaista yhteyttä + .unavailable = Ei käytettävissä + .unknown = Tuntematon tila + .unmanaged = Ei hallinnoitu + .unplugged = Kaapeli irrotettu +panel-left = Vasemmalla +super-key = Super-näppäimen toiminta + .launcher = Avaa käynnistin + .workspaces = Avaa työtilat + .applications = Avaa sovellukset + .disable = Poista käytöstä +window-hint-accent = Aktiivisen ikkunan vihjeväri +power = Virranhallinta ja akku +control-tint = Hallitse osien sävyä + .desc = Käytetään vakiopainikkeiden, haku- ja syötekenttien ja vastaavien käyttöliittymän elementtien taustaan +time-date = Päiväys ja kellonaika + .auto = Aseta automaattisesti + .auto-ntp = Päiväys ja kellonaika päivittyvät automaattisesti, kun aikavyöhyke on asetettu +vpn-error = VPN-virhe + .config = VPN-määrityksen lisääminen epäonnistui + .connect = VPN:ään yhdistäminen epäonnistui + .connection-editor = Yhteyden muokkaaminen epäonnistui + .connection-settings = Aktiivisten yhteyksien asetuksia ei saatu noudettua + .updating-state = Verkonhallinnan tilan päivittäminen epäonnistui + .wireguard-config-path = Virheellinen tiedoston sijainti WireGuard-määritykselle + .wireguard-config-path-desc = Valitun tiedoston on sijaittava paikallisessa tiedostojärjestelmässä + .wireguard-device = WireGuard-laitteen luominen epäonnistui + .with-password = + VPN:n { $field -> + *[username] käyttäjätunnuksen + [password] salasanan + [password-flags] salasanalippujen + } asettaminen nmcli:llä epäonnistui +toggle-stacking = Vaihda ikkunoiden pinoamisen tila +panel-top = Ylhäällä +acceleration-desc = Säätää jäljitysherkkyyttä automaattisesti nopeuden mukaan +scheduling = Ajastus + .manual = Käyttäjän asettama aikataulu +frosted = Järjestelmäkäyttöliittymän jäätynyt lasi -tehoste + .desc = Käyttää taustasumennusta paneeliin, telakkaan, sovelmiin, käynnistimeen ja sovelluskirjastoon +vpn = VPN + .connection = VPN-yhteydet + .error = VPN-määrityksen lisääminen epäonnistui + .remove = Poista yhteysprofiili + .select-file = Valitse VPN-määritystiedosto +power-mode = Tehotila + .battery = Pidennetty akunkesto + .battery-desc = Pienempi virrankulutus, hiljainen suorituskyky + .balanced = Tasapainotettu + .balanced-desc = Hiljainen suorituskyky, keskitason virrankulutus + .performance = Hyvä suorituskyky + .performance-desc = Erinomainen suorituskyky, suuri virrankulutus + .no-backend = Taustajärjestelmää ei löytynyt. Asenna system76-power tai power-profiles-daemon. +wired = Lankaverkko + .adapter = Lankaverkkosovitin { $id } + .connections = Lankaverkkoyhteydet + .devices = Lankaverkkolaitteet + .remove = Poista yhteysprofiili +hot-corner = Aktivointikulma + .top-left-corner = Käytä vasenta yläkulmaa työtilojen aktivointiin +keyboard-typing-assist = Kirjoittaminen + .repeat-rate = Toistonopeus + .repeat-delay = Toistoviive +edge-gravity = Kelluvat ikkunat vedetään läheisiin reunoihin +bluetooth = Bluetooth + .status = Bluetooth-asetusten ollessa auki tämä järjestelmä näkyy nimellä { $aliases } + .connected = Yhdistetty + .connecting = Yhdistetään + .disconnecting = Katkaistaan yhteyttä + .connect = Yhdistä + .disconnect = Katkaise yhteys + .forget = Unohda + .dbus-error = DBus-vuorovaikutuksessa tapahtui virhe: { $why } + .disabled = Bluetooth-palvelu ei ole käytössä + .inactive = Bluetooth-palvelu ei ole aktiivinen + .unknown = Bluetooth-palvelua ei voitu aktivoida. Onko BlueZ asennettu? +amplification = Vahvistus + .desc = Sallii äänenvoimakkuuden noston 150 prosenttiin asti +recent-colors = Viimeaikaiset värit +panel-behavior-and-position = Toiminta ja sijainnit + .autohide = Piilota paneeli automaattisesti + .dock-autohide = Piilota telakka automaattisesti + .position = Sijainti näytöllä + .display = Näytä näytöllä +container-background = Säilön tausta + .desc-detail = Säilön taustaväriä käytetään navigointisivupaneeliin, sivuhyllyyn, valintaikkunoihin ja vastaaviin käyttöliittymän elementteihin. Oletuksena säilön taustaväri johdetaan automaattisesti ikkunan taustasta. + .reset = Palaa automaattiseen + .desc = Käytetään navigointisivupaneeliin, sivuhyllyyn, valintaikkunoihin ja vastaaviin käyttöliittymän elementteihin +primary-button = Ensisijainen painike + .desc = Asettaa fyysisten painikkeiden järjestyksen + .left = Vasen + .right = Oikea +sound-alerts = Hälytykset + .volume = Äänenvoimakkuus + .sound = Hälytysääni +icon-theme = Kuvaketeema + .desc = Käyttää sovelluksiin eri kuvakejoukkoa +keyboard-shortcuts = Pikanäppäimet + .desc = Näytä pikanäppäimet ja mukauta niitä +text-tint = Käyttöliittymän tekstin sävytys + .desc = Käytetään johtamaan käyttöliittymään tekstivärit, joilla on eri pinnoille riittävä kontrasti +online-accounts = Verkkotilit + .desc = Lisää IMAP-, SMTP- ja yritysverkkotilejä +default-apps = Oletussovellukset + .web-browser = Selain + .file-manager = Tiedostonhallinta + .mail-client = Sähköposti + .music = Musiikki + .video = Video + .photos = Kuvat + .calendar = Kalenteri + .terminal = Pääte + .other-associations = Muut kytkökset + .text-editor = Tekstimuokkain + .not-installed = Ei asennettu +sound-input = Sisääntulo + .volume = Äänenvoimakkuus + .device = Laite + .level = Äänen taso +color-filter = Värisuodatintyyppi + .unknown = Aktiivisena tuntematon suodatin + .greyscale = Harmaasävy + .deuteranopia = Vihreä/punainen (vihreä heikko, deuteranopia) + .protanopia = Punainen/vihreä (punainen heikko, protanopia) + .tritanopia = Sininen/keltainen (sininen heikko, tritanopia) +migrate-workspace = + Siirrä työtila { $direction -> + *[down] alempaan + [left] vasemmanpuoleiseen + [right] oikeanpuoleiseen + [up] ylempään + } ulostuloon +battery = Akku + .minute = + { $value } { $value -> + [one] minuutti + *[other] minuuttia + } + .hour = + { $value } { $value -> + [one] tunti + *[other] tuntia + } + .day = + { $value } { $value -> + [one] päivä + *[other] päivää + } + .less-than-minute = Alle minuutti + .and = ja + .remaining-time = + { $time } kunnes { $action -> + [full] täynnä + *[other] tyhjä + } +pinch-to-zoom = Tarkenna nipistämällä + .desc = Lähennä sisältöön kahden sormen nipistyseleellä (lähennystä tukevissa sovelluksissa) +input-source-switch = Vaihda näppäimistökielen syötelähde +focus-navigation = Kohdistusnavigointi + .focus-follows-cursor = Kohdistus seuraa osoitinta + .focus-follows-cursor-delay = Kohdistus seuraa osoitinta viipellä (ms) + .cursor-follows-focus = Osoitin seuraa kohdistusta +panel-right = Oikealla +mouse = Hiiri + .speed = Hiiren nopeus + .acceleration = Käytä hiiren kiihdytystä +keyboard-sources = Syötelähteet + .desc = Syötelähdettä voi vaihtaa Super+välilyönti-näppäinyhdistelmällä. Tätä voi mukauttaa pikanäppäinasetuksista. + .move-up = Siirry ylemmäs + .move-down = Siirry alemmas + .settings = Asetukset + .view-layout = Näytä näppäimistöasettelu + .remove = Poista + .add = Lisää syötelähde +nav-shortcuts = Navigointi + .prev-output = Kohdista edelliseen ulostuloon + .next-output = Kohdista seuraavaan ulostuloon + .last-workspace = Kohdista viimeiseen työtilaan + .prev-workspace = Kohdista edelliseen työtilaan + .next-workspace = Kohdista seuraavaan työtilaan + .focus = + Kohdista { $direction -> + *[down] alempaan + [in] sisempään + [left] vasemmanpuoleiseen + [out] ulompaan + [right] oikeanpuoleiseen + [up] ylempään + } ikkunaan + .output = + Vaihda { $direction -> + *[down] alempaan + [left] vasemmanpuoleiseen + [right] oikeanpuoleiseen + [up] ylempään + } ulostuloon + .workspace = Vaihda työtilaan { $num } +hearing = Kuuleminen + .mono = Toista stereoääni monona +display = Näytöt + .arrangement = Näyttöjen järjestäminen + .arrangement-desc = Järjestä näytöt vetämällä + .enable = Ota käyttöön + .external = { $size } { $output } ulkoinen näyttö + .laptop = { $size } kannettavan näyttö + .options = Näyttövalinnat + .refresh-rate = Virkistystaajuus + .resolution = Tarkkuus + .scale = Mittakaava + .additional-scale-options = Mittakaavan lisävalinnat +panel-style = Tyyli + .anchor-gap = Paneelin ja näytön reunojen välinen tyhjä tila + .dock-anchor-gap = Telakan ja näytön reunojen välinen tyhjä tila + .extend = Laajenna paneeli näytön reunoille + .dock-extend = Laajenna telakka näytön reunoille + .appearance = Ulkoasu + .size = Koko + .background-opacity = Taustan peittävyys +panel-appearance = Ulkoasu + .match = Sama kuin työpöydällä + .light = Vaalea + .dark = Tumma +workspaces-multi-behavior = Useamman näytön toiminta + .span = Työtilat jakautuvat näytöille + .separate = Kullakin näytöllä oma työtilansa +replace-shortcut-dialog = Korvataanko pikanäppäin? + .desc = { $shortcut } on jo käytössä toimintoon: { $name }. Jos korvaat pikanäppäimen, { $name } poistuu käytöstä. +rgb = RGB +start-segment = Alkualue +enable-export = Käytä nykyistä teemaa Gnome-sovelluksiin + .desc = Kaikki työkalukirjastot eivät tue automaattista vaihtoa. Muut kuin COSMIC-sovellukset pitää ehkä käynnistää uudelleen teeman vaihtamisen jälkeen. +shortcut-name = Pikanäppäimen nimi +style = Tyyli + .round = Pyöristetty + .slightly-round = Hieman pyöristetty + .square = Nelikulmainen +panel-applets = Asetukset + .dock-desc = Telakkasovelmien asetukset + .desc = Paneelisovelmien asetukset +bluetooth-confirm-pin = Vahvista Bluetoothin PIN + .description = Vahvista, että seuraava PIN vastaa laitteella { $device } näkyvää +startup-apps = Käynnistettävät sovellukset + .add = Lisää sovellus + .user = Kirjauduttaessa käynnistettävät sovellukset + .none = Käynnistettäviä sovelluksia ei ole lisätty + .remove-dialog-title = Poistetaanko { $name }? + .remove-dialog-description = Poistetaanko tämän sovelluksen käynnistys? + .add-startup-app = Lisää käynnistettävä sovellus +legacy-app-scaling = X11-ikkunointijärjestelmän sovellusten mittakaava + .scaled-gaming = Optimoi pelaamiseen ja koko näytön sovelluksille + .gaming-description = X11-sovellukset voivat näkyä hieman eri koossa Wayland-sovelluksiin verrattuna + .scaled-applications = Optimoi sovelluksille + .applications-description = Pelit ja koko näytön X11-sovellukset eivät välttämättä vastaa näytön tarkkuutta + .scaled-compatibility = Parhaan yhteensopivuuden tila + .compatibility-description = X11-sovellukset voivat HiDPI-näytöissä vaikuttaa sumeilta + .preferred-display = Ensisijainen näyttö peleille ja koko näytön X11-sovelluksille + .no-display = Ei mitään +night-light = Yövalo + .auto = Automaattinen (auringonnoususta auringonlaskuun) + .desc = Vähennä sinistä valoa lämpimillä väreillä +about = Tietoa +custom-shortcuts = Mukautetut pikanäppäimet + .add = Lisää pikanäppäin + .context = Lisää mukautettu pikanäppäin + .none = Ei mukautettuja pikanäppäimiä +terminate = Lopeta +window-hint-accent-toggle = Käytä teeman korostusväriä aktiivisen ikkunan vihjevärinä +workspaces-behavior = Työtilan toiminta + .dynamic = Dynaamiset työtilat + .dynamic-desc = Poista tyhjät työtilat automaattisesti. + .fixed = Kiinteä määrä työtiloja + .fixed-desc = Lisää tai poista työtiloja yleiskuvassa. +wireguard-dialog = Lisää WireGuard-laite + .description = Valitse WireGuard-määrityksen laitenimi. +click-behavior = Napsautuksen toiminta + .click-finger = Toissijainen napsautus kahdella, keskinapsautus kolmella sormella + .button-areas = Toissijainen napsautus oikeasta alakulmasta, keskinapsautus keskeltä +move-windows = Siirrä ikkunoita + .direction = + Siirrä ikkunaa { $direction -> + *[down] alemmas + [left] vasempaan + [right] oikeaan + [up] ylemmäs + } + .display = + Siirrä ikkunaa näytön verran { $direction -> + *[down] alemmas + [left] vasempaan + [right] oikeaan + [up] ylemmäs + } + .workspace = + Siirrä ikkunaa työtilan verran { $direction -> + *[below] alemmas + [left] vasempaan + [right] oikeaan + [above] ylemmäs + } + .workspace-num = Siirrä ikkuna työtilaan { $num } + .prev-workspace = Siirrä ikkuna edelliseen työtilaan + .next-workspace = Siirrä ikkuna seuraavaan työtilaan + .last-workspace = Siirrä ikkuna viimeiseen työtilaan + .next-display = Siirrä ikkuna seuraavaan näyttöön + .prev-display = Siirrä ikkuna edelliseen näyttöön + .send-to-prev-workspace = Siirrä ikkuna edelliseen työtilaan + .send-to-next-workspace = Siirrä ikkuna seuraavaan työtilaan +switch-workspaces = Vaihda työtilojen välillä + .horizontal = Neljän sormen pyyhkäisy vasemmalle tai oikealle + .vertical = Neljän sormen pyyhkäisy ylös tai alas +shadow-and-corners = Ikkunan varjo ja kulmat +workspaces-overview = Työtilojen yleiskuva + .action-on-typing = Toiminta kirjoitettaessa + .none = Ei mitään + .launcher = Avaa käynnistin + .applications = Avaa sovellukset +system-controls = Järjestelmäsäätimet +auto-switch = Vaihda vaalean ja tumman tilan välillä automaattisesti + .sunrise = Vaihtaa vaaleaan tilaan auringon noustessa + .sunset = Vaihtaa tummaan tilaan auringon laskiessa + .next-sunrise = Vaihtaa vaaleaan tilaan auringon seuraavan kerran noustessa + .next-sunset = Vaihtaa tummaan tilaan auringon seuraavan kerran laskiessa +keyboard-numlock-boot = Numerolukko + .boot-state = Tila käynnistettäessä + .last-boot = Viime käynnistys + .on = Käytössä + .off = Ei käytössä + .set = Aseta numerolukon tila käynnistettäessä +about-related = Muut asetukset + .support = Hanki tukea +tap-to-click = Napsauta napauttamalla + .desc = Käytä yhden sormen napautusta ensisijaiselle, kahden sormen napautusta toissijaiselle ja kolmen sormen napautusta keskipainikkeen painallukselle +interface-density = Käyttöliittymän tiiviys + .comfortable = Mukava + .compact = Tiivis + .spacious = Väljä +open-application-library = Avaa sovelluskirjasto +scrolling = Vieritys + .two-finger = Vieritä kahdella sormella + .edge = Vieritä reunasta yhdellä sormella + .speed = Vieritysnopeus + .natural = Luonnollinen vieritys + .natural-desc = Vieritä näkymän sijaan sisältöä +enable = Ota käyttöön +migrate-workspace-next = Siirrä työtila seuraavaan ulostuloon +formatting = Muotoilu + .dates = Päiväykset + .time = Kellonaika + .date-and-time = Päiväys ja kellonaika + .numbers = Luvut + .measurement = Mitat + .paper = Paperikoot +disabled = Ei käytössä +show-extended-input-sources = Näytä lisäsyötelähteet +mode-and-colors = Tila ja värit +users = Käyttäjät + .admin = Ylläpitäjä + .standard = Käyttäjä + .profile-add = Valitse profiilikuva +center-segment = Keskialue +panel-missing = Paneelimääritys puuttuu + .desc = Paneelin määritystiedosto puuttuu joko mukautuksen tai vioittumisen vuoksi. + .fix = Palauta oletusarvot +invalid-username = Virheellinen käyttäjätunnus +mirroring = Peilaus + .id = Peilataan { $id } + .dont = Älä peilaa + .mirror = Peilaa { $display } + .project = + Peilaa { $display -> + [all] kaikille näytöille + *[other] näytölle { $display } + } + .project-count = + Peilataan { $count } { $count -> + [1] näytölle + *[other] näytölle + } +end-segment = Päätyalue +time-format = Päiväyksen ja kellonajan muotoilu + .twenty-four = 24-tuntinen kello + .show-seconds = Näytä sekunnit + .first = Ensimmäinen viikonpäivä + .show-date = Näytä päiväys aikasovelmassa + .friday = Perjantai + .saturday = Lauantai + .sunday = Sunnuntai + .monday = Maanantai +type-key-combination = Syötä näppäinyhdistelmä +keyboard-special-char = Erikoismerkkien syöttäminen + .alternate = Vaihtoehtomerkkien näppäin + .compose = Compose-näppäin + .compose-desc = Compose-näppäin mahdollista laajan merkkivalikoiman syöttämisen. Sitä käytetään painamalla Compose sekä merkkisarja. Esimerkiksi Compose-näppäin, jota seuraa C ja o, tuottaa merkin ©, kun taas a sekä ' tuottaa merkin á. + .caps = Vaihtolukkonäppäin +manage-windows = Hallitse ikkunoita + .close = Sulje ikkuna + .maximize = Suurenna ikkuna + .fullscreen = Koko näytön ikkuna + .minimize = Pienennä ikkuna + .resize-inwards = Pienennä ikkunan kokoa + .resize-outwards = Suurenna ikkunan kokoa + .toggle-sticky = Vaihda ikkunan tahmeuden tilaa +wallpaper = Tausta + .change = Vaihda kuvaa aikavälein + .fit = Sovita tausta + .folder-dialog = Valitse taustakuvakansio + .image-dialog = Valitse taustakuva + .plural = Taustat + .same = Sama tausta joka näytössä + .slide = Diaesitys +window-controls = Ikkunasäätimet + .maximize = Näytä suurennuspainike + .minimize = Näytä pienennyspainike + .active-window-hint = Näytä aktiivisen ikkunan vihje +window-management-appearance = Ikkunanhallinta + .active-hint = Aktiivisen ikkunan vihjeen koko + .gaps = Aseteltujen ikkunoiden välinen tyhjä tila +migrate-workspace-prev = Siirrä työtila edelliseen ulostuloon +legacy-app-global-shortcuts = X11-sovellusten yleiset pikanäppäimet + .desc = Yleispikanäppäimet mahdollistavat sovellusten näppäin- ja hiiripainikepainallusten tunnistamisen muissa sovelluksissa sellaisia ominaisuuksia kuin mikrofonin avaamista tai sulkemista varten. Oletuksena yleispikanäppäimet on X11-sovelluksissa poistettu käytöstä tietoturvan vuoksi. + .none = Ei näppäimiä + .modifiers = Muuntonäppäimet (Super, Vaihto, Ctrl, Alt) + .combination = Kaikki näppäimet muuntonäppäimiä Super, Ctrl tai Alt painettaessa + .all = Kaikki näppäimet + .mouse = X11-sovellusten hiiripainikepainallukset +activate = Aktivoi +power-saving = Virransäästön asetukset + .turn-off-screen-after = Sammuta näyttö ajassa + .auto-suspend = Siirry automaattisesti lepotilaan + .auto-suspend-ac = Siirry automaattisesti lepotilaan verkkovirralla + .auto-suspend-battery = Siirry automaattisesti lepotilaan akkuvirralla +connected-devices = Yhdistetyt laitteet + .unknown = Tuntematon laite +icons-and-toolkit = Kuvakkeet ja työkalukirjaston teemoitus +sound-applications = Sovellukset + .desc = Sovellusten äänenvoimakkuudet ja ääniasetukset +shadows-floating = Kelluvat ikkunat + .clip = Sovita järjestelmän kulmiin ja käytä varjoja +touchpad = Kosketuslevy + .acceleration = Käytä kiihdytystä + .speed = Kosketuslevyn nopeus +gestures = Eleet + .four-finger-down = Neljän sormen pyyhkäisy alas + .four-finger-left = Neljän sormen pyyhkäisy vasemmalle + .four-finger-right = Neljän sormen pyyhkäisy oikealle + .four-finger-up = Neljän sormen pyyhkäisy ylös + .three-finger-any = Kolmen sormen pyyhkäisy mihin suuntaan tahansa +panel-bottom = Alhaalla +custom = Mukautettu +bluetooth-paired = Aiemmin yhdistetyt laitteet + .connect = Yhdistä + .battery = { $percentage } % akkua +dialog = Kyselyikkuna + .title = Säilytetäänkö nämä näyttöasetukset? + .keep-changes = Säilytä + .change-prompt = Muutetut asetukset palautuvat automaattiseti { $time } sekunnissa. + .revert-settings = Palauta asetukset +sound-device-port-unplugged = Ei kytketty +navigate = Navigointi +workspaces-overview-thumbnails = Työtilojen yleiskuvan pienoiskuvat + .show-number = Näytä työtilan numero + .show-name = Näytä työtilan nimi +hex = Heksa +magnifier = Suurennuslasi + .controls = + Tai käytä näitä pikanäppäimiä: { $zoom_in -> + [zero] { "" } + *[other] + { "" } + { $zoom_in } lähentää, + }{ $zoom_out -> + [zero] { "" } + *[other] + { "" } + { $zoom_out } loitontaa, + } + Super + vieritys hiirellä + .scroll_controls = Käytä hiiren tai kosketuslevyn lähennystä Super + vierityksellä + .show_overlay = Näytä suurennuslasi + .increment = Lähennysaskel + .signin = Käynnistä suurennuslasi kirjautumisen jälkeen + .applet = Näytä tai piilota suurennuslasin sovelma paanelissa + .movement = Lähennetty näkymä liikkuu + .continuous = Jatkuvasti osoittimen kanssa + .onedge = Osoittimen saavuttaessa reunan + .centered = Pitää osoittimen keskitettynä +administrator = Ylläpitäjä + .desc = Ylläpitäjät voivat muuttaa kaikkien käyttäjien asetuksia sekä lisätä ja poistaa käyttäjiä +modified = { $count } muutettu +accessibility = Esteettömyys + .vision = Näköaisti + .on = Käytössä + .off = Ei käytössä + .unavailable = Ei käytettävissä + .screen-reader = Ruudunlukija + .high-contrast = Suurikontrastinen tila + .invert-colors = Käänteiset värit + .color-filters = Värisuodattimet +debug = Vianjäljitys +system-shortcut = Järjestelmä + .app-library = Avaa sovelluskirjasto + .brightness-down = Vähennä näytön kirkkautta + .brightness-up = Lisää näytön kirkkautta + .display-toggle = Vaihda sisäisen näytön tilaa + .home-folder = Avaa kotikansio + .keyboard-brightness-down = Vähennä näppäimistön taustavalon kirkkautta + .keyboard-brightness-up = Lisää näppäimistön taustavalon kirkkautta + .launcher = Avaa käynnistin + .log-out = Kirjaudu ulos + .lock-screen = Lukitse näyttö + .mute = Vaimenna äänentoisto + .mute-mic = Vaimenna mikrofoni + .play-pause = Toista tai keskeytä + .play-next = Seuraava kappale + .play-prev = Edellinen kappale + .poweroff = Sammuta + .screenshot = Ota kuvakaappaus + .suspend = Lepotila + .terminal = Avaa pääte + .touchpad-toggle = Ota kosketuslevy käyttöön tai poista se käytöstä + .volume-lower = Vähennä äänenvoimakkuutta + .volume-raise = Lisää äänenvoimakkuutta + .web-browser = Avaa selain + .window-switcher = Vaihda avoimesta ikkunasta toiseen + .window-switcher-previous = Vaihda käänteisesti avoimesta ikkunasta toiseen + .workspace-overview = Avaa työtilojen yleiskuva +sound-output = Ulostulo + .volume = Äänenvoimakkuus + .device = Laite + .level = Äänen taso + .config = Asetukset + .balance = Tasapaino + .left = Vasen + .right = Oikea +shadows-tiling = Asetellut ikkunat + .clip = Sovita järjestelmän kulmiin + .shadow = Käytä varjoja +no-search-results = Hakuasi vastaavia verkkoja ei löytynyt. diff --git a/i18n/fr/cosmic_settings.ftl b/i18n/fr/cosmic_settings.ftl index 3758d6b..098a741 100644 --- a/i18n/fr/cosmic_settings.ftl +++ b/i18n/fr/cosmic_settings.ftl @@ -4,15 +4,67 @@ ok = OK unknown = Inconnu number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = À propos +xdg-entry-about-comment = Nom de l'appareil, informations sur le matériel et paramètres par défaut du système d'exploitation +xdg-entry-a11y = Accessibilité +xdg-entry-a11y-comment = Lecteur d’écran, loupe, contraste élevé et filtres de couleur +xdg-entry-appearance = Apparence +xdg-entry-appearance-comment = Couleurs d'accentuation et thèmes +xdg-entry-applications = Applications +xdg-entry-applications-comment = Applications par défaut, applications au démarrage et paramètres de compatibilité des applications X11 +xdg-entry-bluetooth-comment = Gérer les appareils Bluetooth +xdg-entry-date-time = Date et heure +xdg-entry-date-time-comment = Fuseau horaire, réglage de l'heure automatique et formatage de l'heure +xdg-entry-default-apps = Applications par défaut +xdg-entry-default-apps-comment = Navigateur par défaut, client mail, explorateur de fichiers, et autres applications +xdg-entry-desktop = Bureau +xdg-entry-displays = Écrans +xdg-entry-displays-comment = Gérer les paramètres de configuration de l’affichage +xdg-entry-dock = Dock +xdg-entry-dock-comment = Barre facultative pour les applis et les applets +xdg-entry-input = Périphériques d'entrée +xdg-entry-input-comment = Paramètres du clavier et de la souris +xdg-entry-keyboard = Clavier +xdg-entry-keyboard-comment = Sources d'entrée, commutation, saisie de caractères spéciaux, raccourcis +xdg-entry-mouse = Souris +xdg-entry-mouse-comment = Vitesse de la souris, accélération et défilement naturel +xdg-entry-network = Réseau et sans fil +xdg-entry-network-comment = Gérer les connexions réseau +xdg-entry-notifications = Notifications +xdg-entry-notifications-comment = Ne pas déranger, notifications sur l'écran de verrouillage et paramètres par application +xdg-entry-panel = Panneau +xdg-entry-panel-comment = Barre système principale pour les menus et les applets +xdg-entry-power = Alimentation et batterie +xdg-entry-power-comment = Modes d'alimentation et options d'économie d'énergie +xdg-entry-region-language = Région et langue +xdg-entry-region-language-comment = Formater les dates, les heures et les nombres en fonction de votre région +xdg-entry-sound = Son +xdg-entry-sound-comment = Paramètres audio pour les appareils, les alertes et les applications +xdg-entry-startup-apps = Applications de démarrage +xdg-entry-startup-apps-comment = Configurer les applications qui s'exécutent lors de la connexion +xdg-entry-system = Système et comptes +xdg-entry-time-language = Heure et langue +xdg-entry-touchpad = Pavé tactile +xdg-entry-touchpad-comment = Vitesse du pavé tactile, options de clic, gestes +xdg-entry-users = Utilisateurs +xdg-entry-users-comment = Authentification et comptes utilisateurs +xdg-entry-vpn-comment = Connexions VPN et profils de connexion +xdg-entry-wallpaper = Fond d'écran +xdg-entry-wallpaper-comment = Images de fond d'écran, couleurs et options de diaporama +xdg-entry-window-management = Gestion des fenêtres +xdg-entry-window-management-comment = Action de la touche Super, options de contrôle des fenêtres et options supplémentaires d'agencement des fenêtres +xdg-entry-wired = Filaire +xdg-entry-wired-comment = Connexions filaires et profils +xdg-entry-wireless-comment = Connexions Wi-Fi et profils +xdg-entry-workspaces = Espaces de travail +xdg-entry-workspaces-comment = Orientation des espaces de travail, aperçu et gestion multi-écrans +xdg-entry-x11-applications = Compatibilité des applications X11 +xdg-entry-x11-applications-comment = Mise à l’échelle des applications du gestionnaire de fenêtres X11, écran principal et raccourcis globaux + ## Networking & Wireless -connections-and-profiles = - Connexions { $variant -> - [wired] filaires - [wifi] Wi-Fi - [vpn] VPN - *[other] inconnues - } et profils. add-network = Ajouter un réseau .profile = Ajouter un profil add-vpn = Ajouter un VPN @@ -95,7 +147,6 @@ online-accounts = Comptes en lignes confirm = Confirmer bluetooth = Bluetooth - .desc = Gérer les périphériques Bluetooth .status = Ce système est visible en tant que { $aliases } tant que les paramètres Bluetooth sont ouverts. .connected = Connecté .connecting = Connexion @@ -123,7 +174,6 @@ desktop = Bureau wallpaper = Fond d’écran .change = Changer l'image tous les - .desc = Images de fond d’écran, couleurs et options de diaporama .fit = Adapter le fond d’écran .folder-dialog = Choisir le dossier de fond d’écran .image-dialog = Choisir l'image de fond d’écran @@ -154,7 +204,6 @@ never = Jamais ## Desktop: Appearance appearance = Apparence - .desc = Couleur d'accentuation et thème accent-color = Couleur d'accentuation app-background = Arrière-plan des fenêtres auto = Auto @@ -214,12 +263,10 @@ monospace-font = Police monospace ## Desktop: Notifications notifications = Notifications - .desc = Ne pas déranger, notifications sur l'écran de verrouillage, et paramètres par application ## Desktop: Panel panel = Panneau - .desc = Barre système principale pour les menus et les applets add = Ajouter add-applet = Ajouter applet all = Tous @@ -262,12 +309,10 @@ panel-missing = La configuration du panneau est manquante ## Desktop: Dock dock = Dock - .desc = Un panneau optionnel pour les applis et les applets ## Desktop: Window management window-management = Gestion des fenêtres - .desc = Actions de la touche Super, options de contrôle des fenêtres et options supplémentaires d'agencement des fenêtres super-key = Action de la touche Super .launcher = Ouvrir le Lanceur .workspaces = Ouvrir les Espaces de travail @@ -277,6 +322,7 @@ window-controls = Contrôles des fenêtres .maximize = Afficher le bouton maximiser .minimize = Afficher le bouton minimiser .active-window-hint = Afficher l'indice de la fenêtre active + .position-start = Placer les boutons à gauche (style macOS) focus-navigation = Navigation par le focus .focus-follows-cursor = Le focus suit le curseur .focus-follows-cursor-delay = Délai de suivi du focus en ms @@ -285,7 +331,6 @@ focus-navigation = Navigation par le focus ## Desktop: Workspaces workspaces = Espaces de travail - .desc = Orientation et comportement des espaces de travail workspaces-behavior = Comportement des espaces de travail .dynamic = Espaces de travail dynamiques .dynamic-desc = Supprime automatiquement les espaces de travail vides. @@ -312,7 +357,6 @@ color = Couleur .sidebar = Profils de couleurs .temperature = Température de couleur display = Écrans - .desc = Gérer les écrans, les modes graphiques et le mode nuit .arrangement = Disposition des écrans .arrangement-desc = Faire glisser les écrans pour les réorganiser .enable = Activer écran @@ -365,7 +409,6 @@ legacy-app-scaling = Mise à l'échelle des applications système X11 ## Sound sound = Son - .desc = N/A sound-output = Sortie .volume = Volume de sortie .device = Périphérique de sortie @@ -387,7 +430,6 @@ sound-applications = Applications ## Power power = Alimentation - .desc = Gérer les paramètres d'alimentation battery = Batterie .minute = { $value } { $value -> @@ -432,7 +474,6 @@ power-saving = Options d'économie d'énergie acceleration-desc = Ajuste automatiquement la sensibilité du suivi en fonction de la vitesse disable-while-typing = Désactiver pendant la saisie input-devices = Périphériques d'entrée - .desc = Périphériques d'entrée primary-button = Bouton principal .desc = Définit l'ordre des boutons physiques .left = Gauche @@ -451,7 +492,6 @@ fast = Rapide short = Court long = Long keyboard = Clavier - .desc = Sources de saisie, changement de source, saisie de caractères spéciaux, raccourcis keyboard-sources = Sources de saisie .desc = Les sources d'entrée peuvent être changées en utilisant la combinaison de touches Super+Espace. Cette combinaison peut être modifiée dans les paramètres des raccourcis clavier. .move-up = Remonter @@ -604,7 +644,6 @@ replace-shortcut-dialog = Remplacer le raccourci ? ## Input: Mouse mouse = Souris - .desc = Vitesse de la souris, accélération, défilement naturel .speed = Vitesse de la souris .acceleration = Activer l'accélération de la souris @@ -619,7 +658,6 @@ tap-to-click = Tapoter pour cliquer .desc = Active le tapotement à un doigt pour le clic principal, le tapotement à deux doigts pour le clic secondaire, et le tapotement à trois doigts pour le clic du milieu touchpad = Pavé tactile .acceleration = Activer l'accélération du pavé tactile - .desc = Vitesse du pavé tactile, options de clic, gestes .speed = Vitesse du pavé tactile ## Input: Gestures @@ -634,9 +672,7 @@ open-workspaces-view = Ouvrir l'aperçu des espaces de travail ## Time & Language time = Heure et langue - .desc = N/A time-date = Date et heure - .desc = Fuseau horaire, réglage de l'heure automatique et format de l'heure .auto = Régler automatiquement .auto-ntp = La date et l'heure seront mises à jour automatiquement lorsque le fuseau horaire sera défini time-zone = Fuseau Horaire @@ -652,7 +688,6 @@ time-format = Format date et heure .sunday = Dimanche .monday = Lundi time-region = Région et langue - .desc = Format de la date, de l'heure et des nombres en fonction de votre région formatting = Format .dates = Dates .time = Heure @@ -674,7 +709,6 @@ system = Système et comptes ## System: About about = À propos - .desc = Nom de l'appareil, informations sur le matériel et paramètres par défaut du système d'exploitation about-device = Nom de l'appareil .desc = Il est visible par les autres appareils réseau ou Bluetooth about-hardware = Matériel @@ -694,13 +728,11 @@ about-related = Paramètres associés ## System: Firmware -firmware = Micrologiciel - .desc = Détails micrologiciel +firmware = Firmware ## System: Users users = Utilisateurs - .desc = Authentification et comptes utilisateurs .admin = Admin .standard = Standard .profile-add = Choisir l'image de profil @@ -713,7 +745,6 @@ full-name = Nom complet ## System: Default Applications default-apps = Applications par défaut - .desc = Navigateur web, client mail, explorateur de fichiers, et autres applications .web-browser = Navigateur web .file-manager = Explorateur de fichiers .mail-client = Client mail @@ -724,6 +755,7 @@ default-apps = Applications par défaut .terminal = Terminal .other-associations = Autres associations .text-editor = Éditeur de texte + .not-installed = Non installé identity = Identité save = Enregistrer password-confirm = Confirmer le mot de passe @@ -798,10 +830,8 @@ gestures = Gestes .four-finger-up = Glissement de quatre doigts vers le haut .three-finger-any = Glissement de trois doigts dans n'importe quelle direction legacy-applications = Compatibilité des applications X11 - .desc = Échelle des fenêtres d'applications systèmes X11 et raccourcis globaux input-source-switch = Changer la langue de saisie du clavier startup-apps = Applications de démarrage - .desc = Configurer les applications qui se lancent au démarrage .add = Ajouter appli .user = Applications lancées lors de la connexion .none = Aucune application de démarrage ajoutée @@ -824,3 +854,52 @@ sound-device-port-unplugged = Débranché sound-hd-audio = Audio HD sound-usb-audio = Audio USB sound-device-profiles = Profils des périphériques +shadows-floating = Fenêtres flottantes + .clip = Aligner avec les coins système et appliquer les ombres +shadows-tiling = Fenêtres agencées + .clip = Aligner avec les coins système + .shadow = Appliquer les ombres +shadow-and-corners = Ombres et arrondis des fenêtres +workspaces-overview = Aperçu des espaces de travail + .action-on-typing = Action lors de la saisie + .none = Aucun + .launcher = Ouvrir le lanceur + .applications = Ouvrir les applications +xdg-entry-mouse-keywords = COSMIC;Souris;Accélération;Défilement; +xdg-entry-notifications-keywords = COSMIC;Notification;Verrouillage; +xdg-entry-startup-apps-keywords = COSMIC;Démarrage;Application; +xdg-entry-wired-keywords = COSMIC;Filaire;LAN;Réseau;Connexion; +xdg-entry-appearance-keywords = COSMIC;Accentuation;Couleur;Icône;Police;Thème +xdg-entry-dock-keywords = COSMIC;Dock;Panneau;Applet +xdg-entry-panel-keywords = COSMIC;Panneau;Applet +xdg-entry-time-language-comment = Gérer la date, l’heure, la région et la langue du système +xdg-entry-desktop-keywords = COSMIC;Bureau; +xdg-entry-x11-applications-keywords = COSMIC;X11;Application;Jeu;Compatibilité; +xdg-entry-touchpad-keywords = COSMIC;Pavé tactile;Gestes; +xdg-entry-system-keywords = COSMIC;Système;Info;Comptes;Firmware; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Réseau;Connexion; +xdg-entry-about-keywords = COSMIC;À propos +xdg-entry-a11y-keywords = COSMIC;Accessibilité,A11y;Écran;Lecteur;Loupe;Contraste;Couleur; +xdg-entry-date-time-keywords = COSMIC;Horaire;Fuseau; +xdg-entry-desktop-comment = Fond d’écran, apparence, panneau, dock, gestion des fenêtres et paramètres des espaces de travail +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-network-keywords = COSMIC;Réseau;Sans fil;Wi-Fi;VPN; +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Espace de travail;Orientation;Aperçu;Écran; +xdg-entry-system-comment = Informations système, comptes et mises à jour du firmware +xdg-entry-wallpaper-keywords = COSMIC;Fond d'écran;Arrière-plan;Diaporama; +xdg-entry-users-keywords = COSMIC;Utilisateur;Compte; +xdg-entry-vpn-keywords = COSMIC;VPN;Réseau;Connexion;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;Système;Heure;Date;Région;Langue; +xdg-entry-input-keywords = COSMIC;Saisie;Clavier;Souris;Souris; +xdg-entry-comment = Application Paramètres pour le bureau COSMIC +xdg-entry-sound-keywords = COSMIC;Son;Audio;Alerte;Pipewire; +xdg-entry-power-keywords = COSMIC;Alimentation;Batterie +xdg-entry-default-apps-keywords = COSMIC;Défaut;Application +xdg-entry-keywords = COSMIC;Paramètres; +xdg-entry-region-language-keywords = COSMIC;Région;Langue;Date;Format;Heure;Paramètres régionaux;Localisation; +xdg-entry-applications-keywords = COSMIC;Défaut;Application;Démarrage;X11;Compatibilité +xdg-entry-keyboard-keywords = COSMIC;Clavier;Saisie;Source;Raccourcis; +xdg-entry-window-management-keywords = COSMIC;Fenêtre;Gestion;Agencement;Super;Touche; +xdg-entry-displays-keywords = COSMIC;Écran; +no-search-results = Aucun réseau ne correspond à votre recherche. diff --git a/i18n/fy/cosmic_settings.ftl b/i18n/fy/cosmic_settings.ftl index ccfeb5f..d69033b 100644 --- a/i18n/fy/cosmic_settings.ftl +++ b/i18n/fy/cosmic_settings.ftl @@ -4,12 +4,5 @@ dbus-connection-error = Koe net mei DBus ferbine ok = Okee unknown = Ûnbekend number = { $number } -connections-and-profiles = - connections-and-profiles = { $variant -> - [wired] Kabelferbiningen - [wifi] Wifi-ferbiningen - [vpn] VPN-ferbiningen - *[other] Ûnbekende ferbiningen - } en ferbiningsprofilen. cancel = Annulearje settings = Ynstellings diff --git a/i18n/ga/cosmic_settings.ftl b/i18n/ga/cosmic_settings.ftl index 7682f7e..ace1bf1 100644 --- a/i18n/ga/cosmic_settings.ftl +++ b/i18n/ga/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Sreangnasctha - [wifi] Wi-Fi - [vpn] VPN - *[other] anaithnid - } ceangail agus próifílí ceangailte. add-network = Cuir líonra leis .profile = Cuir próifíl leis add-vpn = Cuir VPN leis @@ -99,7 +92,6 @@ activate = Gníomhachtaigh confirm = Deimhnigh enable = Cumasaigh bluetooth = Bluetooth - .desc = Bainistigh gléasanna Bluetooth .status = Tá an córas seo le feiceáil mar { $aliases } agus socruithe Bluetooth oscailte. .connected = Ceangailte .connecting = Ag ceangal @@ -108,9 +100,9 @@ bluetooth = Bluetooth .disconnect = Dícheangail .forget = Déan dearmad .dbus-error = Tharla earráid agus tú ag idirghníomhú le DBus: { $why } - .disabled = Tá an tseirbhís bluetooth díchumasaithe - .inactive = Níl an tseirbhís bluetooth gníomhach - .unknown = Níorbh fhéidir an tseirbhís bluetooth a ghníomhachtú. An bhfuil blueZ suiteáilte? + .disabled = Tá an tseirbhís Bluetooth díchumasaithe + .inactive = Níl an tseirbhís Bluetooth gníomhach + .unknown = Níorbh fhéidir an tseirbhís Bluetooth a ghníomhachtú. An bhfuil BlueZ suiteáilte? bluetooth-paired = Gléasanna ceangailte roimhe seo .connect = Ceangail .battery = { $percentage }% cadhnra @@ -171,10 +163,9 @@ desktop = Deasc wallpaper = Cúlbhrat .change = Athraigh íomhá gach - .desc = Íomhánna cúlbhrat, dathanna, agus roghanna taispeántas sleamhnán. .fit = Cúlbhrat oiriúnach .folder-dialog = Roghnaigh fillteán cúlbhrat - .image-dialog = Roghnaigh íomhá cúlbhrat + .image-dialog = Roghnaigh íomhá chúlbhrat .plural = Cúlbhrat .same = Cúlbhrat céanna ar gach taispeáint .slide = Taispeántas sleamhnán @@ -202,7 +193,6 @@ never = Riamh ## Desktop: Appearance appearance = Dealramh - .desc = Dathanna béime agus téamaíocht accent-color = Dath béime app-background = Cúlra fuinneoige auto = Uath @@ -233,7 +223,7 @@ container-background = Cúlra coimeádán control-tint = Dath scátha comhpháirte rialaithe .desc = Úsáidtear é le haghaidh cúlra de chnaipí caighdeánacha, ionchuir chuardaigh, ionchuir téacs, agus comhpháirteanna comhchosúla frosted = Éifeacht gloine reatha ar chóras an úsáideora - .desc = Cuireann sé doiléiriú cúlra i bhfeidhm ar an bpainéal, an duga, na feidhmchláiríní, an lainseálaí, agus an leabharlann aip + .desc = Cuireann sé doiléiriú cúlra i bhfeidhm ar an bpainéal, an duga, na feidhmchláiríní, an lainseálaí, agus leabharlann feidhmchlár enable-export = Cuir an téama seo i bhfeidhm ar aipeanna GNOME. .desc = Ní thacaíonn gach tacar uirlisí le huath-athrú. B’fhéidir go mbeadh gá aipeanna nach bhfuil i COSMIC a atosú tar éis athrú téama. icon-theme = Téama deilbhíní @@ -262,12 +252,10 @@ monospace-font = Cló monospás ## Desktop: Notifications notifications = Fógraí - .desc = Ná cuir isteach, fógraí glasála scáileáin, agus socruithe in aghaidh an fheidhmchláir ## Desktop: Panel panel = Painéal - .desc = Barra córais phríomhúil do roghchláir agus feidhmchláiríní add = Cuir leis add-applet = Cuir feidhmchláirín leis all = Gach @@ -277,8 +265,8 @@ end-segment = Deighleog deireadh large = Mór no-applets-found = Níor aimsíodh feidhmchláiríní... panel-bottom = Bun -panel-left = Clé -panel-right = Deas +panel-left = Ar chlé +panel-right = Ar dheis panel-top = Barr search-applets = Cuardach feidhmchláiríní... small = Beag @@ -310,12 +298,10 @@ panel-missing = Tá cumraíocht an phainéil ar iarraidh ## Desktop: Dock dock = Duga - .desc = Barra roghnach le haghaidh aipeanna agus feidhmchláiríní ## Desktop: Window management window-management = Bainistíocht fuinneoige - .desc = Gníomh eochair Super, roghanna rialaithe fuinneog, agus roghanna breise tíliú fuinneog super-key = Gníomh na heochrach Super .launcher = Oscail lainseálaí .workspaces = Oscail spásanna oibre @@ -334,7 +320,6 @@ focus-navigation = Nascleanúint fócais ## Desktop: Workspaces workspaces = Spásanna oibre - .desc = Treoshuíomh agus iompar spás oibre workspaces-behavior = Iompar spáis oibre .dynamic = Spásanna oibre dinimiciúla .dynamic-desc = Baintear spásanna oibre folamh go huathoibríoch. @@ -361,10 +346,9 @@ color = Dath .sidebar = Próifílí dathanna .temperature = Teocht datha display = Taispeántais - .desc = Bainistigh taispeántais agus solas oíche .arrangement = Socrú taispeántais .arrangement-desc = Tarraing taispeántais chun iad a athshocrú - .enable = Cumasaigh an taispeáint + .enable = Cumasaigh an dtaispeáint .external = { $size } { $output } taispeáint sheachtrach .laptop = { $size } taispeáint ríomhaire glúine .options = Roghanna taispeána @@ -410,7 +394,6 @@ dialog = Dialóg ## Sound sound = Fuaim - .desc = N/A sound-output = Aschur .volume = Toirt aschuir .device = Gléas aschuir @@ -432,7 +415,6 @@ sound-applications = Feidhmchláir ## Power power = Cumhacht & ceallraí - .desc = Bainistigh socruithe cumhachta battery = Ceallraí .minute = { $value } { $value -> @@ -477,7 +459,6 @@ power-saving = Roghanna coigilte cumhachta acceleration-desc = Coigeartaíonn sé íogaireacht rianaithe go huathoibríoch bunaithe ar luas disable-while-typing = Díchumasaigh agus tú ag clóscríobh input-devices = Gléasanna ionchuir - .desc = Gléasanna ionchuir primary-button = Cnaipe príomhúil .desc = Socraíonn sé ord na gcnaipí fisiciúla .left = Clé @@ -496,7 +477,6 @@ fast = Tapa short = Gairid long = Fada keyboard = Méarchlár - .desc = Foinsí ionchuir, athrú, iontráil carachtar speisialta, aicearraí keyboard-sources = Foinsí ionchuir .desc = Is féidir foinsí ionchuir a athrú trí úsáid a bhaint as teaglaim eochair Super+Spás. Is féidir é seo a shaincheapadh sna socruithe aicearra méarchláir. .move-up = Bog suas @@ -538,8 +518,8 @@ migrate-workspace-next = Aistrigh spás oibre go dtí an chéad aschur eile migrate-workspace = Imirce spás oibre chuig aschur { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } navigate = Nascleanúint @@ -561,19 +541,19 @@ nav-shortcuts = Nascleanúint .prev-workspace = Fócas ar spás oibre roimhe seo .next-workspace = Fócas ar an gcéad spás oibre eile .focus = - Fuinneog fócais { $direction -> + Fócas fuinneog { $direction -> *[down] síos [in] isteach - [left] clé + [left] ar chlé [out] amach - [right] deas + [right] ar dheis [up] suas } .output = Athraigh chuig aschur { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .workspace = Athraigh go spás oibre { $num } @@ -587,24 +567,24 @@ manage-windows = Bainistigh fuinneoga .toggle-sticky = Scoránaigh an fhuinneog greamaitheach move-windows = Bog fuinneoga .direction = - Bog Fuinneog { $direction -> + Bog an fhuinneog { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .display = - Bog fuinneog monatóir amháin { $direction -> + Bog an fhuinneog monatóir amháin { $direction -> *[down] síos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [up] suas } .workspace = - Bog fuinneog spás oibre amháin { $direction -> + Bog an fhuinneog spás oibre amháin { $direction -> *[below] thíos - [left] clé - [right] deas + [left] ar chlé + [right] ar dheis [above] thuas } .workspace-num = Bog an fhuinneog go spás oibre { $num } @@ -658,9 +638,8 @@ zoom-out = Súmáil amach ## Input: Mouse mouse = Luch - .desc = Luas luch, luasghéarú, scrollú nádúrtha .speed = Luas luch - .acceleration = Cumasaigh luasghéarú na luiche + .acceleration = Cumasaigh luasghéarú luiche ## Input: Touchpad @@ -673,7 +652,6 @@ tap-to-click = Tapáil le cliceáil .desc = Cumasaíonn sé tapáil le méar amháin le haghaidh cliceáil phríomhúil, tapáil le dhá mhéar le haghaidh cliceáil thánaisteach, agus tapáil le trí mhéar le haghaidh cliceáil lár touchpad = Ceap tadhaill .acceleration = Cumasaigh luasghéarú an ceap tadhaill - .desc = Luas an ceap tadhaill, roghanna cliceáil, gothaí .speed = Luas an ceap tadhaill ## Input: Gestures @@ -694,9 +672,7 @@ open-workspaces-view = Oscail radharc spásanna oibre ## Time & Language time = Am & teanga - .desc = N/A time-date = Dáta & am - .desc = Crios ama, socruithe uathoibríocha cloig, agus formáidiú ama .auto = Socraigh go huathoibríoch .auto-ntp = Nuashonrófar an dáta agus an t-am go huathoibríoch nuair a shocrófar an crios ama time-zone = Crios ama @@ -712,7 +688,6 @@ time-format = Formáid dáta & ama .sunday = Domhnach .monday = Luan time-region = Réigiún & teanga - .desc = Formáidigh dátaí, amanna agus uimhreacha bunaithe ar do réigiún formatting = Formáidiú .dates = Dátaí .time = Am @@ -734,7 +709,6 @@ applications = Feidhmchláir ## Applications: Default Applications default-apps = Feidhmchláir réamhshocraithe - .desc = Brabhsálaí gréasáin réamhshocraithe, cliant ríomhphoist, brabhsálaí comhad, agus feidhmchláir eile .web-browser = Brabhsálaí gréasáin .file-manager = Bainisteoir comhad .mail-client = Cliant ríomhphoist @@ -745,11 +719,11 @@ default-apps = Feidhmchláir réamhshocraithe .terminal = Teirminéal .other-associations = Cumainn eile .text-editor = Eagarthóir téacs + .not-installed = Gan suiteáil ## Applications: Startup Applications startup-apps = Feidhmchláir tosaithe - .desc = Cumraigh feidhmchláir a ritheann ar logáil isteach. .add = Cuir feidhmchlár leis .user = Lainseáil feidhmchláir nuair a logálann tú isteach .none = Níor cuireadh aon fheidhmchláir tosaithe leis @@ -760,9 +734,8 @@ startup-apps = Feidhmchláir tosaithe ## Applications: Legacy Applications legacy-applications = Comhoiriúnacht feidhmchláir X11 - .desc = Scálú feidhmchlár córais fuinneoige X11 agus aicearraí domhanda legacy-app-global-shortcuts = Aicearraí domhanda i feidhmchláir X11 - .desc = Le haicearraí domhanda, is féidir le feidhmchláir eile aitheantas a thabhairt do bhuillí eochracha agus d’imeachtaí cnaipe luiche a dhéantar in aipeanna le haghaidh gnéithe cosúil le brúigh-chun-caint nó brúigh-chun-balbhú. De réir réamhshocraithe, tá sé seo díchumasaithe in aipeanna X11 lena chinntiú nach féidir le feidhmchláir eile monatóireacht a dhéanamh ar imeachtaí méarchláir agus luiche ina bhfuil faisnéis íogair. + .desc = Le haicearraí domhanda, is féidir le feidhmchláir eile aitheantas a thabhairt do bhuillí eochracha agus d’imeachtaí cnaipe luiche a dhéantar in feidhmchláir le haghaidh gnéithe cosúil le brúigh-chun-caint nó brúigh-chun-balbhú. De réir réamhshocraithe, tá sé seo díchumasaithe in feidhmchláir X11 lena chinntiú nach féidir le feidhmchláir eile monatóireacht a dhéanamh ar imeachtaí méarchláir agus luiche ina bhfuil faisnéis íogair. .none = Gan eochracha .modifiers = Mionathraitheoirí (Super, Shift, Control, Alt) .combination = Gach eochair agus na modhnóirí Super, Control nó Alt á mbrú @@ -785,7 +758,6 @@ system = Córas & cuntais ## System: About about = Maidir - .desc = Ainm gléis, faisnéis crua-earraí, réamhshocruithe córais oibriúcháin about-device = Ainm an ghléis .desc = Feictear an t-ainm seo ar líonraí nó ar ghléasanna Bluetooth eile about-hardware = Crua-earraí @@ -806,12 +778,10 @@ about-related = Socruithe gaolmhara ## System: Firmware firmware = Dochtearraí - .desc = Sonraí maidir le dochtearraí ## System: Users users = Úsáideoirí - .desc = Fíordheimhniú agus cuntais úsáideora .admin = Riarthóir .standard = Caighdeán .profile-add = Roghnaigh íomhá phróifíl @@ -836,3 +806,108 @@ sound-device-port-unplugged = Díphlugáilte sound-hd-audio = Fuaim HD sound-usb-audio = Fuaim USB sound-device-profiles = Próifílí gléasanna +shadows-floating = Fuinneoga ar snámh + .clip = Meaitseáil coirnéil an chórais agus cuir scáthanna i bhfeidhm +shadows-tiling = Fuinneoga tílithe + .clip = Meaitseáil coirnéil an chórais + .shadow = Cuir scáthanna i bhfeidhm +shadow-and-corners = Scáth agus coirnéil fuinneoige +workspaces-overview = Forbhreathnú ar Spásanna Oibre + .action-on-typing = Gníomh ar chlóscríobh + .none = Dada + .launcher = Oscail an Lainseálaí + .applications = Oscail Feidhmchláir +xdg-entry-wireless = Wi-Fi +xdg-entry-a11y = Inrochtaineacht +xdg-entry-desktop-keywords = COSMIC;Deasc; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Líonra;Ceangal; +xdg-entry-about-keywords = COSMIC;Maidir +xdg-entry-desktop = Deasc +xdg-entry-date-time-keywords = COSMIC;Am;Crios; +xdg-entry-wallpaper = Cúlbhrat +xdg-entry-displays = Taispeántais +xdg-entry-date-time = Dáta & Am +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-applications = Feidhmchláir +xdg-entry-default-apps-keywords = COSMIC;Réamhshocrú;Feidhmchlár +xdg-entry-keywords = COSMIC;Socruithe; +xdg-entry-about = Maidir +xdg-entry-appearance = Dealramh +xdg-entry-workspaces = Spásanna Oibre +xdg-entry-mouse-keywords = COSMIC;Luch;Luasghéarú;Scrolláil; +xdg-entry-keyboard-comment = Foinsí ionchuir, athrú, iontráil carachtar speisialta, aicearraí +xdg-entry-mouse = Luch +xdg-entry-dock-keywords = COSMIC;Duga;Painéal;Feidhmchláirín +xdg-entry-mouse-comment = Luas luiche, luasghéarú, agus scrollú nádúrtha +xdg-entry-keyboard = Méarchlár +xdg-entry-network = Líonra & Gan Sreang +xdg-entry-input-comment = Socruithe méarchláir agus luiche +xdg-entry-dock = Duga +xdg-entry-input-keywords = COSMIC;Ionchur;Méarchlár;Luch;Luchóga; +xdg-entry-input = Gléasanna Ionchuir +xdg-entry-keyboard-keywords = COSMIC;Méarchlár;Ionchur;Foinse;Aicearraí; +xdg-entry-network-comment = Bainistigh naisc líonra +xdg-entry-touchpad = Ceap tadhaill +xdg-entry-wired = Sreangaithe +xdg-entry-startup-apps-comment = Cumraigh feidhmchláir a ritheann ar logáil isteach +xdg-entry-region-language = Réigiún & Teanga +xdg-entry-bluetooth-comment = Bainistigh gléasanna Bluetooth +xdg-entry-notifications-keywords = COSMIC;Fógra;Glasáil; +xdg-entry-startup-apps-keywords = COSMIC;Tosú;Feidhmchlár; +xdg-entry-default-apps-comment = Brabhsálaí gréasáin réamhshocraithe, cliant ríomhphoist, brabhsálaí comhad, agus feidhmchláir eile +xdg-entry-wired-keywords = COSMIC;Sreangaithe;Líonra Ceantair Áitiúil;Líonra;Nasc; +xdg-entry-power = Cumhacht & Ceallraí +xdg-entry-appearance-keywords = COSMIC;Béim;Dath;Deilbhín;Cló;Téama +xdg-entry-system = Córas & Cuntais +xdg-entry-panel-keywords = COSMIC;Painéal;Feidhmchláirín +xdg-entry-window-management = Bainistíocht Fuinneog +xdg-entry-time-language-comment = Bainistigh dáta an chórais, am, réigiún agus teanga +xdg-entry-x11-applications-keywords = COSMIC;X11;Feidhmchlár;Cluiche;Comhoiriúnacht; +xdg-entry-displays-comment = Bainistigh socruithe cumraíochta taispeána +xdg-entry-touchpad-keywords = COSMIC;Ceap tadhaill;Gothaí; +xdg-entry-time-language = Am & Teanga +xdg-entry-users = Úsáideoirí +xdg-entry-system-keywords = COSMIC;Córas;Eolas;Cuntais;Dochtearraí; +xdg-entry-default-apps = Feidhmchláir Réamhshocraithe +xdg-entry-applications-comment = Feidhmchláir réamhshocraithe, feidhmchláir tosaithe, agus socruithe comhoiriúnachta feidhmchlár X11 +xdg-entry-panel = Painéal +xdg-entry-notifications = Fógraí +xdg-entry-a11y-keywords = COSMIC;Inrochtaineacht;A11y;Scáileán;Léitheoir;Formhéadaitheoir;Codarsnacht;Dath; +xdg-entry-wireless-comment = Naisc Wi-Fi agus próifílí nasc +xdg-entry-desktop-comment = Socruithe cúlbhrat, cuma, painéal, duga, bainistíocht fuinneoga agus spás oibre +xdg-entry-a11y-comment = Léitheoir scáileáin, formhéadaitheoir, ardchodarsnacht, agus scagairí datha +xdg-entry-users-comment = Fíordheimhniú agus cuntais úsáideora +xdg-entry-dock-comment = Barra roghnach le haghaidh aipeanna agus feidhmchláiríní +xdg-entry-network-keywords = COSMIC;Líonra;Gan Sreang;WiFi;VPN; +xdg-entry-wallpaper-comment = Íomhánna cúlbhrat, dathanna agus roghanna taispeántais sleamhnán +xdg-entry-startup-apps = Feidhmchláir tosaithe +xdg-entry-workspaces-keywords = COSMIC;Spás Oibre;Treoshuíomh;Forbhreathnú;Monatóir; +xdg-entry-system-comment = Faisnéis chórais, cuntais, agus nuashonruithe dochtearraí +xdg-entry-x11-applications-comment = Scálú feidhmchlár chóras fuinneoga X11, príomhthaispeántas, agus aicearraí domhanda +xdg-entry-region-language-comment = Formáidigh dátaí, amanna agus uimhreacha bunaithe ar do réigiún +xdg-entry-wallpaper-keywords = COSMIC;Cúlbhrat;Cúlra;Taispeántas sleamhnán; +xdg-entry-users-keywords = COSMIC;Úsáideoir;Cuntas; +xdg-entry-about-comment = Ainm gléis, faisnéis crua-earraí, réamhshocruithe córais oibriúcháin +xdg-entry-vpn-keywords = COSMIC;VPN;Líonra;Nasc;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = Dathanna béime agus téamaí +xdg-entry-time-language-keywords = COSMIC;Córas;Am;Dáta;Réigiún;Teanga; +xdg-entry-comment = Feidhmchlár socruithe don deasc COSMIC +xdg-entry-notifications-comment = Ná Cuir Isteach, fógraí glasála scáileáin, agus socruithe in aghaidh an fheidhmchláir +xdg-entry-sound-keywords = COSMIC;Fuaim;Cloisteáil;Foláireamh;Pipewire; +xdg-entry-power-keywords = COSMIC;Cumhacht;Ceallraí +xdg-entry-region-language-keywords = COSMIC;Réigiún;Teanga;Dáta;Formáid;Am;Suíomh;Logánú; +xdg-entry-applications-keywords = COSMIC;Réamhshocrú;Feidhmchlár;Tosaithe;X11;Comhoiriúnacht +xdg-entry-sound-comment = Socruithe fuaime do ghléasanna, d’fholáirimh agus d’fheidhmchláir +xdg-entry-touchpad-comment = Luas an ceap tadhaill, roghanna cliceáil, agus gothaí +xdg-entry-vpn-comment = Naisc VPN agus próifílí nasc +xdg-entry-window-management-keywords = COSMIC;Fuinneog;Bainistíocht;Tíliú;Super;Eochair; +xdg-entry-workspaces-comment = Treoshuíomh, forbhreathnú, agus iompar il-mhonatóireachta ar an spás oibre +xdg-entry-panel-comment = Barra córais phríomhúil le haghaidh biachláir agus feidhmchláiríní +xdg-entry-sound = Fuaim +xdg-entry-power-comment = Modhanna cumhachta agus roghanna coigilte cumhachta +xdg-entry-displays-keywords = COSMIC;Taispeántas; +xdg-entry-date-time-comment = Crios ama, socruithe uathoibríocha cloig, agus formáidiú ama +xdg-entry-x11-applications = Comhoiriúnacht Feidhmchláir X11 +xdg-entry-window-management-comment = Gníomh na sár-eochrach, roghanna rialaithe fuinneoige, agus roghanna breise tíleála fuinneoige +xdg-entry-wired-comment = Naisc sreangaithe agus próifílí nasc +no-search-results = Níl aon líonra ag teacht leis an gcuardach seo. diff --git a/i18n/hi/cosmic_settings.ftl b/i18n/hi/cosmic_settings.ftl index f660082..879d5c2 100644 --- a/i18n/hi/cosmic_settings.ftl +++ b/i18n/hi/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] तार - [wifi] वाई-फाई - [vpn] वी.पी.एन - *[other] अज्ञात - } कनेक्शन और प्रोफाइल। add-network = नेटवर्क जोड़ें .profile = प्रोफाइल जोड़ें add-vpn = वी.पी.एन जोड़ें diff --git a/i18n/hu/cosmic_settings.ftl b/i18n/hu/cosmic_settings.ftl index cb21b44..a3d2e76 100644 --- a/i18n/hu/cosmic_settings.ftl +++ b/i18n/hu/cosmic_settings.ftl @@ -4,56 +4,107 @@ ok = OK unknown = Ismeretlen number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = Rendszerinformáció +xdg-entry-about-comment = Eszköznév, hardverinformációk és az operációs rendszer alapértelmezett beállításai +xdg-entry-a11y = Akadálymentesség +xdg-entry-a11y-comment = Képernyőolvasó, nagyító, magas kontraszt és színszűrők +xdg-entry-appearance = Megjelenés +xdg-entry-appearance-comment = Kiemelőszínek és témázás +xdg-entry-applications = Alkalmazások +xdg-entry-applications-comment = Alapértelmezett alkalmazások, indítási alkalmazások és X11 alkalmazáskompatibilitási beállítások +xdg-entry-bluetooth-comment = Bluetooth-eszközök kezelése +xdg-entry-date-time = Dátum és idő +xdg-entry-date-time-comment = Időzóna, automatikus órabeállítások és időformátum +xdg-entry-default-apps = Alapértelmezett alkalmazások +xdg-entry-default-apps-comment = Alapértelmezett böngésző, levelezőprogram, fájlkezelő és egyéb alkalmazások +xdg-entry-desktop = Asztal +xdg-entry-displays = Kijelzők +xdg-entry-displays-comment = Kijelzőbeállítások kezelése +xdg-entry-dock = Dokk +xdg-entry-dock-comment = Egy opcionális sáv alkalmazásokhoz és kisalkalmazásokhoz +xdg-entry-input = Beviteli eszközök +xdg-entry-input-comment = Billentyűzet- és egérbeállítások +xdg-entry-keyboard = Billentyűzet +xdg-entry-keyboard-comment = Bemeneti források, speciális karakterek, gyorsbillentyűk +xdg-entry-mouse = Egér +xdg-entry-mouse-comment = Egérsebesség, gyorsítás és természetes görgetés +xdg-entry-network = Hálózat és Wi-Fi +xdg-entry-network-comment = Hálózati kapcsolatok kezelése +xdg-entry-notifications = Értesítések +xdg-entry-notifications-comment = Ne zavarjanak, zárolási képernyő értesítések és alkalmazásonkénti beállítások +xdg-entry-panel-comment = Fő rendszersáv menükhöz és kisalkalmazásokhoz +xdg-entry-power = Energia és akkumulátor +xdg-entry-power-comment = Energiagazdálkodási módok és energiagazdálkodási beállítások +xdg-entry-region-language = Régió és nyelv +xdg-entry-region-language-comment = Dátumok, időpontok és számok formázása a régió alapján +xdg-entry-sound = Hang +xdg-entry-sound-comment = Hangbeállítások eszközökhöz, figyelmeztetésekhez és alkalmazásokhoz +xdg-entry-startup-apps = Indítási alkalmazások +xdg-entry-startup-apps-comment = Azoknak az alkalmazásoknak a beállítása, amelyek bejelentkezéskor elindulnak +xdg-entry-system = Rendszer és fiókok +xdg-entry-time-language = Idő és nyelv +xdg-entry-touchpad = Érintőpárna +xdg-entry-touchpad-comment = Érintőpárna sebessége, kattintási beállítások és gesztusok +xdg-entry-users = Felhasználók +xdg-entry-users-comment = Hitelesítés és felhasználói fiókok +xdg-entry-vpn-comment = VPN-kapcsolatok és kapcsolódási profilok +xdg-entry-wallpaper = Háttérkép +xdg-entry-wallpaper-comment = Háttérképek, színek és diavetítési beállítások +xdg-entry-window-management = Ablakkezelés +xdg-entry-window-management-comment = Super billentyű funkció, ablakkezelési és csempézési beállítások +xdg-entry-wired = Vezetékes kapcsolatok +xdg-entry-wired-comment = Vezetékes kapcsolatok és kapcsolódási profilok +xdg-entry-wireless-comment = Wi-Fi kapcsolatok és kapcsolódási profilok +xdg-entry-workspaces = Munkaterületek +xdg-entry-workspaces-comment = Munkaterület-tájolás, áttekintés és többképernyős viselkedés +xdg-entry-x11-applications = X11 alkalmazások támogatása +xdg-entry-x11-applications-comment = X11 ablakrendszer alkalmazásméretezés, elsődleges kijelző és globális gyorsbillentyűk + ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Vezetékes - [wifi] Wi-Fi - [vpn] VPN - *[other] Ismeretlen - } kapcsolatok és profilok add-network = Hálózat hozzáadása .profile = Profil hozzáadása add-vpn = VPN hozzáadása airplane-on = A repülőgép üzemmód be van kapcsolva cable-unplugged = Kábel kihúzva connect = Csatlakozás -connected = Csatlakozva +connected = Csatlakoztatva connecting = Csatlakozás… -disconnect = Leválasztás +disconnect = Bontás forget = Elfelejtés known-networks = Ismert hálózatok network-and-wireless = Hálózat és Wi-Fi -no-networks = Nem található hálózat +no-networks = Nem található hálózat. no-vpn = Nincs elérhető VPN-kapcsolat password = Jelszó password-confirm = Jelszó megerősítése -remove = Törlés +remove = Eltávolítás settings = Beállítások username = Felhasználónév visible-networks = Látható hálózatok identity = Azonosító auth-dialog = Azonosítás szükséges - .vpn-description = Írd be a VPN szolgáltatás által követelt felhasználónevet és jelszót. - .wifi-description = Írd be a jelszót vagy a titkosítókulcsot. A router „WPS” gombjának megnyomásával is csatlakozhatsz. + .vpn-description = Írd be a VPN szolgáltatáshoz szükséges felhasználónevet és jelszót. + .wifi-description = Add meg a jelszót vagy a titkosítókulcsot. A router „WPS” gombjának megnyomásával is csatlakozhatsz. forget-dialog = El akarod felejteni ezt a Wi-Fi hálózatot? .description = A jelszót ismét meg kell adnod, ha újra csatlakozni szeretnél. network-device-state = - .activated = Csatlakozva + .activated = Csatlakoztatva .config = Csatlakozás… - .deactivating = Leválasztás… - .disconnected = Leválasztva + .deactivating = Bontás… + .disconnected = Kapcsolat bontva .failed = Csatlakozás sikertelen .ip-check = Kapcsolat ellenőrzése .ip-config = IP és router információk lekérése - .need-auth = Azonosítás szükséges + .need-auth = Hitelesítés szükséges .prepare = Felkészülés a kapcsolódáshoz - .secondaries = Várakozás egy másodlagos kapcsolatra + .secondaries = Várakozás másodlagos kapcsolatra .unavailable = Nem elérhető .unknown = Ismeretlen állapot .unmanaged = Kezeletlen - .unplugged = A kábel ki van húzva + .unplugged = Kábel kihúzva remove-connection-dialog = Törlöd a kapcsolati profilt? .vpn-description = A jelszót újra be kell írnod a jövőbeli használathoz. .wired-description = A profilt újból létre kell hoznod a jövőbeli használathoz. @@ -99,16 +150,15 @@ activate = Aktiválás confirm = Megerősítés enable = Engedélyezés bluetooth = Bluetooth - .desc = Bluetooth-eszközök kezelése .status = Ez a rendszer { $aliases } néven látható, amíg a Bluetooth beállítások vannak megnyitva. - .connected = Csatlakozva + .connected = Csatlakoztatva .connecting = Csatlakozás… - .disconnecting = Leválasztás… + .disconnecting = Bontás… .connect = Csatlakozás - .disconnect = Leválasztás + .disconnect = Bontás .forget = Elfelejtés .dbus-error = Hiba történt a DBus-szal való kommunikáció során: { $why } - .disabled = A Bluetooth szolgáltatás ki van kapcsolva + .disabled = A Bluetooth szolgáltatás le van tiltva .inactive = A Bluetooth szolgáltatás nem aktív .unknown = A Bluetooth szolgáltatást nem sikerült aktiválni. A BlueZ telepítve van? bluetooth-paired = Korábban párosított eszközök @@ -117,7 +167,7 @@ bluetooth-paired = Korábban párosított eszközök bluetooth-confirm-pin = Bluetooth PIN megerősítése .description = Erősítsd meg, hogy a következő PIN megegyezik a(z) { $device } eszközön megjelenített PIN-kóddal bluetooth-available = Közeli eszközök -bluetooth-adapters = Bluetooth adapterek +bluetooth-adapters = Bluetooth-adapterek ## Accessibility @@ -171,10 +221,9 @@ desktop = Asztal wallpaper = Háttérkép .change = Háttérkép váltásának gyakorisága - .desc = Háttérképek, színek és diavetítési beállítások .fit = Háttérkép illeszkedése - .folder-dialog = Válassz háttérkép mappát - .image-dialog = Válassz háttérkép képet + .folder-dialog = Válassz mappát a háttérképekhez + .image-dialog = Válassz képet a háttérképnek .plural = Háttérképek .same = Ugyanaz a háttérkép legyen minden kijelzőn .slide = Diavetítés @@ -184,7 +233,7 @@ all-displays = Minden kijelző colors = Színek dialog-add = Hozzáadás fill = Kitöltés -fit-to-screen = Képernyőhöz igazítás +fit-to-screen = Igazítás a képernyőhöz open-new-folder = Új mappa megnyitása recent-folders = Legutóbbi mappák x-minutes = @@ -202,7 +251,6 @@ never = Soha ## Desktop: Appearance appearance = Megjelenés - .desc = Kiemelőszínek és COSMIC témák accent-color = Kiemelőszín app-background = Ablakháttér auto = Automatikus @@ -219,20 +267,20 @@ mode-and-colors = Mód és színek recent-colors = Korábbi színek reset-to-default = Visszaállítás alapértelmezettre rgb = RGB -window-hint-accent = Az Aktív ablak kiemelésének színe -window-hint-accent-toggle = Témaszín használata az aktív ablak kiemelésére +window-hint-accent = Aktív ablak kiemelésének színe +window-hint-accent-toggle = Kiemelőszín használata az aktív ablak kiemelésére auto-switch = Automatikus váltás világos és sötét mód között - .sunrise = Napkeltekor világos módra vált - .sunset = Napnyugtakor sötét módra vált - .next-sunrise = Következő napfelkeltekor világos módra vált - .next-sunset = Következő napnyugtakor sötét módra vált + .sunrise = Napkeltekor világos módra váltás + .sunset = Napnyugtakor sötét módra váltás + .next-sunrise = Következő napfelkeltekor világos módra váltás + .next-sunset = Következő napnyugtakor sötét módra váltás container-background = Felületi elemek háttere - .desc-detail = A felületi elemek háttérszínét a navigációs oldalsáv, az oldalsó menü, a párbeszédablakok és hasonló widgetek használják. Alapértelmezés szerint a felületi elemek háttérszíne automatikusan az ablak hátteréből származik. + .desc-detail = A felületi elemek háttérszínét a navigációs oldalsáv, az oldalsó menü, a párbeszédablakok és hasonló modulok használják. Alapértelmezés szerint a felületi elemek háttérszíne automatikusan az ablak hátteréből származnak. .reset = Visszaállítás automatikusra - .desc = Navigációs oldalsávhoz, oldalsó menühöz, párbeszédablakhoz és hasonló widgetekhez használatos + .desc = Navigációs oldalsávhoz, oldalsó menühöz, párbeszédablakhoz és hasonló modulokhoz használandó control-tint = Vezérlőelemek színezése - .desc = Szabványos gombok hátterére, keresési bemenetekre, szövegbevitelre és hasonló összetevőkre használatos -frosted = Elmosódott üveg hatás a rendszerfelületen + .desc = Szabványos gombok hátterére, keresési bemenetekre, szövegbevitelre és hasonló összetevőkre használandó +frosted = Tejüveg hatás a rendszerfelületen .desc = A háttér elmosását alkalmazza a panelre, a dokkra, a kisalkalmazásokra, az indítóra és az alkalmazáskönyvtárra enable-export = Jelenlegi téma alkalmazása a GNOME-alkalmazásokra .desc = Nem minden eszközkészlet támogatja az automatikus váltást. Előfordulhat, hogy a téma módosítása után újra kell indítani a nem COSMIC-alapú alkalmazásokat. @@ -262,12 +310,10 @@ monospace-font = Rögzített szélességű betűtípus ## Desktop: Notifications notifications = Értesítések - .desc = Ne zavarjanak, zárolási képernyő értesítések és alkalmazásonkénti beállítások ## Desktop: Panel panel = Panel - .desc = Fő rendszersáv menükhöz és kisalkalmazásokhoz add = Hozzáadás add-applet = Kisalkalmazás hozzáadása all = Összes @@ -310,21 +356,19 @@ panel-missing = A panel konfigurációja hiányzik ## Desktop: Dock dock = Dokk - .desc = Egy opcionális sáv alkalmazásokhoz és kisalkalmazásokhoz ## Desktop: Window management window-management = Ablakkezelés - .desc = Super billentyű funkció, ablakkezelési és csempézési beállítások -super-key = Super billentyű +super-key = Super billentyű funkciója .launcher = Indító megnyitása .workspaces = Munkaterületek megnyitása .applications = Alkalmazások megnyitása - .disable = Kikapcsolás + .disable = Letiltás edge-gravity = A lebegő ablakok a közeli szélekhez igazodnak window-controls = Ablakvezérlés - .maximize = Maximalizálás gomb mutatása - .minimize = Minimalizálás gomb mutatása + .maximize = Maximalizálás gomb megjelenítése + .minimize = Minimalizálás gomb megjelenítése .active-window-hint = Aktív ablak kiemelése focus-navigation = Fókusznavigáció .focus-follows-cursor = Fókusz követi az egeret @@ -334,16 +378,15 @@ focus-navigation = Fókusznavigáció ## Desktop: Workspaces workspaces = Munkaterületek - .desc = Munkaterületek tájolása és viselkedése workspaces-behavior = Munkaterületek viselkedése .dynamic = Dinamikus munkaterületek - .dynamic-desc = Az üres munkamenetek automatikus eltávolítása + .dynamic-desc = Üres munkaterületek automatikus eltávolítása .fixed = Megadott számú munkaterület .fixed-desc = Munkaterületek hozzáadása vagy eltávolítása az áttekintésben workspaces-multi-behavior = Többmonitoros viselkedés .span = A munkaterületek kiterjednek a kijelzőkre .separate = A kijelzők külön munkaterülettel rendelkeznek -workspaces-overview-thumbnails = Munkaterület-áttekintő bélyegképek +workspaces-overview-thumbnails = Munkaterület-áttekintő előnézetek .show-number = Munkaterület számának megjelenítése .show-name = Munkaterület nevének megjelenítése workspaces-orientation = Munkaterületek tájolása @@ -361,7 +404,6 @@ color = Szín .sidebar = Színprofilok .temperature = Színhőmérséklet display = Kijelzők - .desc = Kijelzők kezelése és éjszakai fény .arrangement = Kijelző elrendezése .arrangement-desc = Húzd a kijelzőket az átrendezésükhöz .enable = Kijelző engedélyezése @@ -388,7 +430,7 @@ mirroring = Tükrözés } night-light = Éjszakai fény .auto = Automatikus (naplementétől napkeltéig) - .desc = Csökkentse a kék fényt melegebb színekkel + .desc = Kék fény csökkentése melegebb színekkel orientation = Tájolás .standard = Normál .rotate-90 = 90 fokos elforgatás @@ -410,7 +452,6 @@ dialog = Párbeszédablak ## Sound sound = Hang - .desc = N/A sound-output = Kimenet .volume = Kimeneti hangerő .device = Kimeneti eszköz @@ -432,7 +473,6 @@ sound-applications = Alkalmazások ## Power power = Energia és akkumulátor - .desc = Energiabeállítások kezelése battery = Akkumulátor .minute = { $value } { $value -> @@ -474,12 +514,11 @@ power-saving = Energiagazdálkodási beállítások ## Input -acceleration-desc = Automatikusan beállítja a követési érzékenységet a sebesség alapján -disable-while-typing = Letiltás gépelés közben +acceleration-desc = Követési érzékenység automatikus beállítása a sebesség alapján +disable-while-typing = Letiltás gépeléskor input-devices = Beviteli eszközök - .desc = Beviteli eszközök primary-button = Elsődleges gomb - .desc = A gombok sorrendjének beállítása + .desc = Gombok sorrendjének beállítása .left = Bal .right = Jobb scrolling = Görgetés @@ -496,9 +535,8 @@ fast = Gyors short = Rövid long = Hosszú keyboard = Billentyűzet - .desc = Bemeneti források, speciális karakterek, gyorsbillentyűk keyboard-sources = Bemeneti források - .desc = A bemeneti források a Super+Space billentyűkombinációval válthatók. Ez testreszabható a gyorsbillentyűk beállításaiban. + .desc = A bemeneti források a Super+Szóköz billentyűkombinációval válthatók. Ez testre szabható a gyorsbillentyűk beállításaiban. .move-up = Mozgatás feljebb .move-down = Mozgatás lejjebb .settings = Beállítások @@ -520,7 +558,7 @@ keyboard-numlock-boot = Num Lock .off = Kikapcsolva .set = Num Lock rendszerindítási állapotának beállítása added = Hozzáadva -type-to-search = Írj a kereséshez… +type-to-search = Gépelj a kereséshez… show-extended-input-sources = Bővített bemeneti források megjelenítése ## Input: Keyboard: Shortcuts @@ -532,8 +570,8 @@ cancel = Mégse command = Parancs custom = Egyedi debug = Hibakeresés -disabled = Tiltva -input-source-switch = Billentyűzetkiosztás váltása +disabled = Letiltva +input-source-switch = Beviteli forrás váltása migrate-workspace-prev = Munkaterület áthelyezése az előző kimenetre migrate-workspace-next = Munkaterület áthelyezése a következő kimenetre migrate-workspace = @@ -556,11 +594,11 @@ custom-shortcuts = Egyéni gyorsbillentyűk .none = Nincsenek egyéni gyorsbillentyűk modified = { $count } módosítva nav-shortcuts = Navigáció - .prev-output = Az előző kimenet fókuszálása - .next-output = A következő kimenet fókuszálása - .last-workspace = Az utolsó munkaterület fókuszálása - .prev-workspace = Az előző munkaterület fókuszálása - .next-workspace = A következő munkaterület fókuszálása + .prev-output = Fókuszálás az előző kimenetre + .next-output = Fókuszálás a következő kimenetre + .last-workspace = Fókuszálás az utolsó munkaterületre + .prev-workspace = Fókuszálás az előző munkaterületre + .next-workspace = Fókuszálás a következő munkaterületre .focus = Ablak fókuszálása { $direction -> *[down] le @@ -659,7 +697,6 @@ zoom-out = Kicsinyítés ## Input: Mouse mouse = Egér - .desc = Egérsebesség, gyorsítás és természetes görgetés .speed = Egér sebessége .acceleration = Egérgyorsítás engedélyezése @@ -670,24 +707,23 @@ click-behavior = Kattintási viselkedés .button-areas = Másodlagos kattintás a jobb alsó sarokban, középső kattintás az alsó középső sarokban pinch-to-zoom = Csippentéses nagyítás .desc = Két ujjal belenagyíthatsz a tartalomba azokban az alkalmazásokban, amik támogatják a nagyítást -tap-to-click = Koppints a kattintáshoz +tap-to-click = Koppintás a kattintáshoz .desc = Engedélyezi az egyujjas koppintást az elsődleges kattintáshoz, a kétujjas koppintást a másodlagos kattintáshoz és a háromujjas érintést a középső kattintáshoz touchpad = Érintőpárna .acceleration = Az Érintőpárna gyorsításának engedélyezése - .desc = Érintőpárna sebessége, kattintási lehetőségek, gesztusok .speed = Érintőpárna sebessége ## Input: Gestures gestures = Gesztusok - .four-finger-down = Négy ujjas csúsztatás lefelé - .four-finger-left = Négy ujjas csúsztatás balra - .four-finger-right = Négy ujjas csúsztatás jobbra - .four-finger-up = Négy ujjas csúsztatás felfelé - .three-finger-any = Három ujjas csúsztatás bármelyik irányba + .four-finger-down = Négyujjas csúsztatás lefelé + .four-finger-left = Négyujjas csúsztatás balra + .four-finger-right = Négyujjas csúsztatás jobbra + .four-finger-up = Négyujjas csúsztatás felfelé + .three-finger-any = Háromujjas csúsztatás bármelyik irányba switch-workspaces = Munkaterület váltása - .horizontal = Négy ujjas csúsztatás balra/jobbra - .vertical = Négy ujjas csúsztatás felfelé/lefelé + .horizontal = Négyujjas csúsztatás balra/jobbra + .vertical = Négyujjas csúsztatás felfelé/lefelé switch-between-windows = Váltás az ablakok között open-application-library = Alkalmazáskönyvtár megnyitása open-workspaces-view = Munkaterületek áttekintésének megnyitása @@ -695,9 +731,7 @@ open-workspaces-view = Munkaterületek áttekintésének megnyitása ## Time & Language time = Idő és nyelv - .desc = N/A time-date = Dátum és idő - .desc = Időzóna, automatikus órabeállítások és időformátum .auto = Beállítás automatikusan .auto-ntp = A dátum és idő automatikusan frissül, ha az időzóna be van állítva time-zone = Időzóna @@ -713,7 +747,6 @@ time-format = Dátum- és időformátum .sunday = Vasárnap .monday = Hétfő time-region = Régió és nyelv - .desc = Dátumok, időpontok és számok formázása a régió alapján formatting = Formátum .dates = Dátum .time = Idő @@ -735,7 +768,6 @@ applications = Alkalmazások ## Applications: Default Applications default-apps = Alapértelmezett alkalmazások - .desc = Alapértelmezett böngésző, levelezőprogram, fájlkezelő és egyéb alkalmazások .web-browser = Böngésző .file-manager = Fájlkezelő .mail-client = Levelezőprogram @@ -746,11 +778,11 @@ default-apps = Alapértelmezett alkalmazások .terminal = Terminál .other-associations = Egyéb társítások .text-editor = Szövegszerkesztő + .not-installed = Nincs telepítve ## Applications: Startup Applications startup-apps = Indítási alkalmazások - .desc = Azoknak az alkalmazásoknak a beállítása, amelyek bejelentkezéskor elindulnak .add = Alkalmazás hozzáadása .user = Bejelentkezéskor indított alkalmazások .none = Nincs indítási alkalmazás hozzáadva @@ -761,7 +793,6 @@ startup-apps = Indítási alkalmazások ## Applications: Legacy Applications legacy-applications = X11 alkalmazások támogatása - .desc = X11 ablakkezelő rendszer alkalmazásméretezés és globális gyorsbillentyűk legacy-app-global-shortcuts = Globális gyorsbillentyűk X11 alkalmazásokban .desc = A globális gyorsbillentyűk lehetővé teszik, hogy az alkalmazásokban a billentyűleütéseket és egérkattintásokat más alkalmazások is felismerjék, például a „push-to-talk” vagy a „push-to-mute” funkciókhoz. Alapértelmezés szerint a globális gyorsbillentyűk az X11 alkalmazásokban le van tiltva, hogy más alkalmazások ne figyelhessék a billentyű- és egéreseményeket, amelyek érzékeny információkat tartalmazhatnak. .none = Nincs billentyű @@ -786,11 +817,10 @@ system = Rendszer és fiókok ## System: About about = Rendszerinformáció - .desc = Eszköznév, hardverinformációk és az operációs rendszer alapértelmezett beállításai about-device = Eszköz neve .desc = Ez a név más hálózati vagy Bluetooth-eszközök számára látható about-hardware = Hardver - .model = Hardver modell + .model = Hardvermodell .memory = Memória .processor = Processzor .graphics = Grafika @@ -807,12 +837,10 @@ about-related = Kapcsolódó beállítások ## System: Firmware firmware = Firmware - .desc = Firmware részletei ## System: Users users = Felhasználók - .desc = Hitelesítés és felhasználói fiókok .admin = Rendszergazda .standard = Normál .profile-add = Profilkép kiválasztása @@ -827,12 +855,62 @@ password-mismatch = A jelszónak és a megerősítésének meg kell egyeznie save = Mentés amplification = Erősítés .desc = Lehetővé teszi a hangerő 150%-ra emelését -qr-code-unavailable = QR-kód nem elérhető +qr-code-unavailable = Nem érhető el a QR-kód network-name = Hálózat neve share = Hálózat megosztása scan-to-connect-description = Olvasd be a QR-kódot a hálózathoz való csatlakozáshoz. -place-here = Ide helyezd a kisalkalmazásokat +place-here = Helyezd ide a kisalkalmazásokat sound-device-port-unplugged = Nincs csatlakoztatva sound-hd-audio = HD-hang sound-usb-audio = USB-hang sound-device-profiles = Eszközprofilok +shadows-floating = Lebegő ablakok + .clip = Rendszersarkokhoz illeszkedés és árnyékok alkalmazása +shadows-tiling = Csempézett ablakok + .clip = Rendszersarkokhoz illeszkedés + .shadow = Árnyékok alkalmazása +shadow-and-corners = Ablakok árnyéka és sarkai +workspaces-overview = Munkaterületek áttekintése + .action-on-typing = Művelet gépeléskor + .none = Nincs + .launcher = Indító megnyitása + .applications = Alkalmazások megnyitása +xdg-entry-mouse-keywords = COSMIC;Egér;Gyorsítás;Görgetés; +xdg-entry-notifications-keywords = COSMIC;Értesítés;Zárolás;Ne zavarjanak; +xdg-entry-startup-apps-keywords = COSMIC;Automatikus;Indítási alkalmazás; +xdg-entry-appearance-keywords = COSMIC;Kiemelő;Szín;Ikon;Betűkészlet;Téma; +xdg-entry-dock-keywords = COSMIC;Dokk;Panel;Kisalkalmazás; +xdg-entry-panel-keywords = COSMIC;Panel;Kisalkalmazás; +xdg-entry-time-language-comment = Rendszerdátum, idő, régió és a nyelv kezelése +xdg-entry-desktop-keywords = COSMIC;Asztal; +xdg-entry-system-keywords = COSMIC;Rendszer;Információk;Fiókok;Firmware; +xdg-entry-about-keywords = COSMIC;Névjegy +xdg-entry-panel = Panel +xdg-entry-a11y-keywords = COSMIC;Akadálymentesség;Képernyő;Olvasó;Nagyító;Kontraszt;Szín; +xdg-entry-date-time-keywords = COSMIC;Idő;Zóna; +xdg-entry-desktop-comment = Háttérkép, megjelenés, panel, dokk, ablakkezelés és munkaterület-beállítások +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-network-keywords = COSMIC;Hálózat;Vezeték;Nélküli;WiFi;VPN; +xdg-entry-system-comment = Rendszerinformációk, fiókok és firmware-frissítések +xdg-entry-time-language-keywords = COSMIC;Rendszer;Idő;Dátum;Régió;Nyelv; +xdg-entry-input-keywords = COSMIC;Bevitel;Billentyűzet;Egér;Egerek; +xdg-entry-sound-keywords = COSMIC;Hang;Figyelmeztetés;PipeWire; +xdg-entry-power-keywords = COSMIC;Energia;Akkumulátor; +xdg-entry-default-apps-keywords = COSMIC;Alapértelmezett;Alkalmazások; +xdg-entry-keywords = COSMIC;Beállítások; +xdg-entry-region-language-keywords = COSMIC;Régió;Nyelv;Dátum;Formátum;Idő;Területi;Beállítások; +xdg-entry-applications-keywords = COSMIC;Alapértelmezett;Alkalmazások;Indítás;X11;Támogatás; +xdg-entry-keyboard-keywords = COSMIC;Billentyűzet;Beviteli;Forrás;Gyorsbillentyűk; +xdg-entry-displays-keywords = COSMIC;Kijelző; +xdg-entry-wired-keywords = COSMIC;Vezetékes;LAN;Hálózat;Kapcsolat; +xdg-entry-x11-applications-keywords = COSMIC;X11;Alkalmazás;Játék;Támogatás; +xdg-entry-touchpad-keywords = COSMIC;Érintőpárna;Mozdulat; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Hálózat;Kapcsolat; +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Munkaterület;Tájolás;Áttekintés;Monitor; +xdg-entry-wallpaper-keywords = COSMIC;Háttérkép;Háttér;Diavetítés; +xdg-entry-users-keywords = COSMIC;Felhasználó;Fiók; +xdg-entry-vpn-keywords = COSMIC;VPN;Hálózat;Kapcsolat;OpenVPN;OpenConnect; +xdg-entry-comment = Beállításalkalmazás a COSMIC asztalhoz +xdg-entry-window-management-keywords = COSMIC;Ablak;Kezelés;Csempézés;Super;BIllentyű; +no-search-results = Nem található a keresésnek megfelelő hálózat. diff --git a/i18n/id/cosmic_settings.ftl b/i18n/id/cosmic_settings.ftl index e69de29..8ae3b70 100644 --- a/i18n/id/cosmic_settings.ftl +++ b/i18n/id/cosmic_settings.ftl @@ -0,0 +1,820 @@ +app = Pengaturan COSMIC +ok = OKE +dbus-connection-error = Gagal menyambungkan ke DBus +unknown = Tidak diketahui +number = { $number } +add-network = Tambahkan jaringan + .profile = Tambahkan profil +add-vpn = Tambahkan VPN +airplane-on = Mode pesawat nyala. +connect = Sambungkan +cable-unplugged = Kabel tercabut +connected = Tersambung +connecting = Menyambungkan… +disconnect = Putuskan +forget = Lupakan +known-networks = Jaringan yang diketahui +network-and-wireless = Jaringan & nirkabel +network-name = Nama Jaringan +no-networks = Tidak ada jaringan yang ditemukan. +no-vpn = Tidak ada sambungan VPN yang tersedia. +password = Kata sandi +password-confirm = Konfirmasikan kata sandi +qr-code-unavailable = Kode QR tidak tersedia +remove = Hapus +scan-to-connect-description = Pindai kode QR untuk menyambungkan ke jaringan ini. +settings = Pengaturan +share = Bagikan jaringan +username = Nama pengguna +visible-networks = Jaringan yang terlihat +identity = Identitas +auth-dialog = Autentikasi diperlukan + .vpn-description = Masukkan nama pengguna dan kata sandi yang dibutuhkan oleh layanan VPN. + .wifi-description = Masukkan kata sandi atau kunci enkripsi. Anda juga dapat menyambungkan dengan menekan tombol “WPS” pada router. +forget-dialog = Lupakan jaringan Wi-Fi ini? + .description = Anda akan perlu memasukkan kata sandi lagi untuk menggunakan jaringan Wi-Fi ini di masa mendatang. +network-device-state = + .activated = Tersambung + .config = Menyambungkan + .deactivating = Memutuskan + .disconnected = Terputus + .failed = Gagal tersambung + .ip-check = Memeriksa sambungan + .ip-config = Meminta info IP dan routing + .need-auth = Memerlukan autentikasi + .prepare = Bersiap tersambung + .secondaries = Menunggu untuk sambungan kedua + .unavailable = Tidak tersedia + .unknown = Status tidak diketahui + .unmanaged = Tidak terkelola + .unplugged = Kabel tercabut +remove-connection-dialog = Hapus profil sambungan? + .vpn-description = Anda akan perlu memasukkan kata sandi lagi untuk menggunakan jaringan ini di masa mendatang. + .wired-description = Anda akan perlu membuat ulang profil ini untuk menggunakannya di masa mendantang. +vpn = VPN + .connections = Sambungan VPN + .error = Gagal menambahkan konfigurasi VPN + .remove = Hapus profil sambungan + .select-file = Pilih berkas konfigurasi VPN +vpn-error = Galat VPN + .config = Gagal menambahkan konfigurasi VPN + .connect = Gagal menyambungkan ke VPN + .connection-editor = Penyunting sambungan gagal + .connection-settings = Gagal mendapatkan pengaturan untuk sambungan aktif + .updating-state = Gagal memperbarui status pengelola jaringan + .wireguard-config-path = Jalur berkas tidak valid untuk konfigurasi WireGuard + .wireguard-config-path-desc = Berkas yang dipiih harus di sistem berkas lokal. + .wireguard-device = Gagal membuat perangkat WireGuard + .with-password = + Gagal mengatur { $field -> + *[username] nama pengguna + [password] kata sandi + [password-flags] penanda kata sandi + } VPN dengan nmcli +wired = Berkabel + .adapter = Adaptor berkabel { $id } + .connections = Sambungan berkabel + .devices = Perangkat berkabel + .remove = Hapus profil sambungan +wifi = Wi-Fi + .adapter = Adaptor Wi-Fi { $id } + .forget = Lupakan jaringan ini +wireguard-dialog = Tambahkan perangkat WireGuard + .description = Pilih nama perangkat untuk konfigurasi WireGuard. +online-accounts = Akun daring + .desc = Tambahkan akun, IMAP dan SMTP, masuk perusahaan +activate = Aktifkan +confirm = Konfirmasikan +enable = Aktifkan +bluetooth = Bluetooth + .status = Sistem ini terlihat sebagai { $aliases } saat pengaturan Bluetooth dibuka. + .connected = Tersambung + .connecting = Menyambungkan + .disconnecting = Memutuskan + .connect = Sambungkan + .disconnect = Putuskan + .forget = Lupakan + .dbus-error = Terjadi galat saat berinteraksi dengan DBus: { $why } + .disabled = Layanan Bluetooth dinonaktifkan + .inactive = Layanan Bluetooh tidak aktif + .unknown = Layanan Bluetooth tidak dapat diaktifkan. Apakah BlueZ terpasang? +bluetooth-paired = Perangkat yang tersambung sebelumnya + .connect = Sambungkan + .battery = Baterai { $percentage }% +bluetooth-confirm-pin = Konfirmasikan PIN Bluetooth + .description = Silakan konfirmasikan bahwa PIN berikut cocok dengan PIN yang ditampilkan pada { $device } +bluetooth-available = Perangkat terdekat +bluetooth-adapters = Adaptor Bluetooth +accessibility = Aksesibilitas + .vision = Penglihatan + .on = Nyala + .off = Mati + .unavailable = Tidak tersedia + .screen-reader = Pembaca layar + .high-contrast = Mode kontras tinggi + .invert-colors = Balikkan warna + .color-filters = Filter warna +hearing = Pendengaran + .mono = Mainkan audio stereo sebagai mono +default = Bawaan +magnifier = Kaca Pembesar + .controls = + Atau gunakan pintasan ini: { $zoom_in -> + [zero] { "" } + *[other] + { "" } + { $zoom_in } untuk perbesar, + }{ $zoom_out -> + [zero] { "" } + *[other] + { "" } + { $zoom_out } untuk perkecil, + } + Super + gulir menggunakan tetikus anda + .scroll_controls = Aktifkan tetikus atau zum papan sentuh dengan Super + gulir + .show_overlay = Tampilkan lapisan kaca pembesar + .increment = Zum tambahan + .signin = Mulai kaca pembesar saat masuk + .applet = Ubah kaca pembesar nyala/mati dalam applet di panel + .movement = Tampilan yang dizum bergerak + .continuous = Terus menerus dengan penunjuk + .onedge = Saat penunjuk mencapai tepi + .centered = Untuk mempertahankan penunjuk berada di tengah +workspaces-behavior = Perilaku ruang kerja + .dynamic = Ruang kerja dinamis + .dynamic-desc = Menghapus ruang kerja kosong secara otomatis. + .fixed = Jumlah ruang kerja tetap + .fixed-desc = Tambahkan atau hapus ruang kerja di ikhtisar. +color-filter = Jenis filter warna + .unknown = Filter aktif tidak diketahui + .greyscale = Skala abu-abu + .deuteranopia = Hijau/Merah (kelemahan hijau, Deuteranopia) + .protanopia = Merah/Hijau (kelemahan merah, Protanopia) + .tritanopia = Biru/Kuning (kelemahan biru, Tritanopia) +desktop = Desktop +wallpaper = Wallpaper + .change = Ubah gambar setiap + .fit = Sesuaikan wallpaper + .folder-dialog = Pilih map wallpaper + .image-dialog = Pilih gambar wallpaper + .plural = Wallpaper + .same = Wallpaper yang sama di semua layar + .slide = Tayangan salindia +add-color = Tambahkan warna +add-image = Tambahkan gambar +all-displays = Semua layar +colors = Warna +dialog-add = Tambahkan +fill = Isi +fit-to-screen = Sesuaikan dengan layar +open-new-folder = Buka map baru +recent-folders = Map terbaru +x-minutes = + { $number } { $number -> + [one] menit + *[other] menit + } +x-hours = + { $number } { $number -> + [one] jam + *[other] jam + } +never = Tidak pernah +appearance = Tampilan +accent-color = Warna aksen +app-background = Latar belakang jendela +auto = Otomatis +close = Tutup +color-picker = Pemilih warna +copied-to-clipboard = Disalin ke papan klip +copy-to-clipboard = Salin ke papan klip +dark = Gelap +export = Ekspor +hex = Heks +import = Impor +light = Terang +mode-and-colors = Mode dan warna +recent-colors = Warna terbaru +reset-to-default = Atur ulang ke bawaan +rgb = RGB +window-hint-accent = Warna petunjuk jendela aktif +window-hint-accent-toggle = Gunakan warna aksen tema sebagai petunjuk jendela aktif +auto-switch = Mengalihkan antara mode terang dan gelap secara otomatis + .sunrise = Mengalihkan ke mode terang saat matahari terbit + .sunset = Mengalihkan ke mode gelap saat matahari terbenam + .next-sunrise = Mengalihkan ke mode terang saat matahari terbit selanjutnya + .next-sunset = Mengalihkan ke mode gelap saat matahari terbenam selanjutnya +shadows-floating = Jendela mengapung + .clip = Cocokkan sudut sistem dan terapkan bayangan +shadows-tiling = Jendela berubin + .clip = Cocokkan sudut sistem + .shadow = Terapkan bayangan +container-background = Latar belakang kontainer + .desc-detail = Warna latar belakang kontainer digunakan untuk bilah sisi navigasi, laci samping, dialog dan widget serupa. Secara bawaan, warna latar belakang kontainer diambil dari latar belakang jendela secara otomatis. + .reset = Atur ulang ke otomatis + .desc = Digunakan untuk bilah sisi navigasi, laci samping, dialog dan widget serupa +control-tint = Warna komponen kontrol + .desc = Digunakan untuk latar belakang tombol standar, masukan pencarian, masukan teks, dan komponen serupa +frosted = Efek kaca buram pada antarmuka sistem + .desc = Menerapkan blur latar belakang ke panel, dok, applet, peluncur, dan pustaka aplikasi +enable-export = Terapkan tema saat ini ke aplikasi GNOME + .desc = Tidak semua alat kit mendukung peralihan otomatis. Aplikasi non-COSMIC mungkin perlu dimulai ulang seletah perubahan tema. +icon-theme = Tema ikon + .desc = Menerapkan serangkaian ikon yang berbeda ke aplikasi +text-tint = Warna teks antarmuka + .desc = Digunakan untuk mendapatkan warna teks antarmuka yang memiliki kontras yang cukup pada berbagai permukaan +style = Gaya + .round = Bulat + .slightly-round = Sedikit bulat + .square = Persegi +interface-density = Kepadatan antarmuka + .comfortable = Nyaman + .compact = Kompak + .spacious = Luas +window-management-appearance = Pengelolaan jendela + .active-hint = Ukuran petunjuk jendela aktif + .gaps = Jarak sekitar jendela berubin +experimental-settings = Pengaturan eksperimental +icons-and-toolkit = Tema ikon dan alat kit +interface-font = Huruf sistem +monospace-font = Huruf monospace +shadow-and-corners = Bayangan dan sudut jendela +notifications = Notifikasi +panel = Panel +add = Tambahkan +add-applet = Tambahkan applet +all = Semua +applets = Applet +center-segment = Segmen tengah +place-here = Letakkan applet di sini +replace = Ganti +replace-shortcut-dialog = Ganti pintasan? + .desc = { $shortcut } digunakan oleh { $name }. Jika anda menggantikannya, { $name } akan dinonaktifkan. +end-segment = Segmen akhir +large = Besar +no-applets-found = Tidak ada applet yang ditemukan... +panel-bottom = Bawah +panel-left = Kiri +panel-right = Kanan +panel-top = Atas +search-applets = Cari applet... +small = Kecil +start-segment = Segmen awal +panel-appearance = Tampilan + .match = Cocokkan dekstop + .light = Terang + .dark = Gelap +panel-behavior-and-position = Perilaku dan posisi + .autohide = Sembunyikan panel secara otomatis + .dock-autohide = Sembunyikan dok secara otomatis + .position = Posisi di layar + .display = Tampilkan di layar +panel-style = Gaya + .anchor-gap = Jarak antara panel dan tepi layar + .dock-anchor-gap = Jarak antara dok dan tepi layar + .extend = Luaskan panel ke tepi layar + .dock-extend = Luaskan dok ke tepi layar + .appearance = Tampilan + .size = Ukuran + .background-opacity = Opasitas latar belakang +panel-applets = Konfigurasi + .dock-desc = Konfigurasikan applet dok + .desc = Konfigurasikan applet panel +panel-missing = Konfigurasi panel hilang + .desc = Berkas konfigurasi panel hilang karena penggunaan konfigurasi kustom atau berkas tersebut rusak. + .fix = Atur ulang ke bawaan +dock = Dok +window-management = Pengelolaan jendela +super-key = Tindakan tombol super + .launcher = Buka Peluncur + .workspaces = Buka Ruang Kerja + .applications = Buka Aplikasi + .disable = Nonaktifkan +edge-gravity = Jendela mengapung bergerak ke tepi terdekat +window-controls = Kontrol jendela + .maximize = Tampilkan tombol maksimalkan + .minimize = Tampilkan tombol minimalkan + .active-window-hint = Tampilkan petunjuk jendela aktif +focus-navigation = Navigasi fokus + .focus-follows-cursor = Fokus mengikuti kursor + .focus-follows-cursor-delay = Fokus mengikuti penundaan kursor dalam md + .cursor-follows-focus = Kursor mengikuti fokus +workspaces = Ruang kerja +workspaces-multi-behavior = Perilaku multi-monitor + .span = Ruang kerja mencakup layar + .separate = Layar memiliki ruang kerja terpisah +workspaces-overview-thumbnails = Gambaran ikhtisar ruang kerja + .show-number = Tampilkan angka ruang kerja + .show-name = Tampilkan nama ruang kerja +workspaces-orientation = Orientasi ruang kerja + .vertical = Vertikal + .horizontal = Horisontal +hot-corner = Sudut Panas + .top-left-corner = Aktifkan sudut panas kiri atas untuk Ruang kerja +-requires-restart = Memerlukan mulai ulang +color = Warna + .depth = Kedalaman warna + .profile = Profil warna + .sidebar = Profil Warna + .temperature = Suhu warna +display = Layar + .arrangement = Susunan layar + .arrangement-desc = Seret layar untuk menyusun ulang posisinya + .enable = Aktifkan layar + .external = Layar eksternal { $size } { $output } + .laptop = Layar laptop { $size } + .options = Opsi layar + .refresh-rate = Kecepatan penyegaran + .resolution = Resolusi + .scale = Skala + .additional-scale-options = Opsi skala tambahan +mirroring = Pencerminan + .id = Mencerminkan { $id } + .dont = Jangan cerminkan + .mirror = Cerminkan { $display } + .project = + Proyekkan ke { $display -> + [all] semua layar + *[other] { $display } + } + .project-count = + Memproyekkan ke { $count } { $count -> + [1] layar + *[other] layar + } lainnya +night-light = Cahaya malam + .auto = Otomatis (terbenam ke terbit) + .desc = Mengurangi cahaya biru dengan warna hangat +orientation = Orientasi + .standard = Standar + .rotate-90 = Putar 90° + .rotate-180 = Putar 180° + .rotate-270 = Putar 270° +vrr = Kecepatan penyegaran variabel + .enabled = Diaktifkan + .force = Selalu + .auto = Otomatis + .disabled = Dinonaktifkan +scheduling = Penjadwalan + .manual = Jadwal manual +dialog = Dialog + .title = Pertahankan pengaturan layar ini? + .keep-changes = Pertahankan perubahan + .change-prompt = Pengaturan perubahan akan dikembalikan secara otomatis dalam { $time } detik. + .revert-settings = Pengaturan pengembalian +sound = Suara +sound-output = Keluaran + .volume = Volume keluaran + .device = Perangkat keluaran + .level = Tingkat keluaran + .config = Konfigurasi + .balance = Seimbang + .left = Kiri + .right = Kanan +sound-input = Masukan + .volume = Volume masukan + .device = Perangkat masukan + .level = Tingkat masukan +amplification = Amplifikasi + .desc = Memungkinkan meningkatkan volume ke 150% +sound-alerts = Peringatan + .volume = Volume peringatan + .sound = Suara peringatan +sound-applications = Aplikasi + .desc = Volume dan pengaturan aplikasi +sound-device-port-unplugged = Tercabut +sound-hd-audio = Audio HD +sound-usb-audio = Audio USB +sound-device-profiles = Profil perangkat +power = Daya & baterai +battery = Baterai + .minute = + { $value } { $value -> + [one] menit + *[other] menit + } + .hour = + { $value } { $value -> + [one] jam + *[other] jam + } + .day = + { $value } { $value -> + [one] hari + *[other] hari + } + .less-than-minute = Kurang dari satu menit + .and = dan + .remaining-time = + { $time } hingga { $action -> + [full] penuh + *[other] kosong + } +connected-devices = Perangkat yang tersambung + .unknown = Perangkat yang tidak diketahui +power-mode = Mode daya + .battery = Masa pakai baterai diperluas + .battery-desc = Penggunaan daya berkurang dan kinerja senyap + .balanced = Seimbang + .balanced-desc = Kinerja senyap dan penggunaan daya sedang + .performance = Kinerja tinggi + .performance-desc = Kinerja puncak dan penggunaan daya + .no-backend = Backend tidak ditemukan. Pasang system76-power atau power-profiles-daemon. +acceleration-desc = Menyesuaikan sensitivitas pelacakan berdasarkan kecepatan secara otomatis +disable-while-typing = Nonaktifkan saat mengetik +slow = Lambat +fast = Cepat +short = Pendek +long = Panjang +added = Ditambahkan +type-to-search = Ketik untuk mencari... +show-extended-input-sources = Tampilkan sumber masukan yang diperluaskan +add-another-keybinding = Tambahkan pintasan tombol lainnya +cancel = Batalkan +command = Perintah +custom = Kustom +debug = Awakutu +disabled = Dinonaktifkan +input-source-switch = Alihkan sumber masukan bahasa papan ketik +migrate-workspace-prev = Migrasikan ruang kerja ke keluaran sebelumnya +migrate-workspace-next = Migrasikan ruang kerja ke keluaran selanjutnya +navigate = Navigasikan +shortcut-name = Nama pintasan +system-controls = Kontrol sistem +terminate = Akhiri +toggle-stacking = Ubah penumpukan jendela +type-key-combination = Ketik kombinasi tombol +modified = { $count } dimodifikasi +zoom-in = Perbesar +zoom-out = Perkecil +switch-between-windows = Alihkan antar jendela +open-application-library = Buka Pustaka Aplikasi +open-workspaces-view = Buka Ikhtisar Ruang Kerja +install-additional-languages = Pasang bahasa tambahan +region = Wilayah +applications = Aplikasi +system = Sistem & akun +add-user = Tambahkan pengguna +change-password = Ubah kata sandi +remove-user = Hapus pengguna +full-name = Nama lengkap +invalid-username = Nama pengguna tidak valid +password-mismatch = Kata sandi dan konfirmasi harus cocok +save = Simpan +administrator = Administrator + .desc = Administrator dapat mengubah pengaturan untuk semua pengguna, menambahkan atau menghapus pengguna lainnya +users = Pengguna + .admin = Admin + .standard = Standar + .profile-add = Pilih gambar profil +firmware = Firmware +about-related = Pengaturan terkait + .support = Dapatkan dukungan +about-os = Sistem operasi + .os = Sistem operasi + .os-architecture = Arsitektur sistem operasi + .kernel = Versi kernel + .desktop-environment = Lingkungan desktop + .windowing-system = Sistem penjendelaan +about-hardware = Perangkat keras + .model = Model perangkat keras + .memory = Memori + .processor = Prosesor + .graphics = Grafis + .disk-capacity = Kapasitas cakram +about-device = Nama perangkat + .desc = Nama ini akan muncul ke jaringan lainnya atau perangkat Bluetooth +about = Tentang +legacy-applications = Kompatibilitas aplikasi X11 +add-language = Tambahkan bahasa + .context = Tambahkan bahasa +preferred-languages = Bahasa pilihan + .desc = Urutan bahasa menentukan bahasa mana yang digunakan untuk antarmuka pengguna. Perubahan akan berlaku saat masuk selanjutnya. +formatting = Pemformatan + .dates = Tanggal + .time = Waktu + .date-and-time = Tanggal & waktu + .numbers = Angka + .measurement = Pengukuran + .paper = Kertas +time-region = Wilayah & bahasa +time-zone = Zona waktu + .auto = Zona waktu otomatis + .auto-info = Memerlukan layanan lokasi dan akses internet +time-date = Tanggal & waktu + .auto = Atur secara otomatis + .auto-ntp = Tanggal & waktu akan diperbarui secara otomatis saat zona waktu diatur +time = Waktu & bahasa +switch-workspaces = Alihkan ruang kerja + .horizontal = Geser empat jari ke kiri/kanan + .vertical = Geser empat jari ke atas/bawah +input-devices = Perangkat masukan +primary-button = Tombol utama + .desc = Mengatur urutan tombol fisik + .left = Kiri + .right = Kanan +scrolling = Pengguliran + .two-finger = Gulir dengan dua jari + .edge = Gulir di sepanjang tepi dengan satu jari + .speed = Kecepatan pengguliran + .natural = Pengguliran natural + .natural-desc = Gulir konten, bukan tampilan +keyboard = Papan ketik +keyboard-sources = Sumber Masukan + .desc = Sumber masukan dapat dialihkan menggunakan kombinasi tombol Super+Spasi. Ini dapat disesuaikan di pengaturan pintasan papan ketik. + .move-up = Pindahkan ke atas + .move-down = Pindahkan ke bawah + .settings = Pengaturan + .view-layout = Tampilkan tata letak papan ketik + .remove = Hapus + .add = Tambahkan sumber masukan +keyboard-special-char = Entri Karakter Spesial + .alternate = Ganti tombol karakter + .compose = Tombol compose + .compose-desc = Tombol compose memungkinkan berbagai macam karakter untuk memasukkan. Untuk menggunakannya, tekan compose dan kemudian serangkaian karakter. Misalnya, tombol compose diikuti dengan C dan o akan memasukkan ©, sedangkan tombol compose diikuti dengan a dan ‘ akan memasukkan á. + .caps = Tombol Caps Lock +keyboard-typing-assist = Pengetikan + .repeat-rate = Kecepatan pengulangan + .repeat-delay = Penundaan pengulangan +keyboard-numlock-boot = Numlock + .boot-state = Status saat boot + .last-boot = Boot terakhir + .on = Nyala + .off = Mati + .set = Atur status boot numlock +keyboard-shortcuts = Pintasan papan ketik + .desc = Tampilkan dan sesuaikan pintasan +power-saving = Opsi penghematan daya + .turn-off-screen-after = Matikan layar setelah + .auto-suspend = Hentikan otomatis + .auto-suspend-ac = Hentikan otomatis saat dicolok + .auto-suspend-battery = Hentikan otomatis saat daya baterai +custom-shortcuts = Pintasan kustom + .add = Tambahkan pintasan + .context = Tambahkan pintasan kustom + .none = Tidak ada pintasan kustom +manage-windows = Kelola jendela + .close = Tutup jendela + .maximize = Maksimalkan jendela + .fullscreen = Layar penuh jendela + .minimize = Minimalkan jendela + .resize-inwards = Ukur ulang jendela ke dalam + .resize-outwards = Ukur ulang jendela ke luar + .toggle-sticky = Ubah jendela lengket +tap-to-click = Ketuk untuk klik + .desc = Mengaktifkan ketukan satu jari untuk klik utama, ketukan dua jari untuk klik kedua, dan ketukan tiga jari untuk klik tengah +touchpad = Papan Sentuh + .acceleration = Aktifkan akselerasi papan sentuh + .speed = Kecepatan papan sentuh +mouse = Tetikus + .speed = Kecepatan tetikus + .acceleration = Aktifkan akselerasi tetikus +click-behavior = Perilaku Klik + .click-finger = Klik kedua dengan dua jari dan klik tengah dengan tiga jari + .button-areas = Klik kedua di sudut kanan bawah dan klik tengah di tengah bawah +pinch-to-zoom = Jepit untuk memperbesar + .desc = Gunakan dua jari untuk memperbesar konten, untuk aplikasi yang mendukung zum +gestures = Gerakan + .four-finger-down = Geser empat jari ke bawah + .four-finger-left = Geser empat jari ke kiri + .four-finger-right = Geser empat jari ke kanan + .four-finger-up = Geser empat jari ke atas + .three-finger-any = Geser tiga jari ke segala arah +migrate-workspace = + Migrasikan ruang kerja ke keluaran { $direction -> + *[down] bawah + [left] kiri + [right] kanan + [up] atas + } +window-tiling = Pengubinan jendela + .horizontal = Atur orientasi horisontal + .vertical = Atur orientasi vertikal + .swap-window = Tukar jendela + .toggle-tiling = Ubah pengubinan jendela + .toggle-stacking = Ubah penumpukan jendela + .toggle-floating = Ubah pengapungan jendela + .toggle-orientation = Ubah orientasi +time-format = Format tanggal & waktu + .twenty-four = Waktu 24 jam + .show-seconds = Tampilkan detik + .first = Hari pertama dalam mingguan + .show-date = Tampilkan tanggal di applet waktu + .friday = Jum'at + .saturday = Sabtu + .sunday = Minggu + .monday = Senin +default-apps = Aplikasi Bawaan + .web-browser = Peramban web + .file-manager = Pengelola berkas + .mail-client = Klien surel + .music = Musik + .video = Video + .photos = Foto + .calendar = Kalender + .terminal = Terminal + .other-associations = Asosiasi lainnya + .text-editor = Penyunting Teks + .not-installed = Tidak dipasang +startup-apps = Aplikasi pemulaian + .add = Tambahkan aplikasi + .user = Aplikasi yang diluncurkan saat anda masuk + .none = Tidak ada aplikasi pemulaian yang ditambahkan + .remove-dialog-title = Hapus { $name }? + .remove-dialog-description = Hapus aplikasi pemulaian ini? + .add-startup-app = Tambahkan aplikasi pemulaian +legacy-app-global-shortcuts = Pintasan global di aplikasi X11 + .desc = Pintasan global memungkinkan penekanan tombol papan ketik dan tetikus yang dilakukan dalam aplikasi dikenali oleh aplikasi lain untuk fitur seperti tekan untuk bicara atau tekan untuk membisukan. Secara bawaan, pintasan global dinonaktifkan di aplikasi X11 untuk memastikan aplikasi lain tidak dapat memantau peristiwa papan ketik dan tetikus yang berisi informasi sensitif. + .none = Tidak ada tombol + .modifiers = Pengubah (Super, Shift, Control, Alt) + .combination = Semua tombol beserta pengubah Super, Control atau Alt ditekan + .all = Semua tombol + .mouse = Peristiwa tombol tetikus di aplikasi X11 +legacy-app-scaling = Penskalaan aplikasi sistem jendela X11 + .scaled-gaming = Optimalkan untuk permainan dan aplikasi layar penuh + .gaming-description = Aplikasi X11 mungkin tampak sedikit lebih besar/kecil dibandingkan dengan aplikasi Wayland + .scaled-applications = Optimalkan untuk aplikasi + .applications-description = Permainan dan aplikasi X11 layar penuh mungkin tidak cocok dengan resolusi layar anda + .scaled-compatibility = Mode kompatibilitas maksimum + .compatibility-description = Aplikasi X11 mungkin tampak buram pada layar HiDPI + .preferred-display = Layar pilihan untuk permainan dan aplikasi X11 layar penuh + .no-display = Tidak ada +system-shortcut = Sistem + .app-library = Buka pustaka aplikasi + .brightness-down = Kurangi kecerahan layar + .brightness-up = Tingkatkan kecerahan layar + .display-toggle = Ubah layar internal + .home-folder = Buka map beranda + .keyboard-brightness-down = Kurangi kecerahan papan ketik + .keyboard-brightness-up = Tingkatkan kecerahan papan ketik + .launcher = Buka Peluncur + .log-out = Keluar + .lock-screen = Kunci layar + .mute = Matikan keluaran audio + .mute-mic = Matikan masukan mikrofon + .play-pause = Putar/jeda + .play-next = Lagu selanjutnya + .play-prev = Lagu sebelumnya + .poweroff = Matikan daya + .screenshot = Ambil tangkapan layar + .suspend = Hentikan + .terminal = Buka terminal + .touchpad-toggle = Ubah papan sentuh + .volume-lower = Kurangi volume keluaran audio + .volume-raise = Tingkatkan volume keluaran audio + .web-browser = Buka peramban web + .window-switcher = Alihkan antar jendela yang dibuka + .window-switcher-previous = Alihkan antar jendela yang dibuka secara terbalik + .workspace-overview = Buka ikhtisar ruang kerja +nav-shortcuts = Navigasi + .prev-output = Fokus keluaran sebelumnya + .next-output = Fokus keluaran selanjutnya + .last-workspace = Fokus ruang kerja terakhir + .prev-workspace = Fokus ruang kerja sebelumnya + .next-workspace = Fokus ruang kerja selanjutnya + .focus = + Fokus jendela { $direction -> + *[down] bawah + [in] dalam + [left] kiri + [out] luar + [right] kanan + [up] atas + } + .output = + Alihkan ke keluaran { $direction -> + *[down] bawah + [left] kiri + [right] kanan + [up] atas + } + .workspace = Alihkan ke ruang kerja { $num } +move-windows = Pindahkan jendela + .direction = + Pindahkan jendela { $direction -> + *[down] bawah + [left] kiri + [right] kanan + [up] atas + } + .display = + Pindahkan jendela satu monitor { $direction -> + *[down] bawah + [left] kiri + [right] kanan + [up] atas + } + .workspace = + Pindahkan jendela satu ruang kerja { $direction -> + *[below] bawah + [left] kiri + [right] kanan + [above] atas + } + .workspace-num = Pindahkan jendela ke ruang kerja { $num } + .prev-workspace = Pindahkan jendela ke ruang kerja sebelumnya + .next-workspace = Pindahkan jendela ke ruang kerja selanjutnya + .last-workspace = Pindahkan jendela ke ruang kerja terakhir + .next-display = Pindahkan jendela ke layar selanjutnya + .prev-display = Pindahkan jendela ke layar sebelumnya + .send-to-prev-workspace = Pindahkan jendela ke ruang kerja sebelumnya + .send-to-next-workspace = Pindahkan jendela ke ruang kerja selanjutnya +workspaces-overview = Ikhtisar ruang kerja + .action-on-typing = Tindakan saat mengetik + .none = Tidak Ada + .launcher = Buka Peluncur + .applications = Buka Aplikasi +xdg-entry-touchpad = Papan Sentuh +xdg-entry-wired = Berkabel +xdg-entry-startup-apps-comment = Konfigurasikan aplikasi yang berjalan saat masuk +xdg-entry-region-language = Wilayah & Bahasa +xdg-entry-mouse-keywords = COSMIC;Tetikus;Akselerasi;Pengguliran; +xdg-entry-bluetooth-comment = Kelola perangkat Bluetooth +xdg-entry-notifications-keywords = COSMIC;Notifikasi;Kunci; +xdg-entry-startup-apps-keywords = COSMIC;Pemulaian;Aplikasi; +xdg-entry-default-apps-comment = Peramban web, klien surat, peramban berkas, dan aplikasi lain bawaan +xdg-entry-keyboard-comment = Sumber masukan, pengalihan, entri karakter spesial, pintasan +xdg-entry-wired-keywords = COSMIC;Berkabel;LAN;Jaringan;Sambungan; +xdg-entry-power = Daya & Baterai +xdg-entry-appearance-keywords = COSMIC;Aksen;Warna;Ikon;Huruf;Tema +xdg-entry-mouse = Tetikus +xdg-entry-dock-keywords = COSMIC;Dok;Panel;Applet +xdg-entry-mouse-comment = Kecepatan, akselerasi, dan pengguliran natural tetikus +xdg-entry-system = Sistem & Akun +xdg-entry-panel-keywords = COSMIC;Panel;Applet +xdg-entry-window-management = Pengelolaan Jendela +xdg-entry-a11y = Aksesibilitas +xdg-entry-time-language-comment = Kelola tanggal, waktu, wilayah, dan bahasa sistem +xdg-entry-desktop-keywords = COSMIC;Desktop; +xdg-entry-x11-applications-keywords = COSMIC;X11;Aplikasi;Permainan;Kompatibilitas; +xdg-entry-displays-comment = Kelola pengaturan konfigurasi layar +xdg-entry-touchpad-keywords = COSMIC;Papan Sentuh;Gerakan; +xdg-entry-time-language = Waktu & Bahasa +xdg-entry-users = Pengguna +xdg-entry-system-keywords = COSMIC;Sistem;Info;Akun;Firmware; +xdg-entry-default-apps = Aplikasi Bawaan +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Jaringan;Sambungan; +xdg-entry-applications-comment = Pengaturan aplikasi bawaan, aplikasi pemulaian, dan kompatibilitas aplikasi X11 +xdg-entry-about-keywords = COSMIC;Tentang +xdg-entry-panel = Panel +xdg-entry-notifications = Notifikasi +xdg-entry-a11y-keywords = COSMIC;Aksesibilitas;A11y;Layar;Pembaca;Kaca Pembesar;Kontras;Warna; +xdg-entry-wireless-comment = Sambungan Wi-Fi dan profil sambungan +xdg-entry-desktop = Desktop +xdg-entry-date-time-keywords = COSMIC;Waktu;Zona; +xdg-entry-desktop-comment = Pengaturan wallpaper, tampilan, panel, dok, pengelolaan jendela dan ruang kerja +xdg-entry-wallpaper = Wallpaper +xdg-entry-keyboard = Papan Ketik +xdg-entry-a11y-comment = Pembaca layar, kaca pembesar, kontras tinggi, dan filter warna +xdg-entry-displays = Layar +xdg-entry-network = Jaringan & Nirkabel +xdg-entry-date-time = Tanggal & Waktu +xdg-entry-users-comment = Akun autentikasi dan pengguna +xdg-entry-input-comment = Pengaturan papan ketik dan tetikus +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-dock-comment = Bilah opsional untuk aplikasi dan applet +xdg-entry-network-keywords = COSMIC;Jaringan;Nirkabel;WiFi;VPN; +xdg-entry-wallpaper-comment = Opsi gambar wallpaper, warna, dan tayangan salindia +xdg-entry-dock = Dok +xdg-entry-startup-apps = Aplikasi Pemulaian +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Ruang Kerja;Orientasi;Ikhtisar;Monitor; +xdg-entry-system-comment = Informasi sistem, akun, dan pembaruan firmware +xdg-entry-x11-applications-comment = Penskalaan aplikasi sistem jendela X11, tampilan utama, dan pintasan global +xdg-entry-region-language-comment = Format tanggal, waktu, dan angka berdasarkan wilayah Anda +xdg-entry-wallpaper-keywords = COSMIC;Wallpaper;Latar Belakang;Tayangan Salindia; +xdg-entry-users-keywords = COSMIC;Pengguna;Akun; +xdg-entry-about-comment = Nama perangkat, informasi perangkat keras, bawaan sistem operasi +xdg-entry-vpn-keywords = COSMIC;VPN;Jaringan;Sambungan;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = Warna aksen dan tema +xdg-entry-time-language-keywords = COSMIC;Sistem;Waktu;Tanggal;Wilayah;Bahasa; +xdg-entry-input-keywords = COSMIC;Masukan;Papan Ketik;Tetikus;Tetikus; +xdg-entry-comment = Aplikasi pengaturan untuk desktop COSMIC +xdg-entry-notifications-comment = Pengaturan Jangan Ganggu, notifikasi layar kunci, dan per-aplikasi +xdg-entry-applications = Aplikasi +xdg-entry-sound-keywords = COSMIC;Suara;Audio;Peringatan;Pipewire; +xdg-entry-power-keywords = COSMIC;Daya;Baterai +xdg-entry-default-apps-keywords = COSMIC;Bawaan;Aplikasi +xdg-entry-keywords = COSMIC;Pengaturan; +xdg-entry-region-language-keywords = COSMIC;Wilayah;Bahasa;Tanggal;Format;Waktu;Lokal;Lokalisasi; +xdg-entry-about = Tentang +xdg-entry-input = Perangkat Masukan +xdg-entry-applications-keywords = COSMIC;Bawaan;Aplikasi;Pemulaian;X11;Kompatibilitas +xdg-entry-sound-comment = Pengaturan audio untuk perangkat, peringatan, dan aplikasi +xdg-entry-touchpad-comment = Kecepatan papan sentuh, opsi klik, dan gerakan +xdg-entry-keyboard-keywords = COSMIC;Papan Ketik;Masukan;Sumber;Pintasan; +xdg-entry-vpn-comment = Sambungan VPN dan profil sambungan +xdg-entry-appearance = Tampilan +xdg-entry-window-management-keywords = COSMIC;Jendela;Pengelolaan;Pengubinan;Super;Tombol; +xdg-entry-workspaces-comment = Orientasi ruang kerja, ikhtisar, dan perilaku multi-monitor +xdg-entry-network-comment = Kelola sambungan jaringan +xdg-entry-panel-comment = Bilah sistem primer untuk menu dan applet +xdg-entry-sound = Suara +xdg-entry-power-comment = Opsi mode daya dan penghematan daya +xdg-entry-displays-keywords = COSMIC;Layar; +xdg-entry-workspaces = Ruang Kerja +xdg-entry-date-time-comment = Zona waktu, pengaturan jam otomatis, dan pemformatan waktu +xdg-entry-x11-applications = Kompatibilitas Aplikasi X11 +xdg-entry-window-management-comment = Tindakan tombol Super, opsi kontrol jendela, dan pengubinan jendela tambahan +xdg-entry-wired-comment = Sambungan berkabel dan profil sambungan +no-search-results = Tidak ada jaringan yang sesuai pencarian anda. diff --git a/i18n/is/cosmic_settings.ftl b/i18n/is/cosmic_settings.ftl index 3303a7e..36a1899 100644 --- a/i18n/is/cosmic_settings.ftl +++ b/i18n/is/cosmic_settings.ftl @@ -20,13 +20,6 @@ dbus-connection-error = Náði ekki að tengjast DBus ok = Í lagi unknown = Óþekkt number = { $number } -connections-and-profiles = - { $variant -> - [wired] Kapaltengdar - [wifi] Wi-Fi - [vpn] VPN - *[other] óþekktar - } tengingar og tengisnið. add-network = Add network .profile = Bæta við notandasniði add-vpn = Bæta við VPN diff --git a/i18n/it/cosmic_settings.ftl b/i18n/it/cosmic_settings.ftl index 377c104..b7d4b9a 100644 --- a/i18n/it/cosmic_settings.ftl +++ b/i18n/it/cosmic_settings.ftl @@ -4,15 +4,67 @@ ok = OK unknown = Sconosciuto number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = Informazioni su +xdg-entry-about-comment = Nome del dispositivo, informazioni sull'hardware e sul sistema operativo +xdg-entry-a11y = Accessibilità +xdg-entry-a11y-comment = Impostazioni accessibilità +xdg-entry-appearance = Aspetto +xdg-entry-appearance-comment = Colore d'accento e temi +xdg-entry-applications = Applicazioni +xdg-entry-applications-comment = Gestione delle impostazioni delle applicazioni +xdg-entry-bluetooth-comment = Gestione dispositivi Bluetooth +xdg-entry-date-time = Data e Ora +xdg-entry-date-time-comment = Fuso orario, impostazione automatica dell'ora e del formato +xdg-entry-default-apps = Applicazioni predefinite +xdg-entry-default-apps-comment = Browser web predefinito, client di posta, esplora file e altre applicazioni +xdg-entry-desktop = Desktop +xdg-entry-displays = Schermo +xdg-entry-displays-comment = Opzioni dello schermo, impostazioni e luce notturna +xdg-entry-dock = Dock +xdg-entry-dock-comment = Una barra opzionale per le applicazioni e le applet +xdg-entry-input = Dispositivi di immissione +xdg-entry-input-comment = Tastiera, mouse, ecc. +xdg-entry-keyboard = Tastiera +xdg-entry-keyboard-comment = Sorgenti di immissione, switch, caratteri speciali e scorciatoie +xdg-entry-mouse = Mouse +xdg-entry-mouse-comment = Velocità del cursore, accelerazione e scorrimento naturale +xdg-entry-network = Rete e connessioni Wi-Fi +xdg-entry-network-comment = Gestisci le connessioni di rete +xdg-entry-notifications = Notifiche +xdg-entry-notifications-comment = Non disturbare, notifiche su schermata di blocco e impostazioni per applicazioni +xdg-entry-panel = Pannello +xdg-entry-panel-comment = Barra di sistema principale per il menù e le applet +xdg-entry-power = Alimentazione e batteria +xdg-entry-power-comment = Modalità di alimentazione e opzioni risparmio energia +xdg-entry-region-language = Regione e lingua +xdg-entry-region-language-comment = Formato della data, dell'ora e dei numeri in base alla regione +xdg-entry-sound = Audio +xdg-entry-sound-comment = Impostazioni audio per dispositivi, allarmi e applicazioni +xdg-entry-startup-apps = Applicazioni all'avvio +xdg-entry-startup-apps-comment = Configura le applicazioni da avviare automaticamente al login +xdg-entry-system = Sistema e account +xdg-entry-time-language = Ora e lingua +xdg-entry-touchpad = Touchpad +xdg-entry-touchpad-comment = Velocità del touchpad, opzioni di tocco e gesti +xdg-entry-users = Utenti +xdg-entry-users-comment = Autenticazione e account utenti +xdg-entry-vpn-comment = Connessioni VPN e profili di connessione +xdg-entry-wallpaper = Sfondo +xdg-entry-wallpaper-comment = Immagine di sfondo, colori e opzioni di transizione +xdg-entry-window-management = Gestione delle finestre +xdg-entry-window-management-comment = Azioni del tasto Super, opzioni del controllo delle finestre, e opzioni aggiuntive del tiling delle finestre +xdg-entry-wired = Cablato +xdg-entry-wired-comment = Connessioni cablate e profili +xdg-entry-wireless-comment = Connessioni Wi-Fi e profili di connessione +xdg-entry-workspaces = Spazi di lavoro +xdg-entry-workspaces-comment = Orientamento e comportamento degli spazi di lavoro +xdg-entry-x11-applications = Compatibilità applicazioni X11 +xdg-entry-x11-applications-comment = Scaling applicazioni X11 e shortcut globali + ## Network & Wireless -connections-and-profiles = - Connessione { $variant -> - [wired] Ethernet - [wifi] Wi-Fi - [vpn] VPN - *[other] Sconosciuto - } e profili di connessione. add-network = Aggiungi rete .profile = Aggiungi profilo add-vpn = Aggiungi VPN diff --git a/i18n/ja/cosmic_settings.ftl b/i18n/ja/cosmic_settings.ftl index 42cd9a2..3d9b712 100644 --- a/i18n/ja/cosmic_settings.ftl +++ b/i18n/ja/cosmic_settings.ftl @@ -3,13 +3,6 @@ unknown = 不明 ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] 有線の - [wifi] Wi-Fiの - [vpn] VPNの - *[other] 不明な - }接続と接続プロファイル。 add-network = ネットワークを追加 .profile = プロファイルを追加 add-vpn = VPNを追加 diff --git a/i18n/kab/cosmic_settings.ftl b/i18n/kab/cosmic_settings.ftl index e69de29..dd28af5 100644 --- a/i18n/kab/cosmic_settings.ftl +++ b/i18n/kab/cosmic_settings.ftl @@ -0,0 +1,635 @@ +xdg-entry-a11y = Tuffart +xdg-entry-about-keywords = COSMIC;Ɣef +xdg-entry-a11y-keywords = Cosmic;Tuffart;A11y;Agdil;Ameɣri;Asemɣer;Agnil;Ini; +xdg-entry-a11y-comment = Ameɣri n ugdil, asemɣer, agnil afellay, akked tistayin n yini +xdg-entry-about-comment = Isem n yibenk, talɣut ɣef warrum akked iɣewwaṛen imezwar n unagraw n wammud +xdg-entry-appearance-comment = Initen n uɣdebbu akked isental +xdg-entry-keywords = COSMIC;Iɣewwaṛen; +xdg-entry-about = Ɣef +xdg-entry-appearance = Timeẓri +xdg-entry-bluetooth-comment = Sefrek ibenkan n Bluetooth +xdg-entry-default-apps-comment = Iminig n web amezwer, amsaɣ n yimayl, iminig n yifuyla, akked yisnasen nniḍen +xdg-entry-appearance-keywords = COSMIC;Aɣdebbu;Ini;Tignit;Tasefsit;Asentel +xdg-entry-default-apps = Isnasen imezwar +xdg-entry-applications-comment = Isnasen imezwar, isnasen n usekker akked iɣewwaṛen n umṣada n yisnasen X11 +xdg-entry-date-time-keywords = COSMIC;Asrag;Tamennaḍt; +xdg-entry-date-time = Azemz akked usrag +xdg-entry-applications = Isnasen +xdg-entry-applications-keywords = COSMIC;Amezwer;Asnas;Asekker;X11;Amṣada +xdg-entry-date-time-comment = Tamennaḍt tasragant, iɣewwaṛen n temrilt tawurmant akked umasal n usrag +xdg-entry-mouse-keywords = COSMIC;Taɣerdayt;Asɣiwel;Adrurem; +xdg-entry-keyboard-comment = Iɣbula n unekcum, asenfel, anekcum n isekkilen uzzigen, inegzumen +xdg-entry-mouse = Taɣerdayt +xdg-entry-dock-keywords = COSMIC;Adekkan;Agalis;Tappleṭ +xdg-entry-mouse-comment = Arured n tɣerdayt, asɣiwel, d udrurem agaman +xdg-entry-keyboard = Anasiw +xdg-entry-input-comment = Iɣewwaṛen n unasiw akked tɣerdayt +xdg-entry-dock-comment = Afeggag anefrunan i isnasen akked teplaḍin +xdg-entry-dock = Adekkan +xdg-entry-input = Ibenkan n unekcum +xdg-entry-keyboard-keywords = COSMIC;Anasiw;Anekcum;Aɣbalu;Inegzumen; +xdg-entry-startup-apps-comment = Swel isnasen i yettwaselkamen deg tuqqna +xdg-entry-startup-apps-keywords = COSMIC;Asekker;Asnas; +xdg-entry-system = Anagraw akked Imiḍanen +xdg-entry-time-language-comment = Sefrek azemz n unagraw, asrag, tamnaḍt akked tutlayt +xdg-entry-users = Iseqdacen +xdg-entry-system-keywords = COSMIC;Anagraw;Talɣut;Imiḍanen;Afreɣẓan; +xdg-entry-users-comment = Asesteb akked imiḍanen n iseqdacen +xdg-entry-system-comment = Talɣut n unagraw, imiḍanen akked ileqman n ufreɣẓan +xdg-entry-users-keywords = COSMIC;Aseqdac;Amiḍan; +xdg-entry-time-language-keywords = COSMIC;Anagraw;Asrag;Azemz;Tamnaḍt;Tutlayt; +xdg-entry-wired = S ugatu +xdg-entry-wired-keywords = COSMIC;Agatu;LAN;Aẓeṭṭa;Tuqqna; +xdg-entry-window-management = Asefrek n yisfuyla +xdg-entry-wallpaper = Aɣrab n ugdil +xdg-entry-wallpaper-comment = Tugniwin n uɣrab n ugdil, initen akked tigri n tugna +xdg-entry-wallpaper-keywords = COSMIC;Aɣrab n ugdil;Agilal;Tigri n tugna; +xdg-entry-vpn-keywords = COSMIC;VPN;Aẓeṭṭa;Tuqqna;OpenVPN;OpenConnect; +xdg-entry-vpn-comment = Tuqqniwin VPN akked imeɣna n tuqqna +xdg-entry-wired-comment = Tuqqniwin ugatu akked imeɣna n tuqqniwin +workspaces-orientation = Taɣda n tallunin n umahil + .vertical = Ubdid + .horizontal = Aglawan +sound-applications = Isnasen + .desc = Iblaɣen akked iɣewwaṛen n usnas +xdg-entry-x11-applications-keywords = COSMIC;X11;Asnas;Urar;Amṣada; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Aẓeṭṭa;Tuqqna; +xdg-entry-wireless-comment = Tuqqniwin Wi-Fi akked imeɣna n tuqqna +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Tallunt n umahil;Taɣda;Askan amatu;Agdil; +xdg-entry-workspaces-comment = Taɣda n tallunt n umahil, askan amatu akked tiddin n uget n yigdilen +xdg-entry-workspaces = Tallunin n umahil +xdg-entry-x11-applications = Amṣada n Isnasen X11 +xdg-entry-desktop-keywords = COSMIC;Tanarit; +xdg-entry-displays-comment = Sefrek iɣewwaṛen n twila n ubeqqeḍ +xdg-entry-notifications = Ilɣa +xdg-entry-desktop = Tanarit +xdg-entry-desktop-comment = Aɣrab n ugdil, timeẓri, agalis, adekkan, asefrek n yisfuyla akked yiɣewwaṛen n tallunt n umahil +xdg-entry-displays = Ibeqqiḍen +xdg-entry-network = Aẓeṭṭa akked tuqqna war agatu +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-network-keywords = COSMIC;Aẓeṭṭa;War agatu;WiFi;VPN; +xdg-entry-comment = Asnas iɣewwaṛen n tnarit COSMIC +xdg-entry-default-apps-keywords = COSMIC;Amezwer;Asnas +xdg-entry-network-comment = Sefrek tuqqniwin n uẓeṭṭa +xdg-entry-displays-keywords = COSMIC;Abeqqeḍ; +xdg-entry-region-language = Tamnaḍt akked Tutlayt +xdg-entry-notifications-keywords = COSMIC;Alɣu;Asekkeṛ; +xdg-entry-power = Tazmart akked uẓru +xdg-entry-panel-keywords = COSMIC;Agalis;Tappleṭ +xdg-entry-power-keywords = COSMIC;Tanezmart;Aẓru +xdg-entry-panel-comment = Afeggag n unagraw agejdan i wumuɣen akked teplaḍin +xdg-entry-power-comment = Iskaren n tnezmart akked tnefrunin n uḥraz n tnezmart +keyboard-typing-assist = Tira + .repeat-rate = Atug n wallus + .repeat-delay = Amzegran n wallus +sound-alerts = Ilɣa + .volume = Ableɣ n yilɣa + .sound = Imesli n yilɣa +color = Ini + .depth = Talqayt n yini + .profile = Amaɣnu n yini + .sidebar = Imeɣna n yini + .temperature = Taẓɣelt n yini +xdg-entry-startup-apps = Isnasen n tnekra +xdg-entry-region-language-comment = Msel izemzen, isragen akked yemḍanen almend n temnaḍt-ik·im +xdg-entry-sound-keywords = Cosmic;Imesli;Ameslaw;Alɣu;Pipewire; +xdg-entry-region-language-keywords = COSMIC;Tamnaḍt;Tutlayt;Azemz;Amasal;Asrag;Iɣewwaṛen idiganen;Asideg; +xdg-entry-sound-comment = Iɣewwaṛen n umeslaw i yibenkan, ilɣa akked yisnasen +cancel = Sefsex +save = Sekles +replace = Semselsi +light = Aceɛlal +dark = Aɣmayan +appearance = Timeẓri +settings = Iɣewwaṛen +username = Isem n useqdac +remove = Kkes +password = Awal uffir +connect = Qqen +close = Mdel +confirm = Sentem +forget-dialog = Ttu aẓeṭṭa-agi Wi-Fi? + .description = Ilaq ad tsekcemeḍ awal uffir tikkelt-nniḍen i useqdec n uẓeṭṭa-agi Wi-Fi ɣer zdat. +identity = Tamagit +password-confirm = Sentem awal uffir +connected = Yettwaqqen +dock = Adekkan +applets = Tiplaḍin +add = Rnu +panel = Agalis +import = Kter +xdg-entry-time-language = Asrag & Tutlayt +xdg-entry-panel = Agalis +xdg-entry-sound = Imesli +all = Akk +add-applet = Rnu tappleṭ +notifications = Ilɣa +shadow-and-corners = Tili akked tiɣemmar n usfaylu +interface-font = Tasefsit n unagraw +monospace-font = Tasefsit n tallunt tasuft +icons-and-toolkit = Isental n tignitin d ifecka +experimental-settings = iɣewwaṛen urmitan +window-management-appearance = Asefrek n yisfuyla + .active-hint = Tiddi n umatar n usfaylu urmid + .gaps = Ilem yezzin ɣef isfuyla yefsren +interface-density = Taneẓẓi n ugrudem + .comfortable = Amfiman + .compact = Akussim + .spacious = Wessiɛen +style = Aɣanib + .round = Imdewweṛ + .slightly-round = Imdewweṛ cwiṭ + .square = Amkuẓ +text-tint = Sbeɣ n uḍris n ugrudem + .desc = Yettwaseqdec iwakken ad d-yawi initen n uḍris n ugrudem i yesɛan agnil akken iwata deg tugett n tjummiwin +icon-theme = Asentel n tignit + .desc = Ad yesnes tagrumma n tignitin yemgaraden ɣef isnasen +frosted = Asemdu n usmaɣ deg ugrudem n unagraw. + .desc = Snes asluɣu n ugilal ɣer ugalis, adekkan, tiplaḍin, ameskar, d temkarḍit n usnas +enable-export = Snes asentel amiran i yisnasen n GNOME + .desc = Mačči akk ifecka sefraken asnifel awurman. Isnasen ur nelli n COSMIC zemrent ad sran ales n tnekra seld asnifel n usentel. +control-tint = Sbeɣ n isger usenqed + .desc = Yettwaseqdec i ugilal n teqfalin tizeɣt, isekcemen n unadi, isekcemen n uḍris, d isegran yettemcabin +container-background = Agilal n umagbar + .desc-detail = Ini n ugilal n umagbar yettwaseqdec i ufeggag adisan n tunigin, leqjeṛ n yidis, idiwenniyen akked yiwiǧiten am wigi. S wudem amezwer, ini n ugilal n umagbar yettwasuddem-d s wudem awurman seg ugilal n usfaylu. + .reset = Ales awennez ɣer uwarman + .desc = Yettwaseqdec i ufeggag n yidis n yinig, leqjeṛ n yidis, idiwenniyen akked iwiǧiten am wigi +shadows-floating = Asfaylu yettifliwen + .clip = Semṣada akked tɣmar n unagraw arnu snes tili +auto-switch = Snifel s wudem awurman gar uskar aceɛlal d uɣmayan + .sunrise = Ad isnifel ɣer waskar aceɛlal deg walluy + .sunset = Ad isnifel ɣer waskar aɣmayan deg uɣelluy + .next-sunrise = Ad isnifel ɣer waskar aceɛlal deg walluy id-iteddun + .next-sunset = Ad isnifel ɣer waskar aɣmayan deg uɣelluy id-iteddun +window-hint-accent-toggle = Seqdec ini n uɣdebbu am unamal n usfaylu urmid +window-hint-accent = Ini n unamal n usfaylu urmid +rgb = RGB +reset-to-default = Ales awennez ɣer umezwer +recent-colors = Initen n melmi kan +mode-and-colors = Askar akked yiniten +hex = Hex +export = Sifeḍ +copy-to-clipboard = Nɣel ɣer tecfawit +copied-to-clipboard = Yettwanɣel ɣer tecfawit +color-picker = Amelqaḍ n yini +auto = Awurman +app-background = Agilal n usfaylu +accent-color = Ini n uɣdebbu +never = Werǧin +x-hours = + { $number } { $number -> + [one] usrag + *[other] n yisragen + } +x-minutes = + { $number } { $number -> + [one] tasdat + *[other] n tesdatin + } +recent-folders = Ikaramen n melmi kan +open-new-folder = Ldi akaram amaynut +fit-to-screen = Sezg ɣer ugdil +fill = Taččart +dialog-add = Rnu +colors = Initen +all-displays = Akk igdilen +add-image = Rnu tugna +add-color = Rnu ini +wallpaper = Aɣrab n ugdil + .change = Snifel tugna yal + .fit = Tugna n uɣrab n ugdil tettwasemsawi + .folder-dialog = Fren akaram n uɣrab n ugdil + .image-dialog = Fren tugna n uɣrab n ugdil + .plural = iɣerban n ugdil + .same = Yiwen uɣrab n ugdil deg yibeqqeḍen meṛṛa + .slide = Tigri +desktop = Tanarit +color-filter = Anaw n testayt n yini + .unknown = Tastayt tarussint turmidt + .greyscale = Tafesna n imiɣed + .deuteranopia = Adal/Azeggaɣ (adal ur yeǧhid ara, Dutiranupya) + .protanopia = Azeggaɣ/Adal (azeggaɣ ur yeǧhid ara, Prutanupya) + .tritanopia = Azegzaw/Awṛaɣ (azegzaw ur yeǧhid ara, Tritanupya) +default = Amezwer +accessibility = Tuffart + .vision = Tamuɣli + .on = Yermed + .off = Yensa + .unavailable = Ur yewjid ara + .screen-reader = Imeɣri n ugdil + .high-contrast = Askar n ugnil afellay + .invert-colors = Tti initen + .color-filters = Tistayin n yini +bluetooth-adapters = Imezgayen n Bluetooth +bluetooth-available = Ibenkan iqeṛben +bluetooth-confirm-pin = Sentem Tangalt Bluetooth PIN + .description = Ma ulac aɣilif, Sentem d akken tangalt PIN i d-itteddun temṣada akked tin i d-yettwaseknen deg { $device } +bluetooth-paired = Ibenkan yeqqnen yakan + .connect = Qqen + .battery = Aẓru { $percentage }% +bluetooth = Bluetooth + .status = Anagraw-agi yettban-d am { $aliases } mi ara ldin yiɣewwaṛen n Bluetooth. + .connected = Iqqen + .connecting = Tuqqna + .disconnecting = Tuffɣa si tuqqna + .connect = Qqen + .disconnect = Ffeɣ seg tuqqna + .forget = Ttu + .dbus-error = Teḍra-d tuccḍa deg temyigawt akked DBus: { $why } + .disabled = Ameẓlu n Bluetooth yensa + .inactive = Ameẓlu Bluetooth ur yermed ara + .unknown = Ameẓlu n Bluetooth ur yezmir ara ad yermed. Yettwasbedd BlueZ? +enable = Sermed +activate = Rmed +online-accounts = Imiḍanen ɣef uẓeṭṭa + .desc = Rnu imiḍanen, IMPA akked SMTP, inekcam n tuqqna n tkebbanit +wireguard-dialog = Rnu ibenk WireGuard + .description = Fren isem n yibenk i twila n WireGuard. +wifi = Wi-Fi + .adapter = Amezgay n Wi-Fi { $id } + .forget = Ttu aẓeṭṭa-agi +wired = S ugatu + .adapter = Amezgay n ugatu { $id } + .connections = Tuqqniwin s ugatu + .devices = Ibenkan n ugatu + .remove = Kkes amaɣnu n tuqqna +vpn-error = Tuccḍa n VPN + .config = Ur teddi ara tmerna n twila VPN + .connect = Tecceḍ tuqqna ɣer VPN + .connection-editor = Amaẓrag n tuqqna ur yeddi ara + .connection-settings = Yecceḍ wawway n iɣewwaṛen i tuqqniwin turmidin + .updating-state = Yecceḍ uleqqem n waddad n umsefrak n uzeṭṭa + .wireguard-config-path = Abrid n ufaylu d armeɣtu i twila n WireGuard + .wireguard-config-path-desc = Afaylu yettwafernen ilaq ad yili deg unagraw adigan. + .wireguard-device = Yecceḍ usnulfu n yibenk WireGuard + .with-password = + Ur yizmir ara ad isbadu { $field -> + *[username] isem n useqdac + [password] awal uffir + [password-flags] tikbabin n wawal uffir + } n VPN s nmcli +vpn = VPN + .connections = Tuqqniwin VPN + .error = Timerna n twila VPN ur teddi ara + .remove = Kkes amaɣnu n tuqqna + .select-file = Fren afaylu n twila VPN +remove-connection-dialog = Kkes amaɣnu n tuqqna? + .vpn-description = Yessefk ad teskecmeḍ awal uffir tikkelt-nniḍen akken ad tesqedceḍ aẓeṭṭa-agi deg yimal. + .wired-description = Ilaq ad talseḍ asnulfu n umaɣnu-agi akken ad t-tesqedceḍ deg yimal. +network-device-state = + .activated = Iqqen + .config = Tuqqna + .deactivating = Tuffɣa seg tuqqna + .disconnected = Yeffeɣ seg tuqqna + .failed = Tuqqna ur teddi ara + .ip-check = Aselken n tuqqna + .ip-config = Asuter n IP akked talɣut n uɛeddi + .need-auth = Yesra asesteb + .prepare = Aheggi i tuqqna + .secondaries = Araǧu n tuqqna tis snat + .unavailable = Ulac-it + .unknown = Addad arussin + .unmanaged = Ur yettwasefrak ara + .unplugged = Agatu yettwakkes +auth-dialog = Asesteb yettwasra + .vpn-description = Sekcem isem n useqdac akked wawal uffir yettwasran sɣur umeẓlu VPN. + .wifi-description = Sekcem awal uffir neɣ tasarut n uwgelhen. Tzemreḍ daɣen ad teqqneḍ s usiti ɣef tqeffalt “WPS” deg umeglay. +visible-networks = Izeḍwa yettbanen +share = Bḍu aẓeṭṭa +qr-code-unavailable = Tangalt QR ulac-itt +no-vpn = Ulac tuqqniwin VPN iwejden. +no-networks = Ulac iẓeḍwa yettwafen. +network-name = Isem n uẓeṭṭa +network-and-wireless = Aẓeṭṭa & war agatu +known-networks = Iẓeḍwa yettwassnen +forget = Ttu +disconnect = Ffeɣ seg tuqqna +connecting = Tuqqna… +cable-unplugged = Agatu yettwakkes +airplane-on = Askar n temsrifegt yermed. +add-vpn = Rnu VPN +add-network = Rnu aẓeṭṭa + .profile = Rnu amaɣnu +app = Iɣewwaṛen n COSMIC +number = { $number } +unknown = Arussin +ok = IH +dbus-connection-error = Ur izmir ara ad yeqqen ɣer DBus +zoom-out = Simẓi +zoom-in = Semɣeṛ +replace-shortcut-dialog = Semselsi anegzum? + .desc = { $shortcut } yettwaseqdec sɣur { $name }. Ma tsemselsiḍ-t, { $name } ad yettwsens. +window-tiling = Afser n yisfuyla + .horizontal = Sbadu taɣda taglawant + .vertical = Sbadu taɣda tubdidt + .swap-window = Asfaylu n usemmeskel + .toggle-tiling = Qluqel afsar n usfaylu + .toggle-stacking = Qluqel asettef n usfaylu + .toggle-floating = Qluqel asfaylu yettifliwen + .toggle-orientation = Qluqel taɣda +manage-windows = Sefrek isfuyla + .close = Mdel asfaylu + .maximize = Semɣer asfaylu + .fullscreen = Asfaylu n ugdil aččuran + .minimize = Semẓi asfaylu + .resize-inwards = Ales tiddi n usfaylu ɣer daxel + .resize-outwards = Ales tiddit n usfaylu ɣer berra + .toggle-sticky = Rmed/Sens asfaylu usbiḍ +modified = { $count } ttwasniflen +custom-shortcuts = Inegzumen yugnen + .add = Rnu anegzum + .context = Rnu anegzum yugnen + .none = Ulac inegzumen yugnen +type-key-combination = Aru asuddes n tsarut +toggle-stacking = Rmed/Sens asettef n isfuyla +terminate = Egg tagara +system-controls = Isenqaden n unagraw +shortcut-name = Isem n unegzum +navigate = Inig +migrate-workspace = + Inig tallunt n umahil ɣer tuffɣa { $direction -> + *[down] ukessar + [left] uzelmaḍ + [right] uyeffus + [up] usawen + } +migrate-workspace-next = Inig tallunt n umahil ɣer tuffɣa tuḍfirt +migrate-workspace-prev = Inig tallunt n umahil ɣer tuffɣa tuzwirt +input-source-switch = Beddel tutlayt n usekcem n unasiw +disabled = Insa +debug = Seɣti +custom = Yugnen +command = Taladna +add-another-keybinding = Rnu yiwen n unegzum n unasiw nniḍen +keyboard-shortcuts = Inegzumen n unasiw + .desc = Wali sakin sagen inegzumen +show-extended-input-sources = Sken tiɣbula n unekcum leqqayen +type-to-search = Aru iwakken ad tnadiḍ… +added = Yettwarna +keyboard-sources = Iɣbula n unekcum + .desc = Iɣbula n unekcum zemren ad ttwasneflen s useqdec n usuddes n tsarut Super+Space. Ayagi yezmer ad yettuwennez deg yiɣewwaṛen n unegzum n unasiw.. + .move-up = Ddu d asawen + .move-down = Ddu d akessar + .settings = Iɣewwaṛen + .view-layout = Wali taneɣruft n unasiw + .remove = Kkes + .add = Rnu aɣbalu n unekcum +keyboard = Anasiw +long = Aɣezfan +short = Awezlan +fast = Arurad +slow = Ẓẓay +scrolling = Adrurem + .two-finger = Drurem s sin iḍudan + .edge = Drurem arma d iri s yiwen uḍad + .speed = Arured n udrurem + .natural = Adrurem agaman + .natural-desc = Drurem agbur, deg wadeg n tmeẓri +primary-button = Taqeffalt tagejdant + .desc = Ad yesbadu amizzwer n tqeffalin tifekkanin + .left = Azelmaḍ + .right = Ayeffus +input-devices = ibenkan n unekcum +disable-while-typing = Sens ticki tettaruḍ +acceleration-desc = Seggem s wudem awurman aḥulfu n uneḍfar ilmend n urured +power-saving = Tinefrunin n uḥraz n tnezmart + .turn-off-screen-after = Sexsi agdil seld + .auto-suspend = Aseḥbes deg leɛḍil s wudem awurman + .auto-suspend-ac = Aseḥbes deg leɛḍil s wudem awurman mi ara yeqqen + .auto-suspend-battery = Aseḥbes deg leɛḍil s wudem awurman ɣef tezmer n uẓru +power-mode = Askar n tezmart + .battery = Asiɣzef n tudert n uẓru + .battery-desc = Aḥraz n tezmart d tmellit tasusamt + .balanced = Awliwal + .balanced-desc = Timellit tasussamt akked useqdec alemmas n tezmert + .performance = Timellit tafellayt + .performance-desc = Taqacuct useqdec n tmellit d tezmert + .no-backend = Ameẓlu n deffir ur yettwaf ara. Sbedd system76-power neɣ power-profiles-daemon. +connected-devices = Ibenkan yeqqnen + .unknown = Ibenk arussin +battery = Aẓru + .minute = + { $value } { $value -> + [one] tasdat + *[other] n tesdatin + } + .hour = + { $value } { $value -> + [one] asrag + *[other] n yisragen + } + .day = + { $value } { $value -> + [one] wass + *[other] n wussan + } + .less-than-minute = Ur tettaweḍ ara tesdat + .and = akked + .remaining-time = + { $time } alamma { $action -> + [full] yeččur + *[other] ifuk + } +power = Tazmert d uẓru +sound-device-profiles = Imuɣna n yibenk +sound-usb-audio = Imesli USB +sound-hd-audio = Imesli HD +amplification = Asedfu + .desc = Ad yesireg ableɣ alama d 150% +sound-input = Anekcam + .volume = Ableɣ n unekcum + .device = Ibenk n unekcum + .level = Aswir n unekcum +sound-output = Tuffɣa + .volume = Ableɣ n tuffɣa + .device = Ibenk n tuffɣa + .level = Aswir n tuffɣa + .config = Twila + .balance = Awliwel + .left = Azelmaḍ + .right = Ayeffus +sound = Imesli +dialog = Tanaka n udiwenni + .title = Eǧǧ iɣewwaren-agi n ubeqqeḍ? + .keep-changes = Eǧǧ ibeddilen + .change-prompt = Isenfal n yiɣewwaṛen ad ttwasfesxen s wudem awurman deg { $time } n tsinin. + .revert-settings = Err-d iɣewwaṛen +scheduling = Asɣiwes + .manual = Asɣiwes s ufus +vrr = Atug n usismeḍ n umutti + .enabled = Yettwarmed + .force = Yal tikelt + .auto = S wudem awarman + .disabled = Ittwarermed +orientation = Taɣda + .standard = Tizeɣt + .rotate-90 = Zzi s 90° + .rotate-180 = Zzi s 180° + .rotate-270 = Zzi s 270° +night-light = Tafat n yiḍ + .auto = Awurman (seg uɣelluy ɣer walluy) + .desc = Senqes tafat tazegzawt s yiniten yeḥman +-requires-restart = Yesra asenker tikelt-nniḍen +workspaces-multi-behavior = Tiddin n uget n yigdilen + .span = Tallunin n umahil tteddunt ɣef ddeqs n yigdilen + .separate = Igdilen sɛan tallunin n umahil i yiman-nsent +workspaces-behavior = Tiddin n tallunt n umahil + .dynamic = Tallunin n umahil s wudem asmussaw + .dynamic-desc = Kkes s wudem awurman tallunin n umahil tilmawin + .fixed = Amḍan usbiḍ n tallunin n umahil + .fixed-desc = Rnu neɣ kkes tallunin n umahil deg teskant. +workspaces-overview = Taskant n tallunin n umahil + .action-on-typing = Tigawt deg tira + .none = Ula yiwen + .launcher = Ldi Amsekkar + .applications = Ldi Isnasen +workspaces = Tallunin n umahil +focus-navigation = Asaḍas n yinig + .focus-follows-cursor = Asaḍas i uḍfar n teḥnaccaḍt + .focus-follows-cursor-delay = Asaḍas i uḍfar n teḥnaccaḍt s usmezger s mili-tasint + .cursor-follows-focus = Taḥnaccaṭ teḍfer asaḍas +window-controls = Isenqaden n usfaylu + .maximize = Sken taqeffalt n usemɣer + .minimize = Sken taqeffalt n usemẓi + .active-window-hint = Sken amatar n usfaylu urmid +edge-gravity = Ajbad n yisfuyla yettifliwen ɣer yiran iqerben +super-key = Tigawt n tsarut Super + .launcher = Ldi amsekkar + .workspaces = Ldi tallunin n umahil + .applications = Ldi isnasen + .disable = Sens +window-management = Amsefrak n yisfuyla +panel-missing = Tawila n ugalis ulac-itt + .desc = Afaylu n twila n ugalis ulac-it ɣef sebba n useqdec n twila yugnen neɣ yexṣer. + .fix = Ales awennez ɣer umezwer +panel-applets = Tawila + .dock-desc = Swel tiplaḍin n udekkan + .desc = Swel tiplaḍin n ugalis +panel-style = Aɣanib + .anchor-gap = Ilem gar ugalis d yiran n ugdil + .dock-anchor-gap = Ilem gar udekkan d yiran n ugdil + .extend = Seɣzef agalis ɣer yiran n ugdil + .dock-extend = Seɣzef adekkan ɣer yiran n ugdil + .appearance = Timeẓriwt + .size = Teɣzi + .background-opacity = Tiḍullest n ugilal +panel-behavior-and-position = Tiddin akked wadigen + .autohide = Ffer s wudem awurman agalis + .dock-autohide = Ffer s wudem awurman adekkan + .position = Ideg deg ugdil + .display = Sken deg ubeqqeḍ +panel-appearance = Timeẓriwt + .match = Amṣada d tnarit + .light = Aceɛlal + .dark = Aɣmayan +start-segment = Aḥric n tazwara +small = Ameẓyan +search-applets = Nadi tiplaḍin… +panel-top = Uksawen +panel-right = Ayeffus +panel-left = Azelmaḍ +panel-bottom = Ukessar +no-applets-found = Ulac tiplaḍin yettwafen... +large = Meqqer +end-segment = Aḥric n taggara +place-here = Sers tiplaḍin dagi +center-segment = Aḥric alemmas +no-search-results = Ulac ifuyla inmeɣran akked unadi-ik·im. +password-mismatch = Awal uffir akked usentem ilaq ad mṣadan +invalid-username = Isem n useqdac d armeɣtu +full-name = Isem ummid +remove-user = Kkes aseqdac +change-password = Asnifel n wawal uffir +add-user = Rnu aseqdac +administrator = Anedbal + .desc = Inedbalen zemren ad beddlen iɣewwaṛen i yiseqdacen meṛṛa, ad rnun neɣ ad kksen iseqdacen-nniḍen +users = Iseqdacen + .admin = Anedbal + .standard = Tizeɣt + .profile-add = Fren tugna n umaɣnu +firmware = Afreɣẓan +about-related = Iɣewwaṛen icudden + .support = Awi-d tallelt +about-os = Anagraw n wammud + .os = Anagraw n wammud + .os-architecture = Tasegda n unagraw n wammud + .kernel = Lqem n yiɣes + .desktop-environment = Twennaḍt n tnarit + .windowing-system = Anagraw n yisfuyla +about-hardware = Arrum + .model = Tamudemt n warrum + .memory = Takatut + .processor = Asekkar + .graphics = Udlifen + .disk-capacity = Akettur n uḍebsi +about-device = Isem n yibenk + .desc = Isem-agi yettban-d deg ibenkan-nniḍen n uẓeṭṭa neɣ n Bluetooth +about = Ɣef +system = Anagraw akked imiḍanen +legacy-applications = Amṣada n yisnasen X11 +startup-apps = Isnasen n usekker + .add = Rnu asnas + .user = Isnasen ttwasnekren mi ara tkecmeḍ + .none = Ulac isnasen n usekker yettwarnan + .remove-dialog-title = Kkes { $name }? + .remove-dialog-description = Kkes asnas-agi n usekker? + .add-startup-app = Rnu asnas n usekker +default-apps = Isnasen imezwar + .web-browser = Iminig n web + .file-manager = Amsefrak n ifuyla + .mail-client = Amsaɣ n yimayl + .music = Aẓawan + .video = Tavidyut + .photos = Tiwlafin + .calendar = Awitay + .terminal = Ixef + .other-associations = Tidukliwin-nniḍen + .text-editor = Amaẓrag n uḍris + .not-installed = Ur yettusbedd ara +applications = Isnasen +region = Tamnaḍt +install-additional-languages = Sbedd tutlayin nniḍen +add-language = Rnu tutlayt + .context = Rnu tutlayt +preferred-languages = Tutlayin timenyafin + .desc = Amizzwer n tutlayin yemmal-d anta tutlayt i yettwasqedcen i ugrudem n useqdac. Isenfal ad ddun deg tuqqna tuḍfirt. +formatting = Amsal + .dates = Izemzen + .time = Akud + .date-and-time = Azemz & akud + .numbers = Uṭṭunen + .measurement = Akat + .paper = Lkaɣeḍ +time-region = Tamnaḍt akked tutlayt +time-format = Amasal n uzemz akked usrag + .twenty-four = akud n 24 n yisragen + .show-seconds = Sken tasinin + .first = Ass amezwaru n dduṛt + .show-date = Sken azemz deg tappleṭ n wakud + .friday = Sem + .saturday = Sed + .sunday = Acer + .monday = Arim +time-zone = Tamnaḍt n wakud + .auto = Tamnaḍt n wakud tawurmant + .auto-info = Yesra imeẓla n wadig akked unekcum ɣer internet +time-date = Azemz akked wakud + .auto = Sbadu s wudem awurman + .auto-ntp = Azemz akked wakud ad ttwaleqqmen s wudem awurman ticki ara tesbaduḍ tamnaḍt n wakud +time = Akkud akked tutlayt +open-workspaces-view = Taskant n tallunin n umahil yeldin +open-application-library = Ldi tamkarḍit n yisnasen +switch-between-windows = Senfel gar isfuyla +switch-workspaces = Senfel tallunin n umahil + .horizontal = Aḍummu n kuẓ n yiḍudan ɣer zelmaḍ/yefus + .vertical = Aḍummu n kuẓ n yiḍudan ɣer usawen/ukessar +touchpad = Talwiḥt n unnal + .acceleration = Rmed tasɣiwelt n telwiḥt n unnal + .speed = Arurad n telwiḥt n unnal +click-behavior = Tiddin n usiti + .click-finger = Asiti wis sin s sin iḍudan akked d usiti alemmas s kraḍ n yiḍudan + .button-areas = Asiti wis sin deg teɣmert tayeffust n wadda akked usiti alemmas di tlemmast n wadda +mouse = Taɣerdayt + .speed = Arured n tɣerdayt + .acceleration = Rmed asɣiwel n tɣerdayt diff --git a/i18n/kk/cosmic_settings.ftl b/i18n/kk/cosmic_settings.ftl index e69de29..2b58689 100644 --- a/i18n/kk/cosmic_settings.ftl +++ b/i18n/kk/cosmic_settings.ftl @@ -0,0 +1,820 @@ +app = COSMIC баптаулары +dbus-connection-error = DBus-қа қосылу сәтсіз аяқталды +ok = ОК +unknown = Белгісіз +number = { $number } +add-network = Желіні қосу + .profile = Профильді қосу +add-vpn = VPN қосу +airplane-on = Ұшақ режимі іске қосулы. +cable-unplugged = Кабель ажыратылған +connect = Қосылу +connected = Қосылды +connecting = Қосылуда… +disconnect = Ажырату +forget = Ұмыту +known-networks = Белгілі желілер +network-and-wireless = Желі және сымсыз байланыс +network-name = Желі атауы +no-networks = Желілер табылмады. +no-vpn = Қолжетімді VPN байланыстары жоқ. +password = Пароль +password-confirm = Парольді растау +qr-code-unavailable = QR коды қолжетімсіз +remove = Өшіру +scan-to-connect-description = Осы желіге қосылу үшін QR кодын сканерлеңіз. +settings = Баптаулар +share = Желімен бөлісу +username = Пайдаланушы аты +visible-networks = Көрінетін желілер +identity = Сәйкестендіру +auth-dialog = Аутентификация қажет + .vpn-description = VPN қызметіне қажетті пайдаланушы атын және парольді енгізіңіз. + .wifi-description = Парольді немесе шифрлеу кілтін енгізіңіз. Сондай-ақ роутердегі «WPS» батырмасын басу арқылы қосылуға болады. +forget-dialog = Осы Wi-Fi желісін ұмыту керек пе? + .description = Болашақта осы Wi-Fi желісін пайдалану үшін парольді қайта енгізу қажет болады. +network-device-state = + .activated = Қосылды + .config = Қосылуда + .deactivating = Ажыратылуда + .disconnected = Ажыратылған + .failed = Қосылу сәтсіз аяқталды + .ip-check = Байланысты тексеру + .ip-config = IP және маршруттау ақпаратын сұрау + .need-auth = Аутентификация қажет + .prepare = Қосылуға дайындалу + .secondaries = Қосымша байланысты күту + .unavailable = Қолжетімсіз + .unknown = Белгісіз күй + .unmanaged = Басқарылмайтын + .unplugged = Кабель ажыратылған +remove-connection-dialog = Байланыс профилін өшіру керек пе? + .vpn-description = Болашақта осы желіні пайдалану үшін парольді қайта енгізу қажет болады. + .wired-description = Болашақта оны пайдалану үшін осы профильді қайта жасау қажет болады. +vpn = VPN + .connections = VPN байланыстары + .error = VPN конфигурациясын қосу сәтсіз аяқталды + .remove = Байланыс профилін өшіру + .select-file = VPN конфигурациялық файлын таңдаңыз +vpn-error = VPN қатесі + .config = VPN конфигурациясын қосу сәтсіз аяқталды + .connect = VPN-ге қосылу сәтсіз аяқталды + .connection-editor = Байланыс редакторының жұмысы сәтсіз аяқталды + .connection-settings = Белсенді байланыстар үшін баптауларды алу сәтсіз аяқталды + .updating-state = Желі менеджерінің күйін жаңарту сәтсіз аяқталды + .wireguard-config-path = WireGuard конфигурациясы үшін файл жолы жарамсыз + .wireguard-config-path-desc = Таңдалған файл жергілікті файлдық жүйеде болуы тиіс. + .wireguard-device = WireGuard құрылғысын жасау сәтсіз аяқталды + .with-password = + VPN { $field -> + *[username] пайдаланушы атын + [password] паролін + [password-flags] пароль жалаушаларын + } nmcli арқылы орнату сәтсіз аяқталды +wired = Сымды + .adapter = Сымды адаптер { $id } + .connections = Сымды байланыстар + .devices = Сымды құрылғылар + .remove = Байланыс профилін өшіру +wifi = Wi-Fi + .adapter = Wi-Fi адаптері { $id } + .forget = Осы желіні ұмыту +wireguard-dialog = WireGuard құрылғысын қосу + .description = WireGuard конфигурациясы үшін құрылғы атауын таңдаңыз. +online-accounts = Желілік тіркелгілер + .desc = Тіркелгілерді, IMAP және SMTP, кәсіпорындық кіру мәліметтерін қосу +activate = Белсендіру +confirm = Растау +enable = Іске қосу +bluetooth = Bluetooth + .status = Bluetooth баптаулары ашық болған кезде бұл жүйе { $aliases } ретінде көрінеді. + .connected = Қосылған + .connecting = Қосылуда + .disconnecting = Ажыратылуда + .connect = Қосылу + .disconnect = Ажырату + .forget = Ұмыту + .dbus-error = DBus-пен өзара әрекеттесу кезінде қате орын алды: { $why } + .disabled = Bluetooth қызметі сөндірулі + .inactive = Bluetooth қызметі белсенді емес + .unknown = Bluetooth қызметін іске қосу мүмкін болмады. BlueZ орнатылған ба? +bluetooth-paired = Бұрын қосылған құрылғылар + .connect = Қосылу + .battery = Батарея заряды { $percentage }% +bluetooth-confirm-pin = Bluetooth PIN кодын растау + .description = Келесі PIN коды { $device } құрылғысында көрсетілген кодқа сәйкес келетінін растаңыз +bluetooth-available = Жақын маңдағы құрылғылар +bluetooth-adapters = Bluetooth адаптерлері +accessibility = Арнайы мүмкіндіктер + .vision = Көру қабілеті + .on = Іске қосулы + .off = Өшірулі + .unavailable = Қолжетімсіз + .screen-reader = Экрандық диктор + .high-contrast = Жоғары контраст режимі + .invert-colors = Түстерді инверсиялау + .color-filters = Түс сүзгілері +hearing = Есту қабілеті + .mono = Стерео аудионы моно ретінде ойнату +default = Әдепкі +magnifier = Үлкейткіш + .controls = + Немесе келесі жарлықтарды қолданыңыз: { $zoom_in -> + [zero] { "" } + *[other] + { "" } + { $zoom_in } үлкейту үшін, + }{ $zoom_out -> + [zero] { "" } + *[other] + { "" } + { $zoom_out } кішірейту үшін, + } + Super + тышқанмен айналдыру + .scroll_controls = Super + айналдыру арқылы тышқан немесе тачпадпен үлкейтуді іске қосу + .show_overlay = Үлкейткіш қабатын көрсету + .increment = Масштаб қадамы + .signin = Жүйеге кіргенде үлкейткішті іске қосу + .applet = Панельдегі апплетте үлкейткішті қосу/сөндіру + .movement = Үлкейтілген көріністің жылжуы + .continuous = Курсормен бірге үздіксіз + .onedge = Курсор жиекке жеткенде + .centered = Курсорды ортада ұстау үшін +color-filter = Түс фильтрінің түрі + .unknown = Белгісіз фильтр белсенді + .greyscale = Сұр түстер шкаласы + .deuteranopia = Жасыл/Қызыл (жасыл түсті нашар қабылдау, дейтеранопия) + .protanopia = Қызыл/Жасыл (қызыл түсті нашар қабылдау, протанопия) + .tritanopia = Көк/Сары (көк түсті нашар қабылдау, тританопия) +desktop = Жұмыс үстелі +wallpaper = Тұсқағаз + .change = Суретті келесі уақыт сайын ауыстыру + .fit = Тұсқағазды сыйдыру + .folder-dialog = Тұсқағаз бумасын таңдаңыз + .image-dialog = Тұсқағаз суретін таңдаңыз + .plural = Тұсқағаздар + .same = Барлық экрандарда бірдей тұсқағаз + .slide = Слайдшоу +add-color = Түс қосу +add-image = Сурет қосу +all-displays = Барлық дисплейлер +colors = Түстер +dialog-add = Қосу +fill = Толтыру +fit-to-screen = Экранға сыйдыру +open-new-folder = Жаңа буманы ашу +recent-folders = Соңғы бумалар +x-minutes = + { $number } { $number -> + [one] минут + *[other] минут + } +x-hours = + { $number } { $number -> + [one] сағат + *[other] сағат + } +never = Ешқашан +appearance = Сыртқы түрі +accent-color = Акцент түсі +app-background = Терезе фоны +auto = Автоматты түрде +close = Жабу +color-picker = Түс таңдаушы +copied-to-clipboard = Алмасу буферіне көшірілді +copy-to-clipboard = Алмасу буферіне көшіру +dark = Қараңғы +export = Экспорттау +hex = Он алтылық +import = Импорттау +light = Жарық +mode-and-colors = Режим мен түстер +recent-colors = Соңғы түстер +reset-to-default = Әдепкі күйге қайтару +rgb = RGB +window-hint-accent = Белсенді терезенің тұспал түсі +window-hint-accent-toggle = Теманың акцентті түсін белсенді терезенің тұспалы ретінде қолдану +auto-switch = Жарық және қараңғы режимдер арасында автоматты түрде ауысу + .sunrise = Күн шыққанда жарық режиміне ауысады + .sunset = Күн батқанда қараңғы режиміне ауысады + .next-sunrise = Келесі күн шыққанда жарық режиміне ауысады + .next-sunset = Келесі күн батқанда қараңғы режиміне ауысады +shadows-floating = Қалқымалы терезелер + .clip = Жүйелік бұрыштарға сәйкестендіру және көлеңкелерді іске асыру +shadows-tiling = Плиткалы терезелер + .clip = Жүйелік бұрыштарға сәйкестендіру + .shadow = Көлеңкелерді іске асыру +container-background = Контейнер фоны + .desc-detail = Контейнердің фон түсі навигацияның бүйірлік панелі, бүйірлік тартпа, сұхбат терезелері және ұқсас виджеттер үшін қолданылады. Әдепкі бойынша, контейнердің фон түсі терезе фонынан автоматты түрде алынады. + .reset = Авто күйіне қайтару + .desc = Навигацияның бүйірлік панелі, бүйірлік тартпа, сұхбат терезелері және ұқсас виджеттер үшін қолданылады +control-tint = Басқару компоненттерінің реңкі + .desc = Стандартты батырмалардың фоны, іздеу өрістері, мәтін енгізу өрістері және ұқсас компоненттер үшін қолданылады +frosted = Жүйелік интерфейстегі күңгірт шыны эффектісі + .desc = Панель, док, апплеттер, іске қосқыш және қолданбалар кітапханасына фонның бұлыңғырлығын іске асырады +enable-export = Ағымдағы тақырыпты GNOME қолданбаларына іске асыру + .desc = Барлық интерфейс жиынтықтары автоматты түрде ауысуды қолдамайды. COSMIC-ке жатпайтын қолданбаларды тақырып өзгергеннен кейін қайта іске қосу қажет болуы мүмкін. +icon-theme = Таңбашалар тақырыбы + .desc = Қолданбаларға басқа таңбашалар жиынтығын іске асырады +text-tint = Интерфейс мәтінінің реңкі + .desc = Әртүрлі беттерде жеткілікті контрасты бар интерфейс мәтінінің түстерін алу үшін қолданылады +style = Стиль + .round = Дөңгелек + .slightly-round = Сәл дөңгелектелген + .square = Шаршы +interface-density = Интерфейс тығыздығы + .comfortable = Ыңғайлы + .compact = Ықшам + .spacious = Кең +window-management-appearance = Терезелерді басқару + .active-hint = Белсенді терезенің тұспал өлшемі + .gaps = Плиткалы терезелердің айналасындағы аралықтар +experimental-settings = Эксперименттік баптаулар +icons-and-toolkit = Таңбашалар мен интерфейс жиынтығының темалары +interface-font = Жүйелік қаріп +monospace-font = Ені біркелкі қаріп +shadow-and-corners = Терезе көлеңкесі мен бұрыштары +notifications = Хабарландырулар +panel = Панель +add = Қосу +add-applet = Апплет қосу +all = Барлығы +applets = Апплеттер +center-segment = Ортаңғы сегмент +place-here = Апплеттерді осында орналастырыңыз +end-segment = Соңғы сегмент +large = Үлкен +no-applets-found = Апплеттер табылмады... +panel-bottom = Төменде +panel-left = Сол жақта +panel-right = Оң жақта +panel-top = Жоғарыда +search-applets = Апплеттерді іздеу... +small = Кіші +start-segment = Бастапқы сегмент +panel-appearance = Көрініс + .match = Жұмыс үстеліне сәйкестендіру + .light = Жарық + .dark = Күңгірт +panel-behavior-and-position = Мінез-құлқы және орындары + .autohide = Панельді автоматты түрде жасыру + .dock-autohide = Докты автоматты түрде жасыру + .position = Экрандағы орны + .display = Дисплейде көрсету +panel-style = Стиль + .anchor-gap = Панель мен экран шеттерінің арасындағы аралық + .dock-anchor-gap = Док пен экран шеттерінің арасындағы аралық + .extend = Панельді экран шеттеріне дейін созу + .dock-extend = Докты экран шеттеріне дейін созу + .appearance = Көрініс + .size = Өлшемі + .background-opacity = Фон мөлдірлігі +panel-applets = Конфигурация + .dock-desc = Док апплеттерін баптау + .desc = Панель апплеттерін баптау +panel-missing = Панель конфигурациясы табылмады + .desc = Арнайы баптауды қолдану немесе бүліну салдарынан панельдің баптау файлы табылмады. + .fix = Әдепкі күйге қайтару +dock = Док +window-management = Терезелерді басқару +super-key = Super пернесінің әрекеті + .launcher = Іске қосқышты ашу + .workspaces = Жұмыс орындарын ашу + .applications = Қолданбаларды ашу + .disable = Сөндіру +edge-gravity = Қалқымалы терезелер жақын маңдағы шеттерге тартылады +window-controls = Терезе басқару элементтері + .maximize = Жазық қылу батырмасын көрсету + .minimize = Қайыру батырмасын көрсету + .active-window-hint = Белсенді терезе нұсқауын көрсету +focus-navigation = Фокус навигациясы + .focus-follows-cursor = Фокус курсорға ілеседі + .focus-follows-cursor-delay = Фокустың курсорға ілесу кідірісі (мс) + .cursor-follows-focus = Курсор фокусқа ілеседі +workspaces = Жұмыс орындары +workspaces-behavior = Жұмыс орындарының мінез-құлқы + .dynamic = Динамикалық жұмыс орындары + .dynamic-desc = Бос жұмыс орындарын автоматты түрде өшіреді. + .fixed = Жұмыс орындарының бекітілген саны + .fixed-desc = Шолу кезінде жұмыс орындарын қосу немесе өшіру. +workspaces-multi-behavior = Көпмониторлы режимнің мінез-құлқы + .span = Жұмыс орындары дисплейлерге жайылады + .separate = Дисплейлерде жеке жұмыс орындары болады +workspaces-overview-thumbnails = Жұмыс орындарына шолу нобайлары + .show-number = Жұмыс орнының нөмірін көрсету + .show-name = Жұмыс орнының атын көрсету +workspaces-orientation = Жұмыс орындарының бағыты + .vertical = Вертикалды + .horizontal = Горизонталды +hot-corner = Белсенді бұрыш + .top-left-corner = Жұмыс орындары үшін жоғарғы сол жақ белсенді бұрышты іске қосу +-requires-restart = Қайта іске қосуды талап етеді +color = Түс + .depth = Түс тереңдігі + .profile = Түс профилі + .sidebar = Түс профильдері + .temperature = Түс температурасы +display = Экрандар + .arrangement = Экрандардың орналасуы + .arrangement-desc = Экрандардың орнын ауыстыру үшін оларды сүйреңіз + .enable = Экранды іске қосу + .external = { $size } { $output } сыртқы экран + .laptop = { $size } ноутбук экраны + .options = Экран опциялары + .refresh-rate = Жаңарту жиілігі + .resolution = Ажыратымдылығы + .scale = Масштаб + .additional-scale-options = Қосымша масштабтау опциялары +mirroring = Айналау + .id = Айналау { $id } + .dont = Айналамау + .mirror = { $display } айналау + .project = + { $display -> + [all] барлық дисплейлерге + *[other] { $display } дисплейіне + } көрсету + .project-count = + Басқа { $count } { $count -> + [1] дисплейге + *[other] дисплейлерге + } көрсетуде +night-light = Түнгі жарық + .auto = Автоматты (күн батқаннан күн шыққанға дейін) + .desc = Жылырақ түстер арқылы көк жарықты азайту +orientation = Бағыты + .standard = Стандартты + .rotate-90 = 90° бұру + .rotate-180 = 180° бұру + .rotate-270 = 270° бұру +vrr = Өзгермелі жаңарту жиілігі + .enabled = Іске қосылған + .force = Әрқашан + .auto = Автоматты + .disabled = Сөндірілген +scheduling = Кесте + .manual = Қолмен орнатылған кесте +dialog = Сұхбат терезесі + .title = Дисплейдің осы баптауларын сақтау керек пе? + .keep-changes = Өзгерістерді сақтау + .change-prompt = Баптаулардағы өзгерістер { $time } секундтан кейін автоматты түрде кері қайтарылады. + .revert-settings = Баптауларды кері қайтару +sound = Дыбыс +sound-output = Шығыс + .volume = Шығыс дыбыс деңгейі + .device = Шығыс құрылғысы + .level = Шығыс деңгейі + .config = Конфигурация + .balance = Баланс + .left = Сол жақ + .right = Оң жақ +sound-input = Кіріс + .volume = Кіріс дыбыс деңгейі + .device = Кіріс құрылғысы + .level = Кіріс деңгейі +amplification = Күшейту + .desc = Дыбыс деңгейін 150%-ға дейін көтеруге мүмкіндік береді +sound-alerts = Ескертулер + .volume = Ескертулердің дыбыс деңгейі + .sound = Ескертулер дыбысы +sound-applications = Қолданбалар + .desc = Қолданбалардың дыбыс деңгейі мен баптаулары +sound-device-port-unplugged = Ажыратылған +sound-hd-audio = HD аудио +sound-usb-audio = USB аудио +sound-device-profiles = Құрылғы профильдері +power = Қуат және батарея +battery = Батарея + .minute = + { $value } { $value -> + [one] минут + *[other] минут + } + .hour = + { $value } { $value -> + [one] сағат + *[other] сағат + } + .day = + { $value } { $value -> + [one] күн + *[other] күн + } + .less-than-minute = Бір минуттан аз + .and = және + .remaining-time = + { $time } { $action -> + [full] толық толғанға + *[other] таусылғанға + } дейін +connected-devices = Қосылған құрылғылар + .unknown = Белгісіз құрылғы +power-mode = Қуат режимі + .battery = Батареяның жұмыс уақытын ұзарту + .battery-desc = Қуат тұтынуды азайту және дыбыссыз жұмыс істеу + .balanced = Теңгерілген + .balanced-desc = Тыныш жұмыс және қалыпты қуат тұтыну + .performance = Жоғары өнімділік + .performance-desc = Ең жоғары өнімділік пен қуат тұтыну + .no-backend = Бэкенд табылмады. system76-power немесе power-profiles-daemon бағдарламасын орнатыңыз. +power-saving = Қуатты үнемдеу опциялары + .turn-off-screen-after = Экранды келесі уақыттан кейін сөндіру + .auto-suspend = Автоматты түрде күту режиміне өту + .auto-suspend-ac = Желіге қосулы кезде автоматты түрде күту режиміне өту + .auto-suspend-battery = Батареядан жұмыс істегенде автоматты түрде күту режиміне өту +acceleration-desc = Жылдамдыққа байланысты бақылау сезімталдығын автоматты түрде реттейді +disable-while-typing = Теру кезінде сөндіру +input-devices = Енгізу құрылғылары +primary-button = Негізгі батырма + .desc = Физикалық батырмалардың ретін орнатады + .left = Сол жақ + .right = Оң жақ +scrolling = Айналдыру + .two-finger = Екі саусақпен айналдыру + .edge = Бір саусақпен жиек бойымен айналдыру + .speed = Айналдыру жылдамдығы + .natural = Табиғи айналдыру + .natural-desc = Көріністің орнына мазмұнды айналдыру +slow = Баяу +fast = Жылдам +short = Қысқа +long = Ұзақ +keyboard = Пернетақта +keyboard-sources = Енгізу көздері + .desc = Енгізу көздерін Super+Space пернелер жарлығы арқылы ауыстыруға болады. Бұл баптауды пернетақта жарлықтарының баптауларында өзгертуге болады. + .move-up = Жоғары жылжыту + .move-down = Төмен жылжыту + .settings = Баптаулар + .view-layout = Пернетақта жаймасын қарау + .remove = Өшіру + .add = Енгізу көзін қосу +keyboard-special-char = Арнайы таңбаларды енгізу + .alternate = Балама таңбалар пернесі + .compose = Compose пернесі + .compose-desc = Compose пернесі таңбалардың алуан түрін енгізуге мүмкіндік береді. Оны пайдалану үшін, compose пернесін, содан кейін таңбалар тізбегін басыңыз. Мысалы, compose пернесінен кейін C және o басылса, © таңбасы енгізіледі, ал compose пернесінен кейін a және ‘ басылса, á таңбасы енгізіледі. + .caps = Caps Lock пернесі +keyboard-typing-assist = Теру + .repeat-rate = Қайталау жиілігі + .repeat-delay = Қайталау кідірісі +keyboard-numlock-boot = Numlock + .boot-state = Жүктелген кездегі күйі + .last-boot = Соңғы жүктелу + .on = Қосулы + .off = Сөндірулі + .set = Numlock-тың жүктелу кезіндегі күйін орнату +added = Қосылды +type-to-search = Іздеу үшін теріңіз... +show-extended-input-sources = Кеңейтілген енгізу көздерін көрсету +keyboard-shortcuts = Пернетақта жарлықтары + .desc = Жарлықтарды көру және теңшеу +add-another-keybinding = Басқа пернелер жарлығын қосу +cancel = Бас тарту +command = Команда +custom = Таңдауыңызша +debug = Жөндеу +disabled = Сөндірулі +input-source-switch = Пернетақта тілін енгізу көзін ауыстыру +migrate-workspace-prev = Жұмыс орнын алдыңғы шығысқа көшіру +migrate-workspace-next = Жұмыс орнын келесі шығысқа көшіру +migrate-workspace = + Жұмыс орнын шығысқа көшіру: { $direction -> + *[down] төмен + [left] солға + [right] оңға + [up] жоғары + } +navigate = Навигация +replace = Алмастыру +shortcut-name = Жарлық атауы +system-controls = Жүйені басқару элементтері +terminate = Аяқтау +toggle-stacking = Терезелерді жинақтауды ауыстыру +type-key-combination = Пернелер жарлығын теріңіз +custom-shortcuts = Арнайы жарлықтар + .add = Жарлық қосу + .context = Арнайы жарлық қосу + .none = Арнайы жарлықтар жоқ +modified = { $count } өзгертілді +nav-shortcuts = Навигация + .prev-output = Алдыңғы шығысқа фокустау + .next-output = Келесі шығысқа фокустау + .last-workspace = Соңғы жұмыс орнына фокустау + .prev-workspace = Алдыңғы жұмыс орнына фокустау + .next-workspace = Келесі жұмыс орнына фокустау + .focus = + Терезеге фокустау: { $direction -> + *[down] төменгі + [in] ішкі + [left] сол жақтағы + [out] сыртқы + [right] оң жақтағы + [up] жоғарыдағы + } + .output = + Шығысқа ауысу: { $direction -> + *[down] төменгі + [left] сол жақтағы + [right] оң жақтағы + [up] жоғарғы + } + .workspace = Жұмыс орнына ауысу: { $num } +manage-windows = Терезелерді басқару + .close = Терезені жабу + .maximize = Терезені жаймалау + .fullscreen = Терезені толық экранға шығару + .minimize = Терезені жию + .resize-inwards = Терезе өлшемін ішке қарай өзгерту + .resize-outwards = Терезе өлшемін сыртқа қарай өзгерту + .toggle-sticky = Жабысқақ терезе режимін ауыстыру +move-windows = Терезелерді жылжыту + .direction = + Терезені { $direction -> + *[down] төмен + [left] солға + [right] оңға + [up] жоғары + } жылжыту + .display = + Терезені бір мониторға { $direction -> + *[down] төмен + [left] солға + [right] оңға + [up] жоғары + } жылжыту + .workspace = + Терезені бір жұмыс орнына { $direction -> + *[below] төмен + [left] солға + [right] оңға + [above] жоғары + } жылжыту + .workspace-num = Терезені { $num } жұмыс орнына жылжыту + .prev-workspace = Терезені алдыңғы жұмыс орнына жылжыту + .next-workspace = Терезені келесі жұмыс орнына жылжыту + .last-workspace = Терезені соңғы жұмыс орнына жылжыту + .next-display = Терезені келесі экранға жылжыту + .prev-display = Терезені алдыңғы экранға жылжыту + .send-to-prev-workspace = Терезені алдыңғы жұмыс орнына жіберу + .send-to-next-workspace = Терезені келесі жұмыс орнына жіберу +system-shortcut = Жүйе + .app-library = Қолданбалар кітапханасын ашу + .brightness-down = Экран жарықтығын азайту + .brightness-up = Экран жарықтығын арттыру + .display-toggle = Ішкі экранды ауыстырып қосу + .home-folder = Үй бумасын ашу + .keyboard-brightness-down = Пернетақта жарықтығын азайту + .keyboard-brightness-up = Пернетақта жарықтығын арттыру + .launcher = Launcher-ді ашу + .log-out = Шығу + .lock-screen = Экранды бұғаттау + .mute = Дыбысты өшіру + .mute-mic = Микрофон дыбысын өшіру + .play-pause = Ойнату/кідірту + .play-next = Келесі трек + .play-prev = Алдыңғы трек + .poweroff = Қуатты өшіру + .screenshot = Скриншот түсіру + .suspend = Күту режимі + .terminal = Терминалды ашу + .touchpad-toggle = Тачпадты ауыстырып қосу + .volume-lower = Дыбыс деңгейін азайту + .volume-raise = Дыбыс деңгейін арттыру + .web-browser = Веб-браузерді ашу + .window-switcher = Ашық терезелер арасында ауысу + .window-switcher-previous = Ашық терезелер арасында кері ретпен ауысу + .workspace-overview = Жұмыс орындары шолуын ашу +window-tiling = Терезелерді қатар орналастыру + .horizontal = Горизонталды бағытты орнату + .vertical = Вертикалды бағытты орнату + .swap-window = Терезелердің орнын ауыстыру + .toggle-tiling = Терезелерді қатар орналастыруды ауыстырып қосу + .toggle-stacking = Терезелерді жинақтауды ауыстырып қосу + .toggle-floating = Терезелердің еркін қозғалуын ауыстырып қосу + .toggle-orientation = Бағытты ауыстырып қосу +replace-shortcut-dialog = Жарлықты алмастыру керек пе? + .desc = { $shortcut } жарлығын { $name } қолдануда. Оны алмастырсаңыз, { $name } сөндіріледі. +zoom-in = Үлкейту +zoom-out = Кішірейту +mouse = Тышқан + .speed = Тышқан жылдамдығы + .acceleration = Тышқан үдеуін іске қосу +click-behavior = Шерту әрекеті + .click-finger = Екі саусақпен қосымша шерту және үш саусақпен ортаңғы шерту + .button-areas = Төменгі оң жақ бұрышта қосымша шерту және төменгі ортада ортаңғы шерту +pinch-to-zoom = Үлкейту үшін жақындату + .desc = Мазмұнды үлкейту үшін екі саусақты қолданыңыз (үлкейтуді қолдайтын қолданбалар үшін) +tap-to-click = Шерту үшін тигізу + .desc = Негізгі шерту үшін бір саусақпен, қосымша шерту үшін екі саусақпен және ортаңғы шерту үшін үш саусақпен тигізуді іске қосады +touchpad = Тачпад + .acceleration = Тачпад үдеуін іске қосу + .speed = Тачпад жылдамдығы +gestures = Қимылдар + .four-finger-down = Төрт саусақпен төмен қарай сырғыту + .four-finger-left = Төрт саусақпен солға қарай сырғыту + .four-finger-right = Төрт саусақпен оңға қарай сырғыту + .four-finger-up = Төрт саусақпен жоғары қарай сырғыту + .three-finger-any = Үш саусақпен кез келген бағытқа сырғыту +switch-workspaces = Жұмыс орындарын ауыстыру + .horizontal = Төрт саусақпен солға/оңға сырғыту + .vertical = Төрт саусақпен жоғары/төмен сырғыту +switch-between-windows = Терезелер арасында ауысу +open-application-library = Қолданбалар кітапханасын ашу +open-workspaces-view = Жұмыс орындары шолуын ашу +time = Уақыт және тіл +time-date = Күн және уақыт + .auto = Автоматты түрде орнату + .auto-ntp = Уақыт белдеуі орнатылған кезде күн және уақыт автоматты түрде жаңартылады +time-zone = Уақыт белдеуі + .auto = Автоматты уақыт белдеуі + .auto-info = Орналасқан жер қызметтері мен интернетке қол жеткізуді қажет етеді +time-format = Күн және уақыт пішімі + .twenty-four = 24 сағаттық уақыт + .show-seconds = Секундтарды көрсету + .first = Аптаның бірінші күні + .show-date = Уақыт апплетінде күнді көрсету + .friday = Жұма + .saturday = Сенбі + .sunday = Жексенбі + .monday = Дүйсенбі +time-region = Аймақ және тіл +formatting = Пішімдеу + .dates = Күндер + .time = Уақыт + .date-and-time = Күн және уақыт + .numbers = Сандар + .measurement = Өлшем бірліктері + .paper = Қағаз +preferred-languages = Таңдаулы тілдер + .desc = Тілдердің реті пайдаланушы интерфейсі үшін қай тіл қолданылатынын анықтайды. Өзгерістер келесі рет жүйеге кіргенде іске асады. +add-language = Тілді қосу + .context = Тілді қосу +install-additional-languages = Қосымша тілдерді орнату +region = Аймақ +applications = Қолданбалар +default-apps = Әдепкі қолданбалар + .web-browser = Веб-браузер + .file-manager = Файлдар менеджері + .mail-client = Пошта клиенті + .music = Музыка + .video = Видео + .photos = Фотосуреттер + .calendar = Күнтізбе + .terminal = Терминал + .other-associations = Басқа қауымдастықтар + .text-editor = Мәтіндік редактор + .not-installed = Орнатылмаған +startup-apps = Автоқосылатын қолданбалар + .add = Қолданбаны қосу + .user = Жүйеге кіргенде іске қосылатын қолданбалар + .none = Ешқандай автоқосылатын қолданба қосылмаған + .remove-dialog-title = { $name } өшіру керек пе? + .remove-dialog-description = Бұл автоқосылатын қолданбаны өшіру керек пе? + .add-startup-app = Автоқосылатын қолданбаны қосу +legacy-applications = X11 қолданбаларының үйлесімділігі +legacy-app-global-shortcuts = X11 қолданбаларындағы глобалды жарлықтар + .desc = Глобалды жарлықтар қолданбаларда орындалатын перне басу және тышқан батырмасы оқиғаларын «сөйлеу үшін басу» немесе «дыбысты өшіру үшін басу» сияқты функциялар үшін басқа қолданбалардың тануына мүмкіндік береді. Әдепкі бойынша, басқа қолданбалар құпия ақпараты бар пернетақта мен тышқан оқиғаларын бақылай алмауы үшін X11 қолданбаларында глобалды жарлықтар сөндірілген. + .none = Пернелер жоқ + .modifiers = Түрлендіргіштер (Super, Shift, Control, Alt) + .combination = Super, Control немесе Alt түрлендіргіштері басылып тұрғандағы барлық пернелер + .all = Барлық пернелер + .mouse = X11 қолданбаларындағы тышқан батырмасының оқиғалары +legacy-app-scaling = X11 терезелер жүйесі қолданбаларының масштабталуы + .scaled-gaming = Ойындар мен толық экранды қолданбалар үшін оңтайландыру + .gaming-description = X11 қолданбалары Wayland қолданбаларымен салыстырғанда сәл үлкенірек/кішірек көрінуі мүмкін + .scaled-applications = Қолданбалар үшін оңтайландыру + .applications-description = Ойындар мен толық экранды X11 қолданбалары экран ажыратымдылығына сәйкес келмеуі мүмкін + .scaled-compatibility = Максималды үйлесімділік режимі + .compatibility-description = X11 қолданбалары HiDPI экрандарында бұлдыр болып көрінуі мүмкін + .preferred-display = Ойындар мен толық экранды X11 қолданбалары үшін таңдаулы экран + .no-display = Жоқ +system = Жүйе және тіркелгілер +about = Осы туралы +about-device = Құрылғы атауы + .desc = Бұл атау басқа желілік немесе Bluetooth құрылғыларына көрінеді +about-hardware = Аппараттық қамтама + .model = Аппараттық модель + .memory = Жад + .processor = Процессор + .graphics = Графика + .disk-capacity = Диск сыйымдылығы +about-os = Операциялық жүйе + .os = Операциялық жүйе + .os-architecture = Операциялық жүйе архитектурасы + .kernel = Ядро нұсқасы + .desktop-environment = Жұмыс үстелі ортасы + .windowing-system = Терезелер жүйесі +about-related = Қатысты параметрлер + .support = Қолдау алу +firmware = Микробағдарлама +users = Пайдаланушылар + .admin = Әкімші + .standard = Стандартты + .profile-add = Профиль суретін таңдау +administrator = Әкімші + .desc = Әкімшілер барлық пайдаланушылар үшін параметрлерді өзгерте алады, басқа пайдаланушыларды қоса алады және өшіре алады +add-user = Пайдаланушыны қосу +change-password = Парольді өзгерту +remove-user = Пайдаланушыны өшіру +full-name = Толық аты-жөні +invalid-username = Пайдаланушы аты жарамсыз +password-mismatch = Пароль мен оны растау сәйкес келуі керек +save = Сақтау +workspaces-overview = Жұмыс орындарын шолу + .action-on-typing = Терк кезіндегі әрекет + .none = Ешнәрсе + .launcher = Жөнелткішті ашу + .applications = Қолданбаларды ашу +xdg-entry-touchpad = Тачпад +xdg-entry-wired = Сымды +xdg-entry-startup-apps-comment = Жүйеге кіргенде іске қосылатын қолданбаларды баптау +xdg-entry-region-language = Аймақ және тіл +xdg-entry-mouse-keywords = COSMIC;Тышқан;Үдеу;Айналдыру; +xdg-entry-bluetooth-comment = Bluetooth құрылғыларын басқару +xdg-entry-notifications-keywords = COSMIC;Хабарландыру;Құлыптау; +xdg-entry-startup-apps-keywords = COSMIC;Автоқосылу;Қолданба; +xdg-entry-default-apps-comment = Әдепкі веб-браузер, пошта клиенті, файлдық браузер және басқа да қолданбалар +xdg-entry-keyboard-comment = Енгізу көздері, ауыстыру, арнайы таңбаларды енгізу, жарлықтар +xdg-entry-wired-keywords = COSMIC;Сымды;LAN;Желі;Қосылым; +xdg-entry-power = Қуат және батарея +xdg-entry-appearance-keywords = COSMIC;Акцент;Түс;Таңбаша;Қаріп;Тема +xdg-entry-mouse = Тышқан +xdg-entry-dock-keywords = COSMIC;Док;Панель;Апплет +xdg-entry-mouse-comment = Тышқан жылдамдығы, үдеуі және табиғи айналдыру +xdg-entry-system = Жүйе және тіркелгілер +xdg-entry-panel-keywords = COSMIC;Панель;Апплет +xdg-entry-window-management = Терезелерді басқару +xdg-entry-a11y = Арнайы мүмкіндіктер +xdg-entry-time-language-comment = Жүйелік күн, уақыт, аймақ және тілді басқару +xdg-entry-desktop-keywords = COSMIC;Жұмыс үстелі; +xdg-entry-x11-applications-keywords = COSMIC;X11;Қолданба;Ойын;Үйлесімділік; +xdg-entry-displays-comment = Экран конфигурациясының баптауларын басқару +xdg-entry-touchpad-keywords = COSMIC;Тачпад;Қимыл; +xdg-entry-time-language = Уақыт және тіл +xdg-entry-users = Пайдаланушылар +xdg-entry-system-keywords = COSMIC;Жүйе;Ақпарат;Тіркелгілер;Микробағдарлама; +xdg-entry-default-apps = Әдепкі қолданбалар +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Желі;Қосылым; +xdg-entry-applications-comment = Әдепкі қолданбалар, автоқосылатын қолданбалар және X11 қолданбаларының үйлесімділік баптаулары +xdg-entry-about-keywords = COSMIC;Осы туралы +xdg-entry-panel = Панель +xdg-entry-notifications = Хабарландырулар +xdg-entry-a11y-keywords = COSMIC;Арнайы мүмкіндіктер;A11y;Экран;Диктор;Лупа;Контраст;Түс; +xdg-entry-wireless-comment = Wi-Fi қосылымдары және қосылымдар профильдері +xdg-entry-desktop = Жұмыс үстелі +xdg-entry-date-time-keywords = COSMIC;Уақыт;Белдеу; +xdg-entry-desktop-comment = Тұсқағаз, сыртқы түрі, панель, док, терезелерді басқару және жұмыс орындарының баптаулары +xdg-entry-wallpaper = Тұсқағаз +xdg-entry-keyboard = Пернетақта +xdg-entry-a11y-comment = Экрандық диктор, лупа, жоғары контраст және түс сүзгілері +xdg-entry-displays = Экрандар +xdg-entry-network = Желі және сымсыз байланыс +xdg-entry-date-time = Күн және уақыт +xdg-entry-users-comment = Аутентификация және пайдаланушы тіркелгілері +xdg-entry-input-comment = Пернетақта мен тышқан баптаулары +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-dock-comment = Қолданбалар мен апплеттерге арналған қосымша панель +xdg-entry-network-keywords = COSMIC;Желі;Сымсыз;WiFi;VPN; +xdg-entry-wallpaper-comment = Тұсқағаз суреттері, түстері және слайдшоу опциялары +xdg-entry-dock = Док +xdg-entry-startup-apps = Автоқосылатын қолданбалар +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Жұмыс орны;Бағдар;Шолу;Монитор; +xdg-entry-system-comment = Жүйе туралы ақпарат, тіркелгілер және микробағдарлама жаңартулары +xdg-entry-x11-applications-comment = X11 терезе жүйесінің қолданбаларын масштабтау, негізгі экран және глобалды жарлықтар +xdg-entry-region-language-comment = Күндерді, уақытты және сандарды аймағыңызға сәйкес пішімдеу +xdg-entry-wallpaper-keywords = COSMIC;Тұсқағаз;Фон;Слайдшоу; +xdg-entry-users-keywords = COSMIC;Пайдаланушы;Тіркелгі; +xdg-entry-about-comment = Құрылғы аты, жабдық туралы ақпарат, операциялық жүйенің әдепкі параметрлері +xdg-entry-vpn-keywords = COSMIC;VPN;Желі;Байланыс;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = Акцентті түстер және темалар +xdg-entry-time-language-keywords = COSMIC;Жүйе;Уақыт;Күн;Аймақ;Тіл; +xdg-entry-input-keywords = COSMIC;Енгізу;Пернетақта;Тышқан;Тышқандар; +xdg-entry-comment = COSMIC жұмыс үстеліне арналған баптаулар қолданбасы +xdg-entry-notifications-comment = "Мазаламаңыз" режимі, экранды құлыптау хабарландырулары және әр қолданбаға арналған баптаулар +xdg-entry-applications = Қолданбалар +xdg-entry-sound-keywords = COSMIC;Дыбыс;Аудио;Ескерту;Pipewire; +xdg-entry-power-keywords = COSMIC;Қуат;Батарея +xdg-entry-default-apps-keywords = COSMIC;Әдепкі;Қолданба +xdg-entry-keywords = COSMIC;Баптаулар; +xdg-entry-region-language-keywords = COSMIC;Аймақ;Тіл;Күн;Пішім;Уақыт;Локаль;Локализация; +xdg-entry-about = Осы туралы +xdg-entry-input = Енгізу құрылғылары +xdg-entry-applications-keywords = COSMIC;Әдепкі;Қолданба;Автоқосылу;X11;Үйлесімділік +xdg-entry-sound-comment = Құрылғылар, ескертулер және қолданбаларға арналған аудио баптаулары +xdg-entry-touchpad-comment = Тачпад жылдамдығы, шерту опциялары және қимылдар +xdg-entry-keyboard-keywords = COSMIC;Пернетақта;Енгізу;Көз;Жарлықтар; +xdg-entry-vpn-comment = VPN байланыстары және байланыс профильдері +xdg-entry-appearance = Сыртқы түрі +xdg-entry-window-management-keywords = COSMIC;Терезе;Басқару;Қатар қою;Super;Перне; +xdg-entry-workspaces-comment = Жұмыс орнының бағдары, шолу және бірнеше монитордағы әрекеті +xdg-entry-network-comment = Желілік байланыстарды басқару +xdg-entry-panel-comment = Мәзірлер мен апплеттерге арналған негізгі жүйелік панель +xdg-entry-sound = Дыбыс +xdg-entry-power-comment = Қуат режимдері мен қуатты үнемдеу опциялары +xdg-entry-displays-keywords = COSMIC;Экран; +xdg-entry-workspaces = Жұмыс орындары +xdg-entry-date-time-comment = Уақыт белдеуі, сағатты автоматты баптау және уақыт пішімі +xdg-entry-x11-applications = X11 қолданбаларының үйлесімділігі +xdg-entry-window-management-comment = Super пернесінің әрекеті, терезелерді басқару опциялары және терезелерді қатар қоюдың қосымша опциялары +xdg-entry-wired-comment = Сымды қосылымдар және қосылымдар профильдері +no-search-results = Сіздің іздеуіңізге ешбір желі сәйкес келмейді. diff --git a/i18n/kn/cosmic_settings.ftl b/i18n/kn/cosmic_settings.ftl index b1fdbd3..248c9ad 100644 --- a/i18n/kn/cosmic_settings.ftl +++ b/i18n/kn/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] ತಂತಿ - [wifi] ವೈ-ಫೈ - [vpn] ವಿ.ಪಿ.ಎನ್ - *[other] ಅಜ್ಞಾತ - } ಸಂಪರ್ಕಗಳು ಮತ್ತು ಸಂಪರ್ಕ ಪ್ರೊಫೈಲ್‌ಗಳು. add-network = ನೆಟ್ವರ್ಕ್ ಸೇರಿಸಿ .profile = ಪ್ರೊಫೈಲ್ ಸೇರಿಸಿ add-vpn = ವಿ.ಪಿ.ಎನ್ ಸೇರಿಸಿ diff --git a/i18n/ko/cosmic_settings.ftl b/i18n/ko/cosmic_settings.ftl index e69de29..77d04a2 100644 --- a/i18n/ko/cosmic_settings.ftl +++ b/i18n/ko/cosmic_settings.ftl @@ -0,0 +1,766 @@ +app = COSMIC 설정 +desktop = 데스크톱 +dbus-connection-error = DBus 연결에 실패했습니다 +time-region = 지역 & 언어 +panel-left = 좌측 +connect = 연결 +super-key = Super 키 동작 + .launcher = 런처 열기 + .workspaces = 작업 공간 열기 + .applications = 앱 열기 + .disable = 비활성화 +x-minutes = { $number }분 +vrr = 가변 주사율 + .enabled = 활성화 + .force = 항상 + .auto = 자동 + .disabled = 비활성화 +window-hint-accent = 활성 창 강조 색상 +power = 전원 & 배터리 +fit-to-screen = 화면 채우기 +control-tint = 컨트롤 컴포넌트 색조 + .desc = 표준 버튼, 검색 입력란, 텍스트 입력란 및 유사한 컴포넌트의 배경에 사용됩니다 +time-date = 날짜 및 시간 + .auto = 자동으로 설정 + .auto-ntp = 시간대가 설정되면 날짜 및 시간이 자동으로 업데이트됩니다 +save = 저장 +toggle-stacking = 창 스태킹 전환 +panel-top = 상단 +no-applets-found = 애플릿을 찾을 수 없음... +region = 지역 +zoom-in = 확대 +place-here = 여기에 애플릿 배치 +-requires-restart = 재시작 필요 +workspaces-orientation = 작업 공간 방향 + .vertical = 세로 + .horizontal = 가로 +acceleration-desc = 속도에 따라 트래킹 감도를 자동으로 조절합니다 +all-displays = 모든 화면 +scheduling = 일정 + .manual = 수동 예약 +frosted = 시스템 인터페이스의 반투명 유리 효과 + .desc = 패널, 독, 애플릿, 런처 및 앱 라이브러리에 배경 흐림 효과를 적용합니다 +password = 암호 +about-hardware = 하드웨어 + .model = 하드웨어 모델 + .memory = 메모리 + .processor = 프로세서 + .graphics = 그래픽 + .disk-capacity = 디스크 용량 +short = 짧게 +vpn = VPN + .connections = VPN 연결 + .error = VPN 설정 추가 실패 + .remove = 연결 프로필 제거 + .select-file = VPN 설정 파일 선택 +power-mode = 전원 모드 + .battery = 배터리 절약 + .battery-desc = 낮은 전력 소비로 소음 없이 작동합니다 + .balanced = 균형 잡힘 + .balanced-desc = 적절한 전력 소비와 성능을 유지합니다 + .performance = 고성능 + .performance-desc = 최대로 전력을 소비하여 최고의 성능을 냅니다 + .no-backend = 백엔드를 찾을 수 없습니다. system76-power 또는 power-profiles-daemon을 설치하세요. +wired = 유선 + .adapter = 유선 어댑터 { $id } + .connections = 유선 연결 + .devices = 유선 장치 + .remove = 연결 프로필 제거 +bluetooth-available = 주변 장치 +cable-unplugged = 케이블 분리됨 +color-picker = 색상 추출기 +interface-font = 시스템 글꼴 +forget-dialog = 이 Wi-Fi 네트워크를 지우시겠습니까? + .description = 나중에 이 Wi-Fi 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다. +remove = 제거 +default = 기본 +zoom-out = 축소 +hot-corner = 핫 코너 + .top-left-corner = 왼쪽 상단 핫 코너를 작업 공간용으로 사용 +keyboard-typing-assist = 입력 + .repeat-rate = 반복 주기 + .repeat-delay = 반복 지연 +edge-gravity = 플로팅 창이 인접한 가장자리에 붙음 +bluetooth = 블루투스 + .status = 블루투스 설정이 열려있는 동안 시스템이 { $aliases }(으)로 표시됩니다. + .connected = 연결됨 + .connecting = 연결 중 + .disconnecting = 연결 해제 중 + .connect = 연결 + .disconnect = 연결 해제 + .forget = 지우기 + .dbus-error = D-Bus 통신 중 오류가 발생했습니다: { $why } + .disabled = 블루투스 서비스가 비활성화 되었습니다. + .inactive = 블루투스 서비스가 시작되지 않았습니다. + .unknown = 블루투스 서비스를 시작할 수 없습니다. BlueZ가 설치됐나요? +amplification = 증폭 + .desc = 음량을 150%까지 올릴 수 있게 합니다. +recent-colors = 최근 색상 +about-os = 운영 체제 + .os = 운영 체제 + .os-architecture = 운영 체제 아키텍처 + .kernel = 커널 버전 + .desktop-environment = 데스크톱 환경 + .windowing-system = 창 시스템 +panel-behavior-and-position = 동작 및 위치 + .autohide = 자동으로 패널 숨기기 + .dock-autohide = 자동으로 독 숨기기 + .position = 화면 상 위치 + .display = 화면에 표시 +add-language = 언어 추가 + .context = 언어 추가 +password-mismatch = 암호가 일치하지 않습니다 +accessibility = 접근성 + .vision = 시각 + .on = 켜짐 + .off = 꺼짐 + .unavailable = 사용 불가 + .screen-reader = 스크린 리더 + .high-contrast = 고대비 + .invert-colors = 색상 반전 + .color-filters = 색상 필터 +firmware = 펌웨어 +container-background = 컨테이너 배경 + .desc-detail = 컨테이너 배경색은 탐색 사이드바, 사이드 드로어, 대화 상자 및 유사한 위젯에 사용됩니다. 기본적으로 컨테이너 배경색은 창 배경색에서 자동으로 파생됩니다. + .reset = 자동으로 재설정 + .desc = 탐색 사이드바, 사이드 드로어, 대화 상자 및 유사한 위젯에 사용됩니다 +primary-button = 주 버튼 + .desc = 물리적 버튼의 순서 설정 + .left = 왼쪽 + .right = 오른쪽 +sound-alerts = 알림 + .volume = 알림 음량 + .sound = 알림 소리 +icon-theme = 아이콘 테마 + .desc = 앱에 다른 아이콘 모음 적용 +import = 가져오기 +keyboard-shortcuts = 단축키 + .desc = 단축키 사용자 정의 및 보기 +switch-between-windows = 창 간 전환 +text-tint = 인터페이스 텍스트 색조 + .desc = 다양한 배경 위에서 충분한 대비를 확보할 수 있는 인터페이스 텍스트 색상을 생성하는 데 사용됩니다 +online-accounts = 온라인 계정 + .desc = 계정, IMAP 및 SMTP, 기업용 로그인 추가 +open-workspaces-view = 작업 공간 개요 열기 +all = 모두 +remove-user = 사용자 제거 +unknown = 알 수 없음 +sound-input = 입력 + .volume = 입력 음량 + .device = 입력 장치 + .level = 입력 수준 +add-another-keybinding = 다른 키 바인딩 추가 +copy-to-clipboard = 클립보드에 복사 +monospace-font = 고정 폭 글꼴 +experimental-settings = 실험적 설정 +recent-folders = 최근 폴더 +color-filter = 색상 필터 유형 + .unknown = 알 수 없는 필터 활성화됨 + .greyscale = 회색조 + .deuteranopia = 녹색/빨간색 (녹색 색약, 제2색각 이상) + .protanopia = 빨간색/녹색 (적색 색약, 제1색각 이상) + .tritanopia = 파란색/노란색 (청색 색약, 제3색각 이상) +migrate-workspace = + 작업 공간을 { $direction -> + *[down] 아래쪽 + [left] 왼쪽 + [right] 오른쪽 + [up] 위쪽 + } 디스플레이로 이동 +connecting = 연결 중… +battery = 배터리 + .minute = { $value }분 + .hour = { $value }시간 + .day = { $value }일 + .less-than-minute = 1분 미만 + .and = 및 + .remaining-time = + { $action -> + [full] 완충까지 + *[other] 방전까지 + } + { $time } +search-applets = 애플릿 검색... +export = 내보내기 +window-management = 창 관리 +pinch-to-zoom = 핀치하여 확대/축소 + .desc = 확대/축소를 지원하는 앱에서 두 손가락을 사용하여 콘텐츠를 확대하거나 축소합니다 +wifi = Wi-Fi + .adapter = Wi-Fi 어댑터 { $id } + .forget = 해당 네트워크 지우기 +x-hours = { $number }시간 +added = 추가됨 +input-source-switch = 키보드 언어 입력 소스 전환 +focus-navigation = 포커스 탐색 + .focus-follows-cursor = 포커스가 커서를 따름 + .focus-follows-cursor-delay = 포커스가 커서를 따를 때의 지연 시간(ms) + .cursor-follows-focus = 커서가 포커스를 따름 +full-name = 성명 +app-background = 창 배경 +panel-right = 우측 +appearance = 외관 +mouse = 마우스 + .speed = 마우스 속도 + .acceleration = 마우스 가속 활성화 +dock = 독 +keyboard-sources = 입력 소스 + .desc = Super+Space 키 조합을 사용하여 입력 소스를 전환할 수 있습니다. 이는 키보드 단축키 설정에서 사용자 지정할 수 있습니다. + .move-up = 위로 이동 + .move-down = 아래로 이동 + .settings = 설정 + .view-layout = 키보드 레이아웃 보기 + .remove = 제거 + .add = 입력 소스 추가 +nav-shortcuts = 탐색 + .prev-output = 이전 디스플레이로 포커스 이동 + .next-output = 다음 디스플레이로 포커스 이동 + .last-workspace = 마지막 작업 공간으로 포커스 이동 + .prev-workspace = 이전 작업 공간으로 포커스 이동 + .next-workspace = 다음 작업 공간으로 포커스 이동 + .focus = + { $direction -> + *[down] 아래쪽 + [in] 안쪽 + [left] 왼쪽 + [out] 바깥쪽 + [right] 오른쪽 + [up] 위쪽 + } 창으로 포커스 이동 + .output = + { $direction -> + *[down] 아래쪽 + [left] 왼쪽 + [right] 오른쪽 + [up] 위쪽 + } 디스플레이로 전환 + .workspace = 작업 공간 { $num }(으)로 전환 +hearing = 청각 + .mono = 스테레오 오디오를 모노로 재생 +preferred-languages = 선호하는 언어 + .desc = 언어 순서에 따라 사용자 인터페이스에 표시될 언어가 결정됩니다. 변경 사항은 다음 로그인 후에 적용됩니다. +display = 디스플레이 + .arrangement = 디스플레이 배치 + .arrangement-desc = 디스플레이를 드래그하여 다시 배치하세요 + .enable = 디스플레이 사용 + .external = { $size } { $output } 외부 디스플레이 + .laptop = { $size } 노트북 디스플레이 + .options = 디스플레이 옵션 + .refresh-rate = 주사율 + .resolution = 해상도 + .scale = 배율 + .additional-scale-options = 추가 배율 옵션 +panel-style = 스타일 + .anchor-gap = 패널과 화면 모서리 사이의 간격 + .dock-anchor-gap = 독과 화면 모서리 사이의 간격 + .extend = 화면 모서리까지 패널 확장 + .dock-extend = 화면 모서리까지 독 확장 + .appearance = 외관 + .size = 크기 + .background-opacity = 배경 투명도 +username = 사용자 이름 +light = 라이트 +panel-appearance = 외관 + .match = 시스템과 동기화 + .light = 라이트 + .dark = 다크 +replace-shortcut-dialog = 단축키를 대체할까요? + .desc = { $shortcut }은 { $name }이 사용 중 입니다. 대체 시 { $name }는 비활성화됩니다. +rgb = RGB +about-device = 장치 이름 + .desc = 이 이름은 네트워크 혹은 블루투스 장치에 표시됨 +no-vpn = 사용 가능한 VPN 연결이 없습니다. +start-segment = 시작 영역 +identity = 식별자 +reset-to-default = 기본값으로 되돌리기 +disconnect = 연결 해제 +ok = 확인 +debug = 디버그 +sound = 소리 +number = { $number } +shortcut-name = 단축키 이름 +style = 스타일 + .round = 둥글게 + .slightly-round = 약간 둥글게 + .square = 각지게 +panel-applets = 구성 + .dock-desc = 독 애플릿 구성 + .desc = 패널 애플릿 구성 +qr-code-unavailable = QR 코드를 사용할 수 없음 +small = 작게 +notifications = 알림 +window-tiling = 창 타일링 + .horizontal = 가로 방향 설정 + .vertical = 세로 방향 설정 + .swap-window = 창 교체 + .toggle-tiling = 창 타일링 전환 + .toggle-stacking = 창 스태킹 전환 + .toggle-floating = 창 플로팅 전환 + .toggle-orientation = 방향 전환 +change-password = 암호 변경 +disable-while-typing = 키 입력 중에는 비활성화하기 +long = 길게 +copied-to-clipboard = 클립보드로 복사됨 +bluetooth-confirm-pin = 블루투스 PIN 확인 + .description = { $device }에 표시된 PIN 번호가 다음과 일치하는지 확인하세요 +startup-apps = 시작 앱 + .add = 앱 추가 + .user = 로그인 시 실행되는 앱 + .none = 추가된 시작 앱이 없습니다 + .remove-dialog-title = { $name }을(를) 제거할까요? + .remove-dialog-description = 이 시작 앱을 제거할까요? + .add-startup-app = 시작 앱 추가 +legacy-app-scaling = X11 창 시스템 앱 배율 조정 + .scaled-gaming = 게임 및 전체 화면 앱에 최적화 + .gaming-description = X11 앱이 Wayland 앱에 비해 약간 크거나 작게 보일 수 있습니다 + .scaled-applications = 일반 앱에 최적화 + .applications-description = 게임 및 전체 화면 X11 앱이 디스플레이 해상도와 일치하지 않을 수 있습니다 + .scaled-compatibility = 최대 호환성 모드 + .compatibility-description = 고해상도(HiDPI) 화면에서 X11 앱이 흐릿하게 보일 수 있습니다 + .preferred-display = 게임 및 전체 화면 X11 앱에 우선 사용할 디스플레이 + .no-display = 없음 +night-light = 야간 조명 + .auto = 자동 (일몰부터 일출까지) + .desc = 따뜻한 색을 사용하여 블루라이트를 줄입니다 +about = 정보 +input-devices = 입력 장치 +custom-shortcuts = 사용자 정의 단축키 + .add = 단축키 추가 + .context = 사용자 정의 단축키 추가 + .none = 사용자 정의 단축키 없음 +visible-networks = 사용 가능한 네트워크 +applets = 애플릿 +terminate = 종료 +window-hint-accent-toggle = 활성 창 강조에 테마 강조 색상 사용 +type-to-search = 입력하여 검색… +workspaces-behavior = 작업 공간 동작 + .dynamic = 동적 작업 공간 + .dynamic-desc = 비어있는 작업 공간을 자동으로 제거합니다. + .fixed = 고정된 작업 공간 개수 + .fixed-desc = 개요에 작업 공간을 추가하거나 제거합니다. +wireguard-dialog = WireGuard 장치 추가 + .description = WireGuard 설정을 위해 사용할 장치 이름을 지정하세요. +remove-connection-dialog = 연결 프로필을 제거할까요? + .vpn-description = 나중에 이 네트워크를 다시 사용하려면 암호를 다시 입력해야 합니다. + .wired-description = 나중에 다시 사용하려면 프로필을 다시 생성해야 합니다. +workspaces = 작업 공간 +password-confirm = 암호 확인 +move-windows = 창 이동 + .direction = + { $direction -> + *[down] 아래쪽 + [left] 왼쪽 + [right] 오른쪽 + [up] 위쪽 + } 으로 창 이동 + .display = + { $direction -> + *[down] 아래쪽 + [left] 왼쪽 + [right] 오른쪽 + [up] 위쪽 + } 모니터로 창 이동 + .workspace = + { $direction -> + *[below] 아래쪽 + [left] 왼쪽 + [right] 오른쪽 + [above] 위쪽 + } 작업 공간으로 창 이동 + .workspace-num = 작업 공간 { $num }(으)로 창 이동 + .prev-workspace = 이전 작업 공간으로 창 이동 + .next-workspace = 다음 작업 공간으로 창 이동 + .last-workspace = 마지막 작업 공간으로 창 이동 + .next-display = 다음 디스플레이로 창 이동 + .prev-display = 이전 디스플레이로 창 이동 + .send-to-prev-workspace = 이전 작업 공간으로 창 이동 + .send-to-next-workspace = 다음 작업 공간으로 창 이동 +switch-workspaces = 작업 공간 전환 + .horizontal = 네 손가락으로 왼쪽/오른쪽 스와이프 + .vertical = 네 손가락으로 위/아래 스와이프 +applications = 앱 +system-controls = 시스템 제어 +auto-switch = 라이트 모드와 다크 모드간 자동 전환 + .sunrise = 일출 시 라이트 테마로 전환 + .sunset = 일몰 시 다크 테마로 전환 + .next-sunrise = 다음 일출 시 라이트 테마로 전환 + .next-sunset = 다음 일몰 시 다크 테마로 전환 +dark = 다크 +add-vpn = VPN 추가 +cancel = 취소 +keyboard-numlock-boot = Num Lock + .boot-state = 부팅 시 상태 + .last-boot = 마지막 부팅 시 상태 유지 + .on = 켜짐 + .off = 꺼짐 + .set = Num Lock 부팅 상태 설정 +about-related = 관련된 설정 + .support = 도움 받기 +tap-to-click = 터치하여 클릭 + .desc = 한 손가락으로 두드려 기본 클릭, 두 손가락으로 보조 클릭, 세 손가락으로 중앙 클릭을 사용합니다 +interface-density = 인터페이스 밀도 + .comfortable = 보통 + .compact = 좁게 + .spacious = 넓게 +open-application-library = 앱 라이브러리 열기 +connected = 연결됨 +slow = 느리게 +network-name = 네트워크 이름 +large = 크게 +panel = 패널 +confirm = 확인 +auth-dialog = 인증 필요 + .vpn-description = VPN 서비스를 위해 사용자 이름과 암호를 입력하세요. + .wifi-description = 암호 또는 암호화 키를 입력하세요. 공유기의 "WPS" 버튼을 눌러 연결할 수도 있습니다. +add-user = 사용자 추가 +enable = 활성화 +add-image = 이미지 추가 +migrate-workspace-next = 작업 공간을 다음 디스플레이로 이동 +airplane-on = 비행기 모드가 켜져 있습니다. +formatting = 형식 + .dates = 날짜 + .time = 시간 + .date-and-time = 날짜 및 시간 + .numbers = 숫자 + .measurement = 단위 + .paper = 용지 +disabled = 비활성화됨 +add-applet = 애플릿 추가 +show-extended-input-sources = 확장 입력 소스 표시 +mode-and-colors = 모드 및 색상 +users = 사용자 + .admin = 관리자 + .standard = 기본 + .profile-add = 프로필 이미지 선택 +forget = 지우기 +center-segment = 중앙 영역 +panel-missing = 패널 설정 파일을 찾을 수 없음 + .desc = 사용자 정의 설정을 사용 중이거나 파일이 손상되어 패널 설정 파일을 찾을 수 없습니다. + .fix = 기본값으로 재설정 +invalid-username = 유효하지 않은 사용자 이름 +mirroring = 미러링 + .id = 미러링 { $id } + .dont = 미러링 안 함 + .mirror = { $display } 미러링 + .project = + { $display -> + [all] 모든 디스플레이 + *[other] { $display } + }에 투사 + .project-count = 다른 { $count }개의 디스플레이에 투사 중 +orientation = 방향 + .standard = 기본 + .rotate-90 = 90° 회전 + .rotate-180 = 180° 회전 + .rotate-270 = 270° 회전 +auto = 자동 +end-segment = 끝 영역 +bluetooth-adapters = 블루투스 어댑터 +legacy-applications = X11 앱 호환성 +time-format = 날짜 & 시간 형식 + .twenty-four = 24시간 형식 + .show-seconds = 초 표시 + .first = 한 주의 시작 요일 + .show-date = 시간 애플릿에 날짜 표시 + .friday = 금요일 + .saturday = 토요일 + .sunday = 일요일 + .monday = 월요일 +accent-color = 강조 색상 +type-key-combination = 키 조합 입력 +never = 사용 안 함 +install-additional-languages = 추가 언어 설치 +settings = 설정 +sound-output = 출력 + .volume = 출력 음량 + .device = 출력 장치 + .level = 출력 수준 + .config = 구성 + .balance = 균형 + .left = 좌 + .right = 우 +window-controls = 창 제어 + .maximize = 최대화 버튼 표시 + .minimize = 최소화 버튼 표시 + .active-window-hint = 활성 창 강조 표시 +window-management-appearance = 창 관리 + .active-hint = 활성 창 강조 크기 + .gaps = 타일링된 창 간 간격 +migrate-workspace-prev = 작업 공간을 이전 디스플레이로 이동 +keyboard = 키보드 +legacy-app-global-shortcuts = X11 앱의 전역 단축키 + .desc = 전역 단축키를 사용하면 눌러서 말하기 또는 눌러서 음소거와 같은 기능을 위해, 특정 앱에서 수행된 키 입력 및 마우스 버튼 이벤트를 다른 앱이 인식할 수 있습니다. 기본적으로 X11 앱에서는 다른 앱이 민감한 정보가 포함된 키보드 및 마우스 이벤트를 감시하지 못하도록 전역 단축키 기능이 비활성화되어 있습니다. + .none = 키 없음 + .modifiers = 조합 키 (Super, Shift, Control, Alt) + .combination = Super, Control 또는 Alt 조합 키를 누르는 동안의 모든 키 조합 + .all = 모든 키 + .mouse = X11 앱의 마우스 버튼 이벤트 +activate = 활성화 +replace = 대체 +connected-devices = 연결된 장치 + .unknown = 알 수 없는 장치 +icons-and-toolkit = 아이콘 및 툴킷 테마 설정 +sound-applications = 앱 + .desc = 앱 음량 및 설정 +time-zone = 시간대 + .auto = 자동 시간대 + .auto-info = 위치 서비스와 인터넷 연결 필요 +dialog-add = 추가 +fast = 빠르게 +add-color = 색상 추가 +add-network = 네트워크 추가 + .profile = 프로필 추가 +touchpad = 터치패드 + .acceleration = 터치패드 가속 활성화 + .speed = 터치패드 속도 +command = 명령 +gestures = 제스처 + .four-finger-down = 네 손가락을 아래로 스와이프 + .four-finger-left = 네 손가락을 왼쪽으로 스와이프 + .four-finger-right = 네 손가락을 오른쪽으로 스와이프 + .four-finger-up = 네 손가락을 위로 스와이프 + .three-finger-any = 세 손가락을 아무 방향으로 스와이프 +system = 시스템 & 계정 +no-networks = 네트워크를 찾을 수 없습니다. +open-new-folder = 새 폴더 열기 +panel-bottom = 하단 +share = 네트워크 공유 +add = 추가 +time = 시간 & 언어 +fill = 채우기 +custom = 사용자 정의 +bluetooth-paired = 이전에 연결된 장치 + .connect = 연결 + .battery = 배터리 { $percentage }% +dialog = 확인 창 + .title = 이 디스플레이 설정을 유지하시겠습니까? + .keep-changes = 변경 사항 유지 + .change-prompt = { $time }초 후에 설정 변경 사항이 자동으로 복구됩니다. + .revert-settings = 설정 복구 +navigate = 탐색 +workspaces-overview-thumbnails = 작업 공간 개요 썸네일 + .show-number = 작업 공간 번호 표시 + .show-name = 작업 공간 이름 표시 +color = 색상 + .depth = 색 깊이 + .profile = 색 프로필 + .sidebar = 색 프로필 + .temperature = 색 온도 +hex = Hex +magnifier = 돋보기 + .controls = + 또는 다음 단축키를 사용하세요: { $zoom_in -> + [zero] { "" } + *[other] + { "" } + 확대하려면 { $zoom_in }, + }{ $zoom_out -> + [zero] { "" } + *[other] + { "" } + 축소하려면 { $zoom_out }, + } + Super + 마우스 휠 스크롤 + .scroll_controls = Super + 마우스 휠 스크롤로 마우스 또는 터치패드 확대/축소 활성화 + .show_overlay = 돋보기 오버레이 표시 + .increment = 확대 단위 + .signin = 로그인 시 돋보기 시작 + .applet = 패널 애플릿에서 돋보기 켜기/끄기 전환 + .movement = 확대 화면 이동 방식 + .continuous = 포인터를 따라 연속 이동 + .onedge = 포인터가 가장자리에 닿을 때 이동 + .centered = 포인터를 항상 중앙에 유지 +colors = 색상 +administrator = 관리자 + .desc = 관리자는 모든 사용자의 설정을 변경할 수 있으며, 다른 사용자를 추가하거나 제거할 수 있습니다 +scan-to-connect-description = 이 네트워크에 연결하려면 QR 코드를 스캔하세요. +modified = { $count } 수정됨 +known-networks = 알려진 네트워크 +network-and-wireless = 네트워크 & 무선 +close = 닫기 +sound-device-port-unplugged = 분리됨 +sound-hd-audio = HD 오디오 +sound-usb-audio = USB 오디오 +sound-device-profiles = 장치 프로필 +workspaces-multi-behavior = 다중 모니터 동작 + .span = 작업 공간을 모든 디스플레이에 확장 + .separate = 디스플레이마다 개별 작업 공간 사용 +system-shortcut = 시스템 + .app-library = 앱 라이브러리 열기 + .brightness-down = 디스플레이 밝기 낮추기 + .brightness-up = 디스플레이 밝기 높이기 + .display-toggle = 내장 디스플레이 켜기/끄기 + .home-folder = 홈 폴더 열기 + .keyboard-brightness-down = 키보드 밝기 낮추기 + .keyboard-brightness-up = 키보드 밝기 높이기 + .launcher = 런처 열기 + .log-out = 로그아웃 + .lock-screen = 화면 잠금 + .mute = 오디오 출력 음소거 + .mute-mic = 마이크 입력 음소거 + .play-pause = 재생/일시 정지 + .play-next = 다음 곡 + .play-prev = 이전 곡 + .poweroff = 전원 끄기 + .screenshot = 스크린샷 찍기 + .suspend = 절전 + .terminal = 터미널 열기 + .touchpad-toggle = 터치패드 켜기/끄기 + .volume-lower = 오디오 출력 음량 낮추기 + .volume-raise = 오디오 출력 음량 높이기 + .web-browser = 웹 브라우저 열기 + .window-switcher = 열린 창 사이 전환 + .window-switcher-previous = 열린 창 사이 역순으로 전환 + .workspace-overview = 작업 공간 개요 열기 +network-device-state = + .activated = 연결됨 + .config = 연결 중 + .deactivating = 연결 해제 중 + .disconnected = 연결 끊김 + .failed = 연결 실패 + .ip-check = 연결 확인 중 + .ip-config = IP 및 라우팅 정보 요청 중 + .need-auth = 인증 필요 + .prepare = 연결 준비 중 + .secondaries = 보조 연결 대기 중 + .unavailable = 사용 불가 + .unknown = 알 수 없는 상태 + .unmanaged = 관리되지 않음 + .unplugged = 케이블 분리됨 +vpn-error = VPN 에러 + .config = VPN 설정 추가 실패 + .connect = VPN 연결 실패 + .connection-editor = 연결 편집기 실행 실패 + .connection-settings = 활성 연결 설정을 가져오지 못했습니다 + .updating-state = 네트워크 관리자 상태를 업데이트하지 못했습니다 + .wireguard-config-path = WireGuard 설정 파일 경로가 잘못되었습니다 + .wireguard-config-path-desc = 선택한 파일은 로컬 파일 시스템에 있어야 합니다. + .wireguard-device = WireGuard 장치를 생성하지 못했습니다 + .with-password = + nmcli를 통한 VPN { $field -> + *[username] 사용자 이름 + [password] 암호 + [password-flags] 암호 플래그 + } 설정 실패 +wallpaper = 배경화면 + .change = 이미지 변경 주기 + .fit = 배경화면 맞춤 방식 + .folder-dialog = 배경화면 폴더 선택 + .image-dialog = 배경화면 이미지 선택 + .plural = 배경화면 + .same = 모든 디스플레이에 동일한 배경화면 사용 + .slide = 슬라이드쇼 +shadows-floating = 플로팅 창 + .clip = 시스템 모서리 곡률 맞춤 및 그림자 적용 +shadows-tiling = 타일링 창 + .clip = 시스템 모서리 곡률 맞춤 + .shadow = 그림자 적용 +enable-export = 현재 테마를 GNOME 앱에 적용 + .desc = 모든 툴킷이 테마 자동 전환을 지원하지는 않습니다. COSMIC 이외의 앱은 테마를 변경한 후 앱을 다시 시작해야 할 수도 있습니다. +shadow-and-corners = 창 그림자 및 모서리 +manage-windows = 창 관리 + .close = 닫기 + .maximize = 최대화 + .fullscreen = 전체 화면 + .minimize = 최소화 + .resize-inwards = 창 안쪽으로 크기 조절 + .resize-outwards = 창 바깥쪽으로 크기 조절 + .toggle-sticky = 고정 창 전환 +click-behavior = 클릭 동작 + .click-finger = 두 손가락으로 보조 클릭, 세 손가락으로 중앙 클릭 + .button-areas = 오른쪽 아래 모서리에서 보조 클릭, 하단 중앙에서 중앙 클릭 +default-apps = 기본 앱 + .web-browser = 웹 브라우저 + .file-manager = 파일 관리자 + .mail-client = 메일 클라이언트 + .music = 음악 + .video = 동영상 + .photos = 사진 + .calendar = 캘린더 + .terminal = 터미널 + .other-associations = 기타 연결 프로그램 + .text-editor = 텍스트 편집기 + .not-installed = 설치되지 않음 +power-saving = 절전 옵션 + .turn-off-screen-after = 다음 시간 후 화면 끄기 + .auto-suspend = 자동 절전 모드 + .auto-suspend-ac = 전원 연결 시 자동 절전 모드 + .auto-suspend-battery = 배터리 사용 시 자동 절전 모드 +scrolling = 스크롤 + .two-finger = 두 손가락으로 스크롤 + .edge = 가장자리를 따라 한 손가락으로 스크롤 + .speed = 스크롤 속도 + .natural = 자연스러운 스크롤 + .natural-desc = 화면이 아닌 콘텐츠 자체가 움직이도록 스크롤합니다 +keyboard-special-char = 특수 문자 입력 + .alternate = 대체 문자 키 + .compose = 조합 키 + .compose-desc = 조합 키를 사용하면 매우 다양한 특수 문자를 입력할 수 있습니다. 조합 키를 먼저 누른 다음, 정해진 순서대로 문자들을 입력하세요. 예를 들어, 조합 키를 누른 후 C와 o를 차례로 누르면 ©가 입력되고, a와 '를 누르면 á가 입력됩니다. + .caps = Caps Lock 키 +xdg-entry-wired = 유선 +xdg-entry-mouse-keywords = COSMIC;마우스;가속;스크롤; +xdg-entry-bluetooth-comment = 블루투스 장치 관리 +xdg-entry-notifications-keywords = COSMIC;알림;잠금; +xdg-entry-default-apps-comment = 기본 웹 브라우저와 메일 클라이언트, 파일 탐색기 및 다른 앱 +xdg-entry-keyboard-comment = 입력 소스, 전환, 특수 문자 모음, 단축키 +xdg-entry-wired-keywords = COSMIC;유선;LAN;네트워크;연결; +xdg-entry-power = 전원 & 배터리 +xdg-entry-appearance-keywords = COSMIC;강조;색상;아이콘;글꼴;테마 +xdg-entry-mouse = 마우스 +xdg-entry-dock-keywords = COSMIC;독;패널;애플릿 +xdg-entry-mouse-comment = 마우스 속도와 가속 및 자연스러운 스크롤 +xdg-entry-panel-keywords = COSMIC;패널;애플릿 +xdg-entry-window-management = 창 관리 +xdg-entry-a11y = 접근성 +xdg-entry-desktop-keywords = COSMIC;데스크톱; +xdg-entry-x11-applications-keywords = COSMIC;X11;앱;게임;호환성; +xdg-entry-displays-comment = 표시 구성 관리 설정 +xdg-entry-default-apps = 기본 앱 +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;네트워크;연결; +xdg-entry-applications-comment = 기본 앱과 시작 앱 및 X11 앱 호환성 설정 +xdg-entry-about-keywords = COSMIC;정보 +xdg-entry-panel = 패널 +xdg-entry-notifications = 알림 +xdg-entry-a11y-keywords = COSMIC;접근성;접근성;스크린;리더;돋보기;대비;색상; +xdg-entry-wireless-comment = Wi-Fi 연결 및 연결 프로필 +xdg-entry-desktop = 데스크톱 +xdg-entry-date-time-keywords = COSMIC;시간;대; +xdg-entry-desktop-comment = 바탕화면과 외관, 패널, 독, 창 관리 및 작업 공간 설정 +xdg-entry-wallpaper = 배경화면 +xdg-entry-keyboard = 키보드 +xdg-entry-a11y-comment = 스크린 리더, 돋보기, 고대비, 색상 필터 +xdg-entry-displays = 표시 +xdg-entry-network = 네트워크 & 무선 +xdg-entry-date-time = 날짜 & 시간 +xdg-entry-input-comment = 키보드와 마우스 설정 +xdg-entry-bluetooth-keywords = COSMIC;블루투스; +xdg-entry-dock-comment = 앱과 애플릿을 위한 선택적 바 +xdg-entry-network-keywords = COSMIC;네트워크;무선;WiFi;VPN; +xdg-entry-dock = 독 +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;작업 공간;방향;개요;모니터; +xdg-entry-users-keywords = COSMIC;사용자;계정; +xdg-entry-about-comment = 장치 이름, 하드웨어 정보, 운영체제 기본값 +xdg-entry-vpn-keywords = COSMIC;VPN;네트워크;연결;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = 강조 색상과 테마 +xdg-entry-input-keywords = COSMIC;입력;키보드;마우스;마우스; +xdg-entry-comment = COSMIC 데스크톱을 위한 설정 앱 +xdg-entry-notifications-comment = 방해 금지와 잠금 화면 알림 및 애플리케이션별 설정 +xdg-entry-applications = 앱 +xdg-entry-power-keywords = COSMIC;전원;배터리 +xdg-entry-default-apps-keywords = COSMIC;기본;앱 +xdg-entry-keywords = COSMIC;설정; +xdg-entry-about = 정보 +xdg-entry-input = 입력 장치 +xdg-entry-applications-keywords = COSMIC;기본;앱;시작;X11;호환성 +xdg-entry-keyboard-keywords = COSMIC;키보드;입력;소스;단축키; +xdg-entry-vpn-comment = VPN 연결 및 연결 프로필 +xdg-entry-appearance = 외관 +xdg-entry-window-management-keywords = COSMIC;창;관리;타일링;Super;키; +xdg-entry-workspaces-comment = 작업 공간 방향과 개요 및 다중 모니터 동작 +xdg-entry-network-comment = 네트워크 연결 관리 +xdg-entry-power-comment = 전원 모드 및 절전 옵션 +xdg-entry-displays-keywords = COSMIC;표시; +xdg-entry-workspaces = 작업 공간 +xdg-entry-date-time-comment = 시간대와 자동 시계 설정 및 시간 형식 +xdg-entry-x11-applications = X11 앱 호환성 +xdg-entry-wired-comment = 유선 연결 및 연결 프로필 diff --git a/i18n/lt/cosmic_settings.ftl b/i18n/lt/cosmic_settings.ftl index 53e4423..880dc9f 100644 --- a/i18n/lt/cosmic_settings.ftl +++ b/i18n/lt/cosmic_settings.ftl @@ -1,5 +1,4 @@ time-region = Regionas ir kalba - .desc = Datų, laiko ir skaičių formatas pagal tavo regioną panel-left = Kairė super-key = Super klavišo veiksmas .launcher = Atidaryti aplikacijų paleidėją @@ -18,12 +17,10 @@ vrr = Kintamas atnaujinimo dažnis (VRR) .disabled = Išjungtas window-hint-accent = Aktyvaus lango žymės spalva power = Maitinimas ir baterija - .desc = Valdyti maitinimo nustatymus fit-to-screen = Sutalpinti ekrane control-tint = Valdymo komponentų atspalvis .desc = Naudojamas standartinių mygtukų, paieškos laukų, teksto laukų ir panašių komponentų fonuose time-date = Data ir laikas - .desc = Laiko juostų, automatinio laikrodžio nustatymai ir laiko formatavimas .auto = Nustatyti automatiškai .auto-ntp = Nustačius laiko juostą, data ir laikas bus automatiškai atnaujinami close = Uždaryti @@ -101,7 +98,6 @@ keyboard-typing-assist = Rašymas .repeat-delay = Pakartojimo uždelsimas edge-gravity = Slankių langų trauka prie artimiausių kraštų bluetooth = Bluetooth - .desc = Valdyti Bluetooth įrenginius .status = Jūsų įrenginys matomas kaip { $aliases }, kol Bluetooth nustatymai bus įjungti. .connected = Prisijungta .connecting = Jungiamasi @@ -135,12 +131,11 @@ accessibility = Prieinamumas .on = Įjungti .off = Išjungti .unavailable = Nepasiekiama - .screen-reader = Ekrano skaityklė + .screen-reader = Ekrano Skaitytuvas .high-contrast = Didelio kontrasto režimas .invert-colors = Spalvų invertavimas .color-filters = Spalvų filtrai firmware = Programinė aparatinė įranga - .desc = Programinės aparatinės įrangos informacija container-background = Įrankių fono spalva .desc-detail = Įrankių fono spalva naudojama navigavimo šonjuostėse, šoniniame stalčiuje, iššokančiuose languose ir panašiuose komponentuose. Pagal numatytus nustatymus, ši fono spalva automatiškai parenkama pagal lango fono spalvą. .reset = Atstatyti į automatinį @@ -166,8 +161,7 @@ open-workspaces-view = Atidaryti Darbo sričių apžvalgos režimą all = Visi remove-user = Pašalinti naudotoją unknown = Nežinomas -default-apps = Numatytosios aplikacijos - .desc = Numatytoji naršyklė, el.pašto programa, failų naršyklė ir kitos programos +default-apps = Numatytosios Aplikacijos .web-browser = Naršyklė .file-manager = Failų tvarkyklė .mail-client = El.pašto programa @@ -178,6 +172,7 @@ default-apps = Numatytosios aplikacijos .terminal = Terminalas .other-associations = Kita .text-editor = Teksto redaktorius + .not-installed = Neįdiegtas sound-input = Įvestis .volume = Įvesties garsumas .device = Įvesties įrenginys @@ -227,7 +222,6 @@ battery = Baterija search-applets = Ieškoti apletų... export = Eksportuoti window-management = Langų valdymas - .desc = Super klavišo veiksmas, langų valdymo nustatymai ir langų išdėstymo parinktys pinch-to-zoom = Masterlio keitimas suimant pirštus .desc = Naudokite du pirštus, kad padidintumėte turinį, jei programa palaiko mastelio keitimą wifi = Wi-Fi @@ -248,13 +242,10 @@ full-name = Vardas ir Pavardė app-background = Lango fonas panel-right = Dešinė appearance = Išvaizda - .desc = Akcentinės spalvos ir temos mouse = Pelė - .desc = Pelės greitis, pagreitėjimas, natūralus slinkimas .speed = Pelės greitis .acceleration = Įjungti pelės pagreitėjimą dock = Dokas - .desc = Papildoma valdymo juosta aplikacijos ir apletams keyboard-sources = Įvesties Šaltiniai .desc = Įvesties šaltiniai gali būti perjungti naudojantis Super+Space klavišų kombinacija. Tai gali būti pakeista klaviatūros sparčiųjų klavišų nustatymuose. .move-up = Pakelti @@ -291,7 +282,6 @@ hearing = Klausymas preferred-languages = Pageidaujamos kalbos .desc = Kalbų tvarka nulemia, kuri kalba bus naudojama naudotojo sąsajoje. Pakeitimai įsigalios po kito prisijungimo. display = Monitoriai - .desc = Monitorių ir nakties švieos valdymas .arrangement = Monitorių išdėstyimas .arrangement-desc = Pertvarkite monitorius velkant juos .enable = Įjungti monitorių @@ -326,13 +316,6 @@ about-device = Įrenginio vardas no-vpn = VPN ryšys nėra prieinamas. start-segment = Pradžios segmentas desktop = Darbalaukis -connections-and-profiles = - { $variant -> - [wired] Laidinis interneto ryšys - [wifi] Wi-Fi - [vpn] VPN - *[other] Nežinomas - } Prisijungimų ir ryšio profiliai. identity = Tapatybė reset-to-default = Atstatyti į numatytas reikšmes disconnect = Atjungti @@ -340,7 +323,6 @@ ok = Gerai app = COSMIC Settings debug = Derinti sound = Garsas - .desc = N/A enable-export = Taikyti dabartinę temą GNOME aplikacijose .desc = Ne visi programiniai rinkiniai palaiko automatinį perjungimą. Po temos pakeitimo , ne COSMIC tipo aplikacijoms gali prireikti paleidimo iš naujo. number = { $number } @@ -355,7 +337,6 @@ panel-applets = Konfigūracija qr-code-unavailable = QR kodas negalimas small = Mažas notifications = Pranešimai - .desc = Netrukdymo režimas, užrakinto ekrano pranešimai ir atskirtų aplikacijų nustatymai window-tiling = Langų išdėstymas .horizontal = Nustatyti horizontalų orientavimą .vertical = Nustatyti vertikalų orientavimą @@ -371,7 +352,6 @@ copied-to-clipboard = Nukopijuota į iškarpinę bluetooth-confirm-pin = Patvirtinkite Bluetooth PIN .description = Prašome patvirtinti, ar šis PIN sutampa su { $device } įrenginyje matomu PIN startup-apps = Pradžios aplikacijos - .desc = Konfigūruokite aplikacijas, kurios paleidžiamos prisijungus .add = Pridėti aplikaciją .user = Aplikacijos paleidžiamos prisijungus .none = Nėra pridėtų pradžios aplikacijų @@ -391,9 +371,7 @@ night-light = Nakties šviesa .auto = Automatinė (nuo saulėlydžio iki saulėtekio) .desc = Sumažinta mėlyna šviesa ir padidinamas spalvų šiltumas about = Apie - .desc = Įrenginio pavadinimas, informacija apie aparatinę įrangą, operacinės sistemos parametrai input-devices = Įvesties įrenginiai - .desc = Įvesties įrenginiai custom-shortcuts = Pasirinktiniai sparčiųjų klavišų deriniai .add = Pridėti sparčiųjų klavišų derinį .context = Pridėti pasirinktinį sparčiųjų klavišų derinį @@ -414,7 +392,6 @@ remove-connection-dialog = Pašalinti prisijungimo profilį .vpn-description = Jums reikės įvesti slaptažodį iš naujo, kad galėtumėte naudotis šiuo tinklu ateityje. .wired-description = Jums reikės atkurti šį profilį, kad galėtumėte naudotis šiuo prisijungimu. workspaces = Darbo sritys - .desc = Darbo sričių orientacija ir elgsena password-confirm = Patvirtinti slaptažodį click-behavior = Spustelėjimo elgsena .click-finger = Antrinis spustelėjimas dviem pirštais ir vidurinis spustelėjimas trimis pirštais @@ -482,7 +459,6 @@ slow = Lėtas network-name = Tinklo Pavadinimas large = Didelis panel = Panelė - .desc = Pagrindinė sistemos valdymo juosta skirta apletams ir meniu scrolling = Slinkimas .two-finger = Slinkimas dviem pirštais .edge = Vieno piršto slinkimas palei kraštą @@ -510,7 +486,6 @@ add-applet = Pridėti apletą show-extended-input-sources = Rodyti išplėstinius įvesties šaltinius mode-and-colors = Režimas ir spalvos users = Naudotojai - .desc = Autentifikacija ir naudotojų paskyros .admin = Administratorius .standard = Standartinis .profile-add = Pasirinkite profilio nuotrauką @@ -543,7 +518,6 @@ auto = Automatiškai end-segment = Galinis segmentas bluetooth-adapters = Bluetooth adapteriai legacy-applications = X11 aplikacijų suderinamumas - .desc = X11 langų sistemos aplikacijų mastelio nustatymai ir sparčiųjų klavišų deriniai time-format = Datos ir laiko formatas .twenty-four = 24 valandų laikas .show-seconds = Rodyti sekundes @@ -576,7 +550,6 @@ sound-output = Išvestis .right = Dešinė wallpaper = Darbalaukio fonas .change = Keisti paveiksliuką kas - .desc = Darbalaukio fono paveiksliukų, nuotraukų, skaidrių nustatymai .fit = Darbalaukio fono talpinimas ekrane .folder-dialog = Pasirinkite darbalaukio fono aplankalą .image-dialog = Pasirinkite darbalaukio foną @@ -592,7 +565,6 @@ window-management-appearance = Aplikacijų langų valdymas .gaps = Tarpai aplink išdėstytus langus migrate-workspace-prev = Migruoti darbo sritį į ankstesnę išvestį keyboard = Klaviatūra - .desc = Įvesties šaltiniai, perjungimas, specialiųjų simbolių įvedimas, spartieji klavišai legacy-app-global-shortcuts = Sparčiųjų klavišų kombinacijos X11 programose .desc = Sparčiųjų klavišų deriniai leidžia kitoms programoms atpažinti programose atliktus klavišų paspaudimus ir pelės mygtuko paspaudimus, kad būtų galima naudoti tokias funkcijas kaip „push-to-talk“ (paspausk ir kalbėk) arba „push-to-mute“ (paspausk ir nutildyk). Pagal numatytuosius nustatymus sparčiųjų klavišų deriniai yra išjungti X11 programose, kad kitos programos negalėtų stebėti klaviatūros ir pelės veiksmų, kuriuose gali būti konfidenciali informacija. .none = Nėra klavišų @@ -637,7 +609,6 @@ network-device-state = .unplugged = Atjungtas kabelis touchpad = Jutiklinis pultas .acceleration = Įgalinti jutiklinio pulto pagreitėjimą - .desc = Jutiklinio pulto greitis, spustelėjimų parinktys, gestai .speed = Jutiklinio pulto greitis command = Command gestures = Gestai @@ -653,7 +624,6 @@ panel-bottom = Apačia share = Pasidalinti tinklu add = Pridėti time = Laikas ir kalba - .desc = N/A fill = Užpildyti custom = Nestandartinis bluetooth-paired = Anksčiau susieti įrenginiai @@ -731,6 +701,7 @@ system-shortcut = Sistema .play-prev = Ankstesnis takelis .poweroff = Išjungti .screenshot = Padaryti ekrano kopiją + .suspend = Miego režimas .terminal = Atidaryti terminalą .touchpad-toggle = Įjungti / išjungti jutiklinį kilimėlį .volume-lower = Sumažinti garso išvesties garsumą @@ -739,3 +710,107 @@ system-shortcut = Sistema .window-switcher = Perjungti aktyvų langą .window-switcher-previous = Perjungti aktyvų langą į ankstesnį pusę .workspace-overview = Atidaryti darbo srities apžvalgos režimą +shadow-and-corners = Lango šešėlis ir kampai +shadows-tiling = Automatiškai išdėstyti langai + .clip = Suderinti sistemos kampus + .shadow = Pritaikyti šešėlius +shadows-floating = Slankieji langai + .clip = Suderinti sistemos kampus ir pritaikyti šešėlius +workspaces-overview = Darbo sričių apžvalga + .action-on-typing = Veiksmas rašant + .none = Jokia + .launcher = Atidaryti Aplikacijų leidyklę + .applications = Atidaryti Aplikacijas +connect = Prisijungti +light = Šviesi +dark = Tamsus +xdg-entry-touchpad = Jutiklinis kilimėlis +xdg-entry-wired = Laidinis +xdg-entry-startup-apps-comment = Konfigūruoti aplikacijas paleidžiamas prisijungus +xdg-entry-region-language = Regionas ir Kalba +xdg-entry-mouse-keywords = COSMIC;Pelė;Pagreitis;Slinkimas; +xdg-entry-bluetooth-comment = Valdyti Bluetooth įrenginius +xdg-entry-notifications-keywords = COSMIC;Pranešimai;Užrakinimas; +xdg-entry-startup-apps-keywords = COSMIC;Paleistis;Aplikacija; +xdg-entry-default-apps-comment = Numatytoji naršyklė, pašto programa, failų naršyklė ir kitos aplikacijos +xdg-entry-keyboard-comment = Įvesties šaltiniai, perjungimas, specialių ženklų įvestis, spartieji klavišai +xdg-entry-wired-keywords = COSMIC;Laidinis;LAN;Tinkas;Ryšys; +xdg-entry-power = Energija ir Baterija +xdg-entry-mouse = Pelė +xdg-entry-dock-keywords = COSMIC;Dokas;Panelė;Apletas +xdg-entry-mouse-comment = Pelės greitis, pagreitis ir natūralus slinkimas +xdg-entry-system = Sistema ir Paskyros +xdg-entry-panel-keywords = COSMIC;Panelė;Apletas +xdg-entry-window-management = Langų Valdymas +xdg-entry-a11y = Prieinamumas +xdg-entry-time-language-comment = Valdyti sistemos datą, laiką, regioną ir kalbą +xdg-entry-desktop-keywords = COSMIC;Darbalaukis; +xdg-entry-x11-applications-keywords = COSMIC;X11;Aplikacijos;Žaidimas;Suderinamumas; +xdg-entry-displays-comment = Valdyti ekrano konfigūracijos nustatymus +xdg-entry-touchpad-keywords = COSMIC;Jutiklinis kilimėlis; Gestai; +xdg-entry-time-language = Laikas ir Kalba +xdg-entry-users = Naudotojai +xdg-entry-system-keywords = COSMIC;Sistema;Informacija;Paskyros;Programinė aparatinė įranga; +xdg-entry-default-apps = Numatytosios Aplikacijos +xdg-entry-wireless-keywords = COSMIC;WiFi-Wi-Fi;Tinklas;Ryšys; +xdg-entry-applications-comment = Numatytosios aplikacijos, pradžios aplikacijos ir X11 aplikacijų suderinamumo nustatymai +xdg-entry-about-keywords = COSMIC;Apie +xdg-entry-panel = Panelė +xdg-entry-notifications = Pranešimai +xdg-entry-a11y-keywords = COSMIC;Prieinamumas;A11y;Ekranas;Skaitytuvas;Didinamasis stiklas;Kontrastas;Spalva; +xdg-entry-wireless-comment = Wi-Fi ryšiai ir ryšių profiliai +xdg-entry-desktop = Darbalaukis +xdg-entry-date-time-keywords = COSMIC;Laikas;Zona; +xdg-entry-desktop-comment = Darbalaukio fonas, išvaizda, panelė, dokas, langų valdymo ir darbo sričių nustatymai +xdg-entry-wallpaper = Darbalaukio fonas +xdg-entry-keyboard = Klaviatūra +xdg-entry-a11y-comment = Ekrano Skaitytuvas, didinamasis stiklas, didelis kontrastas ir spalvų filtrai +xdg-entry-displays = Ekranai +xdg-entry-network = Tinklas ir Belaidis ryšys +xdg-entry-date-time = Data ir Laikas +xdg-entry-users-comment = Autentifikacija ir naudotojų paskyros +xdg-entry-input-comment = Klaviatūros ir pelės nustatymai +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-dock-comment = Pasirinktina juosta aplikacijomis ir apletams +xdg-entry-network-keywords = COSMIC;Tinklas;Bevielis ryšys;WiFi;VPN; +xdg-entry-wallpaper-comment = Darbalaukio paveikslėlis, spalvos ir skaidrių parinktys +xdg-entry-dock = Dokas +xdg-entry-startup-apps = Pradžios Aplikacijos +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Darbo sritis;Orientacija;Apžvalga;Monitorius; +xdg-entry-system-comment = Sistemos informacija, paskyros ir programinės aparatinės įrangos atnaujinimai +xdg-entry-x11-applications-comment = X11 langų sistemos aplikacijų mastelis, pagrindinis ekranas ir sistemos greitieji klavišai +xdg-entry-region-language-comment = Datų, laiko ir skaičių formatas pagal nustatytą regioną +xdg-entry-wallpaper-keywords = COSMIC;Darbalaukio fonas;Fonas;Skaidrės; +xdg-entry-users-keywords = COSMIC;Naudotojas;Paskyra; +xdg-entry-about-comment = Įrenginio pavadinimas, techninė informacija, operacinės sistemos numatytieji nustatymai +xdg-entry-vpn-keywords = COSMIC;VPN;Ryšys;Prisijungimai;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;Sistema;Laikas;Data;Regionas;Kalba; +xdg-entry-input-keywords = COSMIC;Įvestis;Klaviatūra;Pelė;Pelytė; +xdg-entry-comment = COSMIC desktop aplikacijų nustatymai +xdg-entry-notifications-comment = Netrukdyti režimas, užrakinto ekrano pranešimai ir programų nustatymai +xdg-entry-applications = Aplikacijos +xdg-entry-sound-keywords = COSMIC;Garsas;Audio;Pranešimai;Pipewire; +xdg-entry-power-keywords = COSMIC;Energija;Baterija +xdg-entry-default-apps-keywords = COSMIC;Numatyta;Aplikacija +xdg-entry-keywords = COSMIC;Nustatymai; +xdg-entry-region-language-keywords = COSMIC;Regionas;Kalba;Data;Formatas;Laikas;Vietovė;Lokalizavimas; +xdg-entry-about = Apie +xdg-entry-input = Įvesties Įrenginiai +xdg-entry-applications-keywords = COSMIC;Numatytas;Aplikacija;Paleidimas;X11;Suderinamumas +xdg-entry-sound-comment = Audio nustatymai įrenginiams, pranešimams ir aplikacijoms +xdg-entry-touchpad-comment = Jutiklinis kilimėlio greitis, valdymo parinktys, gestai +xdg-entry-keyboard-keywords = COSMIC;Klaviatūra;Įvestis;Šaltinis;Spartieji klavišai; +xdg-entry-vpn-comment = VPN ryšiai ir prisijungimų profiliai +xdg-entry-appearance = Išvaizda +xdg-entry-workspaces-comment = Darbo sričių orientacija, apžvalga ir keletos monitorių funkcionavimas +xdg-entry-network-comment = Valdyti tinklo ryšius +xdg-entry-panel-comment = Pagrindinė sistemos juosta apletams ir meniu +xdg-entry-sound = Garsas +xdg-entry-power-comment = Energijos režimai ir energijos taupymo parinktys +xdg-entry-displays-keywords = COSMIC;Ekranas; +xdg-entry-workspaces = Darbo sritys +xdg-entry-date-time-comment = Laiko juosta, automatiniai laikrodžio nustatymai ir laiko formatavimas +xdg-entry-x11-applications = X11 Aplikacijų Suderinamumas +xdg-entry-wired-comment = Laidiniai ryšiai ir ryšių profiliai +no-search-results = Joks tinklas neatitinka jūsų paieškos. diff --git a/i18n/ml/cosmic_settings.ftl b/i18n/ml/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/ms/cosmic_settings.ftl b/i18n/ms/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/nb-NO/cosmic_settings.ftl b/i18n/nb-NO/cosmic_settings.ftl index a1d9e7d..1a9844e 100644 --- a/i18n/nb-NO/cosmic_settings.ftl +++ b/i18n/nb-NO/cosmic_settings.ftl @@ -18,13 +18,6 @@ cable-unplugged = Kabel frakoblet connect = Koble til connected = Tilkoblet connecting = Kobler til… -connections-and-profiles = - { $variant -> - [wired] Kablet - [wifi] Wi-Fi - [vpn] VPN - *[other] Ukjent - } tilkoblinger og tilkoblingsprofiler. disconnect = Koble fra forget = Glem known-networks = Kjente nettverk diff --git a/i18n/nl/cosmic_settings.ftl b/i18n/nl/cosmic_settings.ftl index 7cd721e..7c2c2cc 100644 --- a/i18n/nl/cosmic_settings.ftl +++ b/i18n/nl/cosmic_settings.ftl @@ -1,67 +1,114 @@ app = COSMIC Instellingen dbus-connection-error = Kon niet met DBus verbinden -ok = Ok +ok = Oké unknown = Onbekend number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = Over +xdg-entry-about-comment = Apparaatnaam, hardware-informatie, standaardinstellingen van het besturingssysteem +xdg-entry-a11y = Toegankelijkheden +xdg-entry-a11y-comment = Toegankelijkheidsinstellingen +xdg-entry-appearance = Weergave +xdg-entry-appearance-comment = Accentkleuren en thema's +xdg-entry-applications = Toepassingen +xdg-entry-applications-comment = Instellingen voor toepassingen beheren +xdg-entry-date-time = Datum en tijd +xdg-entry-date-time-comment = Tijdszone, automatische klokinstellingen en tijdformatering +xdg-entry-default-apps = Standaard toepassingen +xdg-entry-default-apps-comment = Standaard webbrowser, mailprogramma, bestandsbeheerder en andere apps +xdg-entry-desktop = Bureaublad +xdg-entry-displays = Beeldschermen +xdg-entry-displays-comment = Weergaveopties, grafische modi en nachtlicht +xdg-entry-dock = Dock +xdg-entry-dock-comment = Een optionele balk voor apps en applets +xdg-entry-input = Invoerapparaten +xdg-entry-input-comment = Toetsenbord, muis, enz. +xdg-entry-keyboard = Toetsenbord +xdg-entry-keyboard-comment = Invoermethodes, speciale tekens, en sneltoetsen +xdg-entry-mouse = Muis +xdg-entry-mouse-comment = Muissnelheid en -versnelling, en 'natuurlijk' scrollen +xdg-entry-network = Netwerk en wifi +xdg-entry-network-comment = Netwerkverbindingen beheren +xdg-entry-notifications = Meldingsinstellingen +xdg-entry-notifications-comment = "Niet storen", meldingen op het vergrendelingsscherm en meldingsinstellingen per app +xdg-entry-panel = Panel +xdg-entry-panel-comment = De standaard systeembalk voor menu's en applets +xdg-entry-power = Energie en batterij +xdg-entry-power-comment = Energieverbruik en -besparingsopties +xdg-entry-region-language = Taal en regio +xdg-entry-region-language-comment = Regionale datum-, tijd- en getalweergave +xdg-entry-sound = Geluid +xdg-entry-sound-comment = Geluidsinstellingen voor apparaten, alarmen en programma's +xdg-entry-system = Systeem en gebruikersaccount +xdg-entry-time-language = Tijd- en taalinstellingen +xdg-entry-touchpad = Touchpad +xdg-entry-touchpad-comment = Touchpad muisversnelling, klikeigenschappen en veeggebaren +xdg-entry-users = Gebruikers +xdg-entry-users-comment = Authenticatie en gebruikersinstellingen +xdg-entry-vpn-comment = VPN-verbindingen en VPN-profielen +xdg-entry-wallpaper = Schermachtergrond +xdg-entry-wallpaper-comment = Schermachtergrond: Afbeeldingen, kleuren en diavoorstellingen +xdg-entry-window-management = Vensterbeheer +xdg-entry-window-management-comment = Opties voor de Supertoets, vensterbeheer en aanvullende opties voor het tegelen van vensters +xdg-entry-wired = Kabelverbinding +xdg-entry-wired-comment = Kabelverbinding en verbindingsprofielen +xdg-entry-wireless-comment = Wifiverbinding en verbindingsprofielen +xdg-entry-x11-applications = Compatibiliteit met X11-toepassingen. +xdg-entry-x11-applications-comment = X11-toepassingsvensters schalen, en globale sneltoetsen + ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Kabelverbindingen - [wifi] Wifi-verbindingen - [vpn] VPN-verbindingen - *[other] Onbekende verbindingen - } en verbindingsprofielen. -add-network = Voeg netwerk toe - .profile = Voeg profiel toe -add-vpn = Voeg VPN toe +add-network = Netwerk toevoegen + .profile = Profiel toevoegen +add-vpn = VPN toevoegen airplane-on = Vliegtuigmodus staat aan. -cable-unplugged = Kabel losgekoppeld -connect = Verbind +cable-unplugged = Kabel niet verbonden +connect = Verbinden connected = Verbonden connecting = Verbinding maken… -disconnect = Verbreek verbinding -forget = Vergeet +disconnect = Verbinding verbreken +forget = Vergeten known-networks = Bekende netwerken network-and-wireless = Netwerk en wifi no-networks = Geen netwerken gevonden. no-vpn = Geen VPN-verbindingen beschikbaar. password = Wachtwoord -password-confirm = Bevestig wachtwoord -remove = Verwijder +password-confirm = Wachtwoord bevestigen +remove = Verwijderen settings = Instellingen username = Gebruikersnaam visible-networks = Zichtbare netwerken identity = Identiteit -auth-dialog = Verificatie vereist - .vpn-description = Voer de gebruikersnaam en het wachtwoord in die de VPN-dienst vereist. - .wifi-description = Voer het wachtwoord of de encryptiesleutel in. U kunt ook verbinden door op de “WPS”-knop op de router te drukken. -forget-dialog = Wilt u dit wifi-netwerk vergeten? +auth-dialog = Authenticatie vereist + .vpn-description = Voer de door de VPN-dienst vereiste gebruikersnaam en wachtwoord in. + .wifi-description = Voer het wachtwoord of de encryptiesleutel in. U kunt ook verbinding maken door op de “WPS”-knop op de router te drukken. +forget-dialog = Dit wifi-netwerk vergeten? .description = U moet in de toekomst opnieuw een wachtwoord invoeren om dit wifi-netwerk te kunnen gebruiken. network-device-state = .activated = Verbonden - .config = Maakt verbinding… - .deactivating = Verbreekt verbinding… + .config = Verbinding maken… + .deactivating = Verbinding verbreken… .disconnected = Verbinding verbroken - .failed = Verbinding mislukt - .ip-check = Controleert verbinding… - .ip-config = Vraagt IP- en routeringsinformatie op… + .failed = Kon niet verbinden + .ip-check = Verbinding controleren… + .ip-config = IP- en routeringsinformatie opvragen… .need-auth = Vereist authenticatie - .prepare = Bereidt verbinding voor… - .secondaries = Wacht op secundaire verbinding… + .prepare = Verbinding voorbereiden… + .secondaries = Wachten op secundaire verbinding… .unavailable = Niet beschikbaar - .unknown = Status onbekend + .unknown = Onbekende status .unmanaged = Onbeheerd - .unplugged = Kabel losgekoppeld + .unplugged = Kabel niet verbonden remove-connection-dialog = Wilt u dit verbindingsprofiel verwijderen? .vpn-description = U moet opnieuw een wachtwoord invoeren om dit netwerk in de toekomst te kunnen gebruiken. .wired-description = U moet dit profiel opnieuw aanmaken om het in de toekomst te kunnen gebruiken. vpn = VPN .connections = VPN-verbindingen - .error = Toevoegen VPN-configuratie mislukt - .remove = Verwijder verbindingsprofiel - .select-file = Selecteer een VPN-configuratiebestand + .error = Kon VPN-configuratie niet toevoegen + .remove = Verbindingsprofiel verwijderen + .select-file = VPN-configuratie selecteren vpn-error = VPN-fout .config = Kon VPN-configuratie niet toevoegen .connect = Kon niet met VPN verbinden @@ -81,23 +128,23 @@ wired = Kabelverbindingen .adapter = Kabeladapter { $id } .connections = Kabelverbindingen .devices = Kabelapparaten - .remove = Verwijder verbindingsprofielen + .remove = Verbindingsprofiel verwijderen wifi = Wifi .adapter = Wifi-adapter { $id } - .forget = Vergeet dit netwerk + .forget = Dit netwerk vergeten wireguard-dialog = WireGuard-apparaat toevoegen .description = Kies een apparaatnaam voor de WireGuard-configuratie. ## Networking: Online Accounts -online-accounts = Online accounts - .desc = Online accounts, IMAP en SMTP, bedrijfslogins +online-accounts = Onlineaccounts + .desc = Onlineaccounts, IMAP en SMTP, zakelijke logins # Bluetooth -activate = Activeer -confirm = Bevestig -enable = Schakel in +activate = Activeren +confirm = Bevestigen +enable = Inschakelen bluetooth = Bluetooth .desc = Bluetooth-apparaten bewerken .status = Dit systeem is zichtbaar als { $aliases } zolang de bluetooth-instellingen open staan. @@ -111,8 +158,8 @@ bluetooth = Bluetooth .disabled = De bluetooth-service is uitgeschakeld .inactive = De bluetooth-service is niet actief .unknown = De bluetooth-service kon niet worden geactiveerd. Is BlueZ geïnstalleerd? -bluetooth-paired = Eerder verbonden apparaten - .connect = Verbind +bluetooth-paired = Recent verbonden apparaten + .connect = Verbinden .battery = { $percentage }% batterij bluetooth-confirm-pin = Bluetooth-pincode bevestigen .description = Controleer of de volgende pincode overeenkomt met de pincode die op { $device } wordt weergegeven @@ -126,10 +173,10 @@ accessibility = Toegankelijkheid .on = Aan .off = Uit .unavailable = Niet beschikbaar - .screen-reader = Schermverteller - .high-contrast = Verhoogde contrast modus + .screen-reader = Schermlezer + .high-contrast = Modus voor hoog contrast .invert-colors = Kleuren omkeren - .color-filters = Kleurfilters + .color-filters = Kleurenfilters hearing = Gehoor .mono = Stereo audio als mono afspelen default = Standaard @@ -184,7 +231,7 @@ all-displays = Alle beeldschermen colors = Kleuren dialog-add = Toevoegen fill = Vullen -fit-to-screen = Aan het scherm passend maken +fit-to-screen = Schermvullend open-new-folder = Nieuwe map openen recent-folders = Recente mappen x-minutes = @@ -200,19 +247,19 @@ never = Nooit ## Desktop: Appearance -appearance = Kleuren en thema's - .desc = Bepaal hoe COSMIC eruit ziet. +appearance = Uiterlijk + .desc = Accentkleuren en thema's accent-color = Accentkleur -app-background = Toepassings- of vensterachtergrond +app-background = Vensterachtergrond auto = Automatisch close = Sluiten -color-picker = Kleurkiezer +color-picker = Kleurenkiezer copied-to-clipboard = Naar klembord gekopieerd copy-to-clipboard = Naar klembord kopiëren dark = Donker -export = Exporteer +export = Exporteren hex = Hex -import = Importeer +import = Importeren light = Licht mode-and-colors = Kleuren en lichte/donkere modus recent-colors = Recente kleuren @@ -255,7 +302,7 @@ window-management-appearance = Vensterbeheer experimental-settings = Experimentele instellingen icons-and-toolkit = Thema's voor pictogrammen en de toolkit -interface-font = Standaardlettertype +interface-font = Systeemlettertype monospace-font = Lettertype met gelijke letterbreedte ## Desktop: Notifications @@ -269,17 +316,17 @@ panel = Paneel .desc = Bovenbalk met bureaubladapplets en menu's. add = Toevoegen add-applet = Applet toevoegen -all = Alle +all = Alles applets = Applets center-segment = Middenstuk end-segment = Eindstuk large = Groot -no-applets-found = Geen applets gevonden... +no-applets-found = Geen applets gevonden… panel-bottom = Onder panel-left = Links panel-right = Rechts panel-top = Boven -search-applets = Applets zoeken... +search-applets = Applets zoeken… small = Klein start-segment = Beginstuk panel-appearance = Uiterlijk @@ -340,7 +387,7 @@ workspaces-behavior = Werking virtuele werkbladen .fixed = Vast aantal werkbladen .fixed-desc = Werkbladen aan het overzicht toevoegen of verwijderen. workspaces-multi-behavior = Werking over meerdere beeldschermen - .span = Virtuele werkbladen strekken zich uit over meerder beeldschermen + .span = Werkbladen strekken zich uit over meerder beeldschermen .separate = Beeldschermen hebben afzonderlijke werkbladen workspaces-overview-thumbnails = Miniatuurweergaven van het werkbladoverzicht .show-number = Toon het nummer van de werkbladen @@ -387,7 +434,7 @@ mirroring = Scherm dupliceren } projecteren night-light = Nachtlichtbeheer .auto = Automatisch (van zonsondergang tot zonsopgang) - .desc = Blauw licht verminderen met warmere lichtkleuren. + .desc = Blauw licht verminderen met warmere lichtkleuren orientation = Oriëntatie .standard = Standaard .rotate-90 = 90° draaien @@ -430,8 +477,8 @@ sound-applications = Toepassingen ## Power -power = Enegrie en batterij - .desc = Energieverbruik beheren +power = Energie en batterij + .desc = Energie-instellingen beheren battery = Batterij .minute = { $value } { $value -> @@ -469,7 +516,7 @@ power-saving = Energiebesparingsopties ## Input -acceleration-desc = De gevoeligheid wordt automatisch aangepast op basis van de snelheid. +acceleration-desc = Past de volggevoeligheid automatisch aan op basis van de snelheid disable-while-typing = Uitschakelen tijdens het typen input-devices = Invoerapparaten .desc = Invoerapparaten @@ -514,17 +561,17 @@ keyboard-numlock-boot = Numlock .off = Uitgeschakeld .set = Numlock bij het opstarten added = Toegevoegd -type-to-search = Typ om te zoeken... +type-to-search = Typ om te zoeken… show-extended-input-sources = Toon uitgebreide invoermethodes ## Input: Keyboard: Shortcuts keyboard-shortcuts = Sneltoetsen .desc = Sneltoetsen bekijken en aanpassen -cancel = Annuleer +cancel = Annuleren command = Commando custom = Aangepast -debug = Fouten opsporen +debug = Foutopsporing disabled = Uitgeschakeld input-source-switch = Tussen toetsenbordindeling wisselen migrate-workspace-prev = Werkblad naar vorige uitvoer verplaatsen @@ -537,7 +584,7 @@ migrate-workspace = [up] hierboven } navigate = Navigeren -replace = Vervang +replace = Vervangen shortcut-name = Sneltoetsnaam system-controls = Systeemaansturing terminate = Beëindigen @@ -546,7 +593,7 @@ type-key-combination = Toetsencombinatie invoeren custom-shortcuts = Aangepaste sneltoetsen .add = Sneltoets toevoegen .context = Aangepaste sneltoets toevoegen - .none = Gebruik geen aangepaste sneltoetsen + .none = Geen gebruiker-geconfigureerde sneltoetsen modified = { $count } aangepast nav-shortcuts = Navigatie .prev-output = Focus op vorige uitvoer @@ -714,7 +761,7 @@ formatting = Opmaak preferred-languages = Taalvoorkeur .desc = De volgorde van de talen bepaalt welke door COSMIC wordt gebruikt. Wijzigingen worden doorgevoerd nadat u zich opnieuw heeft aangemeld. add-language = Taal toevoegen - .context = Voeg een taal toe + .context = Taal toevoegen install-additional-languages = Meer talen installeren region = Regio @@ -771,14 +818,14 @@ legacy-app-scaling = Het schalen van vensters die het X11-venstersysteem gebruik ## System -system = Systeem en gebruikersaccounts +system = Systeem- en gebruikersaccounts ## System: About about = Over dit apparaat .desc = Apparaatnaam, informatie over de hardware, standaardinstellingen van het besturingssysteem. about-device = Apparaatnaam - .desc = Deze naam is zichtbaar voor andere bluetooth- en netwerkapparaten. + .desc = Deze naam is zichtbaar voor andere netwerk- en bluetoothapparaten about-hardware = Hardware .model = Hardwaremodel .memory = Geheugen @@ -788,33 +835,39 @@ about-hardware = Hardware about-os = Besturingssysteem .os = Besturingssysteem .os-architecture = Architectuur van het besturingssysteem - .desktop-environment = Bureaubladomgeving - .windowing-system = Vensterbeheerder + .kernel = Kernelversie + .desktop-environment = Desktopomgeving + .windowing-system = Venstersysteem about-related = Gerelateerde instellingen - .support = Om hulp vragen + .support = Ondersteuning ## System: Firmware firmware = Firmware - .desc = Firmwaredetails. + .desc = Firmwaredetails ## System: Users users = Gebruikers - .desc = Authenticatie en gebruikersinstellingen. - .admin = Systeembeheerder + .desc = Authenticatie en gebruikersinstellingen + .admin = Beheerder .standard = Standaard - .profile-add = Kies een profielafbeelding + .profile-add = Profielafbeelding kiezen administrator = Systeembeheerder (root) .desc = Beheerders kunnen instellingen voor alle gebruikers wijzigen, en andere gebruikers toevoegen of verwijderen. add-user = Gebruiker toevoegen change-password = Wachtwoord wijzigen remove-user = Gebruiker verwijderen -full-name = Volledige naam -invalid-username = Ongeldige gebruikersnaam. +full-name = Eigennaam +invalid-username = Ongeldige gebruikersnaam password-mismatch = De wachtwoorden komen niet overeen, probeer het opnieuw. -save = Sla op +save = Opslaan qr-code-unavailable = QR-code niet beschikbaar network-name = Netwerknaam -share = Deel netwerk +share = Netwerk delen scan-to-connect-description = Scan de QR-code om met dit netwerk te verbinden. +sound-usb-audio = USB-audio +sound-hd-audio = HD-audio +sound-device-profiles = Apparaatprofielen +amplification = Verhoog maximum volume + .desc = Hiermee kan het volume tot 150% worden verhoogd diff --git a/i18n/oc/cosmic_settings.ftl b/i18n/oc/cosmic_settings.ftl new file mode 100644 index 0000000..22d8560 --- /dev/null +++ b/i18n/oc/cosmic_settings.ftl @@ -0,0 +1,26 @@ +default = Defaut +auth-dialog = Autentificacion requesida + .vpn-description = Picatz l'identificant e lo senhal requerits pel servici VPN. + .wifi-description = Picatz lo senhal o la clau de chiframent. Podètz tanben vos connectar en quichant sul boton « WPS » de vòstre rotador. +identity = Identitat +visible-networks = Rets visiblas +username = Nom d’utilizaire +share = Partejar aquesta ret +settings = Paramètres +qr-code-unavailable = Còdi QR indisponible +password-confirm = Confirmar lo senhal +password = Senhal +network-name = Nom de la ret +remove = Suprimir +network-and-wireless = Ret e sens fil +known-networks = Rets conegudas +forget = Oblidar +disconnect = Se desconnectar +connected = Connectat +connect = Connectar +cable-unplugged = Cable desconnectat +airplane-on = Mòde avion activat. +add-network = Apondre una ret + .profile = Apondre perfil +unknown = Desconegut +ok = D’acòrdi diff --git a/i18n/pa/cosmic_settings.ftl b/i18n/pa/cosmic_settings.ftl new file mode 100644 index 0000000..1da2454 --- /dev/null +++ b/i18n/pa/cosmic_settings.ftl @@ -0,0 +1,333 @@ +xdg-entry-touchpad = ਟੱਚਪੈਡ +xdg-entry-wired = ਤਾਰ ਵਾਲੇ +xdg-entry-region-language = ਖੇਤਰ ਅਤੇ ਭਾਸ਼ਾ +xdg-entry-bluetooth-comment = ਬਲੂਟੁੱਥ ਡਿਵਾਈਸਾਂ ਦਾ ਇੰਤਜ਼ਾਮ +xdg-entry-system = ਸਿਸਟਮ ਅਤੇ ਖਾਤੇ +xdg-entry-window-management = ਵਿੰਡੋ ਇੰਤਜ਼ਾਮ +xdg-entry-a11y = ਅਸਸੈਬਿਲਟੀ +xdg-entry-time-language-comment = ਸਿਸਟਮ ਤਾਰੀਖ, ਸਮਾਂ, ਖੇਤਰ ਅਤੇ ਭਾਸ਼ਾ ਦਾ ਇੰਤਜ਼ਾਮ ਕਰੋ +xdg-entry-time-language = ਸਮਾਂ ਅਤੇ ਭਾਸ਼ਾ +xdg-entry-users = ਵਰਤੋਂਕਾਰ +window-management = ਵਿੰਡੋ ਇੰਤਜ਼ਾਮ +appearance = ਦਿੱਖ +xdg-entry-about-keywords = COSMIC;ਇਸ ਬਾਰੇ +xdg-entry-wireless-comment = Wi-Fi ਕਨੈਕਸ਼ਨ ਅਤੇ ਕਨੈਕਸ਼ਨ ਪਰੋਫ਼ਾਇਲ +xdg-entry-wallpaper = ਵਾਲਪੇਪਰ +xdg-entry-date-time = ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ +xdg-entry-users-comment = ਪਰਮਾਣੀਕਰਨ ਅਤੇ ਵਰਤੋਂਕਾਰ ਖਾਤੇ +xdg-entry-bluetooth-keywords = COSMIC;ਬਲੂਟੁੱਥ; +xdg-entry-startup-apps = ਸ਼ੁਰੂਆਤੀ ਐਪਲੀਕੇਸ਼ਨਾਂ +xdg-entry-wireless = Wi-Fi +xdg-entry-system-comment = ਸਿਸਟਮ ਜਾਣਕਾਰੀ, ਖਾਤੇ ਅਤੇ ਫਿਰਮਵੇਅਰ ਅੱਪਡੇਟ +xdg-entry-region-language-comment = ਤੁਹਾਡੇ ਖੇਤਰ ਦੇ ਮੁਤਾਬਕ ਤਾਰੀਖ, ਸਮੇਂ ਅਤੇ ਅੰਕਾਂ ਦਾ ਰੂਪ +xdg-entry-about-comment = ਡਿਵਾਈਸ ਦਾ ਨਾਂ, ਹਾਰਡਵੇਅਰ ਜਾਣਕਾਰੀ, ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਮੂਲ +xdg-entry-comment = COSMIC ਡੈਸਕਟਾਪ ਲਈ ਸੈਟਿੰਗਾਂ ਐਪਲੀਕੇਸ਼ਨ +xdg-entry-applications = ਐਪਲੀਕੇਸ਼ਨ +xdg-entry-power-keywords = COSMIC;ਪਾਵਰ;ਬੈਟਰੀ +xdg-entry-keywords = COSMIC;ਸੈਟਿੰਗਾਂ; +xdg-entry-region-language-keywords = COSMIC;ਖੇਤਰ;ਭਾਸ਼ਾ;ਤਾਰੀਖ;ਫਾਰਮੈਟ;ਸਮਾਂ;ਲੋਕੇਲ;ਇਲਾਕਾਈਕਰਨ; +xdg-entry-about = ਇਸ ਬਾਰੇ +xdg-entry-sound-comment = ਡਿਵਾਈਸ, ਚੇਤਾਵਨੀਆਂ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਆਡੀਓ ਸੈਟਿੰਗਾਂ +xdg-entry-vpn-comment = VPN ਕਨੈਕਸ਼ਨ ਅਤੇ ਕਨੈਕਸ਼ਨ ਪਰੋਫ਼ਾਇਲ +xdg-entry-appearance = ਦਿੱਖ +xdg-entry-sound = ਸਾਊਂਡ +xdg-entry-power-comment = ਪਾਵਰ ਮੋਡ ਅਤੇ ਪਾਵਰ ਬੱਚਤ ਚੋਣਾਂ +xdg-entry-workspaces = ਵਰਕਸਪੇਸ +xdg-entry-wired-comment = ਤਾਰ ਵਾਲੇ ਕਨੈਕਸ਼ਨ ਅਤੇ ਕਨੈਕਸ਼ਨ ਪਰੋਫ਼ਾਇਲ +about-hardware = ਹਾਰਡਵੇਅਰ + .model = ਹਾਰਡਵੇਅਰ ਮਾਡਲ + .memory = ਮੈਮੋਰੀ + .processor = ਪਰੋਸੈਸਰ + .graphics = ਗਰਾਫਿਕਸ + .disk-capacity = ਡਿਸਕ ਸਮਰੱਥਾ +about-os = ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ + .os = ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ + .os-architecture = ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਢਾਂਚਾ + .kernel = ਕਰਨਲ ਵਰਜ਼ਨ + .desktop-environment = ਡੈਸਕਟਾਪ ਇਨਵਾਇਰਨਮੈਂਟ + .windowing-system = ਵਿੰਡੋ ਸਿਸਟਮ +wifi = Wi-Fi + .adapter = Wi-Fi ਐਡਪਟਰ { $id } + .forget = ਇਸ ਨੈੱਟਵਰਕ ਨੂੰ ਭੁੱਲ ਜਾਓ +formatting = ਫਾਰਮਟਿੰਗ + .dates = ਤਾਰੀਖਾਂ + .time = ਸਮਾਂ + .date-and-time = ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ + .numbers = ਨੰਬਰ + .measurement = ਮਾਪ + .paper = ਪੇਪਰ +sound-applications = ਐਪਲੀਕੇਸ਼ਨਾਂ + .desc = ਐਪਲੀਕੇਸ਼ਨ ਵਾਲੀਅਮ ਅਤੇ ਸੈਟਿੰਗਾਂ +bluetooth-paired = ਪਹਿਲਾਂ ਕਨੈਕਟ ਹੋਏ ਡਿਵਾਈਸ + .connect = ਕਨੈਕਟ + .battery = { $percentage }% ਬੈਟਰੀ +administrator = ਪਰਸ਼ਾਸ਼ਕ + .desc = ਪਰਸ਼ਾਸ਼ਕ ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲ ਸਕਦਾ ਹੈ, ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਜੋੜ ਅਤੇ ਹਟਾ ਸਕਦਾ ਹੈ +time-region = ਖੇਤਰ ਅਤੇ ਭਾਸ਼ਾ +panel-left = ਖੱਬੇ +connect = ਕਨੈਕਟ ਕਰੋ +x-minutes = + { $number } { $number -> + [one] ਮਿੰਟ + *[other] ਮਿੰਟ + } +power = ਪਾਵਰ ਅਤੇ ਬੈਟਰੀ +fit-to-screen = ਸਕਰੀਨ ਲਈ ਫਿੱਟ +close = ਬੰਦ ਕਰੋ +save = ਸੰਭਾਲੋ +panel-top = ਉੱਤੇ +no-applets-found = ਕੋਈ ਐਪਲਿਟ ਨਹੀਂ ਲੱਭੇ... +region = ਖੇਤਰ +place-here = ਐਪਲਿਟ ਇੱਥੇ ਰੱਖੋ +-requires-restart = ਮੁੜ-ਚਾਲੂ ਕਰਨ ਦੀ ਲੋੜ ਹੈ +all-displays = ਸਾਰੇ ਡਿਸਪਲੇਅ +password = ਪਾਸਵਰਡ +bluetooth-available = ਨੇੜਲੇ ਡਿਵਾਈਸ +cable-unplugged = ਕੇਬਲ ਕੱਢੀ ਹੋਈ ਹੈ +color-picker = ਰੰਗ ਚੋਣਕਾਰ +interface-font = ਸਿਸਟਮ ਫੋਂਟ +forget-dialog = ਇਸ Wi-Fi ਨੈੱਟਵਰਕ ਨੂੰ ਭੁੱਲਣਾ ਹੈ? + .description = ਭਵਿੱਖ ਵਿੱਚ ਜਦੋਂ ਵੀ ਤੁਸੀਂ ਇਸ Wi-Fi ਨਾਲ ਕਨੈਕਟ ਕਰਨਾ ਹੋਇਆ ਤਾਂ ਤੁਹਾਨੂੰ ਪਾਸਵਰਡ ਫੇਰ ਭਰਨਾ ਪਵੇਗਾ। +remove = ਹਟਾਓ +default = ਮੂਲ +known-networks = ਜਾਣੇ-ਪਛਾਣੇ ਨੈੱਟਵਰਕ +recent-colors = ਸੱਜੇ ਰੰਗ +add-language = ਭਾਸ਼ਾ ਜੋੜੋ + .context = ਭਾਸ਼ਾ ਜੋੜੋ +password-mismatch = ਪਾਸਵਰਡ ਅਤੇ ਤਸਦੀਕ ਦੋਵੇਂ ਮਿਲਦੇ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ +firmware = ਫਿਰਮਵੇਅਰ +import = ਇੰਪੋਰਟ +sound-usb-audio = USB ਆਡੀਓ +all = ਸਭ +remove-user = ਵਰਤੋਂਕਾਰ ਨੂੰ ਹਟਾਓ +unknown = ਅਣਪਛਾਤਾ +copy-to-clipboard = ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ +monospace-font = ਮੋਨੋਸਪੇਸ ਫੋਂਟ +experimental-settings = ਤਰਜਬੇ ਅਧੀਨ ਸੈਟਿੰਗਾਂ +recent-folders = ਸੱਜਰੇ ਫੋਲਡਰ +connecting = ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ… +search-applets = ਐਪਲਿਟਾਂ ਨੂੰ ਲੱਭੋ... +export = ਐਕਸਪੋਰਟ +x-hours = + { $number } { $number -> + [one] ਘੰਟਾ + *[other] ਘੰਟੇ + } +added = ਜੋੜਿਆ +input-source-switch = ਕੀਬੋਰਡ ਭਾਸ਼ਾ ਇਨਪੁੱਟ ਸਰੋਤ ਨੂੰ ਬਦਲੋ +full-name = ਪੂਰਾ ਨਾਂ +app-background = ਵਿੰਡੋ ਬੈਕਗਰਾਊਂਡ +panel-right = ਸੱਜੇ +sound-device-profiles = ਡਿਵਾਈਸ ਪਰੋਫ਼ਾਈਲ +dock = ਡੌਕ +sound-hd-audio = HD ਆਡੀਓ +network-and-wireless = ਨੈੱਟਵਰਕ ਅਤੇ ਬੇਤਾਰ +username = ਵਰਤੋਂਕਾਰ ਦਾ ਨਾਂ +light = ਹਲਕਾ +no-vpn = ਕੋਈ VPN ਕਨੈਕਸ਼ਨ ਮੌਜੂਦ ਨਹੀਂ ਹੈ। +start-segment = ਸ਼ੁਰੂ ਭਾਗ +desktop = ਡੈਸਕਟਾਪ +identity = ਪਛਾਣ +reset-to-default = ਮੂਲ ਲਈ ਮੁੜ-ਸੈੱਟ ਕਰੋ +disconnect = ਡਿਸ-ਕਨੈਕਟ +ok = ਠੀਕ ਹੈ +app = COSMIC ਸੈਟਿੰਗਾਂ +sound = ਸਾਊਂਡ +number = { $number } +shortcut-name = ਸ਼ਾਰਟਕੱਟ ਦਾ ਨਾਂ +qr-code-unavailable = QR ਕੋਡ ਮੌਜੂਦ ਨਹੀਂ ਹੈ +small = ਛੋਟਾ +notifications = ਨੋਟੀਫਿਕੇਸ਼ਨ +change-password = ਪਾਸਵਰਡ ਨੂੰ ਬਦਲੋ +disable-while-typing = ਲਿਖਣ ਦੇ ਦੌਰਾਨ ਅਸਮਰੱਥ ਕਰੋ +copied-to-clipboard = ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ +about = ਇਸ ਬਾਰੇ +input-devices = ਇਨਪੁੱਟ ਡਿਵਾਈਸ +visible-networks = ਦਿਸਦੇ ਨੈੱਟਵਰਕ +applets = ਐਪਲਿਟ +terminate = ਖ਼ਤਮ +type-to-search = ਖੋਜਣ ਲਈ ਲਿਖੋ... +workspaces = ਵਰਕਸਪੇਸ +password-confirm = ਪਾਸਵਰਡ ਦੀ ਤਸਦੀਕ ਕਰੋ +applications = ਐਪਲੀਕੇਸ਼ਨਾਂ +dbus-connection-error = DBus ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ +system-controls = ਸਿਸਟਮ ਕੰਟਰੋਲ +dark = ਗੂੜ੍ਹਾ +add-vpn = VPN ਨੂੰ ਜੋੜੋ +cancel = ਰੱਦ ਕਰੋ +open-application-library = ਐਪਲੀਕੇਸ਼ਨ ਲਾਇਬਰੇਰੀ ਨੂੰ ਖੋਲ੍ਹੋ +connected = ਕਨੈਕਟ ਹੈ +slow = ਹੌਲੀ +network-name = ਨੈੱਟਵਰਕ ਦਾ ਨਾਂ +large = ਵੱਡਾ +panel = ਪੈਨਲ +confirm = ਤਸਦੀਕ +add-user = ਵਰਤੋਂਕਾਰ ਨੂੰ ਜੋੜੋ +enable = ਸਮਰੱਥ +add-image = ਚਿੱਤਰ ਨੂੰ ਜੋੜੋ +airplane-on = ਏਅਰਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੈ। +disabled = ਅਸਮਰੱਥ ਹੈ +add-applet = ਐਪਲਿਟ ਨੂੰ ਜੋੜੋ +show-extended-input-sources = ਵਧੀਕ ਇਨਪੁੱਟ ਸਰੋਤਾਂ ਨੂੰ ਵੇਖਾਓ +mode-and-colors = ਮੋਡ ਅਤੇ ਰੰਗ +users = ਵਰਤੋਂਕਾਰ + .admin = ਐਡਮਿਨ + .standard = ਸਟੈਂਡਰਡ + .profile-add = ਪਰੋਫ਼ਾਇਲ ਚਿੱਤਰ ਨੂੰ ਚੁਣੋ +forget = ਭੁੱਲ ਜਾਓ +center-segment = ਕੇਂਦਰੀ ਭਾਗ +invalid-username = ਗਲਤ ਵਰਤੋਂਕਾਰ-ਨਾਂ +auto = ਆਟੋ +end-segment = ਅੰਤ ਭਾਗ +bluetooth-adapters = ਬਲੂਟੁੱਥ ਐਡਪਟਰ +never = ਕਦੇ ਨਹੀਂ +install-additional-languages = ਵਧੀਕ ਭਾਸ਼ਾਵਾਂ ਨੂੰ ਇੰਸਟਾਲ ਕਰੋ +settings = ਸੈਟਿੰਗਾਂ +keyboard = ਕੀਬੋਰਡ +activate = ਸਰਗਰਮ +replace = ਬਦਲੋ +connected-devices = ਕਨੈਕਟ ਹੋਏ ਡਿਵਾਈਸ + .unknown = ਅਣਪਛਾਤਾ ਡਿਵਾਈਸ +dialog-add = ਜੋੜੋ +fast = ਤੇਜ਼ +add-network = ਨੈੱਟਵਰਕ ਨੂੰ ਜੋੜੋ + .profile = ਪਰੋਫ਼ਾਇਲ ਨੂੰ ਜੋੜੋ +system = ਸਿਸਟਮ ਅਤੇ ਖਾਤੇ +no-networks = ਕੋਈ ਨੈੱਟਵਰਕ ਨਹੀਂ ਲੱਭਿਆ ਹੈ। +open-new-folder = ਨਵੇਂ ਫੋਲਡਰ ਨੂੰ ਖੋਲ੍ਹੋ +panel-bottom = ਹੇਠਾਂ +share = ਨੈੱਟਵਰਕ ਨੂੰ ਸਾਂਝਾ ਕਰੋ +add = ਜੋੜੋ +time = ਸਮਾਂ ਅਤੇ ਭਾਸ਼ਾ +fill = ਭਰੋ +custom = ਕਸਟਮ +sound-device-port-unplugged = ਪਲੱਗ ਕੱਢਿਆ +hex = ਹੈਕਸਾ +colors = ਰੰਗ +scan-to-connect-description = ਇਸ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ QR ਕੋਡ ਨੂੰ ਸਕੈਨ ਕਰੋ। +add-another-keybinding = ਹੋਰ ਕੀ-ਬਾਈਡਿੰਗ ਜੋੜੋ +battery = ਬੈਟਰੀ + .minute = + { $value } { $value -> + [one] ਮਿੰਟ + *[other] ਮਿੰਟ + } + .hour = + { $value } { $value -> + [one] ਘੰਟਾ + *[other] ਘੰਟੇ + } + .day = + { $value } { $value -> + [one] ਦਿਨ + *[other] ਦਿਨ + } + .less-than-minute = ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ + .and = ਅਤੇ + .remaining-time = + { $time }.{ $action -> + [full] ਪੂਰੀ + *[other] ਖਾਲੀ ਹੋਣ ਲਈ + } +short = ਛੋਟਾ +debug = ਡੀਬੱਗ +long = ਲੰਮਾ +command = ਕਮਾਂਡ +navigate = ਨੇਵੀਗੇਟ +wired = ਤਾਰ ਵਾਲਾ + .adapter = ਤਾਰ ਵਾਲਾ ਅਡੈਪਟਰ{ $id } + .connections = ਤਾਰ ਵਾਲੇ ਕਨੈਕਸ਼ਨ + .devices = ਤਾਰ ਵਾਲੇ ਡਿਵਾਈਸ + .remove = ਕਨੈਕਸ਼ਨ ਪਰੋਫ਼ਾਇਲ ਨੂੰ ਹਟਾਓ +xdg-entry-notifications-keywords = COSMIC;ਨੋਟੀਫਿਕੇਸ਼ਨ;ਲਾਕ; +xdg-entry-startup-apps-keywords = COSMIC;ਸ਼ੁਰੂ;ਐਪਲੀਕੇਸ਼ਨ; +xdg-entry-default-apps-comment = ਮੂਲ ਵੈੱਬ ਬਰਾਊਜ਼ਰ, ਮੇਲ ਕਲਾਈਂਟ, ਫ਼ਾਇਲ ਬਰਾਊਜ਼ਰ ਅਤੇ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ +xdg-entry-keyboard-comment = ਇਨਪੁੱਟ ਸਰੋਤ, ਸਵਿੱਚ ਕਰਨਾ, ਖਾਸ ਅੱਖਰ ਪਾਉਣੇ, ਸ਼ਾਰਟਕੱਟ +xdg-entry-wired-keywords = COSMIC;ਤਾਰ ਵਾਲਾ;LAN;ਨੈੱਟਵਰਕ;ਕਨੈਕਸ਼ਨ; +xdg-entry-power = ਪਾਵਰ ਅਤੇ ਬੈਟਰੀ +xdg-entry-mouse = ਮਾਊਸ +xdg-entry-dock-keywords = COSMIC;ਡੌਕ;ਪੈਨਲ;ਐਪਲਿਟ +xdg-entry-panel-keywords = COSMIC;ਪੈਨਲ;ਐਪਲਿਟ +xdg-entry-desktop-keywords = COSMIC;ਡੈਸਕਟਾਪ; +xdg-entry-displays-comment = ਡਿਸਪਲੇਅ ਸੰਰਚਨਾ ਸੈਟਿੰਗਾਂ ਦਾ ਇੰਤਜ਼ਾਮ +xdg-entry-default-apps = ਮੂਲ ਐਪਲੀਕੇਸ਼ਨਾਂ +xdg-entry-wireless-keywords = COSMIC;ਵਾਈ-ਫਾਈ;ਵਾਈਫਾਈ;ਨੈੱਟਵਰਕ;ਕਨੈਕਸ਼ਨ; +xdg-entry-notifications = ਨੋਟੀਫਿਕੇਸ਼ਨ +xdg-entry-desktop = ਡੈਸਕਟਾਪ +xdg-entry-date-time-keywords = COSMIC;ਸਮਾਂ;ਖੇਤਰ;ਇਲਾਕਾ; +xdg-entry-desktop-comment = ਵਾਲਪੇਪਰ, ਦਿੱਖ, ਪੈਨਲ, ਡੌਕ, ਵਿੰਡੋ ਮੈਨਜੇਮੈਂਟ ਅਤੇ ਵਰਕਸਪੇਸ ਸੈਟਿੰਗਾਂ +xdg-entry-keyboard = ਕੀਬੋਰਡ +xdg-entry-displays = ਡਿਸਪਲੇਅ +xdg-entry-network = ਨੈੱਟਵਰਕ ਅਤੇ ਬੇਤਾਰ +xdg-entry-input-comment = ਕੀਬੋਰਡ ਅਤੇ ਮਾਊਸ ਸੈਟਿੰਗਾਂ +xdg-entry-dock-comment = ਐਪਾਂ ਅਤੇ ਐਪਲਿਟਾਂ ਲਈ ਚੋਣਵੀਂ ਪੱਟੀ +xdg-entry-network-keywords = COSMIC;ਨੈੱਟਵਰਕ;ਬੇਤਾਰ;ਵਾਈਫਾਈ;ਵੀਪੀਐਨ; +xdg-entry-dock = ਡੌਕ +xdg-entry-workspaces-keywords = COSMIC;ਵਰਕਸਪੇਸ;ਸਥਿਤੀ;ਸਾਰ;ਮਾਨੀਟਰ; +xdg-entry-wallpaper-keywords = COSMIC;ਵਾਲਪੇਪਰ;ਬੈਕਗਰਾਉਂਡ;ਸਲਾਈਡ-ਸ਼ੋਅ; +xdg-entry-time-language-keywords = COSMIC;ਸਿਸਟਮ;ਸਮਾਂ;ਤਾਰੀਖ;ਖੇਤਰ;ਭਾਸ਼ਾ; +xdg-entry-input-keywords = COSMIC;ਇਨਪੁੱਟ;ਕੀਬੋਰਡ;ਮਾਊਸ; +xdg-entry-notifications-comment = ਤੰਗ ਨਾ ਕਰੋ, ਲਾਕ-ਸਕਰੀਨ ਸੂਚਨਾਵਾਂ ਅਤੇ ਪ੍ਰੀ-ਐਪਲੀਕੇਸ਼ਨ ਸੈਟਿੰਗਾਂ +xdg-entry-sound-keywords = COSMIC;ਸਾਊਂਡ;ਆਡੀਓ;ਚੇਤਾਵਨੀ;ਪਾਇਪਵਾਇਰ; +xdg-entry-default-apps-keywords = COSMIC;ਮੂਲ;ਐਪਲੀਕੇਸ਼ਨ; +xdg-entry-input = ਇਨਪੁੱਟ ਡਿਵਾਈਸ +xdg-entry-keyboard-keywords = COSMIC;ਕੀਬੋਰਡ;ਇਨਪੁੱਟ;ਸਰੋਤ;ਸ਼ਾਰਟਕੱਟ; +xdg-entry-workspaces-comment = ਵਰਕਸਪੇਸ ਸਥਿਤੀ, ਸਾਰ ਅਤੇ ਬਹੁ-ਮਾਨੀਟਰ ਰਵੱਈਆ +xdg-entry-network-comment = ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਇੰਤਜ਼ਾਮ +xdg-entry-panel-comment = ਮੇਨੂ ਅਤੇ ਐਪਲਿਟਾਂ ਲਈ ਮੁੱਢਲੀ ਸਿਸਟਮ ਪੱਟੀ +xdg-entry-displays-keywords = COSMIC;ਡਿਸਪਲੇਅ; +xdg-entry-date-time-comment = ਸਮਾਂ-ਖੇਤਰ, ਆਪਣੇ-ਆਪ ਘੜੀ ਸੈਟਿੰਗਾਂ, ਅਤੇ ਸਮਾਂ ਰੂਪ +panel-applets = ਸੰਰਚਨਾ + .dock-desc = ਡੌਕ ਐਪਲਿਟ ਦੀ ਸੰਰਚਨਾ + .desc = ਪੈਨਲ ਐਪਲਿਟ ਦੀ ਸੰਰਚਨਾ +orientation = ਸਥਿਤੀ + .standard = ਸਟੈਡਂਰਡ + .rotate-90 = 90° ਘੁੰਮਾਓ + .rotate-180 = 180° ਘੁੰਮਾਓ + .rotate-270 = 270° ਘੁੰਮਾਓ +preferred-languages = ਪਸੰਦੀਦਾ ਭਾਸ਼ਾਵਾਂ + .desc = ਭਾਸ਼ਾਵਾਂ ਦੀ ਲੜ ਤਹਿ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜੀ ਭਾਸ਼ਾ ਨੂੰ ਵਰਤੋਂਕਾਰ ਇੰਟਰਫੇਸ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ। ਤਬਦੀਲੀਆਂ ਅਗਲੀ ਵਾਰ ਲਾਗਇਨ ਕਰਨ ਦੇ ਬਾਅਦ ਲਾਗੂ ਕੀਤਾ ਜਾਵੇਗਾ। +about-device = ਡਿਵਾਈਸ ਦਾ ਨਾਂ + .desc = ਇਹ ਨਾਂ ਹੋਰ ਨੈੱਟਵਰਕ ਜਾਂ ਬਲੂਟੁ਼ਥ ਡਿਵਾਈਸ ਵਿੱਚ ਦਿਖਾਈ ਦੇਵੇਗਾ +time-format = ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ ਰੂਪ + .twenty-four = 24-ਘੰਟੇ ਸਮਾਂ + .show-seconds = ਸਕਿੰਟ ਵੇਖਾਓ + .first = ਹਫ਼ਤੇ ਦਾ ਪਹਿਲਾਂ ਦਿਨ + .show-date = ਸਮਾਂ ਐਪਲਿਟ ਵਿੱਚ ਤਾਰੀਖ ਨੂੰ ਵੇਖਾਓ + .friday = ਸ਼ੁੱਕਰਵਾਰ + .saturday = ਸ਼ਨਿੱਚਰਵਾਰ + .sunday = ਐਤਵਾਰ + .monday = ਸੋਮਵਾਰ +time-zone = ਸਮਾਂ ਖੇਤਰ + .auto = ਆਪਣੇ-ਆਪ ਸਮਾਂ ਖੇਤਰ + .auto-info = ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਅਤੇ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੈ +time-date = ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ + .auto = ਆਪਣੇ-ਆਪ ਸੈੱਟ ਕਰੋ + .auto-ntp = ਤਾਰੀਖ ਅਤੇ ਸਮਾਂ ਸਮਾਂ ਖੇਤਰ ਸੈੱਟ ਕਰਨ ਦੌਰਾਨ ਆਪਣੇ-ਆਪ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ +zoom-in = ਜ਼ੂਮ ਇਨ +zoom-out = ਜ਼ੂਮ ਆਉਟ +switch-between-windows = ਵਿੰਡੋਆਂ ਵਿਚਾਲੇ ਬਦਲੋ +open-workspaces-view = ਵਰਕਸਪੇਸ ਸਾਰ ਨੂੰ ਖੋਲ੍ਹੋ +about-related = ਸੰਬੰਧਿਤ ਸੈਟਿੰਗਾਂ + .support = ਮਦਦ ਲਵੋ +add-color = ਰੰਗ ਨੂੰ ਜੋੜੋ +network-device-state = + .activated = ਕਨੈਕਟ ਹੈ + .config = ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ + .deactivating = ਡਿਸ-ਕਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ + .disconnected = ਡਿਸ-ਕਨੈਕਟ ਹੈ + .failed = ਕਨੈਕਟ ਕਰਨ ਲਈ ਅਸਫ਼ਲ ਹੈ + .ip-check = ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ + .ip-config = IP ਅਤੇ ਰਾਊਂਟਿੰਗ ਜਾਣਕਾਰੀ ਮੰਗੀ ਜਾ ਰਹੀ ਹੈ + .need-auth = ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ + .prepare = ਕਨੈਕਟ ਲਈ ਤਿਆਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ + .secondaries = ਸੈਕੰਡਰੀ ਕਨੈਕਸ਼ਨ ਦੀ ਉਡੀਕ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ + .unavailable = ਗ਼ੈਰ-ਮੌਜੂਦ + .unknown = ਅਣਪਛਾਤੀ ਸਥਿਤੀ + .unmanaged = ਬਿਨਾਂ-ਪ੍ਰਬੰਧ + .unplugged = ਕੇਬਲ ਕੱਢੀ ਹੋਈ ਹੈ +xdg-entry-startup-apps-comment = ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਸੰਰਚਨਾ ਕਰੋ, ਜੋ ਲਾਗਇਨ ਕਰਨ ਸਮੇਂ ਚੱਲਣ +xdg-entry-system-keywords = COSMIC;;; +xdg-entry-panel = ਪੈਨਲ +xdg-entry-wallpaper-comment = ਵਾਲਪੇਪਰ ਚਿੱਤਰ, ਰੰਗ ਅਤੇ ਸਲਾਈਡ-ਸ਼ੋਅ ਚੋਣਾਂ +xdg-entry-users-keywords = COSMIC;ਵਰਤੋਂਕਾਰ;ਖਾਤਾ; diff --git a/i18n/pl/cosmic_settings.ftl b/i18n/pl/cosmic_settings.ftl index 32f4b53..73ca92c 100644 --- a/i18n/pl/cosmic_settings.ftl +++ b/i18n/pl/cosmic_settings.ftl @@ -4,15 +4,64 @@ ok = OK unknown = Nieznane number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = O systemie +xdg-entry-about-comment = Nazwa urządzenia, informacje o sprzęcie i systemie operacyjnym +xdg-entry-a11y = Dostępność +xdg-entry-a11y-comment = Czytnik ekranowy, lupa, wysoki kontrast i filtry kolorów +xdg-entry-appearance = Wygląd +xdg-entry-appearance-comment = Kolory akcentów i styl +xdg-entry-applications = Aplikacje +xdg-entry-bluetooth-comment = Zarządzaj urządzeniami Bluetooth +xdg-entry-date-time = Godzina i Data +xdg-entry-date-time-comment = Strefy czasowe, automatyczna konfiguracja zegara i format wyświetlania czasu +xdg-entry-default-apps = Domyślne aplikacje +xdg-entry-default-apps-comment = Domyślna przeglądarka, klient poczty e-mail, menedżer plików i inne aplikacje +xdg-entry-desktop = Pulpit +xdg-entry-displays = Wyświetlacze +xdg-entry-displays-comment = Zarządzaj ustawieniami wyświetlania +xdg-entry-dock = Dok +xdg-entry-dock-comment = Opcjonalny panel na aplikacje i aplety +xdg-entry-input = Urządzenia wprowadzania danych +xdg-entry-keyboard = Klawiatura +xdg-entry-keyboard-comment = Źródła wprowadzania, przełączanie, specjalne klawisze, skróty +xdg-entry-mouse = Mysz +xdg-entry-mouse-comment = Prędkość myszy, przyspieszenie i naturalne przewijanie +xdg-entry-network = Sieć i połączenia bezprzewodowe +xdg-entry-network-comment = Zarządzaj połączeniami sieciowymi +xdg-entry-notifications = Powiadomienia +xdg-entry-notifications-comment = Tryb „nie przeszkadzać”, powiadomienia na ekranie blokady i ustawienia poszczególnych aplikacji +xdg-entry-panel = Panel +xdg-entry-power = Zasilanie i bateria +xdg-entry-power-comment = Tryby zasilania i opcje oszczędzania energii +xdg-entry-region-language = Region i język +xdg-entry-region-language-comment = Format wyświetlanych dat, godzin i liczb dopasowany do regionu +xdg-entry-sound = Dźwięk +xdg-entry-sound-comment = Opcje dźwięku dla urządzeń, alertów i aplikacji +xdg-entry-startup-apps = Aplikacje startowe +xdg-entry-startup-apps-comment = Konfiguracja aplikacji uruchamianych po zalogowaniu +xdg-entry-system = System i konta +xdg-entry-time-language = Czas i język +xdg-entry-touchpad = Gładzik +xdg-entry-touchpad-comment = Prędkość gładzika, opcje kliknięć, gesty +xdg-entry-users = Użytkownicy +xdg-entry-users-comment = Uwierzytelnianie i konta użytkowników +xdg-entry-vpn-comment = Połączenia VPN i profile połączeń +xdg-entry-wallpaper = Tapeta +xdg-entry-wallpaper-comment = Obraz tła, kolory i opcje pokazu slajdów +xdg-entry-window-management = Zarządzanie oknami +xdg-entry-window-management-comment = Działanie klawisza Super, opcje kontroli oknami i dodatkowe ustawienia kafelkowania okien +xdg-entry-wired = Połączenia przewodowe +xdg-entry-wired-comment = Połączenia przewodowe i profile połączeń +xdg-entry-wireless-comment = Połączenia Wi-Fi i profile połączeń +xdg-entry-workspaces = Obszary robocze +xdg-entry-workspaces-comment = Zachowanie przy wielu wyświetlaczach, podgląd, kierunek i zachowanie obszarów roboczych +xdg-entry-x11-applications = Kompatybilność aplikacji X11 +xdg-entry-x11-applications-comment = Skalowanie aplikacji systemu okien X11 i globalne skróty klawiszowe + ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Połączenia przewodowe - [wifi] Połączenia Wi-Fi - [vpn] Połączenia VPN - *[other] Nieznane połączenia - } i profile połączeń. add-network = Dodaj sieć .profile = Dodaj profil add-vpn = Dodaj VPN @@ -99,7 +148,6 @@ activate = Aktywuj confirm = Potwierdź enable = Włącz bluetooth = Bluetooth - .desc = Zarządzaj urządzeniami Bluetooth .status = Ten system jest widoczny jako { $aliases }, gdy ustawienia Bluetooth są otwarte. .connected = Połączono .connecting = Łączenie @@ -171,7 +219,6 @@ desktop = Pulpit wallpaper = Tapeta .change = Zmieniaj obraz co - .desc = Obrazy tapety, kolory i opcje pokazu slajdów. .fit = Dopasuj tapetę .folder-dialog = Wybierz katalog z tapetami .image-dialog = Wybierz obraz tapety @@ -204,7 +251,6 @@ never = Nigdy ## Desktop: Appearance appearance = Wygląd - .desc = Kolory akcentów i motywy accent-color = Kolory akcentów app-background = Tło okien auto = Automatyczne @@ -264,12 +310,10 @@ monospace-font = Czcionka o stałej szerokości ## Desktop: Notifications notifications = Powiadomienia - .desc = Nie Przeszkadzać, powiadomienia ekranu blokady oraz ustawienia konkretnej aplikacji ## Desktop: Panel panel = Panel - .desc = Główna belka z menu i apletami add = Dodaj add-applet = Dodaj aplet all = Wszystkie @@ -312,12 +356,10 @@ panel-missing = Brakuje Konfiguracji Panelu ## Desktop: Dock dock = Dok - .desc = Dodatkowa belka z aplikacjami i apletami ## Desktop: Window management window-management = Zarządzanie oknami - .desc = Akcje klawisza super, ustawienia kontroli okien i dodatkowe ustawienia kafelkowania okien super-key = Klawisz Super .launcher = Otwórz program startowy .workspaces = Otwórz obszary robocze @@ -336,7 +378,6 @@ focus-navigation = Nawigacja aktywnym oknem ## Desktop: Workspaces workspaces = Obszary robocze - .desc = Zachowanie i orientacja obszaru roboczego workspaces-behavior = Zachowanie obszaru roboczego .dynamic = Dynamiczne obszary robocze .dynamic-desc = Puste obszary robocze są automatycznie usuwane. @@ -348,7 +389,7 @@ workspaces-multi-behavior = Funkcjonowanie przy wielu monitorach workspaces-overview-thumbnails = Miniatury podglądu obszaru roboczego .show-number = Pokaż numer obszaru roboczego .show-name = Pokaż nazwę obszaru roboczego -workspaces-orientation = Orientacja obszarów roboczych +workspaces-orientation = Kierunek obszarów roboczych .vertical = Pionowy .horizontal = Poziomy hot-corner = Narożnik funkcyjny @@ -363,7 +404,6 @@ color = Kolor .sidebar = Profile Koloru .temperature = Temperatura koloru display = Wyświetlacz - .desc = Zarządzaj wyświetlaczami i nocnym światłem .arrangement = Układ wyświetlaczy .arrangement-desc = Przeciągaj wyświetlacze, aby zmienić układ .enable = Włącz wyświetlacz @@ -396,8 +436,8 @@ mirroring = Lustrzane Odbicie night-light = Nocne Światło .auto = Automatyczne (od świtu do zmierzchu) .desc = Zmniejsza ilość niebieskiego światła i ociepla kolory -orientation = Orientacja - .standard = Standardowa +orientation = Kierunek + .standard = Standardowy .rotate-90 = Obróć o 90° .rotate-180 = Obróć o 180° .rotate-270 = Obróć o 270° @@ -422,7 +462,6 @@ dialog = Dialog ## Sound sound = Dźwięk - .desc = Nie dotyczy sound-output = Wyjście .volume = Głośność wyjścia .device = Urządzenie wyjścia @@ -446,7 +485,6 @@ sound-applications = Aplikacje ## Power power = Zasilanie i bateria - .desc = Zarządzaj ustawieniami zasilania battery = Bateria .minute = { $value } { $value -> @@ -493,7 +531,6 @@ power-saving = Opcje Oszczędzania Energii acceleration-desc = Automatycznie dostosuj dokładność śledzenia do prędkości ruchu disable-while-typing = Wyłącz podczas pisania input-devices = Urządzenia wprowadzania danych - .desc = Urządzenia wprowadzania danych primary-button = Główny przycisk .desc = Ustawia kolejność fizycznych przycisków .left = Lewy @@ -512,7 +549,6 @@ fast = Szybko short = Krótko long = Długo keyboard = Klawiatura - .desc = Wprowadzanie danych, przełączanie, wprowadzanie znaków specjalnych i skróty na klawiaturze keyboard-sources = Źródła wprowadzania danych .desc = Źródła wprowadzania danych można zmienić, naciskając kombinację klawiszy Super i Spacja. Może być to spersonalizowane w ustawieniach skrótów klawiaturowych. .move-up = Przesuń w górę @@ -674,7 +710,6 @@ zoom-out = Oddal ## Input: Mouse mouse = Myszka - .desc = Prędkość, przyśpieszenie i naturalne przewijanie myszki .speed = Prędkość myszki .acceleration = Włącz akcelerację myszki @@ -689,7 +724,6 @@ tap-to-click = Dotknij, aby kliknąć .desc = Włącza klikanie przez dotknięcie jednym palcem dla głównego przycisku, dwoma palcami dla drugiego przycisku i trzema palcami dla środkowego przycisku touchpad = Gładzik .acceleration = Włącz przyśpieszenie gładzika - .desc = Prędkość, opcje klikania i gesty gładzikiem. .speed = Prędkość Gładzika ## Input: Gestures @@ -710,9 +744,7 @@ open-workspaces-view = Otwarcie podglądu obszarów roboczych ## Time & Language time = Czas i język - .desc = Nie dostępne time-date = Data i godzina - .desc = Strefa czasowa, automatyczne ustawienia zegara oraz formatowanie czasu. .auto = Ustaw automatycznie .auto-ntp = Czas i data ustawią się automatycznie po wybraniu strefy czasowej time-zone = Strefa czasowa @@ -728,7 +760,6 @@ time-format = Format daty i godziny .sunday = Niedziela .monday = Poniedziałek time-region = Region i język - .desc = Format dat, czasu i numerów odpowiadający wybranemu regionowi formatting = Formatowanie .dates = Daty .time = Godzina @@ -750,7 +781,6 @@ applications = Aplikacje ## Applications: Default Applications default-apps = Domyślne Aplikacje - .desc = Domyślna przeglądarka, klient e-mail, przeglądarka plików i inne aplikacje. .web-browser = Przeglądarka .file-manager = Przeglądarka plików .mail-client = Klient e-mail @@ -761,11 +791,11 @@ default-apps = Domyślne Aplikacje .terminal = Konsola .other-associations = Inne powiązania .text-editor = Edytor tekstu + .not-installed = Nie zainstalowane ## Applications: Startup Applications startup-apps = Aplikacje Startowe - .desc = Konfiguracja aplikacji uruchamianych po zalogowaniu. .add = Dodaj aplikacje .user = Aplikacje uruchamiane po zalogowaniu .none = Brak dodanych aplikacji startowych @@ -776,7 +806,6 @@ startup-apps = Aplikacje Startowe ## Applications: Legacy Applications legacy-applications = Kompatybilność Aplikacji X11 - .desc = Skalowanie i globalne skróty klawiszowe w aplikacjach systemu okien X11 legacy-app-global-shortcuts = Globalne skróty klawiszowe aplikacji X11 .desc = Globalne skróty umożliwiają by naciśnięcia klawiszy lub przycisków myszy w aplikacjach były rozpoznawane przez inne aplikacje do między innymi funkcjonalności jak naciśnij-by-rozmawiać lub naciśnij-by-wyciszyć. Domyślnie jest to zablokowane w aplikacjach X11, by nie miały dostępu do śledzenia naciśnięć klawiszy i przyciśnięć myszy w aplikacjach mogących zawierać poufne informacje. .none = Żadne przyciski @@ -801,7 +830,6 @@ system = System i konta ## System: About about = O systemie - .desc = Nazwa urządzenia, informacje o sprzęcie, domyślne ustawienia systemu about-device = Nazwa urządzenia .desc = Ta nazwa wyświetla się innym w sieci i na urządzeniach bluetooth about-hardware = Sprzęt @@ -822,12 +850,10 @@ about-related = Pokrewne ustawienia ## System: Firmware firmware = Firmware - .desc = Szczegóły firmware ## System: Users users = Użytkownicy - .desc = Uwierzytelnianie, logowanie i ekran blokady. .admin = Administrator .standard = Standardowy .profile-add = Wybierz obraz profilu @@ -850,3 +876,55 @@ sound-device-port-unplugged = Odłączone sound-hd-audio = Dźwięk HD sound-usb-audio = Dźwięk USB sound-device-profiles = Profile urządzeń +shadows-floating = Pływające okna + .clip = Dopasuj do rogów systemowych i zaaplikuj cienie +shadows-tiling = Pokafelkowane okna + .clip = Dopasuj do rogów systemowych + .shadow = Zaaplikuj cienie +shadow-and-corners = Cienie i rogi okna +workspaces-overview = Podgląd obszarów roboczych + .action-on-typing = Działanie po rozpoczęciu pisania + .none = Brak + .launcher = Otwórz Program Startowy + .applications = Otwórz Aplikacje +xdg-entry-mouse-keywords = COSMIC;Mysz;Myszka;Przyśpieszenie;Akceleracja;Skrolowanie;Scrollowanie; +xdg-entry-notifications-keywords = COSMIC;Powiadomienia;Blokada; +xdg-entry-startup-apps-keywords = COSMIC;Aplikacje Startowe;Aplikacje; +xdg-entry-wired-keywords = COSMIC;Przewodowe;LAN;Sieć;Łącze; +xdg-entry-appearance-keywords = COSMIC;Akcenty;Kolor;Ikony;Czcionki;Wygląd;Styl +xdg-entry-dock-keywords = COSMIC;Dok;Panel;Aplet +xdg-entry-panel-keywords = COSMIC;Panel;Aplet +xdg-entry-time-language-comment = Zarządzaj datą, czasem, regionem i językiem systemu +xdg-entry-desktop-keywords = COSMIC;Środowisko Graficzne; +xdg-entry-x11-applications-keywords = COSMIC;X11;Aplikacje;Gry;Zgodność; +xdg-entry-touchpad-keywords = COSMIC;Gładzik;Gesty; +xdg-entry-system-keywords = COSMIC;System;Informacje;Konta;Firmware;Mikrooprogramowanie; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Sieć;Połączenie;Łącze; +xdg-entry-applications-comment = Domyślne aplikacje, aplikacje startowe oraz ustawienia zgodności aplikacji X11 +xdg-entry-about-keywords = COSMIC;O programie +xdg-entry-a11y-keywords = COSMIC;Dostępność;A11y;Ekran;Czytnik;Lupa;Kontrast;Kolor; +xdg-entry-date-time-keywords = COSMIC;Czas;Strefa Czasowa; +xdg-entry-desktop-comment = Tapeta, wygląd, panel, dok, zarządzanie oknami i ustawienia obszarów roboczych +xdg-entry-input-comment = Ustawienia klawiatury i myszy +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-network-keywords = COSMIC;Sieci;Bezprzewodowe;WIFI;VPN; +xdg-entry-wireless = WI-FI +xdg-entry-workspaces-keywords = COSMIC;Obszary Robocze;Orientacja;Kierunek;Podgląd;Monitor;Wyświetlacz; +xdg-entry-system-comment = Informacje o Systemie, konta i aktualizacje firmware +xdg-entry-wallpaper-keywords = COSMIC;Tapeta;Tło;Pokaz Slajdów;Slajdy; +xdg-entry-users-keywords = COSMIC;Użytkownik;Konto; +xdg-entry-vpn-keywords = COSMIC;VPN;Sieć;Połączenie;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;System;Czas;Data;Region;Język; +xdg-entry-input-keywords = COSMIC;Wejście;Klawiatura;Mysz;Myszka; +xdg-entry-comment = Aplikacja ustawień dla środowiska graficznego COSMIC +xdg-entry-sound-keywords = COSMIC;Dźwięk;Audio;Powiadomienie; Pipewire; +xdg-entry-power-keywords = COSMIC;Zasilanie;Bateria +xdg-entry-default-apps-keywords = COSMIC;Dosyślne;Aplikacje +xdg-entry-keywords = COSMIC;Ustawienia; +xdg-entry-region-language-keywords = COSMIC;Region;Język;Data;Format;Czas;Ustawienia Regionalne;Położenie;Lokalizacja; +xdg-entry-applications-keywords = COSMIC;Domyślnie;Aplikacje;Startowe;X11;Zgodność +xdg-entry-keyboard-keywords = COSMIC;Klawiatura;Wejście;Źródła;Skróty; +xdg-entry-window-management-keywords = COSMIC;Okna;Zarządzanie;Kafelkowanie;Super;Klawisz;Przycisk; +xdg-entry-panel-comment = Podstawowy panel z menu i apletami +xdg-entry-displays-keywords = COSMIC;Wyświetlacz;Ekran; +no-search-results = Żadna sieć nie odpowiada twojemu wyszukiwaniu. diff --git a/i18n/pt-BR/cosmic_settings.ftl b/i18n/pt-BR/cosmic_settings.ftl index 7726cc4..cfc2d69 100644 --- a/i18n/pt-BR/cosmic_settings.ftl +++ b/i18n/pt-BR/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Conexões cabeadas - [wifi] Conexões Wi-Fi - [vpn] Conexões VPN - *[other] Conexões desconhecidas - } e perfis de conexão. add-network = Adicionar rede .profile = Adicionar perfil add-vpn = Adicionar VPN @@ -36,7 +29,7 @@ visible-networks = Redes visíveis identity = Identidade auth-dialog = Autenticação necessária .vpn-description = Digite o usuário e a senha exigidos pelo serviço de VPN. - .wifi-description = Digite a senha ou chave de criptografia. Você também pode conectar pressionando o botão “WPS” no roteador. + .wifi-description = Digite a senha ou chave de criptografia. Você também pode conectar pressionando o botão "WPS" no roteador. forget-dialog = Esquecer esta rede Wi-Fi? .description = Você precisará informar uma senha novamente para usar esta rede no futuro. network-device-state = @@ -45,7 +38,7 @@ network-device-state = .deactivating = Desconectando .disconnected = Desconectado .failed = Falha ao conectar - .ip-check = Checando conexão + .ip-check = Verificando conexão .ip-config = Solicitando IP e informações de roteamento .need-auth = Necessita de autenticação .prepare = Preparando para conectar @@ -77,7 +70,7 @@ vpn-error = Erro de VPN [password] a senha [password-flags] os sinalizadores da senha } da VPN com nmcli -wired = Rede Cabeada +wired = Rede cabeada .adapter = Adaptador de rede cabeada { $id } .connections = Conexões de rede cabeada .devices = Dispositivos de rede cabeada @@ -90,8 +83,8 @@ wireguard-dialog = Adicionar Dispositivo WireGuard ## Networking: Online Accounts -online-accounts = Contas Online - .desc = Adicionar contas, IMAP e SMTP, logins empresariais +online-accounts = Contas online + .desc = Adicionar contas, IMAP e SMTP, sessões corporativas # Bluetooth @@ -99,8 +92,7 @@ activate = Ativar confirm = Confirmar enable = Habilitar bluetooth = Bluetooth - .desc = Gerenciar dispositivos Bluetooth - .status = Este sistema está visível como { $aliases } enquanto a configuração do Bluetooth estiver aberta. + .status = Este sistema estará visível como { $aliases } enquanto a configuração do Bluetooth estiver aberta. .connected = Conectado .connecting = Conectando .disconnecting = Desconectando @@ -130,7 +122,7 @@ accessibility = Acessibilidade .high-contrast = Modo de alto contraste .invert-colors = Inverter cores .color-filters = Filtros de cor -hearing = Ouvindo +hearing = Audição .mono = Reproduzir áudio estéreo como mono default = Padrão magnifier = Ampliador de tela @@ -146,12 +138,12 @@ magnifier = Ampliador de tela { "" } { $zoom_out } para diminuir o zoom, } - Super + roda de rolagem para rolar com o mouse + Super + roda de rolagem .scroll_controls = Ativar zoom com o mouse ou o touchpad com Super + roda de rolagem .show_overlay = Mostrar a sobreposição do ampliador .increment = Incremento de zoom .signin = Iniciar o ampliador ao fazer login - .applet = Ativar/desativar a lupa no miniaplicativo do painel + .applet = Ativar/desativar o ampliador no miniaplicativo do painel .movement = A visualização ampliada se move .continuous = Continuamente com ponteiro .onedge = Quando o ponteiro atinge a borda @@ -165,13 +157,12 @@ color-filter = Tipo de filtro de cores ## Desktop -desktop = Área de Trabalho +desktop = Área de trabalho ## Desktop: Wallpaper wallpaper = Plano de fundo .change = Mudar imagem a cada - .desc = Imagens de plano de fundo, cores e opções de apresentação de slides .fit = Ajuste do plano de fundo .folder-dialog = Escolher pasta do plano de fundo .image-dialog = Escolher imagem do plano de fundo @@ -180,7 +171,7 @@ wallpaper = Plano de fundo .slide = Apresentação de slides add-color = Adicionar cor add-image = Adicionar imagem -all-displays = Todos as telas +all-displays = Todas as telas colors = Cores dialog-add = Adicionar fill = Preencher @@ -202,7 +193,6 @@ never = Nunca ## Desktop: Appearance appearance = Aparência - .desc = Cores de destaque e temas accent-color = Cor de destaque app-background = Fundo de janela auto = Automático @@ -254,7 +244,7 @@ window-management-appearance = Gerenciamento de Janelas ### Experimental -experimental-settings = Configuraçães Experimentais +experimental-settings = Configurações Experimentais icons-and-toolkit = Tema de ícones e toolkit interface-font = Fonte do sistema monospace-font = Fonte monoespaçada @@ -262,12 +252,10 @@ monospace-font = Fonte monoespaçada ## Desktop: Notifications notifications = Notificações - .desc = Não Perturbe, notificações da tela de bloqueio e configurações por aplicação ## Desktop: Panel panel = Painel - .desc = Barra principal do sistema para menus e miniaplicativos add = Adicionar add-applet = Adicionar miniaplicativo all = Todos @@ -310,15 +298,13 @@ panel-missing = Configuração do painel está ausente ## Desktop: Dock dock = Dock - .desc = Uma barra opcional com aplicativos e miniaplicativos ## Desktop: Window management window-management = Gerenciamento de janelas - .desc = Ação da tecla Super, opções de controle de janelas e opções adicionais de janelas lado a lado super-key = Ação da tecla Super (Windows) .launcher = Abrir o lançador - .workspaces = Abrir a visão geral das áreas de trabalho + .workspaces = Abrir a visão geral dos espaços de trabalho .applications = Abrir o menu de aplicativos .disable = Desabilitar edge-gravity = Janelas flutuantes gravitam em direção às bordas próximas @@ -333,24 +319,23 @@ focus-navigation = Navegação de foco ## Desktop: Workspaces -workspaces = Áreas de trabalho - .desc = Orientação e comportamento das áreas de trabalho -workspaces-behavior = Comportamento das áreas de trabalho - .dynamic = Áreas de trabalho dinâmicas - .dynamic-desc = Remove automaticamente áreas de trabalho vazias. - .fixed = Número fixo de áreas de trabalho - .fixed-desc = Adicione ou remova áreas de trabalho na visão geral. +workspaces = Espaços de trabalho +workspaces-behavior = Comportamento dos espaços de trabalho + .dynamic = Espaços de trabalho dinâmicos + .dynamic-desc = Remove automaticamente espaços de trabalho vazios. + .fixed = Número fixo de espaços de trabalho + .fixed-desc = Adiciona ou remove espaços de trabalho na visão geral. workspaces-multi-behavior = Comportamento de vários monitores - .span = Áreas de trabalho se expandem a todas as telas - .separate = Telas têm áreas de trabalho separadas -workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho - .show-number = Mostrar o número da área de trabalho - .show-name = Mostrar o nome da área de trabalho -workspaces-orientation = Orientação das áreas de trabalho + .span = Espaços de trabalho se expandem a todas as telas + .separate = Telas têm espaços de trabalho separados +workspaces-overview-thumbnails = Miniaturas da visão geral dos espaços de trabalho + .show-number = Mostrar o número do espaço de trabalho + .show-name = Mostrar o nome do espaço de trabalho +workspaces-orientation = Orientação dos espaços de trabalho .vertical = Vertical .horizontal = Horizontal -hot-corner = Hot Corner - .top-left-corner = Habilitar o canto superior esquerdo para exibir as áreas de trabalho +hot-corner = Canto ativo + .top-left-corner = Habilitar o canto superior esquerdo para exibir os espaços de trabalho ## Displays @@ -361,9 +346,8 @@ color = Cor .sidebar = Perfis de cor .temperature = Temperatura de cor display = Telas - .desc = Gerenciar telas e luz noturna .arrangement = Organização de telas - .arrangement-desc = Arraste os as telas para rearranjá-las + .arrangement-desc = Arraste as telas para rearranjá-las .enable = Ativar tela .external = Tela externa de { $size } { $output } .laptop = Tela de notebook de { $size } @@ -410,7 +394,6 @@ dialog = Diálogo ## Sound sound = Som - .desc = N/D sound-output = Saída .volume = Volume de saída .device = Dispositivo de saída @@ -434,7 +417,6 @@ sound-applications = Aplicações ## Power power = Energia e Bateria - .desc = Gerenciar as configurações de energia battery = Bateria .minute = { $value } { $value -> @@ -466,7 +448,7 @@ power-mode = Modo de energia .balanced = Balanceado .balanced-desc = Desempenho padrão e consumo de energia moderado .performance = Alto desempenho - .performance-desc = Máximo desempenho e consumo de energia elevado.. + .performance-desc = Máximo desempenho e consumo de energia elevado. .no-backend = Gerenciador de energia não encontrado. Instale o pacote system76-power ou power-profiles-daemon. power-saving = Opções de economia de energia .turn-off-screen-after = Desligar a tela após @@ -479,7 +461,6 @@ power-saving = Opções de economia de energia acceleration-desc = Ajustar automaticamente a sensibilidade com base na velocidade disable-while-typing = Desabilitar enquanto digita input-devices = Dispositivos de entrada - .desc = Dispositivos de entrada primary-button = Botão Primário .desc = Define a ordem dos botões físicos. .left = Esquerda @@ -498,8 +479,7 @@ fast = Rápido short = Curto long = Longo keyboard = Teclado - .desc = Layout, entrada de caracteres especiais, atalhos -keyboard-sources = Fontes de Entrada +keyboard-sources = Fontes de entrada .desc = As fontes de entrada podem ser alternadas usando a combinação de teclas Super+Espaço. Isso pode ser personalizado nas configurações de atalho de teclado. .move-up = Mover para cima .move-down = Mover para baixo @@ -507,10 +487,10 @@ keyboard-sources = Fontes de Entrada .view-layout = Ver layout do teclado .remove = Remover .add = Adicionar fonte de entrada -keyboard-special-char = Entrada de Caracteres Especiais +keyboard-special-char = Entrada de caracteres especiais .alternate = Tecla de caracteres especiais .compose = Tecla de composição - .compose-desc = A tecla de composição permite a inserção de uma grande variedade de caracteres. Para usá-la, pressione a composição seguida pela sequência de caracteres. Por exemplo, a tecla de composição seguida de "C" e "o" irá inserir "©", enquanto a tecla de composição seguida de "a" e "‘" irá inserir um "á". + .compose-desc = A tecla de composição permite a inserção de uma grande variedade de caracteres. Para usá-la, pressione a tecla de composição seguida pela sequência de caracteres. Por exemplo, a tecla de composição seguida das teclas C e O irá inserir "©", enquanto a tecla de composição seguida das teclas A e ' irá inserir um "á". .caps = Tecla Caps Lock keyboard-typing-assist = Digitação .repeat-rate = Taxa de repetição @@ -535,10 +515,10 @@ custom = Personalizado debug = Debug disabled = Desativado input-source-switch = Alterar fonte de entrada de idioma do teclado -migrate-workspace-prev = Migrar a área de trabalho para a saída anterior -migrate-workspace-next = Migrar a área de trabalho para a próxima saída +migrate-workspace-prev = Migrar o espaço de trabalho para a saída anterior +migrate-workspace-next = Migrar o espaço de trabalho para a próxima saída migrate-workspace = - Migrar a área de trabalho para a saída { $direction -> + Migrar o espaço de trabalho para a saída { $direction -> *[down] abaixo [left] à esquerda [right] à direita @@ -558,10 +538,10 @@ custom-shortcuts = Atalhos Personalizados modified = { $count } modificado(s) nav-shortcuts = Navegação .prev-output = Focar a saída anterior - .next-output = Focus a próxima saída - .last-workspace = Focar a última área de trabalho - .prev-workspace = Focar a área de trabalho anterior - .next-workspace = Focar a próxima área de trabalho + .next-output = Focar a próxima saída + .last-workspace = Focar o último espaço de trabalho + .prev-workspace = Focar o espaço de trabalho anterior + .next-workspace = Focar o próximo espaço de trabalho .focus = Focar a janela { $direction -> *[down] abaixo @@ -578,7 +558,7 @@ nav-shortcuts = Navegação [right] à direita [up] acima } - .workspace = Alternar para a área de trabalho { $num } + .workspace = Alternar para o espaço de trabalho { $num } manage-windows = Gerenciamento de Janelas .close = Fechar janela .maximize = Maximizar janela @@ -587,7 +567,7 @@ manage-windows = Gerenciamento de Janelas .resize-inwards = Redimensionar janela para dentro .resize-outwards = Redimensionar janela para fora .toggle-sticky = Ativar/Desativar janelas fixadas -move-windows = Mover Janelas +move-windows = Mover janelas .direction = Mover janela { $direction -> *[down] para baixo @@ -596,27 +576,27 @@ move-windows = Mover Janelas [up] para cima } .display = - Mover a janela um monitor { $direction -> + Mover janela um monitor { $direction -> *[down] abaixo [left] à esquerda [right] à direita [up] acima } .workspace = - Mover a janela uma área de trabalho { $direction -> + Mover janela um espaço de trabalho { $direction -> *[below] abaixo [left] à esquerda [right] à direita [above] acima } - .workspace-num = Mover a janela para a área de trabalho { $num } - .prev-workspace = Mover a janela para a área de trabalho anterior - .next-workspace = Mover a janela para a próxima área de trabalho - .last-workspace = Mover a janela para a última área de trabalho - .next-display = Mover a janela para a próxima tela - .prev-display = Mover a janela para a tela anterior - .send-to-prev-workspace = Mover a janela para a área de trabalho anterior - .send-to-next-workspace = Mover a janela para a próxima área de trabalho + .workspace-num = Mover janela para o espaço de trabalho { $num } + .prev-workspace = Mover janela para o espaço de trabalho anterior + .next-workspace = Mover janela para o próximo espaço de trabalho + .last-workspace = Mover janela para o último espaço de trabalho + .next-display = Mover janela para a próxima tela + .prev-display = Mover janela para a tela anterior + .send-to-prev-workspace = Mover janela para o espaço de trabalho anterior + .send-to-next-workspace = Mover janela para o próximo espaço de trabalho system-shortcut = Sistema .app-library = Abrir a biblioteca de aplicativos .brightness-down = Reduzir o brilho da tela @@ -643,7 +623,7 @@ system-shortcut = Sistema .web-browser = Abrir um navegador web .window-switcher = Alternar entre as janelas abertas .window-switcher-previous = Alternar entre as janelas abertas na ordem inversa - .workspace-overview = Abrir a visão geral das áreas de trabalho + .workspace-overview = Abrir a visão geral dos espaços de trabalho window-tiling = Janelas lado a lado .horizontal = Definir orientação horizontal .vertical = Definir orientação vertical @@ -660,7 +640,6 @@ zoom-out = Diminuir o zoom ## Input: Mouse mouse = Mouse - .desc = Velocidade do mouse, aceleração e rolagem natural. .speed = Velocidade do mouse .acceleration = Ativar aceleração do mouse @@ -670,41 +649,38 @@ click-behavior = Comportamento de Cliques .click-finger = Clique secundário com dois dedos e clique do meio com três dedos .button-areas = Clique secundário no canto inferior direito e clique do meio no centro inferior pinch-to-zoom = Movimento de pinça para ampliar - .desc = Use dois dedos para ampliar o conteúdo, para aplciativos que suportam zoom + .desc = Use dois dedos para ampliar o conteúdo, para aplicativos que suportam zoom tap-to-click = Toque para clicar .desc = Habilita o toque de um dedo para clique primário, toque de dois dedos para clique secundário e toque de três dedos para o clique do meio touchpad = Touchpad .acceleration = Habilitar aceleração do touchpad - .desc = Velocidade do touchpad, opções de clique e gestos. .speed = Velocidade do touchpad ## Input: Gestures gestures = Gestos - .four-finger-down = Deslizar quatros dedos para baixo + .four-finger-down = Deslizar quatro dedos para baixo .four-finger-left = Deslizar quatro dedos para a esquerda .four-finger-right = Deslizar quatro dedos para a direita .four-finger-up = Deslizar quatro dedos para cima .three-finger-any = Deslizar três dedos para qualquer direção -switch-workspaces = Alternar entre áreas de trabalho +switch-workspaces = Alternar entre espaços de trabalho .horizontal = Deslizar quatro dedos para a direita ou esquerda .vertical = Deslizar quatro dedos para cima ou para baixo switch-between-windows = Alternar entre janelas open-application-library = Abrir o menu de aplicativos -open-workspaces-view = Abrir a visão geral das áreas de trabalho +open-workspaces-view = Abrir a visão geral dos espaços de trabalho ## Time & Language time = Hora e Idioma - .desc = N/D time-date = Data e Hora - .desc = Fuso horário, definições automáticas de relógio e algumas formatações de hora. .auto = Definir automaticamente .auto-ntp = A data e a hora serão atualizadas automaticamente quando o fuso horário for definido time-zone = Fuso Horário .auto = Fuso horário automático .auto-info = Requer um serviço de localização e acesso à Internet -time-format = Formato de Data e Hora +time-format = Formato de data e hora .twenty-four = Formato de 24 horas .show-seconds = Mostrar segundos .first = Primeiro dia da semana @@ -714,7 +690,6 @@ time-format = Formato de Data e Hora .sunday = Domingo .monday = Segunda-feira time-region = Região e Idioma - .desc = Formatar datas, horas e números com base na sua região formatting = Formatação .dates = Datas .time = Horas @@ -722,8 +697,8 @@ formatting = Formatação .numbers = Números .measurement = Medidas .paper = Papel -preferred-languages = Idiomas Preferidos - .desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo login. +preferred-languages = Idiomas preferidos + .desc = A ordem dos idiomas determina qual idioma será usado para a tradução do desktop. As alterações entram em vigor no próximo início de sessão. add-language = Adicionar idioma .context = Adicionar Idioma install-additional-languages = Instalar idiomas adicionais @@ -736,7 +711,6 @@ applications = Aplicativos ## Applications: Default Applications default-apps = Aplicativos Padrão - .desc = Estabelecer os aplicativos padrões para o navegador web, o cliente de correio eletrônico, o gestor de arquivos e outros aplicativos .web-browser = Navegador web .file-manager = Gerenciador de arquivos .mail-client = Cliente de e-mail @@ -747,13 +721,13 @@ default-apps = Aplicativos Padrão .terminal = Terminal .other-associations = Outras associações .text-editor = Editor de texto + .not-installed = Não instalado ## Applications: Startup Applications -startup-apps = Aplicativos de Inicialização - .desc = Configurar aplicativos que são iniciados automaticamente ao fazer login no sistema. +startup-apps = Aplicativos de inicialização .add = Adicionar aplicativo - .user = Aplicativos que serão iniciados ao fazer login no sistema + .user = Aplicativos que serão iniciados ao iniciar sessão .none = Não há aplicativos de inicialização adicionados .remove-dialog-title = Remover { $name }? .remove-dialog-description = Remover esse aplicativo de inicialização? @@ -761,8 +735,7 @@ startup-apps = Aplicativos de Inicialização ## Applications: Legacy Applications -legacy-applications = Compatibilidade com Aplicativos X11 - .desc = Dimensionamento de aplicativos de sistema de janelas X11 e atalhos globais +legacy-applications = Compatibilidade com aplicativos X11 legacy-app-global-shortcuts = Atalhos globais em aplicativos X11 .desc = Atalhos globais permitem que pressionamentos de teclas e eventos de botão do mouse realizados em aplicativos sejam reconhecidos por outros aplicativos para recursos como push-to-talk ou push-to-mute. Por padrão, isso é desabilitado em aplicativos X11 para garantir que outros aplicativos não possam monitorar eventos de teclado e mouse contendo informações confidenciais. .none = Nenhuma tecla @@ -787,7 +760,6 @@ system = Sistema e Contas ## System: About about = Sobre - .desc = Nome do dispositivo, informações de hardware, configurações padrão do sistema about-device = Nome do dispositivo .desc = Aparece para outros dispositivos de rede ou Bluetooth about-hardware = Hardware @@ -808,12 +780,10 @@ about-related = Configurações relacionadas ## System: Firmware firmware = Firmware - .desc = Detalhes do firmware ## System: Users users = Usuários - .desc = Autenticação e contas de usuário. .admin = Administrador .standard = Padrão .profile-add = Escolher uma imagem de perfil @@ -827,12 +797,117 @@ invalid-username = Nome de usuário inválido password-mismatch = A senha e a confirmação devem ser iguais save = Salvar add-another-keybinding = Adicionar outra tecla de atalho -qr-code-unavailable = QR code inválido +qr-code-unavailable = Código QR não disponível network-name = Nome da rede share = Compartilhar rede -scan-to-connect-description = Escaneie o QR code para se conectar a esta rede. +scan-to-connect-description = Leia o código QR para se conectar a esta rede. place-here = Colocar miniaplicativos aqui sound-device-port-unplugged = Desplugado -sound-hd-audio = Áudio HD +sound-hd-audio = Áudio de alta definição sound-usb-audio = Áudio USB sound-device-profiles = Perfis de dispositivo +shadows-floating = Janelas flutuantes + .clip = Corresponder com os cantos do sistema e aplicar sombras +shadows-tiling = Janelas lado a lado + .clip = Corresponder com os cantos do sistema + .shadow = Aplicar sombras +shadow-and-corners = Cantos e sombras de janelas +workspaces-overview = Visão geral dos espaços de trabalho + .action-on-typing = Ação ao digitar + .none = Nenhuma + .launcher = Abrir lançador + .applications = Abrir aplicativos +xdg-entry-touchpad = Touchpad +xdg-entry-wired = Rede cabeada +xdg-entry-startup-apps-comment = Configurar aplicativos que serão executados ao iniciar sessão +xdg-entry-region-language = Região e Idioma +xdg-entry-mouse-keywords = COSMIC;Mouse;Aceleração;Rolagem; +xdg-entry-bluetooth-comment = Gerenciar dispositivos Bluetooth +xdg-entry-notifications-keywords = COSMIC;Notificação;Bloqueio; +xdg-entry-startup-apps-keywords = COSMIC;Iniciar;Inicialização;Aplicativo; +xdg-entry-default-apps-comment = Navegador padrão, cliente de email, navegador de arquivos e outros aplicativos +xdg-entry-keyboard-comment = Fontes de entrada, alternância, entrada de caracteres especiais, atalhos +xdg-entry-wired-keywords = COSMIC;Wired;Cabeada;LAN;Rede;Conexão; +xdg-entry-power = Energia e bateria +xdg-entry-appearance-keywords = COSMIC;Destaque;Accent;Cor;Ícone;Fonte;Tema +xdg-entry-mouse = Mouse +xdg-entry-dock-keywords = COSMIC;Dock;Painel;Applet;Miniaplicativo +xdg-entry-mouse-comment = Velocidade do mouse, aceleração e rolagem natural +xdg-entry-system = Sistema e Contas +xdg-entry-panel-keywords = COSMIC;Painel;Applet;Miniaplicativo +xdg-entry-window-management = Gerenciamento de janelas +xdg-entry-a11y = Acessibilidade +xdg-entry-time-language-comment = Gerenciar data, hora, região e idioma do sistema +xdg-entry-desktop-keywords = COSMIC;Desktop;Área;Trabalho; +xdg-entry-x11-applications-keywords = COSMIC;X11;Aplicativo;Jogos;Compatibilidade; +xdg-entry-displays-comment = Gerenciar configurações de tela +xdg-entry-touchpad-keywords = COSMIC;Touchpad;Gestos; +xdg-entry-time-language = Hora e Idioma +xdg-entry-users = Usuários +xdg-entry-system-keywords = COSMIC;Sistema;Info;Contas;Firmware; +xdg-entry-default-apps = Aplicativos padrão +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Rede;Conexão; +xdg-entry-applications-comment = Aplicativos padrão, aplicativos de inicialização e configurações de compatibilidade com aplicativos X11 +xdg-entry-about-keywords = COSMIC;Sobre +xdg-entry-panel = Painel +xdg-entry-notifications = Notificações +xdg-entry-a11y-keywords = COSMIC;Acessibilidade;A11y;Tela;Leitor;Lupa;Ampliador;Contraste;Cor; +xdg-entry-wireless-comment = Conexões Wi-Fi e perfis de conexão +xdg-entry-desktop = Área de trabalho +xdg-entry-date-time-keywords = COSMIC;Hora;Fuso; +xdg-entry-desktop-comment = Plano de fundo, aparência, painel, dock, gerenciamento de janelas e configurações de espaços de trabalho +xdg-entry-wallpaper = Plano de fundo +xdg-entry-keyboard = Teclado +xdg-entry-a11y-comment = Leitor de tela, ampliador de tela, alto contraste e filtros de cor +xdg-entry-displays = Telas +xdg-entry-network = Rede e conexão sem fio +xdg-entry-date-time = Data e hora +xdg-entry-users-comment = Autenticação e contas de usuário +xdg-entry-input-comment = Configurações de teclado e mouse +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-dock-comment = Uma barra opcional para aplicativos e miniaplicativos +xdg-entry-network-keywords = COSMIC;Rede;Conexão;fio;Wireless;WiFi;VPN; +xdg-entry-wallpaper-comment = Imagens do plano de fundo, cores e opções de transição +xdg-entry-dock = Dock +xdg-entry-startup-apps = Aplicativos de Inicialização +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Espaço;Trabalho;Orientação;Visão;Geral;Monitor;Tela; +xdg-entry-system-comment = Informações do sistema, contas e atualizações de firmware +xdg-entry-x11-applications-comment = Escalonamento de aplicativos com sistema de janelas X11, tela primária e atalhos globais +xdg-entry-region-language-comment = Formatação de datas, horas e números baseados em sua região +xdg-entry-wallpaper-keywords = COSMIC;Wallpaper;PapelParede;Background;Slideshow;Transição;Plano;Fundo; +xdg-entry-users-keywords = COSMIC;Usuário;Conta; +xdg-entry-about-comment = Nome do dispositivo, informações de hardware, padrões do sistema operacional +xdg-entry-vpn-keywords = COSMIC;VPN;Rede;Conexão;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = Cores de destaque e temas +xdg-entry-time-language-keywords = COSMIC;Sistema;Hora;Data;Região;idioma; +xdg-entry-input-keywords = COSMIC;Entrada;Teclado;Mouse; +xdg-entry-comment = Aplicativo de configurações para o ambiente COSMIC +xdg-entry-notifications-comment = Modo "Não perturbe", notificações no bloqueio de tela e configurações por aplicativo +xdg-entry-applications = Aplicativos +xdg-entry-sound-keywords = COSMIC;Som;Áudio;Alerta;Pipewire; +xdg-entry-power-keywords = COSMIC;Energia;Bateria +xdg-entry-default-apps-keywords = COSMIC;Padrão;Aplicativo +xdg-entry-keywords = COSMIC;Configurações; +xdg-entry-region-language-keywords = COSMIC;Região;Idioma;Data;Formato;Hora;Localização; +xdg-entry-about = Sobre +xdg-entry-input = Dispositivos de entrada +xdg-entry-applications-keywords = COSMIC;Padrão;Aplicativo;Inicialização;Iniciar;X11;Compatibilidade +xdg-entry-sound-comment = Configurações de áudio para dispositivos, alertas e aplicativos +xdg-entry-touchpad-comment = Velocidade do touchpad, opções do clique e gestos +xdg-entry-keyboard-keywords = COSMIC;Teclado;Entrada;Dispositivos;Atalhos; +xdg-entry-vpn-comment = Conexões VPN e perfis de conexão +xdg-entry-appearance = Aparência +xdg-entry-window-management-keywords = COSMIC;Janela;Gerenciamento;Tiling;Lado;Super;Tecla; +xdg-entry-workspaces-comment = Orientação dos espaços de trabalho, visão geral e comportamento com monitores múltiplos +xdg-entry-network-comment = Gerenciar conexões de rede +xdg-entry-panel-comment = Barra de sistema primária para menus e miniaplicativos +xdg-entry-sound = Som +xdg-entry-power-comment = Modos de energia e opções de economia de energia +xdg-entry-displays-keywords = COSMIC;Tela;Monitor; +xdg-entry-workspaces = Espaços de trabalho +xdg-entry-date-time-comment = Fuso horário, configurações de relógio e formatação de hora +xdg-entry-x11-applications = Compatibilidade com aplicativos X11 +xdg-entry-window-management-comment = Ação da tecla Super, opções de controle de janela e opções de janelas lado a lado (tiling) +xdg-entry-wired-comment = Conexões de rede com fio e perfis de conexão +no-search-results = Nenhuma rede corresponde à sua pesquisa. diff --git a/i18n/pt/cosmic_settings.ftl b/i18n/pt/cosmic_settings.ftl index ad67976..c5e60f3 100644 --- a/i18n/pt/cosmic_settings.ftl +++ b/i18n/pt/cosmic_settings.ftl @@ -2,6 +2,62 @@ app = Definições COSMIC unknown = Desconhecido number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = Sobre +xdg-entry-about-comment = Nome do dispositivo, informações de hardware e padrões do sistema operacional +xdg-entry-a11y = Toegankelijkheden +xdg-entry-a11y-comment = Configurações de acessibilidade +xdg-entry-appearance = Aparência +xdg-entry-appearance-comment = Cores de destaque e temas +xdg-entry-applications = Aplicativos +xdg-entry-applications-comment = Gerenciar configurações de aplicativos +xdg-entry-bluetooth-comment = Gerenciar dispositivos Bluetooth +xdg-entry-date-time = Data e Hora +xdg-entry-date-time-comment = Fuso horário, hora automática e formatação +xdg-entry-default-apps = Aplicativos padrão +xdg-entry-default-apps-comment = Navegador web padrão, cliente de email, gestor de arquivos e outros aplicativos +xdg-entry-desktop = Área de Trabalho +xdg-entry-displays = Telas +xdg-entry-displays-comment = Opções de tela, monitores, modos gráficos e luz noturna +xdg-entry-dock = Dock +xdg-entry-dock-comment = Painel com aplicativos fixados e outros miniaplicativos +xdg-entry-input = Dispositivos de Entrada +xdg-entry-keyboard = Teclado +xdg-entry-keyboard-comment = Métodos de entrada, entrada de caracteres especiais, atalhos +xdg-entry-mouse = Mouse +xdg-entry-mouse-comment = Velocidade do mouse, aceleração e rolagem natural +xdg-entry-network = Rede e Wi-Fi +xdg-entry-network-comment = Gerenciar conexões de rede +xdg-entry-notifications = Notificações +xdg-entry-notifications-comment = "Não Perturbe", notificações na tela de bloqueio e ajustes por aplicativo +xdg-entry-panel = Panel +xdg-entry-panel-comment = Barra superior com controles e menus +xdg-entry-power = Energia e Bateria +xdg-entry-power-comment = Modos de energia e opções de economia de energia +xdg-entry-region-language = Região e Idioma +xdg-entry-region-language-comment = Formatação de datas, horas e números baseados em sua região +xdg-entry-sound = Som +xdg-entry-sound-comment = Configurações de áudio para dispositivos, alertas e aplicativos +xdg-entry-system = Sistema e Contas +xdg-entry-time-language = Hora e Idioma +xdg-entry-touchpad = Touchpad +xdg-entry-touchpad-comment = Velocidade do touchpad, opções de clique, gestos +xdg-entry-users = Usuários +xdg-entry-users-comment = Autenticação e contas de usuário +xdg-entry-vpn-comment = Conexões VPN e perfis de conexão +xdg-entry-wallpaper = Papel de Parede +xdg-entry-wallpaper-comment = Imagens de plano de fundo, cores, e opções de exibição em slide +xdg-entry-window-management = Gerenciamento de Janelas +xdg-entry-window-management-comment = Ação da tecla Super, opções de controle de janela e opções adicionais de janelas em mosaico +xdg-entry-wired = Rede Cabeada +xdg-entry-wired-comment = Conexões de rede cabeada e perfis de conexão +xdg-entry-wireless-comment = Conexões de rede sem fio e perfis de conexão +xdg-entry-workspaces = Áreas de Trabalho +xdg-entry-workspaces-comment = Orientação das áreas de trabalho, visão geral e comportamento com vários monitores +xdg-entry-x11-applications = Compatibilidade com aplicativos X11. +xdg-entry-x11-applications-comment = Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais + ## Networking: Wired wired = Por cabo @@ -157,10 +213,10 @@ dock = Doca window-management = Gestão de Janelas .desc = Ação da tecla Super, opções de controlo de janelas, e opções adicionais de alinhamento de janelas. -super-key = Tecla Super - .launcher = Abrir Lançador - .workspaces = Abrir Áreas de trabalho - .applications = Abrir Aplicações +super-key = Ação da tecla Super + .launcher = Abrir lançador + .workspaces = Abrir áreas de trabalho + .applications = Abrir aplicações .disable = Desativar window-controls = Controlos de janela .maximize = Mostrar o botão de maximizar @@ -170,23 +226,22 @@ window-controls = Controlos de janela ## Desktop: Workspaces workspaces = Áreas de trabalho - .desc = Definir número, comportamento e posição da área de trabalho. -workspaces-behavior = Comportamento da área de trabalho +workspaces-behavior = Comportamento das áreas de trabalho .dynamic = Áreas de trabalho dinâmicas .dynamic-desc = Remove automaticamente áreas de trabalho vazias. .fixed = Número fixo de áreas de trabalho .fixed-desc = Adiciona ou remove áreas de trabalho na visão geral. workspaces-multi-behavior = Comportamento de vários monitores - .span = Áreas de trabalho expandem os ecrãs + .span = Áreas de trabalho se expandem a todos os ecrãs .separate = Ecrãs têm áreas de trabalho separadas -workspaces-overview-thumbnails = Miniaturas da visão geral da área de trabalho - .show-number = Mostrar número da área de trabalho - .show-name = Mostrar nome da área de trabalho +workspaces-overview-thumbnails = Miniaturas da visão geral das áreas de trabalho + .show-number = Mostrar o número da área de trabalho + .show-name = Mostrar o nome da área de trabalho workspaces-orientation = Orientação das áreas de trabalho .vertical = Vertical .horizontal = Horizontal hot-corner = Canto ativo - .top-left-corner = Ativar o canto superior esquerdo para as áreas de trabalho + .top-left-corner = Ativar o canto superior esquerdo para exibir as áreas de trabalho ## Desktop: Display @@ -400,7 +455,7 @@ manage-windows = Gerir janelas .resize-inwards = Redimensionar janela para dentro .resize-outwards = Redimensionar janela para fora .toggle-sticky = Tornar janela fixa -move-windows = Mover Janelas +move-windows = Mover janelas .direction = Mover janela { $direction -> *[down] para baixo @@ -425,7 +480,7 @@ move-windows = Mover Janelas .workspace-num = Mover janela para a área de trabalho { $num } .prev-workspace = Mover janela para a área de trabalho anterior .next-workspace = Mover janela para a área de trabalho seguinte - .last-workspace = Mover janela para a última área de trabalho + .last-workspace = Mover janela para o última área de trabalho .next-display = Mover janela para o ecrã seguinte .prev-display = Mover janela para o ecrã anterior .send-to-prev-workspace = Mover janela para a área de trabalho anterior @@ -448,8 +503,9 @@ system-shortcut = Sistema .play-prev = Faixa anterior .poweroff = Desligar .screenshot = Tirar uma captura de ecrã + .suspend = Suspender .terminal = Abrir o terminal - .touchpad-toggle = Ativar painel tátil + .touchpad-toggle = Ativar ou desativar o painel tátil .volume-lower = Diminuir o volume da saída do áudio .volume-raise = Aumentar o volume da saída do áudio .web-browser = Abrir um navegador de Internet @@ -568,13 +624,6 @@ password = Palavra-passe username = Nome de utilizador dbus-connection-error = Falha de ligação no DBus ok = OK -connections-and-profiles = - { $variant -> - [wired] Ligações por cabo - [wifi] Ligações Wi-Fi - [vpn] Ligações VPN - *[other] Ligações desconhecidas - } e perfis de ligação. add-network = Adicionar rede .profile = Adicionar perfil add-vpn = Adicionar VPN @@ -803,3 +852,10 @@ full-name = Nome completo invalid-username = Nome de utilizador inválido. password-mismatch = A palavra-passe e a confirmação devem ser iguais. save = Guardar +xdg-entry-desktop-comment = Papel de parede, aparência, painel, doca, gestão de janelas e definições de áreas de trabalho +xdg-entry-workspaces-keywords = COSMIC;Área;Trabalho;Orientação;Visão;Geral;Monitor;Ecrã; +workspaces-overview = Visão geral das áreas de trabalho + .action-on-typing = Ação ao digitar + .none = Nenhuma + .launcher = Abrir lançador + .applications = Abrir aplicações diff --git a/i18n/ro/cosmic_settings.ftl b/i18n/ro/cosmic_settings.ftl index 46fc0d2..983bdea 100644 --- a/i18n/ro/cosmic_settings.ftl +++ b/i18n/ro/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Cablu - [wifi] Wi-Fi - [vpn] VPN - *[other] Necunoscut - } conexiuni și profile de conexiune. add-network = Adaugă o rețea .profile = Adaugă un profil add-vpn = Adaugă un VPN diff --git a/i18n/ru/cosmic_settings.ftl b/i18n/ru/cosmic_settings.ftl index 788c13c..6240086 100644 --- a/i18n/ru/cosmic_settings.ftl +++ b/i18n/ru/cosmic_settings.ftl @@ -1,4 +1,4 @@ -app = Параметры COSMIC +app = Параметры unknown = Неизвестно number = { $number } @@ -9,7 +9,6 @@ desktop = Рабочий стол ## Desktop: Appearance appearance = Внешний вид - .desc = Акцентные цвета и оформление. accent-color = Акцентный цвет app-background = Фон приложений или окон auto = Автоматически @@ -20,7 +19,7 @@ copy-to-clipboard = Копировать в буфер обмена dark = Тёмное export = Экспорт hex = Hex -import = Импортировать +import = Импорт light = Светлое mode-and-colors = Цвета и оформление recent-colors = Недавние цвета @@ -34,27 +33,26 @@ auto-switch = Автоматически переключать оформлен .next-sunrise = Сменится на светлое при следующем восходе .next-sunset = Сменится на тёмное при следующем закате container-background = Фон контейнера - .desc-detail = Цвет фона контейнера используется для боковой панели навигации, бокового меню, диалоговых окон и других подобных виджетов. По умолчанию он автоматически определяется на основе фона приложения или окна. - .reset = Вернуть на автоматически - .desc = Цвет фона контейнера используется для боковой панели навигации, бокового меню, диалоговых окон и других подобных виджетов. + .desc-detail = Цвет фона контейнера используется для боковой панели навигации, бокового меню, диалоговых окон и других подобных виджетов. По умолчанию он автоматически определяется на основе фона окна. + .reset = Вернуть автоматический + .desc = Используется для боковой панели навигации, бокового меню, диалоговых окон и других подобных виджетов control-tint = Оттенок компонентов управления - .desc = Используется для фонов стандартных кнопок, полей ввода текста и других подобных компонентов. + .desc = Используется для фонов стандартных кнопок, полей ввода текста и других подобных компонентов frosted = Эффект матового стекла на интерфейсе системы - .desc = Размытие фона для верхней панели, дока, апплетов, панели запуска и библиотеки приложений. + .desc = Размытие фона для верхней панели, дока, апплетов, панели запуска и библиотеки приложений experimental-settings = Экспериментальные настройки -enable-export = Применить это оформление к приложениям GNOME. +enable-export = Применить текущее оформление к приложениям GNOME. .desc = Не все наборы инструментов поддерживают автоматическое переключение. После смены темы может потребоваться перезапуск приложений, не относящихся к COSMIC. icon-theme = Тема значков - .desc = Применить другой набор значков для приложений. + .desc = Применить другой набор значков для приложений text-tint = Оттенок текста интерфейса - .desc = Цвет, используемый для выведения цветов текста интерфейса, обладающих достаточной контрастностью на различных поверхностях. + .desc = Цвет, используемый для выведения цветов текста интерфейса, обладающих достаточной контрастностью на различных поверхностях style = Стиль .round = Округлый .slightly-round = Слегка округлый .square = Прямой # interface density left out for now window-management = Управление окнами - .desc = Действие клавиши Super, элементы управления, дополнительные настройки размещения. ## Desktop: Display @@ -65,7 +63,6 @@ color = Цвет .sidebar = Цветовые профили .temperature = Цветовая температура display = Экраны - .desc = Управление экранами и ночной подсветкой .arrangement = Расположение экранов .arrangement-desc = Перетаскивайте экраны, чтобы изменить их расположение. .enable = Включить экран @@ -92,7 +89,7 @@ mirroring = Зеркальное отображение } night-light = Ночной свет .auto = Автоматически (от заката до рассвета) - .desc = Уменьшите синий свет, используя более тёплые цвета. + .desc = Уменьшите синий свет, используя более тёплые цвета orientation = Ориентация .standard = Стандартная .rotate-90 = Поворот на 90° @@ -109,12 +106,10 @@ dialog = Диалог ## Desktop: Notifications notifications = Уведомления - .desc = Режим «Не беспокоить», уведомления на экране блокировки, настройка для приложений. ## Desktop: Options dock = Док - .desc = Панель с закреплёнными приложениями. hot-corner = Активные углы .top-left-corner = Открывать рабочие столы при наведении в левый верхний угол super-key = Клавиша Super @@ -130,7 +125,6 @@ window-controls = Элементы управления окнами ## Desktop: Panel panel = Панель - .desc = Верхняя панель с кнопками управления рабочим столом и меню. add = Добавить add-applet = Добавить апплет all = Все @@ -174,7 +168,6 @@ panel-missing = Отсутствует конфигурация панели wallpaper = Фон .change = Сменять изображение каждые - .desc = Фоновые изображения, цвета и параметры слайд-шоу. .fit = Подгонять фон .folder-dialog = Выбрать папку с изображениями .image-dialog = Выбрать изображение @@ -204,7 +197,6 @@ x-hours = ## Desktop: Workspaces workspaces = Рабочие столы - .desc = Настроить порядок, поведение и расположение рабочих столов. workspaces-behavior = Поведение рабочих столов .dynamic = Динамические рабочие столы .dynamic-desc = Пустые рабочие столы удаляются автоматически. @@ -236,11 +228,9 @@ online-accounts = Онлайн-аккаунты ## Time & Language time = Время и язык - .desc = Н/Д time-date = Дата и время - .desc = Часовой пояс, параметры автоматической настройки и форматирования времени. .auto = Устанавливать автоматически - .auto-ntp = Дата и время будут автоматически обновлены после установки часового пояса. + .auto-ntp = Дата и время будут автоматически обновлены после установки часового пояса time-zone = Часовой пояс .auto = Устанавливать автоматически .auto-info = Требуются службы определения местоположения и доступ в Интернет @@ -254,12 +244,10 @@ time-format = Формат даты и времени .sunday = Воскресенье .monday = Понедельник time-region = Регион и язык - .desc = Форматирование даты, времени и чисел в зависимости от региона. ## Sound sound = Звук - .desc = Н/Д sound-output = Выход .volume = Выходная громкость .device = Выходное устройство @@ -285,9 +273,8 @@ system = Система и учётные записи ## System: About about = О системе - .desc = Имя устройства, информация об оборудовании, настройки ОС по умолчанию. about-device = Имя устройства - .desc = Это имя видно для других устройств по сети или Bluetooth. + .desc = Это имя видно для других устройств по сети или Bluetooth about-hardware = Оборудование .model = Модель оборудования .memory = Память @@ -297,6 +284,7 @@ about-hardware = Оборудование about-os = Операционная система .os = Операционная система .os-architecture = Архитектура ОС + .kernel = Версия ядра .desktop-environment = Среда рабочего стола .windowing-system = Оконная система about-related = Связанные настройки @@ -305,22 +293,19 @@ about-related = Связанные настройки ## System: Firmware firmware = Прошивка - .desc = Сведения о прошивке. ## System: Users users = Пользователи - .desc = Аутентификация и вход в систему, экран блокировки. .admin = Администратор .standard = Обычный .profile-add = Выберите изображение профиля ## Input -acceleration-desc = Автоматически регулирует чувствительность панели в зависимости от скорости. +acceleration-desc = Автоматически регулирует чувствительность панели в зависимости от скорости disable-while-typing = Отключать при наборе текста input-devices = Устройства ввода - .desc = Устройства ввода primary-button = Основная кнопка .desc = Настраивает порядок физических кнопок. .left = Левая @@ -339,7 +324,6 @@ fast = Быстро short = Короткая long = Длинная keyboard = Клавиатура - .desc = Источники ввода, переключение, специальные символы и сочетания клавиш. keyboard-sources = Источники ввода .desc = Источники ввода можно переключать по комбинации клавиш Super+Space. Это поведение можно изменить в настройках сочетаний клавиш. .move-up = Переместить вверх @@ -351,6 +335,7 @@ keyboard-sources = Источники ввода keyboard-special-char = Ввод специальных символов .alternate = Клавиша альтернативных символов .compose = Клавиша Compose + .compose-desc = Клавиша Compose позволяет вводить широкое множество символов. Для этого нужно нажать на неё, а затем ввести последовательность «составляющих» символов. Например, нажатие Compose, латинских «o» и «c» введёт «©», а нажатие Compose, «з» и «=» — «₽». .caps = Клавиша Caps Lock keyboard-typing-assist = Ввод текста .repeat-rate = Скорость повторения @@ -381,7 +366,7 @@ replace = Заменить shortcut-name = Название сочетания клавиш system-controls = Системные элементы управления terminate = Завершить -toggle-stacking = Переключить окна стопкой +toggle-stacking = Собрать/распустить стопку окон type-key-combination = Введите комбинацию клавиш custom-shortcuts = Пользовательские сочетания клавиш .add = Добавить сочетание клавиш @@ -418,7 +403,7 @@ manage-windows = Управление окнами .minimize = Свернуть окно .resize-inwards = Изменить размер изнутри .resize-outwards = Изменить размер снаружи - .toggle-sticky = Переключить прилипание окна + .toggle-sticky = Вкл./выкл закрепление окна move-windows = Перемещение окон .direction = Переместить окно { $direction -> @@ -467,6 +452,7 @@ system-shortcut = Системные .play-prev = Предыдущий трек .poweroff = Завершение работы .screenshot = Сделать снимок экрана + .suspend = Спящий режим .terminal = Открыть терминал .touchpad-toggle = Вкл/выкл сенсорную панель .volume-lower = Уменьшить громкость аудиовыхода @@ -489,7 +475,6 @@ replace-shortcut-dialog = Заменить сочетание клавиш? ## Input: Mouse mouse = Мышь - .desc = Скорость и ускорение мыши, естественная прокрутка. .speed = Скорость мыши .acceleration = Включить ускорение мыши @@ -499,12 +484,11 @@ click-behavior = Поведение при нажатии .click-finger = Вторичное нажатие двумя пальцами и среднее нажатие тремя пальцами .button-areas = Вторичное нажатие в правом нижнем углу и среднее нажатие в центре внизу pinch-to-zoom = Сведение и разведение для масштабирования - .desc = Используйте два пальца для увеличения содержимого в приложениях, поддерживающих масштабирование. + .desc = Используйте два пальца для увеличения содержимого в приложениях, поддерживающих масштабирование tap-to-click = Касание для нажатия - .desc = Включает касание одним пальцем для основного нажатия, двумя пальцами для вторичного и тремя пальцами для среднего. + .desc = Включает касание одним пальцем для основного нажатия, двумя пальцами для вторичного и тремя пальцами для среднего touchpad = Сенсорная панель .acceleration = Включить ускорение сенсорной панели - .desc = Скорость сенсорной панели, параметры нажатия, жесты. .speed = Скорость сенсорной панели ## Input: Gestures @@ -522,7 +506,6 @@ open-workspaces-view = Открыть обзор рабочих столов ## Power power = Питание и аккумулятор - .desc = Управление настройками электропитания power-mode = Режим питания .performance = Высокая производительность .balanced = Сбалансированный @@ -536,13 +519,6 @@ save = Сохранить connect = Подключиться dbus-connection-error = Не удалось подключиться к DBus ok = ОК -connections-and-profiles = - { $variant -> - [wired] Проводные подключения - [wifi] Подключения по Wi-Fi - [vpn] Подключения через VPN - *[other] Другие подключения - } и профили соединений. add-network = Добавить сеть .profile = Добавить профиль add-vpn = Добавить VPN @@ -614,7 +590,6 @@ activate = Активировать confirm = Подтвердить enable = Включить bluetooth = Bluetooth - .desc = Управление Bluetooth-устройствами .status = Эта система доступна как { $aliases }, пока открыты настройки Bluetooth. .connected = Подключено .connecting = Подключение @@ -695,7 +670,7 @@ vrr = Динамическая частота обновления .force = Всегда .auto = Автоматически .disabled = Отключена -battery = Батарея +battery = Аккумулятор .minute = { $value } { $value -> [one] минута @@ -721,7 +696,7 @@ battery = Батарея connected-devices = Подключённые устройства .unknown = Неизвестное устройство amplification = Усиление звука - .desc = Разрешить увеличение звука до 150%. + .desc = Разрешить увеличение звука до 150% power-saving = Настройки энергосбережения .turn-off-screen-after = Выключать экран через .auto-suspend = Переход в режим ожидания @@ -735,7 +710,7 @@ keyboard-numlock-boot = Num Lock .set = Настройка состояния Num Lock по загрузке системы show-extended-input-sources = Показать дополнительные источники ввода add-another-keybinding = Добавить сочетание клавиш -input-source-switch = Переключение источника ввода клавиатуры +input-source-switch = Перекл. источник ввода клавиатуры zoom-in = Приблизить zoom-out = Отдалить switch-workspaces = Переключение рабочих столов @@ -756,7 +731,6 @@ install-additional-languages = Установить дополнительные region = Регион applications = Приложения default-apps = Приложения по умолчанию - .desc = Стандартные веб-браузер, почтовый клиент, файловый менеджер и другие приложения. .web-browser = Веб-браузер .file-manager = Файловый менеджер .mail-client = Почтовый клиент @@ -767,16 +741,15 @@ default-apps = Приложения по умолчанию .terminal = Терминал .other-associations = Прочие ассоциации .text-editor = Текстовый редактор + .not-installed = Не установлено startup-apps = Автозапуск приложений - .desc = Настройка приложений, которые запускаются при входе. .add = Добавить приложение .user = Приложения, которые запускаются при входе в систему .none = Нет автозапускаемых приложений .remove-dialog-title = Убрать { $name }? .remove-dialog-description = Вы уверены, что хотите убрать это приложение из автозапуска? - .search-for-application = Поиск приложений + .add-startup-app = Добавить приложение в автозапуск legacy-applications = Совместимость с приложениями для X11 - .desc = Настройка глобальных сочетаний клавиш и масштабирования для приложений оконной системы X11. legacy-app-global-shortcuts = Глобальные сочетания клавиш в приложениях для X11 .desc = Глобальные сочетания клавиш позволяют нажатиям клавиатуры и мыши, выполненных в одних приложениях, распознаваться другими приложениями для таких функций, как push-to-talk и push-to-mute. По умолчанию они отключены для приложений X11, чтобы другие приложения не могли перехватывать события клавиатуры и мыши, содержащие конфиденциальную информацию. .none = Отключены @@ -794,10 +767,124 @@ legacy-app-scaling = Масштабирование приложений для .preferred-display = Предпочитаемый экран для игр и полноэкранных приложений для X11 .no-display = Нет administrator = Администратор - .desc = Администраторы могут изменять настройки для всех пользователей, добавлять и удалять другие учётные записи. + .desc = Администраторы могут изменять настройки для всех пользователей, добавлять и удалять другие учётные записи add-user = Добавить пользователя change-password = Изменить пароль remove-user = Удалить пользователя full-name = Полное имя -invalid-username = Некорректное имя пользователя. -password-mismatch = Пароль и подтверждение пароля должны совпадать. +invalid-username = Некорректное имя пользователя +password-mismatch = Пароль и подтверждение пароля должны совпадать +network-name = Имя сети +qr-code-unavailable = QR-код недоступен +scan-to-connect-description = Отсканируйте QR-код, чтобы подключиться к этой сети. +share = Поделиться сетью +shadows-floating = Плавающие окна + .clip = Соответствовать системным углам и применять тени +shadows-tiling = Размещённые окна + .clip = Углы в соответствии с системными + .shadow = Добавлять тени +shadow-and-corners = Тень и углы окон +place-here = Поместите апплеты сюда +sound-device-port-unplugged = Не подключено +sound-hd-audio = Звук в HD +sound-usb-audio = Звук по USB +sound-device-profiles = Профили устройств +workspaces-overview = Режим обзора рабочих столов + .action-on-typing = При вводе текста + .none = Ничего не делать + .launcher = Открыть панель запуска + .applications = Открыть приложения +xdg-entry-touchpad = Сенсорная панель +xdg-entry-wired = Проводная сеть +xdg-entry-startup-apps-comment = Настройка приложений, запускаемых при входе в систему +xdg-entry-region-language = Язык и регион +xdg-entry-mouse-keywords = COSMIC;Мышь;Ускорение;Прокрутка;Скроллинг; +xdg-entry-bluetooth-comment = Управление Bluetooth-устройствами +xdg-entry-notifications-keywords = COSMIC;Уведомления;Блокировка; +xdg-entry-startup-apps-keywords = COSMIC;Автозапуск;Автозагрузка;Приложение; +xdg-entry-default-apps-comment = Веб-браузер, почтовый клиент, файловый менеджер и другие приложения, выбираемые по умолчанию +xdg-entry-keyboard-comment = Источники ввода, переключение, ввод специальных символов, сочетания клавиш +xdg-entry-wired-keywords = COSMIC;Проводная;LAN;Сеть;Подключение;Соединение; +xdg-entry-power = Питание и аккумулятор +xdg-entry-appearance-keywords = COSMIC;Акцентный;Цвет;Иконки;Значки;Шрифт;Тема;Оформление +xdg-entry-mouse = Мышь +xdg-entry-dock-keywords = COSMIC;Док;Панель;Апплет +xdg-entry-mouse-comment = Скорость мыши, ускорение и естественная прокрутка +xdg-entry-system = Система и учётные записи +xdg-entry-panel-keywords = COSMIC;Панель;Апплет +xdg-entry-window-management = Управление окнами +xdg-entry-a11y = Специальные возможности +xdg-entry-time-language-comment = Управление системной датой, временем, регионом и языком +xdg-entry-desktop-keywords = COSMIC;Рабочий;Стол; +xdg-entry-x11-applications-keywords = COSMIC;X11;Иксы;Приложение;Игра;Совместимость; +xdg-entry-displays-comment = Управление параметрами конфигурации экранов +xdg-entry-touchpad-keywords = COSMIC;Сенсорная;Панель;Тачпад;Жесты; +xdg-entry-time-language = Время и язык +xdg-entry-users = Пользователи +xdg-entry-system-keywords = COSMIC;Система;Информация;Сведения;Учетные;Записи;Аккаунты;Прошивка; +xdg-entry-default-apps = Приложения по умолчанию +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Вайфай;Сеть;Подключение;Соединение; +xdg-entry-applications-comment = Приложения по умолчанию, автозагрузка и совместимость приложений для X11 +xdg-entry-about-keywords = COSMIC;О:Системе;Сведения +xdg-entry-panel = Панель +xdg-entry-notifications = Уведомления +xdg-entry-a11y-keywords = COSMIC;Доступность;A11y;Экранный;Диктор;Лупа;Контраст;Цвет;Специальные;Возможности; +xdg-entry-wireless-comment = Wi-Fi-соединения и профили +xdg-entry-desktop = Рабочий стол +xdg-entry-date-time-keywords = COSMIC;Время;Часовой;Пояс;Зона; +xdg-entry-desktop-comment = Фон, оформление, панель, док, управление окнами и параметры рабочих столов +xdg-entry-wallpaper = Фон +xdg-entry-keyboard = Клавиатура +xdg-entry-a11y-comment = Экранный диктор, лупа, высокая контрастность и цветовые фильтры +xdg-entry-displays = Экраны +xdg-entry-network = Сеть и Wi-Fi +xdg-entry-date-time = Дата и время +xdg-entry-users-comment = Аутентификация и уч. записи пользователей +xdg-entry-input-comment = Параметры клавиатуры и мыши +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth;Блютуз; +xdg-entry-dock-comment = Дополнительная панель для приложений и апплетов +xdg-entry-network-keywords = COSMIC;Сеть;Беспроводная;Связь;WiFi;VPN;Вайфай;ВПН; +xdg-entry-wallpaper-comment = Фоновое изображение, цвета и параметры слайд-шоу +xdg-entry-dock = Док +xdg-entry-startup-apps = Автозапуск приложений +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Рабочий;Стол;Ориентация;Обзор;Монитор; +xdg-entry-system-comment = Сведения о системе, учётные записи и обновления прошивки +xdg-entry-x11-applications-comment = Масштабирование приложений X11, основной дисплей и глобальные сочетания клавиш +xdg-entry-region-language-comment = Форматирование дат, времени и чисел в соответствии с вашим регионом +xdg-entry-wallpaper-keywords = COSMIC;Обои;Фон;Слайд-шоу; +xdg-entry-users-keywords = COSMIC;Пользователь;Учетная;Учётная;Запись;Аккаунт; +xdg-entry-about-comment = Имя устройства, информация об оборудовании, параметры операционной системы по умолчанию +xdg-entry-vpn-keywords = COSMIC;VPN;ВПН;Сеть;Подключение;OpenVPN;OpenConnect; +xdg-entry-appearance-comment = Акцентные цвета и оформление +xdg-entry-time-language-keywords = COSMIC;Система;Время;Дата;Регион;Язык; +xdg-entry-input-keywords = COSMIC;Ввод;Клавиатура;Мышь;Мышка; +xdg-entry-comment = Приложение параметров для рабочей среды COSMIC +xdg-entry-notifications-comment = Режим «Не беспокоить», уведомления на экране блокировки и параметры по приложениям +xdg-entry-applications = Приложения +xdg-entry-sound-keywords = COSMIC;Звук;Аудио;Оповещение;Pipewire; +xdg-entry-power-keywords = COSMIC;Питание;Аккумулятор;Батарея +xdg-entry-default-apps-keywords = COSMIC;По;умолчанию;Приложения +xdg-entry-keywords = COSMIC;Параметры;Настройки; +xdg-entry-region-language-keywords = COSMIC;Регион;Язык;Дата;Формат;Время;Языковая;Локаль;Локализация; +xdg-entry-about = Сведения +xdg-entry-input = Устройства ввода +xdg-entry-applications-keywords = COSMIC;По;умолчанию;Приложения;Запуск;X11;Иксы;Совместимость;Автозапуск;Автозагрузка +xdg-entry-sound-comment = Настройки звука для устройств, оповещений и приложений +xdg-entry-touchpad-comment = Скорость сенсорной панели, параметры нажатия и жесты +xdg-entry-keyboard-keywords = COSMIC;Клавиатура;Ввод;Источник;Горячие;Клавиши;Клавиш;Сочетания;Раскладки; +xdg-entry-vpn-comment = VPN-соединения и профили +xdg-entry-appearance = Внешний вид +xdg-entry-window-management-keywords = COSMIC;Окно;Управление;Размещение;Тайлинг;Супер;Super;Клавиша; +xdg-entry-workspaces-comment = Ориентация рабочих столов, режим Обзора и поведение на нескольких мониторах +xdg-entry-network-comment = Управление сетевыми подключениями +xdg-entry-panel-comment = Основная системная панель для меню и апплетов +xdg-entry-sound = Звук +xdg-entry-power-comment = Режимы питания и параметры энергосбережения +xdg-entry-displays-keywords = COSMIC;Экран;Монитор;Дисплей; +xdg-entry-workspaces = Рабочие столы +xdg-entry-date-time-comment = Часовой пояс, автонастройка часов и форматирование времени +xdg-entry-x11-applications = Совместимость с приложениями для X11 +xdg-entry-window-management-comment = Действие кнопки Super, параметры размещения и управления окнами +xdg-entry-wired-comment = Проводные соединения и профили +no-search-results = По запросу не найдено ни одной сети. diff --git a/i18n/sk/cosmic_settings.ftl b/i18n/sk/cosmic_settings.ftl index 7b26650..a9ee3d2 100644 --- a/i18n/sk/cosmic_settings.ftl +++ b/i18n/sk/cosmic_settings.ftl @@ -4,15 +4,68 @@ ok = OK unknown = Neznáme number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = O systéme +xdg-entry-about-comment = Názov zariadenia, hardvérové informácie, predvolené nastavenia systému +xdg-entry-a11y = Prístupnosť +xdg-entry-a11y-comment = Nastavenia prístupnosti +xdg-entry-appearance = Vzhľad +xdg-entry-appearance-comment = Akcentové farby a témy +xdg-entry-applications = Aplikácie +xdg-entry-applications-comment = Spravovať nastavenia aplikácií +xdg-entry-bluetooth-comment = Spravovať Bluetooth zariadenia +xdg-entry-date-time = Dátum a čas +xdg-entry-date-time-comment = Časové pásmo, automatické nastavenie hodín a formátovanie času +xdg-entry-default-apps = Predvolené aplikácie +xdg-entry-default-apps-comment = Predvolený webový prehliadač, e-mailový klient, správca súborov a ďalšie aplikácie +xdg-entry-desktop = Pracovná plocha +xdg-entry-desktop-comment = Nastavenia pracovnej plochy, vzhľadu a správania okien +xdg-entry-displays = Displeje +xdg-entry-displays-comment = Možnosti displeja, grafické režimy a nočné svetlo +xdg-entry-dock = Dok +xdg-entry-dock-comment = Voliteľný panel pre aplikácie a applety +xdg-entry-input = Vstupné zariadenia +xdg-entry-input-comment = Klávesnica, kurzor a ďalšie +xdg-entry-keyboard = Klávesnica +xdg-entry-keyboard-comment = Vstupné zdroje, prepínanie, zadávanie špeciálnych znakov, skratky +xdg-entry-mouse = Myš +xdg-entry-mouse-comment = Rýchlosť myši, akcelerácia a prirodzené rolovanie +xdg-entry-network = Sieť & Bezdrôtové +xdg-entry-network-comment = Spravovať sieťové pripojenia +xdg-entry-notifications = Oznámenia +xdg-entry-notifications-comment = Nerušiť, oznámenia na uzamknutej obrazovke a nastavenia pre aplikácie +xdg-entry-panel = Panel +xdg-entry-panel-comment = Hlavný systémový panel pre menu a applety +xdg-entry-power = Napájanie & Batéria +xdg-entry-power-comment = Režimy napájania a možnosti úspory energie +xdg-entry-region-language = Región & Jazyk +xdg-entry-region-language-comment = Formátovanie dátumov, časov a čísel podľa vášho regiónu +xdg-entry-sound = Zvuk +xdg-entry-sound-comment = Zvukové nastavenia pre zariadenia, upozornenia a aplikácies +xdg-entry-system = Systém & Účty +xdg-entry-system-comment = Systémové informácie, používatelia a firmware +xdg-entry-time-language = Čas & Jazyk +xdg-entry-time-language-comment = Nastavenia času a jazyka +xdg-entry-touchpad = Touchpad +xdg-entry-touchpad-comment = Rýchlosť touchpadu, možnosti kliknutia, gestá +xdg-entry-users = Používatelia +xdg-entry-users-comment = Autentifikácia a používateľské účty +xdg-entry-vpn-comment = VPN pripojenia a profily pripojení +xdg-entry-wallpaper = Tapeta +xdg-entry-wallpaper-comment = Obrázky tapiet, farby a možnosti prezentácie +xdg-entry-window-management = Správa okien +xdg-entry-window-management-comment = Akcia klávesu Super, možnosti ovládania okien a ďalšie možnosti dlaždicovania okien +xdg-entry-wired = Káblové +xdg-entry-wired-comment = Káblové pripojenia a profily pripojení +xdg-entry-wireless-comment = Wi-Fi pripojenia a profily pripojení +xdg-entry-workspaces = Pracovné priestory +xdg-entry-workspaces-comment = Orientácia a správanie pracovných priestorov +xdg-entry-x11-applications = Kompatibilita X11 aplikácií +xdg-entry-x11-applications-comment = Škálovanie X11 aplikácií a globálne skratky + ## Sieť & Bezdrôtové -connections-and-profiles = - { $variant -> - [wired] Káblové - [wifi] Wi-Fi - [vpn] VPN - *[other] Neznáme - } pripojenia a profily pripojení. add-network = Pridať sieť .profile = Pridať profil add-vpn = Pridať VPN diff --git a/i18n/sl/cosmic_settings.ftl b/i18n/sl/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/sr-Cyrl/cosmic_settings.ftl b/i18n/sr-Cyrl/cosmic_settings.ftl index 4c71c54..b68645d 100644 --- a/i18n/sr-Cyrl/cosmic_settings.ftl +++ b/i18n/sr-Cyrl/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Жичане - [wifi] Wi-Fi - [vpn] VPN - *[other] Непознате - } конекције и профили конекција. add-network = Додај мрежу .profile = Додај профил add-vpn = Додај VPN diff --git a/i18n/sr-Latn/cosmic_settings.ftl b/i18n/sr-Latn/cosmic_settings.ftl index 156def2..49b36f1 100644 --- a/i18n/sr-Latn/cosmic_settings.ftl +++ b/i18n/sr-Latn/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Žičane - [wifi] Wi-Fi - [vpn] VPN - *[other] Nepoznate - } konekcije i profili konekcija. add-network = Dodaj mrežu .profile = Dodaj profil add-vpn = Dodaj VPN diff --git a/i18n/sv/cosmic_settings.ftl b/i18n/sv/cosmic_settings.ftl index b10d950..5f216c2 100644 --- a/i18n/sv/cosmic_settings.ftl +++ b/i18n/sv/cosmic_settings.ftl @@ -4,6 +4,65 @@ ok = OK unknown = Okänd number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = Om +xdg-entry-about-comment = Enhetsnamn, hårdvaruinformation, standardinställningar för operativsystem +xdg-entry-a11y = Tillgänglighet +xdg-entry-a11y-comment = Skärmläsare, förstoringsglas, hög kontrast och färgfilter +xdg-entry-appearance = Utseende +xdg-entry-appearance-comment = Accentfärger och teman +xdg-entry-applications = Program +xdg-entry-applications-comment = Standardprogram, uppstartsprogram och kompatibilitetsinställningar för X11-program +xdg-entry-bluetooth-comment = Hantera Bluetooth-enheter +xdg-entry-date-time = Datum & Tid +xdg-entry-date-time-comment = Tidszon, automatiska klockinställningar och tidsformat +xdg-entry-default-apps = Standardprogram +xdg-entry-default-apps-comment = Standardwebbläsare, e-postklient, filbläddrare och andra program +xdg-entry-desktop = Skrivbord +xdg-entry-displays = Skärmar +xdg-entry-displays-comment = Inställningar för skärmalternativ, grafiklägen, och nattljus +xdg-entry-dock = Docka +xdg-entry-dock-comment = En valfri list för program och miniprogram +xdg-entry-input = Inmatningsenheter +xdg-entry-input-comment = Inställningar för tangentbord och mus +xdg-entry-keyboard = Tangentbord +xdg-entry-keyboard-comment = Inmatningskällor, växling, specialtecken, genvägar +xdg-entry-mouse = Mus +xdg-entry-mouse-comment = Mushastighet, acceleration, och naturlig rullning +xdg-entry-network = Nätverk & Wi-Fi +xdg-entry-network-comment = Hantera nätverksanslutningar +xdg-entry-notifications = Aviseringar +xdg-entry-notifications-comment = Stör ej, aviseringar på låsskärm, och inställningar per program +xdg-entry-panel = Panel +xdg-entry-panel-comment = Primärt systemfält för menyer och miniprogram +xdg-entry-power = Ström & Batteri +xdg-entry-power-comment = Ström- och energisparalternativ +xdg-entry-region-language = Region & språk +xdg-entry-region-language-comment = Formatera datum, tider och siffror baserat på din region +xdg-entry-sound = Ljud +xdg-entry-sound-comment = Ljudinställningar för enhter, larm och program +xdg-entry-startup-apps = Uppstartsprogram +xdg-entry-startup-apps-comment = Konfigurera program som körs vid inloggning +xdg-entry-system = System & konton +xdg-entry-time-language = Tid & språk +xdg-entry-touchpad = Pekplatta +xdg-entry-touchpad-comment = Pekplattans hastighet, klickalternativ, gester +xdg-entry-users = Användare +xdg-entry-users-comment = Autentisering och användarkonton +xdg-entry-vpn-comment = VPN-anslutningar och anslutningsprofiler +xdg-entry-wallpaper = Bakgrundsbild +xdg-entry-wallpaper-comment = Bakgrundsbilder, färger, och bildspelsalternativ +xdg-entry-window-management = Fönsterhantering +xdg-entry-window-management-comment = Åtgärd för Supertangent, fönsterkontrollalternativ, och ytterligare fönsterplaceringsalternativ +xdg-entry-wired = Tråndbunden anslutning +xdg-entry-wired-comment = Trådbundna anslutningar och anslutningsprofiler +xdg-entry-wireless-comment = Wi-Fi-anslutningar och anslutningsprofiler +xdg-entry-workspaces = Arbetsytor +xdg-entry-workspaces-comment = Arbetsytors orientering, översikt, och beteende med flera skärmar +xdg-entry-x11-applications = X11-programkompatibilitet +xdg-entry-x11-applications-comment = Applikationsskalning för fönstersystemet X11, primär bildskärm och globala genvägar + ## Skrivbord desktop = Skrivbord @@ -11,7 +70,6 @@ desktop = Skrivbord ## Skrivbord: Utseende appearance = Utseende - .desc = Accentfärger och COSMIC tema accent-color = Accentfärg app-background = Fönsterbakgrund auto = Automatisk @@ -29,7 +87,7 @@ recent-colors = Senaste färger reset-to-default = Återställ till standard rgb = RGB window-hint-accent = Färg för aktivt fönster-indikator -window-hint-accent-toggle = Använd temaaccentfärg som aktiv fönster-indikator +window-hint-accent-toggle = Använd temaaccentfärg som aktivt fönster-indikator auto-switch = Växla automatiskt från ljust till mörkt läge .sunrise = Växlar till ljust läge vid soluppgång .sunset = Växlar till mörkt läge vid solnedgång @@ -61,7 +119,6 @@ interface-density = Gränssnittstäthet ## Gränssnittstäthet window-management = Fönsterhantering - .desc = Åtgärd för Super-tangent, fönsterkontrollalternativ, och ytterligare fönsterplaceringsalternativ window-management-appearance = Fönsterhantering .active-hint = Storlek på aktivt fönster indikator .gaps = Springor runt kaklade fönster @@ -88,8 +145,7 @@ color = Färg .sidebar = Färgprofiler .temperature = Färgtemperatur display = Skärmar - .desc = Hantera skärmar och nattljus - .arrangement = Visningsarrangemang + .arrangement = Skärmplacering .arrangement-desc = Dra skärmar för att ordna om dem. .enable = Aktivera skärm .external = { $size } { $output } extern skärm @@ -173,15 +229,13 @@ color-filter = Färgfilter typ ## Skrivbord: Aviseringar notifications = Aviseringar - .desc = Stör ej, aviseringar på låsskärmen och inställningar per program ## Skrivbord: Alternativ dock = Docka - .desc = En valfri list för program och miniprogram window-controls = Fönsterkontroller - .minimize = Visa minimera knapp - .maximize = Visa maximera knapp + .minimize = Visa minimeraknapp + .maximize = Visa maximeraknapp .active-window-hint = Visa indikation för aktivt fönster focus-navigation = Fokusnavigering .focus-follows-cursor = Fokus följer markören @@ -191,7 +245,6 @@ focus-navigation = Fokusnavigering ## Skrivbord: Panel panel = Panel - .desc = Primär systemlist för menyer och miniprogram add = Lägg till add-applet = Lägg till miniprogram all = Alla @@ -235,7 +288,6 @@ panel-missing = Panelkonfiguration saknas wallpaper = Bakgrundsbild .change = Byt bild var - .desc = Bakgrundsbilder, färger, och bildspelsalternativ. .fit = Bakgrundsbildspassning .folder-dialog = Välj mapp med bakgrundsbilder .image-dialog = Välj bakgrundsbild @@ -265,7 +317,11 @@ x-hours = ## Skrivbord: Arbetsytor workspaces = Arbetsytor - .desc = Orientering och beteende för arbetsytor +workspaces-overview = Arbetsyteöversikt + .action-on-typing = Åtgärd vid skrivning + .none = Ingen + .launcher = Öppna programstartare + .applications = Öppna program workspaces-behavior = Beteende för arbetsytor .dynamic = Dynamiska arbetsytor .dynamic-desc = Tar automatiskt bort tomma arbetsytor. @@ -329,13 +385,6 @@ identity = Identitet ## Nätverksanslutningar: Beskrivningar -connections-and-profiles = - { $variant -> - [wired] Trådbundna anslutningar - [wifi] Trådlösa anslutningar - [vpn] VPN-anslutningar - *[other] Okända anslutningar - } och anslutningsprofiler. ## Virtuellt privat nätverk (VPN) @@ -363,7 +412,6 @@ activate = Aktivera confirm = Bekräfta enable = Aktivera bluetooth = Bluetooth - .desc = Hantera Bluetooth-enheter .status = Detta system är synligt som { $aliases } medan Bluetooth-inställningarna är öppna. .connected = Ansluten .connecting = Ansluter @@ -374,7 +422,7 @@ bluetooth = Bluetooth .dbus-error = Ett fel har uppstått under interaktion med DBus: { $why } .disabled = Bluetooth-tjänsten är inaktiverad .inactive = Bluetooth-tjänsten är inte aktiv - .unknown = Bluetooth-tjänsten kunde inte aktiveras. Är bluez installerat? + .unknown = Bluetooth-tjänsten kunde inte aktiveras. Är BlueZ installerat? bluetooth-paired = Tidigare anslutna enheter .connect = Anslut .battery = { $percentage }% batteri @@ -386,9 +434,7 @@ bluetooth-adapters = Bluetooth-adaptrar ## Datum, tid & språk time = Tid & språk - .desc = N/A time-date = Datum & tid - .desc = Tidszon, automatiska klockinställningar och viss tidsformatering .auto = Ställ in automatiskt .auto-ntp = Datum och tid uppdateras automatisk när tidszon är satt time-zone = Tidszon @@ -404,7 +450,6 @@ time-format = Datum & tidsformat .sunday = Söndag .monday = Måndag time-region = Region & språk - .desc = Formatera datum, tider och siffror baserat på din region preferred-languages = Föredragna språk .desc = Ordningen på språken avgör vilket språk som används för översättningen av skrivbordsmiljön. Ändringar träder i kraft vid nästa inloggning. add-language = Lägg till språk @@ -415,7 +460,6 @@ region = Region ## Ljud sound = Ljud - .desc = N/A sound-output = Utgång .volume = Utgångsvolym .device = Utgångsenhet @@ -441,7 +485,6 @@ system = System & konton ## System: Om about = Om - .desc = Enhetsnamn, hårdvaruinformation, operativsystemstandarder about-device = Enhetsnamn .desc = Detta namn visas för andra nätverk eller bluetooth-enheter about-hardware = Hårdvara @@ -462,12 +505,10 @@ about-related = Relaterade inställningar ## System: Fast programvara firmware = Fast programvara - .desc = Detaljer om fast programvara ## System: Användare users = Användare - .desc = Autentisering och användarkonton .admin = Administratör .standard = Standard .profile-add = Välj profilbild @@ -484,7 +525,6 @@ save = Spara ## Ström power = Ström & batteri - .desc = Hantera ströminställningar battery = Batteri .minute = { $value } { $value -> @@ -529,7 +569,6 @@ power-saving = Energisparalternativ acceleration-desc = Justerar automatiskt spårningskänsligheten baserat på hastighet disable-while-typing = Inaktivera medan du skriver input-devices = Inmatningsenheter - .desc = Inmatningsenheter primary-button = Primär knapp .desc = Ställer in ordningen på fysiska knappar .left = Vänster @@ -548,7 +587,6 @@ fast = Snabb short = Kort long = Lång keyboard = Tangentbord - .desc = Ingångskällor, växling, inmatning av specialtecken, genvägar keyboard-sources = Inmatningskällor .desc = Ingångskällor kan växlas med tangentkombinationen Super+Mellanslag. Detta kan anpassas i inställningarna för kortkommandon. .move-up = Flytta upp @@ -708,7 +746,6 @@ replace-shortcut-dialog = Byt ut genväg? ## Input: Mus mouse = Mus - .desc = Mushastighet, acceleration, naturlig rullning .speed = Mushastighet .acceleration = Aktivera musacceleration @@ -720,7 +757,6 @@ click-behavior = Klickbeteende tap-to-click = Tryck för att klicka .desc = Aktiverar tryck med ett finger för primärt klick, tryck med två fingrar för sekundärt klick och tryck med tre fingrar för mittenklick touchpad = Pekplatta - .desc = Pekplattans hastighet, klickalternativ, gester .speed = Pekplattans hastighet .acceleration = Aktivera acceleration för pekplatta @@ -746,7 +782,6 @@ applications = Program ## System: Standardprogram default-apps = Standardprogram - .desc = Standardwebbläsare, e-postklient, filhanteringsprogram och andra program .web-browser = Webbläsare .file-manager = Filhanteringsprogram .mail-client = E-postklient @@ -757,11 +792,11 @@ default-apps = Standardprogram .terminal = Terminal .text-editor = Textredigerare .other-associations = Andra associeringar + .not-installed = Inte installerad ## Program: Äldre program legacy-applications = X11-programkompatibilitet - .desc = Programskalning för X11-fönstersystemet och globala genvägar legacy-app-global-shortcuts = Globala genvägar i X11-program .desc = Globala genvägar gör att tangenttryckningar och musknappshändelser som utförs i program kan kännas igen av andra program för funktioner som tryck-för-att-tala eller tryck-för-att-tysta. Som standard är detta inaktiverat i X11-program för att säkerställa att andra program inte kan övervaka tangentbords- och mushändelser som innehåller känslig information. .none = Inga tangenter @@ -782,7 +817,6 @@ legacy-app-scaling = Programskalning för X11-fönstersystemet ## System: Uppstartsprogram startup-apps = Uppstartsprogram - .desc = Konfigurera program som körs vid inloggning .add = Lägg till program .user = Program som körs när du loggar in .none = Inga uppstartsprogram tillagda @@ -848,3 +882,47 @@ sound-device-port-unplugged = Urkopplad sound-hd-audio = HD-ljud sound-usb-audio = USB-ljud sound-device-profiles = Enhetsprofiler +shadows-floating = Flytande fönster + .clip = Matcha systemhörn och tillämpa skuggor +shadows-tiling = Kaklade fönster + .clip = Matcha systemhörn + .shadow = Tillämpa skuggor +shadow-and-corners = Fönsterskugga och hörn +xdg-entry-appearance-keywords = COSMIC;Accent;Färg;Ikon;Teckensnitt;Tema +xdg-entry-dock-keywords = COSMIC;Docka;Panel;Applet;Miniprogram +xdg-entry-desktop-keywords = COSMIC;Skrivbord; +xdg-entry-about-keywords = COSMIC;Om +xdg-entry-a11y-keywords = COSMIC;Tillgänglighet;A11y; Skärm;Läsare;Förstoringsglas;Kontrast;Färg; +xdg-entry-date-time-keywords = COSMIC;Tidszon;Tid;Zon; +xdg-entry-desktop-comment = Inställningar för bakgrundsbild, utseende, panel, docka, fönsterhantering och arbetsytor +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-input-keywords = COSMIC;Inmatning;Tangentbord;Mus;Möss; +xdg-entry-comment = Inställningsprogram för skrivbordsmiljön COSMIC +xdg-entry-default-apps-keywords = COSMIC;Standard;Program +xdg-entry-keywords = COSMIC;Inställningar; +xdg-entry-applications-keywords = COSMIC;Standard;Program;Uppstart;X11;Kompatibilitet +xdg-entry-displays-keywords = COSMIC;Skärm; +xdg-entry-mouse-keywords = COSMIC;Mus;Acceleration;Rullning; +xdg-entry-notifications-keywords = COSMIC;Avisering;Lås; +xdg-entry-startup-apps-keywords = COSMIC;Uppstart;Program; +xdg-entry-wired-keywords = COSMIC;Trådbundet;LAN;Nätverk;Anslutning; +xdg-entry-panel-keywords = COSMIC;Panel;Applet;Miniprogram +xdg-entry-time-language-comment = Hantera systemets datum, tid, region och språk +xdg-entry-x11-applications-keywords = COSMIC;X11;Program;Spel;Kompatibilitet; +xdg-entry-touchpad-keywords = COSMIC;Pekplatta;Gest; +xdg-entry-system-keywords = COSMIC;System;Info;Konton;Fast programvara; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Nätverk;Anslutning; +xdg-entry-network-keywords = COSMIC;Nätverk;Trådlöst;WiFi;VPN; +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Arbetsyta;Orientering;Översikt;Skärm; +xdg-entry-system-comment = Systeminformation, konton och uppdateringar av fast programvara +xdg-entry-wallpaper-keywords = COSMIC;Bakgrundsbild;Bakgrund;Bildspel; +xdg-entry-users-keywords = COSMIC;Användare;Konto; +xdg-entry-vpn-keywords = COSMIC;VPN;Nätverk;Anslutning;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;System;Tid;Datum;Region;Språk; +xdg-entry-sound-keywords = COSMIC;Ljud;Ljud;Varning;Pipewire; +xdg-entry-power-keywords = COSMIC;Ström;Batteri +xdg-entry-region-language-keywords = COSMIC;Region;Språk;Datum;Format;Tid;Lokal;Lokalisering; +xdg-entry-keyboard-keywords = COSMIC;Tangentbord;Inmatning;Källa;Genvägar; +xdg-entry-window-management-keywords = COSMIC;Fönster;Hantering;Kaklande;Super;Tangent; +no-search-results = Inga nätverk matchar din sökning. diff --git a/i18n/th/cosmic_settings.ftl b/i18n/th/cosmic_settings.ftl index ef41b93..a40fc0c 100644 --- a/i18n/th/cosmic_settings.ftl +++ b/i18n/th/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - การเชื่อมต่อ{ $variant -> - [wired] แบบมีสาย - [wifi] ไวไฟ - [vpn] { " " }VPN - *[other] ที่ไม่รู้จัก - } และโปรไฟล์การเชื่อมต่อ add-network = เพิ่มเครือข่าย .profile = เพิ่มโปรไฟล์ add-vpn = เพิ่ม VPN diff --git a/i18n/ti/cosmic_settings.ftl b/i18n/ti/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/tr/cosmic_settings.ftl b/i18n/tr/cosmic_settings.ftl index 5f8ec53..46d0784 100644 --- a/i18n/tr/cosmic_settings.ftl +++ b/i18n/tr/cosmic_settings.ftl @@ -6,13 +6,6 @@ number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] Kablolu - [wifi] Kablosuz - [vpn] VPN - *[other] Bilinmeyen - } bağlantılar ve bağlantı profilleri. add-network = Ağ ekle .profile = Profil ekle add-vpn = VPN ekle @@ -23,18 +16,18 @@ connected = Bağlandı connecting = Bağlanılıyor… disconnect = Bağlantıyı kes forget = Unut -known-networks = Bilinen Ağlar -network-and-wireless = Ağ & Kablosuz +known-networks = Bilinen ağlar +network-and-wireless = Ağ & kablosuz no-networks = Herhangi bir ağ bulunamadı. no-vpn = Herhangi bir VPN bağlantısı bulunmamaktadır. -password = Şifre -password-confirm = Şifreyi Onayla +password = Parola +password-confirm = Parolayı onayla remove = Kaldır settings = Ayarlar username = Kullanıcı Adı -visible-networks = Görünen Ağlar +visible-networks = Görünen ağlar identity = Kimlik -auth-dialog = Kimlik Doğrulama Gerekli +auth-dialog = Kimlik Doğrulama gerekli .vpn-description = VPN hizmeti tarafından istenilen kullanıcı adı ve parolayı girin. .wifi-description = Parola veya şifreleme anahtarını girin. Yönlendiricinin "WPS" düğmesine basarak da bağlanabilirsiniz. forget-dialog = Bu Wi-Fi ağı unutulsun mu? @@ -48,17 +41,17 @@ network-device-state = .ip-check = Bağlantı kontrol ediliyor .ip-config = IP ve yönlendirme bilgisi isteniyor .need-auth = Kimlik doğrulama gerekiyor - .prepare = Preparing to connect + .prepare = Bağlanmaya hazırlanıyor .secondaries = İkincil bağlantı bekleniyor .unavailable = Mevcut değil .unknown = Bilinmeyen durum .unmanaged = Yönetilmiyor .unplugged = Kablo bağlı değil -remove-connection-dialog = Bağlantı profilini kaldır? +remove-connection-dialog = Bağlantı profili silinsin mi? .vpn-description = Gelecekte bu ağı kullanabilmek için tekrardan parola girmeniz gerekecek. .wired-description = Gelecekte bu profili kullanabilmek için tekrardan oluşturmanız gerekecek. vpn = VPN - .connections = VPN Bağlantıları + .connections = VPN bağlantıları .error = VPN yapılandırması eklenemedi .remove = Bağlantı profilini kaldır .select-file = Bir VPN yapılandırma dosyası seçin @@ -70,27 +63,27 @@ vpn-error = VPN Hatası .updating-state = Ağ yöneticisi durumu alınamadı .wireguard-config-path = WireGuard yapılandırması için geçersiz dosya yolu .wireguard-config-path-desc = Seçilen dosya yerel dosya sisteminde olmalı. - .wireguard-device = WireGuard aygıtı oluşturulamadı + .wireguard-device = WireGuard cihazı oluşturulamadı .with-password = VPN ayarlanamadı { $field -> *[username] kullanıcı adı [password] parola - [password-flags] password-flags + [password-flags] parola-bayrakları } nmcli ile wired = Kablolu .adapter = Kablolu adaptör { $id } .connections = Kablolu bağlantılar - .devices = Kablolu aygıtlar - .remove = Bağlantı profili kaldır + .devices = Kablolu cihazlar + .remove = Bağlantı profilini kaldır wifi = Kablosuz .adapter = Kablosuz adaptör { $id } .forget = Ağı unut -wireguard-dialog = WireGuard aygıtı ekle - .description = WireGuard yapılandırması için aygıt adı belirleyin. +wireguard-dialog = WireGuard cihazı ekle + .description = WireGuard yapılandırması için cihaz adı belirleyin. ## Networking: Online Accounts -online-accounts = Çevrim İçi Hesaplar +online-accounts = Çevrimiçi hesaplar .desc = Hesap, IMAP ve SMTP, kurumsal giriş ekleyin # Bluetooth @@ -99,7 +92,6 @@ activate = Aktifleştir confirm = Onayla enable = Etkinleştir bluetooth = Bluetooth - .desc = Bluetooth aygıtlarını yönet .status = Bu sistem bluetooth ayarları açık olduğu sürede { $aliases } olarak görünür. .connected = Bağlandı .connecting = Bağlanılıyor @@ -109,15 +101,15 @@ bluetooth = Bluetooth .forget = Unut .dbus-error = DBus ile etkileşirken bir hata meydana geldi: { $why } .disabled = Bluetooth hizmeti devre dışı - .inactive = Bluetooth hizmeti inaktif - .unknown = Bluetooth hizmeti aktifleştirilemedi. bluez kurulu mu? -bluetooth-paired = Önceden Bağlanılan Aygıtlar + .inactive = Bluetooth hizmeti aktif değil + .unknown = Bluetooth hizmeti aktifleştirilemedi. BlueZ kurulu mu? +bluetooth-paired = Önceden bağlanılan cihazlar .connect = Bağlan .battery = %{ $percentage } şarj bluetooth-confirm-pin = Bluetooth PIN'ini Onayla - .description = Lütfen aşağıdaki PIN'in { $device } aygıtında gözüken ile eşleştiğini onaylayın -bluetooth-available = Yakındaki Aygıtlar -bluetooth-adapters = Bluetooth Adaptörleri + .description = Lütfen aşağıdaki PIN'in { $device } cihazında gözüken ile eşleştiğini onaylayın +bluetooth-available = Yakındaki cihazlar +bluetooth-adapters = Bluetooth adaptörleri ## Accessibility @@ -128,7 +120,7 @@ accessibility = Erişilebilirlik .unavailable = Mevcut değil .screen-reader = Ekran okuyucu .high-contrast = Yüksek kontrast modu - .invert-colors = Renkleri Ters Çevir + .invert-colors = Renkleri ters çevir .color-filters = Renk filtreleri hearing = Duyma .mono = Stereo sesi mono olarak çal @@ -151,17 +143,17 @@ magnifier = Büyüteç .show_overlay = Büyüteç Overlay'ini göster. .increment = Yakınlaştırma miktarı .signin = Büyüteci açılışta başlat - .applet = Büyüteci panel bileşeninden açıp kapat + .applet = Büyüteci panel eklentisinden açıp kapat .movement = Büyütülmüş görünümde gezinim .continuous = İmleç ile beraber .onedge = İmleç kenara ulaştığında .centered = İmleci merkezde tutarak -color-filter = Renk filtresi biçimi - .unknown = Bilinmeyen Filtre etkin +color-filter = Renk filtresi tipi + .unknown = Bilinmeyen filtre etkin .greyscale = Gri tonlama .deuteranopia = Yeşil/Kırmızı (yeşil zayıflığı, Döteranopi) .protanopia = Kırmızı/Yeşil (kırmızı zayıflığı, Protanopi) - .tritanopia = Blue/Yellow (mavi zayıflığı, Tritanopi) + .tritanopia = Mavi/Sarı (mavi zayıflığı, Tritanopi) ## Desktop @@ -171,7 +163,6 @@ desktop = Masaüstü wallpaper = Duvar Kağıdı .change = Belirli aralıklarda resmi değiştir - .desc = Duvar kağıdı resimleri, renkleri ve slayt gösterisi seçenekleri. .fit = Duvar kağıdı yerleşimi .folder-dialog = Duvar kağıdı klasörü seçin .image-dialog = Duvar kağıdı resmi seçin @@ -180,13 +171,13 @@ wallpaper = Duvar Kağıdı .slide = Slayt gösterisi add-color = Renk ekle add-image = Resim ekle -all-displays = Tüm Ekranlar +all-displays = Tüm ekranlar colors = Renkler dialog-add = Ekle fill = Doldur -fit-to-screen = Ekrana Sığdır +fit-to-screen = Ekrana sığdır open-new-folder = Yeni klasör aç -recent-folders = Son Kullanılan Klasörler +recent-folders = Son kullanılan klasörler x-minutes = { $number } { $number -> [one] dakika @@ -202,9 +193,8 @@ never = Asla ## Desktop: Appearance appearance = Görünüm - .desc = Vurgu renkleri ve temalar. accent-color = Vurgu rengi -app-background = Uygulama veya pencere arka planı +app-background = Pencere arka planı auto = Otomatik close = Kapat color-picker = Renk Seçici @@ -215,36 +205,36 @@ export = Dışa aktar hex = Hex import = İçe aktar light = Aydınlık -mode-and-colors = Mod ve Renkler +mode-and-colors = Mod ve renkler recent-colors = Son kullanılan renkler reset-to-default = Varsayılana dön rgb = RGB -window-hint-accent = Etkin pencere belirten rengi -window-hint-accent-toggle = Etkin pencereyi belirtmek için tema vurgu rengini kullan -auto-switch = Otomatik olarak Açık ve Koyu modlar arasında geçiş yap - .sunrise = Gün doğumunda Açık moda geçer - .sunset = Gün batımında Koyu moda geçer - .next-sunrise = Bir dahaki gün doğumunda Açık moda geçer - .next-sunset = Bir dahaki gün doğumunda Koyu moda geçer +window-hint-accent = Etkin pencere vurgu rengi +window-hint-accent-toggle = Tema vurgu rengini etkin pencere vurgu rengi olarak kullan +auto-switch = Otomatik olarak Aydınlık ve Karanlık modlar arasında geçiş yap + .sunrise = Gün doğumunda Aydınlık moda geçer + .sunset = Gün batımında Karanlık moda geçer + .next-sunrise = Bir dahaki gün doğumunda Aydınlık moda geçer + .next-sunset = Bir dahaki gün doğumunda Karanlık moda geçer container-background = Konteyner arka planı .desc-detail = Konteyner arka planı gezinti yan çubuğu, yan çekmece, diyaloglar ve benzeri araçlar için kullanılır. Varsayılanda otomatik olarak Uygulama veya pencere arka planından belirlenir. .reset = Otomatiğe dön - .desc = Birincil konteyner rengi gezinti yan çubuğu, yan çekmece, diyaloglar ve benzeri araçlar için kullanılır. + .desc = Birincil konteyner rengi gezinti yan çubuğu, yan çekmece, diyaloglar ve benzeri araçlar için kullanılır control-tint = Bileşen tonlamasını ayarla - .desc = Standart düğmelerin, arama ve metin girdilerinin ve benzeri bileşenlerin arka planları için kullanılır. -frosted = Sistem arayüzünde buzlu cam efekti. - .desc = Panel, rıhtım, kabuk bileşenleri, başlatıcı ve uygulama kütüphanesi arka planına flu ekler. -enable-export = Bu temayı GNOME uygulamalarına uygula. + .desc = Standart düğmelerin, arama ve metin girdilerinin ve benzeri bileşenlerin arka planları için kullanılır +frosted = Sistem arayüzünde buzlu cam efekti + .desc = Panel, dock, eklentiler, başlatıcı ve uygulama kütüphanesi arka planına flu ekler +enable-export = Bu temayı GNOME uygulamalarına uygula .desc = Bütün toolkitler otomatik tema değişimi desteklemez. COSMIC dışı uygulamaların tema değişimi için uygulamanın yeniden başlatılması gerekebilir. -icon-theme = Simge Teması - .desc = Uygulamalara farklı birtakım simgeler uygular. +icon-theme = Simge teması + .desc = Uygulamalara farklı birtakım simgeler uygular text-tint = Arayüz metin tonlaması - .desc = Çeşitli yüzeylerde yeterli kontrasta sahip metinlerin rengini belirlemekte kullanılan renk. + .desc = Çeşitli yüzeylerde yeterli kontrast sağlayan arayüz metin renklerini elde etmek için kullanılır style = Stil .round = Yuvarlak - .slightly-round = Yuvarlağımsı + .slightly-round = Hafif yuvarlak .square = Kare -interface-density = Arayüz Yoğunluğu +interface-density = Arayüz yoğunluğu .comfortable = Rahat .compact = Sıkışık .spacious = Geniş @@ -254,39 +244,37 @@ window-management-appearance = Pencere Yönetimi ### Experimental -experimental-settings = Deneysel Ayarlar -icons-and-toolkit = Simge ve toolkit temaları +experimental-settings = Deneysel ayarlar +icons-and-toolkit = Simge ve araç seti teması interface-font = Sistem yazı tipi monospace-font = Tek aralıklı yazı tipi ## Desktop: Notifications notifications = Bildirimler - .desc = Rahatsız Etme, kilit ekranı bildirimleri, ve uygulama başına ayarlar. ## Desktop: Panel panel = Panel - .desc = Masaüstü seçeneklerin ve menülerin bulunduğu üst panel. add = Ekle -add-applet = Kabuk Bileşeni ekle +add-applet = Eklenti ekle all = Tümü -applets = Appletler -center-segment = Orta Bölüm -end-segment = Son Bölüm +applets = Eklentiler +center-segment = Orta bölüm +end-segment = Son bölüm large = Büyük -no-applets-found = Kabuk bileşeni bulunamadı... +no-applets-found = eklenti bulunamadı... panel-bottom = Aşağı panel-left = Sol panel-right = Sağ panel-top = Yukarı -search-applets = Bileşen ara... +search-applets = Eklenti ara... small = Küçük -start-segment = Baş Bölüm +start-segment = Başlangıç Bölümü panel-appearance = Görünüm .match = Masaüstü ile aynı - .light = Açık - .dark = Koyu + .light = Aydınlık + .dark = Karanlık panel-behavior-and-position = Davranış ve Konumlar .autohide = Paneli otomatik gizle .dock-autohide = Docku otomatik gizle @@ -301,30 +289,28 @@ panel-style = Stil .size = Boyut .background-opacity = Arka plan opaklığı panel-applets = Yapılandırma - .dock-desc = Rıhtım kabul bileşenlerini yapılandır - .desc = Panel kabuk bileşenlerini yapılandır + .dock-desc = Dock eklentilerini yapılandır + .desc = Panel eklentilerini yapılandır panel-missing = Panel Yapılandırması Eksik .desc = Panel yapılandırma dosyası özel bir yapılandırması kullanıldığından veya bozulduğundan dolayı eksik. .fix = Varsayılana dön ## Desktop: Dock -dock = Görev Çubuğu - .desc = Sabitlenmiş uygulamaların bulunduğu panel. +dock = Dock ## Desktop: Window management window-management = Pencere yönetimi - .desc = Super tuşu davranışı, pencere kontrolü seçenekleri ve daha fazla pencere dizme seçenekleri. super-key = Super tuşu davranışı - .launcher = Başlatıcıyı aç - .workspaces = Çalışma Alanlarını aç - .applications = Uygulamaları aç + .launcher = Başlatıcıyı Aç + .workspaces = Çalışma Alanlarını Aç + .applications = Uygulamaları Aç .disable = Devre dışı bırak -edge-gravity = Yüzen pencereler kenarlara yapışır -window-controls = Pencere Kontrolleri +edge-gravity = Kayan pencereler kenarlara yapışır +window-controls = Pencere kontrolleri .minimize = Küçültme tuşunu göster - .maximize = Büyültme tuşunu göster + .maximize = Büyütme tuşunu göster .active-window-hint = Etkin pencere belirtmesini göster focus-navigation = Odak gezinimi .focus-follows-cursor = Odak imleci takip eder @@ -334,19 +320,18 @@ focus-navigation = Odak gezinimi ## Desktop: Workspaces workspaces = Çalışma Alanları - .desc = Çalışma alan sayısını, davranışını, ve yerini değiştir. -workspaces-behavior = Çalışma Alanı Davranışı +workspaces-behavior = Çalışma alanı davranışı .dynamic = Dinamik çalışma alanları .dynamic-desc = Boş çalışma alanlarını otomatik olarak siler. .fixed = Sabit sayıda çalışma alanı - .fixed-desc = Çalışma alanlarını genel görünümde kendiniz ekeyip çıkarın. -workspaces-multi-behavior = Çoklu-ekran Davranışı - .span = Çalışma Alanları Ekranlara Yayılır - .separate = Her Ekranın Kendi Çalışma Alanı Olur -workspaces-overview-thumbnails = Çalışma Alanları Genel Görünümü Küçük Resimleri - .show-number = Çalışma Alanı Numarasını Göster - .show-name = Çalışma Alanı Adını Göster -workspaces-orientation = Çalışma Alanları Yönelimi + .fixed-desc = Çalışma alanlarını genel görünümde ekle veya çıkar. +workspaces-multi-behavior = Çoklu-ekran davranışı + .span = Çalışma alanları ekranlara yayılır + .separate = Ekranların ayrı çalışma alanları olur +workspaces-overview-thumbnails = Çalışma alanları genel görünümü küçük resimleri + .show-number = Çalışma alanı numarasını göster + .show-name = Çalışma alanı adını göster +workspaces-orientation = Çalışma alanları yönelimi .vertical = Dikey .horizontal = Yatay hot-corner = Hızlı Köşe @@ -361,7 +346,6 @@ color = Renk .sidebar = Renk Profilleri .temperature = Renk sıcaklığı display = Ekranlar - .desc = Ekranları, harici ekran kartı kullanımı ve gece ışığını yönet .arrangement = Ekran Dizilimi .arrangement-desc = Ekranları yeniden dizmek için sürükleyin. .enable = Ekranı etkinleştir. @@ -372,10 +356,10 @@ display = Ekranlar .resolution = Çözünürlük .scale = Ölçek .additional-scale-options = Ek ölçek seçenekleri -mirroring = Ekran Yansıtm +mirroring = Ekran Yansıtma .id = Yansıt { $id } .dont = Yansıtma - .mirror = { $display } ekranını aynala + .mirror = { $display } ekranını yansıt .project = Yansıt { $display -> [all] tüm ekranlar @@ -388,12 +372,12 @@ mirroring = Ekran Yansıtm } night-light = Gece Işığı .auto = Otomatik (gün doğumundan batışına) - .desc = Daha sıcak renklerle mavi ışığı azalt. + .desc = Daha sıcak renklerle mavi ışığı azalt orientation = Yönelim .standard = Standart - .rotate-90 = 90 çevir - .rotate-180 = 180 çevir - .rotate-270 = 270 çevir + .rotate-90 = 90° çevir + .rotate-180 = 180° çevir + .rotate-270 = 270° çevir vrr = Değişken yenileme hızı .enabled = Etkin .force = Her zaman @@ -402,18 +386,17 @@ vrr = Değişken yenileme hızı scheduling = Programlama .manual = Manuel Program dialog = Diyalog - .title = Görüntü Ayarları Korunsun mu? - .keep-changes = Değişiklikleri Koru + .title = Görüntü ayarları korunsun mu? + .keep-changes = Değişiklikleri koru .change-prompt = { $time } saniye içinde önceki görüntü ayarlarına dönülecek. - .revert-settings = Ayarları Geri Al + .revert-settings = Ayarları geri al ## Sound sound = Ses - .desc = N/A sound-output = Çıkış .volume = Çıkış sesi - .device = Çıkış aygıtı + .device = Çıkış cihazı .level = Çıkış düzeyi .config = Yapılandırma .balance = Denge @@ -421,7 +404,7 @@ sound-output = Çıkış .right = Sağ sound-input = Giriş .volume = Giriş sesi - .device = Giriş aygıtı + .device = Giriş cihazı .level = Giriş seviyesi sound-alerts = Uyarılar .volume = Uyarı seviyesi @@ -431,8 +414,7 @@ sound-applications = Uygulamalar ## Power -power = Güç & Pil - .desc = Güç seçeneklerini yönet +power = Güç & pil battery = Pil .minute = { $value } { $value -> @@ -456,17 +438,17 @@ battery = Pil [full] dolu *[other] boş } -connected-devices = Bağlı Aygıtlar - .unknown = Bilinmeyen aygıt -power-mode = Güç Modu +connected-devices = Bağlı cihazlar + .unknown = Bilinmeyen cihaz +power-mode = Güç modu .battery = Uzatılmış pil ömrü - .battery-desc = Azaltılmış güç kullanımı ve performans. + .battery-desc = Azaltılmış güç kullanımı ve performans .balanced = Dengeli - .balanced-desc = Orta düzey performans ve güç kullanımı. + .balanced-desc = Orta düzey performans ve güç kullanımı .performance = Yüksek performans - .performance-desc = Maksimum performans ve güç kullanımı. + .performance-desc = Maksimum performans ve güç kullanımı .no-backend = Arka uç bulunamadı. system76-power veya power-profiles-daemon kurun. -power-saving = Güç Tasarrufu Seçenekleri +power-saving = Güç tasarrufu seçenekleri .turn-off-screen-after = Ekranı belirli süreden sonra kapat .auto-suspend = Otomatik askıya al .auto-suspend-ac = Şarjdayken otomatik askıya al @@ -474,12 +456,11 @@ power-saving = Güç Tasarrufu Seçenekleri ## Input -acceleration-desc = Otomatik olarak takip hassasiyetini hıza bağlı olarak düzenle. +acceleration-desc = Otomatik olarak takip hassasiyetini hıza bağlı olarak düzenle disable-while-typing = Yazarken devre dışı bırak -input-devices = Giriş Aygıtları - .desc = Giriş Aygıtları +input-devices = Giriş cihazları primary-button = Birincil buton - .desc = Fiziksel butonların sırasını belirler. + .desc = Fiziksel butonların sırasını belirler .left = Sol .right = Sağ scrolling = Kaydırma @@ -496,7 +477,6 @@ fast = Hızlı short = Kısa long = Uzun keyboard = Klavye - .desc = Giriş kaynakları, aralarında geçiş, özel karakter girişi, kısayollar. keyboard-sources = Giriş Kaynakları .desc = Giriş kaynakları arasında Super+Space tuş kombinasyonu ile geçiş yapılabilir. Bu klavye kısayolları ayarlarından kişileştirilebilir. .move-up = Yukarı çıkar @@ -507,7 +487,8 @@ keyboard-sources = Giriş Kaynakları .add = Giriş kaynağı ekle keyboard-special-char = Özel Karakter Girişi .alternate = Alternatif karakter tuşu - .compose = Compose tuşu + .compose = Özel karakter tuşu + .compose-desc = Özel karakter tuşu, çok çeşitli karakterlerin girilmesine olanak tanır. Kullanmak için, özel karakter tuşuna ve ardından bir karakter dizisine basın. Örneğin, özel karakter tuşuna basıp ardından C ve o tuşlarına basmak © karakterini, özel karakter tuşuna basıp ardından a ve ‘ tuşlarına basmak ise á karakterini girecektir. .caps = Caps Lock tuşu keyboard-typing-assist = Yazma .repeat-rate = Tekrar hızı @@ -517,21 +498,21 @@ keyboard-numlock-boot = Numlock .last-boot = Son başlangıç .on = Açık .off = Kapalı - .set = Numlock başlangıç durumunu ayarlayın + .set = Numlock başlangıç durumunu ayarla added = Eklendi type-to-search = Aramak için yazın... show-extended-input-sources = Genişletilmiş giriş kaynaklarını göster ## Input: Keyboard: Shortcuts -keyboard-shortcuts = Klavye Kısayolları +keyboard-shortcuts = Klavye kısayolları .desc = Kısayolları görüntüle ve kişileştir cancel = Vazgeç command = Komut custom = Özel -debug = Hata Ayıklama -disabled = Devre Dışı -input-source-switch = Klavye düzenini değiştir +debug = Hata ayıklama +disabled = Devre dışı +input-source-switch = Klavye dili giriş kaynağını değiştir migrate-workspace-prev = Çalışma alanını önceki çıktıya taşı migrate-workspace-next = Çalışma alanını sonraki çıktıya taşı migrate-workspace = @@ -546,11 +527,11 @@ replace = Değiştir shortcut-name = Kısayol adı system-controls = Sistem kontrolleri terminate = Sonlandır -toggle-stacking = Pencere istiflemeyi kapat aç +toggle-stacking = Pencere istiflemeyi aç/kapat type-key-combination = Tuş kombinasyonu girin -custom-shortcuts = Özel Kısayollar - .add = Kısayol Ekle - .context = Özel Kısayol Ekle +custom-shortcuts = Özel kısayollar + .add = Kısayol ekle + .context = Özel kısayol ekle .none = Özel kısayol yok modified = { $count } düzenlenmiş nav-shortcuts = Gezinim @@ -579,11 +560,11 @@ nav-shortcuts = Gezinim manage-windows = Pencereleri yönet .close = Pencereyi kapat .maximize = Pencereyi büyüt - .fullscreen = Pencereyi tam ekran + .fullscreen = Pencereyi tam ekrana al .minimize = Pencereyi küçült .resize-inwards = Pencereyi içe doğru yeniden boyutlandır .resize-outwards = Pencereyi dışa doğru yeniden boyutlandır - .toggle-sticky = Yapışkan pencereyi aç kapat + .toggle-sticky = Yapışkan pencereyi aç/kapat move-windows = Pencereyi Taşı .direction = Pencereyi { $direction -> @@ -632,6 +613,7 @@ system-shortcut = Sistem .play-prev = Önceki parça .poweroff = Gücü kapat .screenshot = Ekran görüntüsü al + .suspend = Askıya al .terminal = Bir uçbirim aç .touchpad-toggle = Dokunmatik yüzeyi aç/kapat .volume-lower = Çıkış ses düzeyini azalt @@ -644,11 +626,11 @@ window-tiling = Pencere döşeme .horizontal = Yatay yönelimi ayarla .vertical = Dikey yönelimi ayarla .swap-window = Pencereyi değiştir - .toggle-tiling = Pencere döşemeyi kapat aç - .toggle-stacking = Pencere istiflemeyi kapat aç - .toggle-floating = Pencere yüzdürmeyi kapat aç + .toggle-tiling = Pencere döşemeyi aç/kapat + .toggle-stacking = Pencere istiflemeyi aç/kapat + .toggle-floating = Pencere kaydırmayı aç/kapat .toggle-orientation = Yönelimi değiştir -replace-shortcut-dialog = Kısayolu Değiştir? +replace-shortcut-dialog = Kısayol değiştirilsin mi? .desc = { $shortcut }, { $name } tarafından kullanılmakta. Eğer değiştirirseniz, { $name } devre dışı bırakılacak. zoom-in = Yakınlaştır zoom-out = Uzaklaştır @@ -656,7 +638,6 @@ zoom-out = Uzaklaştır ## Input: Mouse mouse = Fare - .desc = Fare hızı, ivmesi, doğal kaydırma. .speed = Fare hızı .acceleration = Fare ivmesini etkinleştir @@ -666,12 +647,11 @@ click-behavior = Tıklama davranışı .click-finger = İki parmak ile ikincil tıklama ve üç parmak ile orta tıklama .button-areas = Sağ alt köşede ikincil tıklama ve orta alt kenarında orta tıklama pinch-to-zoom = İki parmakla yakınlaştırma - .desc = Yakınlaştırma destekleyen uygulamalar için iki parmağınıla sıkıştırarak ve genişleterek yaklaştırın ve uzaklaştırın. + .desc = Yakınlaştırma özelliği bulunan uygulamalarda içeriği yakınlaştırmak için iki parmağınızı kullanın tap-to-click = Tıklamak için dokun - .desc = Tek parmak ile dokunuşta birincil, iki parmakla dokunuşta ikincil ve üç parmakla dokunuşta orta tıklamayı etkinleştir. + .desc = Birincil tıklama için tek parmakla dokunmayı, ikincil tıklama için iki parmakla dokunmayı ve orta tıklama için üç parmakla dokunmayı sağlar touchpad = Dokunmatik yüzey .acceleration = Dokunmatik yüzey ivmesini etkinleştir - .desc = Dokunmatik yüzey hızı, tıklama seçenekleri ve hareketleri. .speed = Dokunmatik yüzey hızı ## Input: Gestures @@ -691,38 +671,35 @@ open-workspaces-view = Çalışma Alanları Genel Görünümünü aç ## Time & Language -time = Zaman & Dil - .desc = N/A -time-date = Tarih & Saat - .desc = Saat dilimi, otomatik saat ayarları ve bazı zaman biçimleri. +time = Zaman & dil +time-date = Tarih & saat .auto = Otomatik ayarla - .auto-ntp = Tarih & saat, saat dilimi ayarlandığında otomatik olarak güncellenir. -time-zone = Saat Dilimi + .auto-ntp = Tarih & saat, saat dilimi ayarlandığında otomatik olarak güncellenir +time-zone = Saat dilimi .auto = Otomatik saat dilimi .auto-info = Konum hizmetlerine ve internet erişimine gereksim duyar time-format = Tarih & Saat Biçimi .twenty-four = 24-saat biçimi .show-seconds = Show seconds .first = Haftanın ilk günü - .show-date = Üst Panelde Tarihi Göster + .show-date = Zaman eklentisinde tarihi göster .friday = Cuma .saturday = Cumartesi .sunday = Pazar .monday = Pazartesi -time-region = Bölge & Dil - .desc = Tarihleri, saatleri ve sayıları bölgenize göre biçimlendirin. +time-region = Bölge & dil formatting = Biçimlendirme .dates = Tarihler .time = Saat - .date-and-time = Tarih & Saat + .date-and-time = Tarih & saat .numbers = Sayılar .measurement = Ölçüm .paper = Kağıt -preferred-languages = Tercih Edilen Diller +preferred-languages = Tercih edilen diller .desc = Dillerin sırası masaüstünün çevirisinde hangi dilin kullanılacağını belirler. Değişiklikler bir dahaki girişinizde geçerli olur. add-language = Dil ekle .context = Dil Ekle -install-additional-languages = Ek dil kurun +install-additional-languages = Ek dil kur region = Bölge ## Applications @@ -732,8 +709,7 @@ applications = Uygulamalar ## Applications: Default Applications default-apps = Varsayılan Uygulamalar - .desc = Varsayılan web tarayıcısı, e-posta istemcisi, dosya gezgini ve diğer uygulamalar. - .web-browser = Web tarayıcısı + .web-browser = İnternet tarayıcısı .file-manager = Dosya gezgini .mail-client = E-posta istemcisi .music = Müzik @@ -743,58 +719,57 @@ default-apps = Varsayılan Uygulamalar .terminal = Uçbirim .other-associations = Diğer ilişkiler .text-editor = Metin Düzenleyici + .not-installed = kurulu değil ## Applications: Startup Applications -startup-apps = Başlangıç Uygulamaları - .desc = Girişte çalıştırılacak uygulamaları ayarlayın. +startup-apps = Başlangıç uygulamaları .add = Uygulama ekle - .user = Kullanıcıya özgü uygulamalar + .user = Oturum açtığınızda başlatılan uygulamalar .none = Başlangıç uygulaması eklenmedi - .remove-dialog-title = { $name } ögesini kaldır? - .remove-dialog-description = Bunu başlangıç uygulamalarından kaldırmak istediğinize emin misiniz? - .search-for-application = Uygulama ara + .remove-dialog-title = { $name } ögesi kaldırılsın mı? + .remove-dialog-description = Bu başlangıç uygulamasını kaldırmak ister misiniz? + .add-startup-app = Başlangıç uygulaması ekle ## Applications: Legacy Applications -legacy-applications = X11 Uygulamaları Uyumluluğu - .desc = X11 Pencere sistemi uygulama ölçeklemesi ve Genel kısayollar. -legacy-app-global-shortcuts = X11 Uygulamalarında Genel Kısayollar - .desc = Genel kısayollar bir uygulamda gerçekleştirilen fare ve klavye olaylarının diğer uygulamalar tarafından bas-konuş ve bas-sustur gibi özellikler için algılanmasını sağlar. Varsayılan olarak bu X11 uygulamalarında diğer uygulamaların hassas bilgiler içerebilen klavye ve fare olaylarını gözetlemesini engellemek için devre dışıdır. +legacy-applications = X11 uygulamaları uyumluluğu +legacy-app-global-shortcuts = X11 Uygulamalarında genel kısayollar + .desc = Genel kısayollar, uygulamalarda gerçekleştirilen klavye tuş vuruşlarının ve fare düğmesi olaylarının, bas konuş veya bas sessize al gibi özellikler için diğer uygulamalar tarafından tanınmasını sağlar. Varsayılan olarak, diğer uygulamaların hassas bilgiler içeren klavye ve fare olaylarını izlemesini engellemek için X11 uygulamalarında Genel kısayollar devre dışıdır. .none = Hiçbir tuş .modifiers = Modifierlar (Super, Shift, Control, Alt) .combination = Super, Control veya Alt tuşları basılı tutulduğu sürece tüm tuşlar .all = Tüm tuşlar .mouse = X11 uygulamalarında fare tuş olayları -legacy-app-scaling = X11 Pencere Sistemi Uygulama Ölçeklemesi +legacy-app-scaling = X11 pencere sistemi uygulama ölçeklemesi .scaled-gaming = Oyun ve tam ekran uygulamalar için uyarla - .gaming-description = X11 uygulamaları Wayland uygulamalarına göre biraz büyük veya küçük görünebilir. + .gaming-description = X11 uygulamaları Wayland uygulamalarına göre biraz büyük veya küçük görünebilir .scaled-applications = Uygulamalar için uyarla - .applications-description = Oyunlar ve tam ekran X11 uygulamaları ekran çözünürlüğünüze uymayabilir. + .applications-description = Oyunlar ve tam ekran X11 uygulamaları ekran çözünürlüğünüze uymayabilir .scaled-compatibility = Maksimum uyumluluk modu - .compatibility-description = X11 uygulamaları HiDPI ekranlarda bulanık gözükebilir. + .compatibility-description = X11 uygulamaları HiDPI ekranlarda bulanık gözükebilir .preferred-display = Oyunlar ve tam ekran X11 uygulamaları için tercih edilen ekran .no-display = Hiçbiri ## System -system = Sistem & Hesaplar +system = Sistem & hesaplar ## System: About about = Hakkında - .desc = Aygıt adı, donanım bilgisi, işletim sistemi varsayılanları. -about-device = Aygıt adı - .desc = Bu isim, bluetooth aygıtlara ve ağdaki diğer aygıtlara gözükür. +about-device = Cihaz adı + .desc = Bu ad, Bluetooth cihazlarına ve ağdaki diğer cihazlara gözükür about-hardware = Donanım .model = Donanım modeli .memory = Bellek .processor = İşlemci .graphics = Grafik - .disk-capacity = Disk Kapasitesi -about-os = İşletim Sistemi + .disk-capacity = Disk kapasitesi +about-os = İşletim sistemi .os = İşletim sistemi .os-architecture = İşletim sistemi mimarisi + .kernel = Çekirdek sürümü .desktop-environment = Masaüstü ortamı .windowing-system = Pencere sistemi about-related = İlgili ayarlar @@ -802,25 +777,136 @@ about-related = İlgili ayarlar ## System: Firmware -firmware = Bellenim - .desc = Bellenim detayları. +firmware = Cihaz yazılımı ## System: Users users = Kullanıcılar - .desc = Kimlik doğrulama ve kullanıcı hesapları. .admin = Yönetici .standard = Standart .profile-add = Profil resmi seçin administrator = Yönetici - .desc = Yöneticiler tüm kullanıcılar için ayarları değiştirebilir, başka kullanıcılar ekleyebilir ve onları kaldırabilir. + .desc = Yöneticiler tüm kullanıcılar için ayarları değiştirebilir, başka kullanıcılar ekleyebilir ve onları kaldırabilir add-user = Kullanıcı ekle change-password = Parolayı değiştir remove-user = Kullanıcıyı kaldır full-name = Tam ad -invalid-username = Geçersiz kullanıcı adı. -password-mismatch = Parola ve doğrulama birbirine uymalıdır. +invalid-username = Geçersiz kullanıcı adı +password-mismatch = Parola ve doğrulama eşleşmelidir save = Kaydet amplification = Amplifikasyon - .desc = Sesi %150'ye kadar yükseltmeye olanak tanır. + .desc = Sesi %150'ye kadar yükseltmeye olanak tanır add-another-keybinding = Başka bir tuş ataması ekle +xdg-entry-mouse-keywords = COSMIC;Fare; Hızlanma; Kaydırma; +xdg-entry-bluetooth-comment = Bluetooth cihazlarını yönetin +xdg-entry-notifications-keywords = COSMIC;Bildirim;Kilit; +xdg-entry-default-apps-comment = Varsayılan web tarayıcısı, e-posta istemcisi, dosya yöneticisi ve diğer uygulamalar +xdg-entry-keyboard-comment = Giriş kaynakları, geçiş, özel karakter girişi, kısayollar +xdg-entry-power = Güç & Pil +xdg-entry-appearance-keywords = COSMIC;Vurgu;Renk;Simge;Yazı Tipi;Tema +xdg-entry-mouse = Fare +xdg-entry-dock-keywords = COSMIC;Dock;Panel;Eklenti +xdg-entry-mouse-comment = Fare hızı, ivme ve doğal kaydırma +xdg-entry-panel-keywords = COSMIC;Panel;Eklenti +xdg-entry-a11y = Erişilebilirlik +xdg-entry-desktop-keywords = COSMIC;Masaüstü; +xdg-entry-displays-comment = Ekran yapılandırma ayarlarını yönetin +xdg-entry-default-apps = Varsayılan Uygulamalar +xdg-entry-applications-comment = Varsayılan uygulamalar, başlangıç uygulamaları ve X11 uygulama uyumluluk ayarları +xdg-entry-about-keywords = COSMIC;Hakkında +xdg-entry-panel = Panel +xdg-entry-notifications = Bildirimler +xdg-entry-a11y-keywords = COSMIC;Erişilebilirlik;A11y;Ekran;Okuyucu;Büyüteç;Kontrast;Renk; +xdg-entry-desktop = Masaüstü +xdg-entry-date-time-keywords = COSMIC;Saat;Zaman Dilimi; +xdg-entry-desktop-comment = Duvar kağıdı, görünüm, panel, dock, pencere yönetimi ve çalışma alanı ayarları +xdg-entry-keyboard = Klavye +xdg-entry-a11y-comment = Ekran okuyucu, büyüteç, yüksek kontrast ve renk filtreleri +xdg-entry-displays = Ekranlar +xdg-entry-network = Ağ & Kablosuz +xdg-entry-date-time = Tarih & Saat +xdg-entry-input-comment = Klavye ve fare ayarları +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth; +xdg-entry-dock-comment = Uygulamalar ve eklentiler için isteğe bağlı bir çubuk +xdg-entry-network-keywords = COSMIC;Ağ;Kablosuz;WiFi;VPN; +xdg-entry-dock = Dock +xdg-entry-about-comment = Cihaz adı, donanım bilgileri, işletim sistemi varsayılan ayarları +xdg-entry-appearance-comment = Vurgu renkleri ve tema +xdg-entry-input-keywords = COSMIC;Giriş;Klavye;Fare;Fareler; +xdg-entry-comment = COSMIC masaüstü için ayarlar uygulaması +xdg-entry-notifications-comment = Rahatsız Etme modu, kilit ekranı bildirimleri ve uygulama bazlı ayarlar +xdg-entry-applications = Uygulamalar +xdg-entry-default-apps-keywords = COSMIC;Varsayılan;Uygulama +xdg-entry-keywords = COSMIC;Ayarlar; +xdg-entry-about = Hakkında +xdg-entry-input = Giriş Cihazları +xdg-entry-applications-keywords = COSMIC;Varsayılan;Uygulama;Başlangıç;X11;Uyumluluk +xdg-entry-keyboard-keywords = COSMIC;Klavye;Giriş;Kaynak;Kısayollar; +xdg-entry-appearance = Görünüm +xdg-entry-network-comment = Ağ bağlantılarını yönetin +xdg-entry-panel-comment = Menüler ve eklentiler için birincil sistem çubuğu +xdg-entry-power-comment = Güç modları ve güç tasarrufu seçenekleri +xdg-entry-displays-keywords = COSMIC;Ekran; +xdg-entry-date-time-comment = Saat dilimi, otomatik saat ayarları ve zaman biçimlendirme +xdg-entry-touchpad = Dokunmatik yüzey +xdg-entry-wired = Kablolu +xdg-entry-startup-apps-comment = Oturum açıldığında çalışan uygulamaları yapılandırın +xdg-entry-region-language = Bölge & Dil +xdg-entry-startup-apps-keywords = COSMIC;Başlangıç;Uygulama; +xdg-entry-wired-keywords = COSMIC;Kablolu; Yerel Ağ; Ağ; Bağlantı; +xdg-entry-system = Sistem & Hesaplar +xdg-entry-window-management = Pencere Yönetimi +xdg-entry-time-language-comment = Sistem tarihini, saatini, bölgesini ve dilini yönetin +xdg-entry-x11-applications-keywords = COSMIC;X11;Uygulama;Oyun;Uyumluluk; +xdg-entry-touchpad-keywords = COSMIC;Dokunmatik yüzey; Hareket; +xdg-entry-time-language = Zaman & Dil +xdg-entry-users = Kullanıcılar +xdg-entry-system-keywords = COSMIC;Sistem;Bilgi;Hesaplar;Cihaz Yazılımı; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Ağ; Bağlantı; +xdg-entry-wireless-comment = Wi-Fi bağlantıları ve bağlantı profilleri +xdg-entry-wallpaper = Duvar Kağıdı +xdg-entry-users-comment = Kimlik doğrulama ve kullanıcı hesapları +xdg-entry-wallpaper-comment = Duvar kağıdı resimleri, renkleri ve slayt gösterisi seçenekleri +xdg-entry-startup-apps = Başlangıç Uygulamaları +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;Çalışma Alanı; Yönlendirme; Genel Bakış; Monitör; +xdg-entry-system-comment = Sistem bilgileri, hesaplar ve cihaz yazılımı güncellemeleri +xdg-entry-x11-applications-comment = X11 pencere sistemi uygulama ölçeklendirmesi, birincil ekran ve genel kısayollar +xdg-entry-region-language-comment = Tarihleri, saatleri ve sayıları bölgenize göre biçimlendirin +xdg-entry-wallpaper-keywords = COSMIC;Duvar kağıdı; Arka plan; Slayt gösterisi; +xdg-entry-users-keywords = COSMIC;Kullanıcı;Hesap; +xdg-entry-vpn-keywords = COSMIC;VPN;Ağ;Bağlantı;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;Sistem;Saat;Tarih;Bölge;Dil; +xdg-entry-sound-keywords = COSMIC;Ses;Sesli;Uyarı;Kablolu Sistem; +xdg-entry-power-keywords = COSMIC;Güç;Pil +xdg-entry-region-language-keywords = COSMIC;Bölge;Dil;Tarih;Biçim;Saat;Yerel Ayar;Yerelleştirme; +xdg-entry-sound-comment = Cihazlar, uyarılar ve uygulamalar için ses ayarları +xdg-entry-touchpad-comment = Dokunmatik yüzey hızı, tıklama seçenekleri ve hareketler +xdg-entry-vpn-comment = VPN bağlantıları ve bağlantı profilleri +xdg-entry-window-management-keywords = COSMIC;Pencere;Yönetim;Döşeme;Süper;Anahtar; +xdg-entry-workspaces-comment = Çalışma alanı yönlendirmesi, genel bakış ve çoklu monitör davranışı +xdg-entry-sound = Ses +xdg-entry-workspaces = Çalışma Alanları +xdg-entry-x11-applications = X11 Uygulamaları Uyumluluğu +xdg-entry-window-management-comment = Süper tuş işlevi, pencere kontrol seçenekleri ve ek pencere döşeme seçenekleri +xdg-entry-wired-comment = Kablolu bağlantılar ve bağlantı profilleri +place-here = Eklentileri buraya yerleştir +sound-usb-audio = USB Ses +sound-device-profiles = Cihaz profilleri +sound-hd-audio = HD Ses +qr-code-unavailable = QR kodu mevcut değil +shadow-and-corners = Pencere gölgesi ve köşeler +workspaces-overview = Çalışma alanlarına genel bakış + .action-on-typing = Yazma işlemi + .none = Hiçbiri + .launcher = Başlatıcıyı Aç + .applications = Uygulamaları Aç +network-name = Ağ Adı +shadows-tiling = Döşemeli pencereler + .clip = Sistem köşelerini eşleştir + .shadow = Gölgeleri uygula +shadows-floating = Kayan pencereler + .clip = Sistem köşelerini eşleştirin ve gölgeleri uygulayın +share = Ağı paylaş +sound-device-port-unplugged = Takılı değil +scan-to-connect-description = Bu ağa bağlanmak için QR kodunu tarayın. diff --git a/i18n/uk/cosmic_settings.ftl b/i18n/uk/cosmic_settings.ftl index 1297995..82c9769 100644 --- a/i18n/uk/cosmic_settings.ftl +++ b/i18n/uk/cosmic_settings.ftl @@ -1,5 +1,5 @@ app = Налаштування COSMIC -unknown = Невідоме +unknown = Невідомо number = { $number } ## Networking: Wired @@ -12,8 +12,8 @@ wired = Дротове ## Networking: Online Accounts -online-accounts = Облікові записи в Інтернеті - .desc = Додайте облікові записи, IMAP та SMTP, облікові записи організацій +online-accounts = Онлайн-облікові записи + .desc = Додати облікові записи, IMAP і SMTP, облікові записи організацій ## Desktop @@ -21,14 +21,13 @@ desktop = Стільниця ## Desktop: Wallpaper -wallpaper = Зображення тла +wallpaper = Тло .change = Змінювати зображення що - .desc = Налаштування для зображення тла, кольорів та показу слайдів. - .fit = Розміщення зображення тла - .folder-dialog = Виберіть теку із зображеннями тла - .image-dialog = Виберіть зображення тла - .plural = Зображення тла - .same = Однакове зображення тла на всіх дисплеях + .fit = Припасувати зображення тла + .folder-dialog = Виберіть теку із зображеннями + .image-dialog = Виберіть зображення + .plural = Зображення + .same = Однакове зображення на всіх дисплеях .slide = Показ слайдів add-color = Додати колір add-image = Додати зображення @@ -36,7 +35,7 @@ all-displays = Всі дисплеї colors = Кольори dialog-add = Додати fill = Заповнити -fit-to-screen = Припасувати до екрана +fit-to-screen = Припасувати open-new-folder = Відкрити нову теку recent-folders = Нещодавні теки x-minutes = @@ -54,112 +53,107 @@ x-hours = ## Desktop: Appearance -appearance = Зовнішній вигляд - .desc = Кольори акценту та стилізація. +appearance = Вигляд accent-color = Колір акценту -app-background = Тло застосунку чи вікна +app-background = Тло вікон auto = Автоматичне close = Закрити color-picker = Вибір кольору -copied-to-clipboard = Cкопійовано в буфер обміну -copy-to-clipboard = Скопіювати в буфер обміну +copied-to-clipboard = Скопійовано до буфера обміну +copy-to-clipboard = Копіювати до буфера обміну dark = Темна -export = Експортувати +export = Експорт hex = Hex import = Імпортувати light = Світла mode-and-colors = Режим та кольори -recent-colors = Нещодавні кольори +recent-colors = Останні кольори reset-to-default = Типові значення rgb = RGB -window-hint-accent = Колір підказки щодо активного вікна -window-hint-accent-toggle = Використовувати колір акценту з теми для підказки щодо активного вікна -auto-switch = Автоматично перемикати між світлим та темним режимами - .sunrise = Перемикання y світлий режим під час сходу сонця - .sunset = Перемикання у темний режим під час заходу сонця - .next-sunrise = Перемикання у світлий режим під час наступного сходу сонця - .next-sunset = Перемикання у темний режим під час наступного заходу сонця +window-hint-accent = Колір підказки активного вікна +window-hint-accent-toggle = Акцентний колір для активного вікна +auto-switch = Автоматичне перемикання між світлим і темним режимами + .sunrise = Перемикатися на світлий режим на світанку + .sunset = Перемикатися на темний режим на смерканні + .next-sunrise = Перемикатися на світлий режим на наступному світанку + .next-sunset = Перемикатися на темний режим на наступному смерканні container-background = Тло контейнера - .desc-detail = Колір тла контейнера використовується для бічної панелі навігації, бічної панелі, діалогів та подібних віджетів. Типово походить від кольору тла застосунку чи вікна. - .reset = Автоматичне визначення - .desc = Основний колір контейнера використовується для бічної панелі навігації, бічної панелі, діалогів та подібних віджетів. + .desc-detail = Колір тла контейнера використовується для навігаційної бічної панелі, бокових панелей, діалогових вікон та подібних елементів. Усталено він автоматично визначається на основі тла вікна. + .reset = Скинути до автоматичного + .desc = Використовується для навігаційної бічної панелі, бокових панелей, діалогових вікон та подібних елементів control-tint = Відтінок елементів керування - .desc = Використовується для тла стандартних кнопок, пошукових полів, текстових полів та подібних компонентів. -frosted = Ефект матового скла в інтерфейсі системи - .desc = Застосовує розмиття тла панелі, дока, аплетів, запускача та бібліотеки програм. + .desc = Використовується для тла стандартних кнопок, пошукових полів, текстових полів та подібних компонентів +frosted = Ефект матового скла для системного інтерфейсу + .desc = Застосовує розмиття тла до панелі, області завдань, віджетів, запускача та бібліотеки застосунків experimental-settings = Експериментальні налаштування -enable-export = Застосувати цю тему до застосунків GNOME. - .desc = Не всі інструментарії підтримують автоперемикання. Для зміни теми в не COSMIC застосунках може знадобитись перезавантаження. -icon-theme = Тема піктограм - .desc = Застосовує інший набір піктограм до застосунків. -text-tint = Відтінок тексту в інтерфейсі - .desc = Колір, від якого в інтерфейсі походять кольори тексту з достатнім контрастом на різних поверхнях. +enable-export = Застосувати цю тему до застосунків GNOME + .desc = Не всі інструментарії підтримують автоперемикання. Після зміни теми деякі застосунки може знадобитися перезапустити. +icon-theme = Тема значків + .desc = Застосовує інший набір значків для застосунків +text-tint = Відтінок тексту інтерфейсу + .desc = Колір, з якого формуються кольори тексту інтерфейсу з достатнім контрастом на різних поверхнях style = Стиль .round = Заокруглений .slightly-round = Трохи заокруглений .square = Квадратний # interface density left out for now window-management-appearance = Керування вікнами - .active-hint = Розмір підказки щодо активного вікна + .active-hint = Розмір підказки активного вікна .gaps = Відступи навколо укладених вікон ## Desktop: Notifications notifications = Сповіщення - .desc = Не турбувати, сповіщення на екрані блокування, налаштування для окремих програм. ## Desktop: Panel panel = Панель - .desc = Верхня смужка з елементами керування стільницею та меню. add = Додати -add-applet = Додати аплет -all = На всіх -applets = Аплети +add-applet = Додати віджет +all = Всі +applets = Віджети center-segment = Центральний сегмент end-segment = Кінцевий сегмент large = Великий -no-applets-found = Аплетів не знайдено... +no-applets-found = Віджетів не знайдено... panel-bottom = Внизу panel-left = Ліворуч panel-right = Праворуч panel-top = Вгорі -search-applets = Шукати аплети... +search-applets = Шукати віджети... small = Малий start-segment = Початковий сегмент -panel-appearance = Зовнішній вигляд +panel-appearance = Вигляд .match = Системний .light = Світлий .dark = Темний panel-behavior-and-position = Поведінка та положення .autohide = Автоматично приховувати панель - .dock-autohide = Автоматично приховувати док + .dock-autohide = Автоматично приховувати область завдань .position = Положення на екрані .display = Показувати на дисплеї panel-style = Стиль .anchor-gap = Відступ між панеллю та краями екрана - .dock-anchor-gap = Відступ між доком та краями екрана + .dock-anchor-gap = Відступ між областю завдань та краями екрана .extend = Розширити панель до країв екрана - .dock-extend = Розширити док до країв екрана - .appearance = Зовнішній вигляд + .dock-extend = Розширити область завдань до країв екрана + .appearance = Вигляд .size = Розмір .background-opacity = Непрозорість тла panel-applets = Налаштування - .dock-desc = Налаштуйте аплети в доці - .desc = Налаштуйте аплети на панелі -panel-missing = Не знайдено налаштувань панелі - .desc = Не знайдено файлу конфігурації панелі через використання власних налаштувань або через його пошкодження. + .dock-desc = Конфігурація віджетів + .desc = Конфігурація віджетів +panel-missing = Конфігурацію панелі не знайдено + .desc = Файл конфігурації відсутній через використання власних налаштувань або його пошкодження. .fix = Типові значення ## Desktop: Dock -dock = Док - .desc = Панель з пришпиленими застосунками в лотку застосунків та іншими аплетами. +dock = Область завдань ## Desktop: Window management window-management = Керування вікнами - .desc = Дія для клавіші Super, налаштування керування вікнами та додаткові налаштування укладання вікон. super-key = Клавіша Super .launcher = Відкриває запускач .workspaces = Відкриває меню робочих просторів @@ -173,14 +167,13 @@ window-controls = Керування вікнами ## Desktop: Workspaces workspaces = Робочі простори - .desc = Орієнтація та поведінка робочих просторів. workspaces-behavior = Поведінка робочих просторів .dynamic = Динамічні робочі простори .dynamic-desc = Порожні робочі простори автоматично вилучаються .fixed = Фіксована кількість робочих просторів .fixed-desc = Додавайте або вилучайте робочі простори в режимі огляду. -workspaces-multi-behavior = Поведінка за наявності декількох моніторів - .span = Робочий простір охоплює кілька дисплеїв +workspaces-multi-behavior = Поведінка з кількома моніторами + .span = Робочі простори охоплюють кілька дисплеїв .separate = Окремий робочий простір для кожного дисплея workspaces-overview-thumbnails = Мініатюри в огляді робочих просторів .show-number = Показувати номер робочого простору @@ -189,107 +182,98 @@ workspaces-orientation = Орієнтація робочих просторів .vertical = Вертикальна .horizontal = Горизонтальна hot-corner = Гарячий кут - .top-left-corner = Використати гарячий кут вгорі ліворуч для робочих просторів + .top-left-corner = Увімкнути гарячий кут у верхньому лівому положенні для робочих просторів ## Desktop: Display --requires-restart = Потребує перезапуску +-requires-restart = Потрібен перезапуск color = Колір .depth = Глибина кольору .profile = Профіль кольору .sidebar = Профілі кольорів .temperature = Температура кольору display = Дисплеї - .desc = Керування дисплеями та нічним світлом .arrangement = Розташування дисплеїв - .arrangement-desc = Перетягуйте дисплеї для зміни їх розташування. + .arrangement-desc = Перетягніть дисплеї, щоб змінити їх порядок .enable = Увімкнути дисплей - .external = { $size } { $output } Зовнішній дисплей - .laptop = { $size } Дисплей ноутбука + .external = { $size } { $output } зовнішній дисплей + .laptop = { $size } дисплей ноутбука .options = Параметри дисплея .refresh-rate = Частота оновлення .resolution = Роздільна здатність .scale = Масштаб - .additional-scale-options = Додаткові налаштування масштабування + .additional-scale-options = Додаткові параметри масштабу mirroring = Віддзеркалення .id = Віддзеркалення { $id } .dont = Не віддзеркалювати .mirror = Віддзеркалювати { $display } .project = - Проектувати на { $display -> + Проєктувати на { $display -> [all] всі дисплеї *[other] { $display } } .project-count = - Проектування на { $count } { $count -> + Проєктувати на { $count } { $count -> [one] дисплей [few] дисплеї *[other] дисплеїв } night-light = Нічне світло - .auto = Автоматично (від заходу до сходу сонця) - .desc = Зменшення синього світла, використовуючи більш теплі кольори. + .auto = Автоматично (від смеркання до світання) + .desc = Приглушує синє світло теплими кольорами orientation = Орієнтація .standard = Стандартна - .rotate-90 = Обертання на 90 - .rotate-180 = Обертання на 180 - .rotate-270 = Обертання на 270 + .rotate-90 = Обернути на 90° + .rotate-180 = Обернути на 180° + .rotate-270 = Обернути на 270° scheduling = Планування - .manual = Планування вручну + .manual = Власний розклад dialog = Діалог .title = Залишити ці налаштування дисплея? .keep-changes = Зберегти - .change-prompt = - Повернення до попередніх налаштувань буде виконано за { $time } { $time -> - [one] секунду - [few] секунди - *[other] секунд - }. + .change-prompt = Повернення до попередніх налаштувань через { $time } секунд. .revert-settings = Повернути ## Sound sound = Звук - .desc = Н/Д sound-output = Виведення - .volume = Гучність виведення + .volume = Гучність .device = Пристрій виведення - .level = Рівень виведення + .level = Рівень .config = Конфігурація .balance = Баланс - .left = Лівий - .right = Правий + .left = Ліво + .right = Право sound-input = Введення - .volume = Гучність введення + .volume = Гучність запису .device = Пристрій введення .level = Рівень введення sound-alerts = Попередження - .volume = Гучність попередження - .sound = Звук попередження + .volume = Гучність попереджень + .sound = Звук попереджень sound-applications = Застосунки .desc = Гучність та налаштування для застосунків ## Power power = Живлення та акумулятор - .desc = Керування параметрами живлення power-mode = Режим живлення .battery = Подовжений час роботи акумулятора - .battery-desc = Зменшене споживання живлення та безшумна робота. + .battery-desc = Зменшене енергоспоживання та тиха робота .balanced = Збалансований - .balanced-desc = Тиха робота та помірне споживання живлення. + .balanced-desc = Тиха робота та помірне енергоспоживання .performance = Висока швидкодія - .performance-desc = Максимальна швидкодія та споживання живлення. + .performance-desc = Максимальна швидкодія та енергоспоживання .no-backend = Бекенд не знайдено. Встановіть system76-power або power-profiles-daemon. ## Input -acceleration-desc = Автоматично регулює чутливість відстеження руху залежно від швидкості. +acceleration-desc = Автоматично регулює чутливість відстеження руху залежно від швидкості disable-while-typing = Вимикати під час введення тексту input-devices = Пристрої введення - .desc = Пристрої введення primary-button = Основна кнопка - .desc = Задає порядок фізичних кнопок. + .desc = Задає порядок фізичних кнопок .left = Ліва .right = Права scrolling = Гортання @@ -306,82 +290,82 @@ fast = Швидка short = Коротка long = Довга keyboard = Клавіатура - .desc = Джерела введення, перемикання, введення спеціальних символів, скорочення. keyboard-sources = Джерела введення - .desc = Перемикання джерел введення виконується комбінацією клавіш Super+Пропуск. Це можна змінити в налаштуваннях клавіатурних скорочень. + .desc = Джерела введення можна перемикати за допомогою сполучення клавіш Super+Space. Це можна налаштувати в параметрах клавіатурних скорочень. .move-up = Перемістити вгору .move-down = Перемістити вниз .settings = Налаштування - .view-layout = Переглянути розкладку клавіатури + .view-layout = Показати розкладку клавіатури .remove = Вилучити .add = Додати джерело введення keyboard-special-char = Введення спеціальних символів .alternate = Клавіша альтернативних символів .compose = Клавіша компонування + .compose-desc = Клавіша компонування дозволяє вводити широкий спектр символів. Щоб скористатися нею, натисніть Compose, а потім послідовність символів. Наприклад, клавіша Compose, а потім C і o введуть ©, а клавіша Compose, а потім a і ‘ введуть á. .caps = Клавіша Caps Lock keyboard-typing-assist = Введення .repeat-rate = Частота повторів .repeat-delay = Затримка повторів added = Додана -type-to-search = Пишіть для пошуку... +type-to-search = Введіть текст для пошуку... ## Input: Keyboard: Shortcuts -keyboard-shortcuts = Клавіатурні скорочення - .desc = Перегляд і налаштування скорочень +keyboard-shortcuts = Сполучення клавіш + .desc = Перегляд і налаштування сполучень cancel = Скасувати command = Команда -custom = Користувацькі +custom = Власні debug = Зневадження disabled = Вимкнено -migrate-workspace-prev = Перемістити робочий простір до попереднього джерела виведення -migrate-workspace-next = Перемістити робочий простір до наступного джерела виведення +migrate-workspace-prev = Перемістити робочий простір до попереднього виводу +migrate-workspace-next = Перемістити робочий простір до наступного виводу migrate-workspace = - Перемістити робочий простір до джерела виведення { $direction -> - *[down] нижче + Перемістити робочий простір на вивід { $direction -> + *[down] вниз [left] ліворуч [right] праворуч - [up] вище + [up] вгору } navigate = Перейти replace = Замінити shortcut-name = Назва скорочення -system-controls = Елементи керування системою +system-controls = Керування системою terminate = Зупинити toggle-stacking = Перемкнути групування вікон -type-key-combination = Введіть комбінацію клавіш -custom-shortcuts = Користувацькі скорочення - .add = Додати скорочення - .context = Додати користувацьке скорочення - .none = Немає користувацьких скорочень +type-key-combination = Натисніть комбінацію клавіш +custom-shortcuts = Власні сполучення + .add = Додати сполучення + .context = Додати користувацькі сполучення + .none = Немає користувацьких сполучень modified = { $count } змінено nav-shortcuts = Навігація - .prev-output = Фокус на попереднє джерело виведення - .next-output = Фокус на наступне джерело виведення + .prev-output = Фокус на попередній вивід + .next-output = Фокус на наступний вивід .last-workspace = Фокус на останній робочий простір .prev-workspace = Фокус на попередній робочий простір .next-workspace = Фокус на наступний робочий простір .focus = Фокус на вікно { $direction -> - *[down] нижче + *[down] вниз [in] всередині [left] ліворуч [out] зовні [right] праворуч - [up] вище + [up] вгору } .output = - Перейти до джерела виведення { $direction -> - *[down] нижче + Перейти до виводу { $direction -> + *[down] вниз [left] ліворуч [right] праворуч - [up] вище + [up] вгору } .workspace = Перейти до робочого простору { $num } manage-windows = Керування вікнами .close = Закрити вікно .maximize = Розгорнути вікно - .fullscreen = Розгорнути вікно на повний екран + .fullscreen = Повноекранний режим .minimize = Згорнути вікно .resize-inwards = Зміна розмірів вікна всередину .resize-outwards = Зміна розмірів вікна назовні @@ -389,33 +373,33 @@ manage-windows = Керування вікнами move-windows = Переміщення вікон .direction = Перемістити вікно { $direction -> - *[down] нижче + *[down] вниз [left] ліворуч [right] праворуч - [up] вище + [up] вгору } .display = - Перемістити вікно на монітор { $direction -> - *[down] нижче + Перемістити вікно на екран { $direction -> + *[down] вниз [left] ліворуч [right] праворуч - [up] вище + [up] вгору } .workspace = - Перемістити вікно на робочий простір { $direction -> + Перемістити вікно до робочого простору { $direction -> *[below] нижче [left] ліворуч [right] праворуч [above] вище } - .workspace-num = Перемістити вікно на робочий простір { $num } - .prev-workspace = Перемістити вікно на попередній робочий простір - .next-workspace = Перемістити вікно на наступний робочий простір - .last-workspace = Перемістити вікно на останній робочий простір + .workspace-num = Перемістити вікно до робочого простору { $num } + .prev-workspace = Перемістити вікно до попереднього робочого простору + .next-workspace = Перемістити вікно до наступного робочого простору + .last-workspace = Перемістити вікно до останнього робочого простору .next-display = Перемістити вікно на наступний дисплей .prev-display = Перемістити вікно на попередній дисплей - .send-to-prev-workspace = Перемістити вікно на попередній робочий простір - .send-to-next-workspace = Перемістити вікно на наступний робочий простір + .send-to-prev-workspace = Перемістити вікно до попереднього робочого простору + .send-to-next-workspace = Перемістити вікно до наступного робочого простору system-shortcut = Система .app-library = Відкрити бібліотеку застосунків .brightness-down = Зменшити яскравість дисплея @@ -427,21 +411,22 @@ system-shortcut = Система .launcher = Відкрити запускач .log-out = Вийти .lock-screen = Заблокувати екран - .mute = Вимкнути виведення звуку + .mute = Вимкнути звук .mute-mic = Вимкнути мікрофон .play-pause = Відтворення/Пауза .play-next = Наступна доріжка .play-prev = Попередня доріжка .poweroff = Вимкнути .screenshot = Зробити знімок екрана + .suspend = Призупинити .terminal = Відкрити термінал - .touchpad-toggle = Перемкнути тачпад - .volume-lower = Зменшити гучність виведення звуку - .volume-raise = Збільшити гучність виведення звуку - .web-browser = Відкрити браузер + .touchpad-toggle = Перемкнути сенсорну панель + .volume-lower = Зменшити гучність + .volume-raise = Збільшити гучність + .web-browser = Відкрити вебпереглядач .window-switcher = Перемикати відкриті вікна .window-switcher-previous = Перемикати відкриті вікна у зворотньому порядку - .workspace-overview = Відкрити огляд робочих просторів + .workspace-overview = Відкрити режим огляду робочих просторів window-tiling = Укладання вікон .horizontal = Встановити горизонтальну орієнтацію .vertical = Встановити вертикальну орієнтацію @@ -450,50 +435,46 @@ window-tiling = Укладання вікон .toggle-stacking = Перемкнути групування вікон .toggle-floating = Перемкнути плавучість вікон .toggle-orientation = Перемкнути орієнтацію -replace-shortcut-dialog = Замінити скорочення? +replace-shortcut-dialog = Замінити сполучення? .desc = { $shortcut } вже використовується для { $name }. Якщо замінити його, { $name } буде вимкнено. ## Input: Mouse mouse = Миша - .desc = Швидкість миші, прискорення, природне гортання. .speed = Швидкість миші .acceleration = Увімкнути прискорення миші ## Input: Touchpad click-behavior = Поведінка при натисканні - .click-finger = Другорядне клацання активується двома пальцями, а клацання середньою кнопкою — трьома пальцями - .button-areas = Другорядне клацання активується в нижньому правому куті, а клацання середньою кнопкою — внизу по центру -pinch-to-zoom = Звести для збільшення - .desc = У застосунках, які підтримують масштабування, використовуйте два пальці для збільшення вмісту. -tap-to-click = Дотик як клацання - .desc = Дотик одним пальцем активує основне клацання, дотик двома пальцями — другорядне клацання, дотик трьома пальцями — клацання середньою кнопкою. -touchpad = Touchpad + .click-finger = Клацання правою кнопкою двома пальцями, середнє клацання трьома пальцями + .button-areas = Клацання правою кнопкою в нижньому правому куті, середнє клацання внизу по центру +pinch-to-zoom = Масштабування щипком + .desc = У застосунках, які підтримують масштабування, використовуйте два пальці для збільшення вмісту +tap-to-click = Натискання дотиком + .desc = Дотик одним пальцем активує основне клацання, дотик двома пальцями — другорядне клацання, дотик трьома пальцями — клацання середньою кнопкою +touchpad = Сенсорна панель .acceleration = Увімкнути прискорення сенсорної панелі - .desc = Швидкість сенсорної панелі, варіанти натискання, жести. .speed = Швидкість сенсорної панелі ## Input: Gestures gestures = Жести - .four-finger-down = Проведення чотирма пальцями вниз - .four-finger-left = Проведення чотирма пальцями ліворуч - .four-finger-right = Проведення чотирма пальцями праворуч - .four-finger-up = Проведення чотирма пальцями вгору - .three-finger-any = Проведення трьома пальцями в будь-якому напрямку -switch-between-windows = Перемикання вікон + .four-finger-down = Провести чотирма пальцями вниз + .four-finger-left = Провести чотирма пальцями ліворуч + .four-finger-right = Провести чотирма пальцями праворуч + .four-finger-up = Провести чотирма пальцями вгору + .three-finger-any = Провести трьома пальцями в будь-якому напрямку +switch-between-windows = Перемикання між вікнами open-application-library = Відкрити бібліотеку застосунків open-workspaces-view = Відкрити огляд робочих просторів ## Time & Language time = Час і мова - .desc = Н/Д time-date = Дата та час - .desc = Часовий пояс, автоматичне налаштування годинника та деякі налаштування формату часу. .auto = Встановлювати автоматично - .auto-ntp = Дата та час будуть оновлюватися автоматично при встановленні часового поясу. + .auto-ntp = Дата та час будуть оновлюватися автоматично при встановленні часового поясу time-zone = Часовий пояс .auto = Автоматичне визначення часового поясу .auto-info = Необхідні служби визначення місцезнаходження та доступ до Інтернету @@ -507,18 +488,16 @@ time-format = Формат дати та часу .sunday = Неділя .monday = Понеділок time-region = Регіон та мова - .desc = Формат дати, часу та чисел на основі вашого регіону. ## System -system = Система та облікові записи +system = Система і обліковки ## System: About about = Про систему - .desc = Назва пристрою, інформація щодо обладнання, типові значення операційної системи. about-device = Назва пристрою - .desc = Назва, яку бачать інші мережі та пристрої Bluetooth. + .desc = Назва, яку бачать інші мережі та пристрої Bluetooth about-hardware = Обладнання .model = Модель обладнання .memory = Памʼять @@ -528,54 +507,46 @@ about-hardware = Обладнання about-os = Операційна система .os = Операційна система .os-architecture = Архітектура операційної системи + .kernel = Версія ядра .desktop-environment = Робоче оточення .windowing-system = Система керування вікнами about-related = Повʼязані налаштування - .support = Отримати підтримку + .support = Підтримка ## System: Firmware firmware = Мікропрограма - .desc = Подробиці щодо мікропрограми. ## System: Users users = Користувачі - .desc = Автентифікація та облікові записи користувачів. .admin = Адміністратор .standard = Звичайний - .profile-add = Обрати аватар + .profile-add = Вибрати зображення профілю remove = Вилучити -connect = Під'єднати +connect = З'єднати password = Пароль username = Ім'я користувача settings = Налаштування ok = Гаразд -connections-and-profiles = - { $variant -> - [wired] Дротове - [wifi] Wi-Fi - [vpn] VPN - *[other] Невідоме - } з'єднання та профілі мережевих з'єднань. add-network = Додати мережу .profile = Додати профіль add-vpn = Додати VPN -airplane-on = Режим польоту ввімкнено. +airplane-on = Увімкнено режим польоту. cable-unplugged = Дріт від'єднано -connected = Підключено +connected = З'єднано connecting = З'єднання… disconnect = Від'єднатися forget = Забути known-networks = Відомі мережі -network-and-wireless = Мережа та бездротовий зв’язок +network-and-wireless = Мережа та Wi‑Fi no-networks = Мереж не знайдено. no-vpn = Немає доступних VPN-з'єднань. -password-confirm = Повторіть пароль -visible-networks = Знайдені мережі +password-confirm = Підтвердити пароль +visible-networks = Видимі мережі auth-dialog = Авторизація обов'язкова - .vpn-description = Введіть логін та пароль, які необхідні для VPN-сервісу. - .wifi-description = Введіть пароль або ключ шифрування. Також ви можете з'єднатися, натиснувши кнопку "WPS" на маршрутизаторі. + .vpn-description = Введіть ім’я користувача та пароль, необхідні для служби VPN. + .wifi-description = Введіть пароль або ключ шифрування. Також можна підключитися через кнопку «WPS» на маршрутизаторі. forget-dialog = Забути цю Wi-Fi мережу? .description = Вам потрібно буде знову ввести пароль, щоб використовувати цю мережу в майбутньому. network-device-state = @@ -593,28 +564,28 @@ network-device-state = .unknown = Невідомий стан .unmanaged = Некерований .unplugged = Дріт від'єднано -remove-connection-dialog = Видалити профіль з'єднання? - .vpn-description = Вам потрібно буде знову ввести пароль для того, щоб використати цю мережу у майбутньому. - .wired-description = Вам потрібно буде знову створити цей профіль для того, щоб використати його у майбутньому. +remove-connection-dialog = Вилучити профіль з'єднання? + .vpn-description = Щоб скористатися цією мережею знову, вам потрібно буде повторно ввести пароль. + .wired-description = Щоб скористатися цим підключенням знову, вам потрібно буде створити цей профіль повторно. vpn = VPN .connections = VPN з'єднання .error = Не вдалося додати налаштування VPN .remove = Видалити профіль з'єднання .select-file = Обрати файл налаштувань VPN vpn-error = Помилка VPN - .config = Не вдалося додати налаштування VPN - .connect = Не вдалося з'єднатися до VPN - .connection-editor = Помилка редактора з'єднань - .connection-settings = Не вдалося отримати налаштування активних з'єднань + .config = Не вдалося додати конфігурацію VPN + .connect = Не вдалося з'єднатися з VPN + .connection-editor = Помилка редактора з’єднань + .connection-settings = Не вдалося отримати налаштування активних з’єднань .updating-state = Не вдалося оновити стан мережевого менеджера - .wireguard-config-path = Неправильний шлях до профілю WireGuard + .wireguard-config-path = Недійсний шлях до профілю WireGuard .wireguard-config-path-desc = Обраний файл має бути локальним. .wireguard-device = Не вдалося створити пристрій WireGuard .with-password = nmcli не зміг встановити { $field -> - *[username] ім'я користувача + *[username] ім’я користувача [password] пароль - [password-flags] флаги читання паролю + [password-flags] прапорці читання паролю } для VPN wifi = Wi-Fi .adapter = Бездротовий адаптер { $id } @@ -625,8 +596,7 @@ activate = Активувати confirm = Підтвердити enable = Увімкнути bluetooth = Bluetooth - .desc = Керувати Bluetooth пристроями - .status = Поки налаштування Bluetooth відкриті, цей пристрій видно іншим пристроям під назвою { $aliases } . + .status = Ця система відображається як { $aliases }, поки відкриті налаштування Bluetooth. .connected = З'єднано .connecting = З'єднання .disconnecting = Від'єднання @@ -638,10 +608,10 @@ bluetooth = Bluetooth .inactive = Служба Bluetooth неактивна .unknown = Неможливо активувати службу Bluetooth. Можливо, у вас не встановлено пакет BlueZ? bluetooth-paired = З'єднані у минулому пристрої - .connect = Під'єднатися + .connect = З'єднати .battery = { $percentage }% заряду bluetooth-confirm-pin = Перевірка PIN-коду між Bluetooth-пристроями - .description = Будь ласка, підтвердіть, що цей PIN-код зівпадає з тим, який відображається на іншому пристрої: { $device } + .description = Будь ласка, підтвердіть, що цей PIN-код збігається із тим, який відображається на іншому пристрої: { $device } bluetooth-available = Пристрої поблизу bluetooth-adapters = Адаптери Bluetooth accessibility = Доступність @@ -649,10 +619,10 @@ accessibility = Доступність .on = Увімкнено .off = Вимкнено .unavailable = Недоступно - .screen-reader = Засіб читання з екрану - .high-contrast = Режим високої контрастності + .screen-reader = Екранний читач + .high-contrast = Висока контрастність .invert-colors = Інвертація кольорів - .color-filters = Виправлення кольорової сліпоти + .color-filters = Фільтри кольорів hearing = Слух .mono = Відтворювати стерео звук у моно default = Типовий @@ -660,7 +630,7 @@ dbus-connection-error = Не вдалося з'єднатися з DBus identity = Ідентичність magnifier = Лупа .controls = - Також можна використати: { $zoom_in -> + Або скористайтеся такими скороченнями: { $zoom_in -> [zero] { "" } *[other] { "" } @@ -672,17 +642,17 @@ magnifier = Лупа { $zoom_out } для віддалення, } Super + гортання коліщатком миші - .scroll_controls = Увімкнути зміну масштабу мишою або тачпадом з Super + гортання - .show_overlay = Показувати оверлей лупи + .scroll_controls = Увімкнути зміну масштабу мишею або сенсорною панеллю з Super + гортання + .show_overlay = Показувати накладання лупи .increment = Крок зміни масштабу - .signin = Вмикати лупу при вході в систему - .applet = Ви можете увімкнути/вимкнути лупу за допомогою аплету на панелі + .signin = Запускати лупу під час входу в систему + .applet = Ви можете увімкнути/вимкнути лупу за допомогою віджету .movement = Наближений вид рухається - .continuous = Послідовно за вказівником + .continuous = Безперервно за вказівником .onedge = Коли вказівник торкається краю - .centered = Щоб вказівник завжди залишався по центру -color-filter = Режим виправлення кольорової сліпоти - .unknown = Активовано невідомий режим + .centered = Тримати вказівник у центрі +color-filter = Фільтри кольорів + .unknown = Активовано невідомий фільтр .greyscale = Відтінки сірого .deuteranopia = Зелено-червоний (нечутливість до зеленого, Дейтеранопія) .protanopia = Червоно-зелений (нечутливість до червоного, Протанопія) @@ -695,7 +665,7 @@ interface-density = Щільність інтерфейсу icons-and-toolkit = Тема піктограм interface-font = Системний шрифт monospace-font = Моноширинний шрифт -edge-gravity = Плаваючі вікна чіпляються до країв екрану +edge-gravity = Плавучі вікна чіпляються до країв екрану focus-navigation = Навігація фокусом .focus-follows-cursor = Фокус слідкує за вказівником .focus-follows-cursor-delay = Затримка слідкування фокусу за вказівником у мс @@ -706,8 +676,8 @@ vrr = Адаптивна синхронізація .auto = Автоматично .disabled = Вимкнена amplification = Посилення звуку - .desc = Дозволяє встановити гучність до 150%. -battery = Батарея + .desc = Дозволяє встановити гучність до 150% +battery = Акумулятор .minute = { $value } { $value -> [one] хвилина @@ -729,34 +699,34 @@ battery = Батарея [many] днів *[other] днів } - .less-than-minute = Менше ніж хвилина + .less-than-minute = Менше хвилини .and = і .remaining-time = { $time } до { $action -> - [full] повного заряду - *[other] розрядження + [full] наснаження + *[other] виснаження } connected-devices = Під'єднані пристрої .unknown = Невідомний пристрій -power-saving = Налаштування збереження електроенергії +power-saving = Параметри заощадження енергії .turn-off-screen-after = Вимкнути екран через .auto-suspend = Автоматичне призупинення - .auto-suspend-ac = Автоматичне призупинення при роботі від мережі - .auto-suspend-battery = Автоматичне призупинення при роботі від батареї + .auto-suspend-ac = Автоматичне призупинення під час роботи від мережі + .auto-suspend-battery = Автоматичне призупинення під час роботи від акумулятора keyboard-numlock-boot = Numlock .boot-state = Стан при запуску - .last-boot = Зберігати стан минулого запуску - .on = Завжди увімкнений - .off = Завжди вимкнений + .last-boot = Стан минулого запуску + .on = Увімкнено + .off = Вимкнено .set = Задати стан Numlock при запуску системи show-extended-input-sources = Показувати розширені джерела введення -add-another-keybinding = Додати іще одне скорочення +add-another-keybinding = Додати сполучення input-source-switch = Змінити розкладку клавіатури zoom-in = Наблизити zoom-out = Віддалити -switch-workspaces = Змінити робочі простори - .horizontal = Проведення чотрима пальцями вліво/вправо - .vertical = Проведення чотрима пальцями вгору/вниз +switch-workspaces = Перемикання робочих просторів + .horizontal = Проведіть чотирма пальцями вліво/вправо + .vertical = Проведіть чотирма пальцями вгору/вниз formatting = Формати .dates = Дати .time = Час @@ -765,56 +735,168 @@ formatting = Формати .measurement = Одиниця виміру .paper = Папір preferred-languages = Обрані мови - .desc = Порядок мов визначає, яка мова буде використовуватися як мова інтерфейсу. Зміни почнуть діяти після наступного входу в систему. + .desc = Порядок мов визначає, яка мова буде використовуватися як мова інтерфейсу. Зміни набудуть чинності під час наступного входу в систему. add-language = Додати мову .context = Додати мову install-additional-languages = Встановити додаткові мови region = Регіон applications = Застосунки default-apps = Типові застосунки - .desc = Типові браузер, поштовий клієнт, файловий менеджер та інші застосунки. - .web-browser = Браузер - .file-manager = Файловий менеджер + .web-browser = Переглядач інтернету + .file-manager = Керування файлами .mail-client = Поштовий клієнт .music = Музика .video = Відео - .photos = Фото + .photos = Зображення .calendar = Календар .terminal = Термінал .other-associations = Інші застосунки .text-editor = Текстовий редактор + .not-installed = Не встановлено startup-apps = Автозапуск - .desc = Налаштування застосунків, які запускаються при вході у систему. .add = Додати застосунок .user = Застосунки, які запускаються при вході у систему .none = В автозапуску немає ніяких застосунків - .remove-dialog-title = Видалити { $name }? - .remove-dialog-description = Ви впевнені, що бажаєте видалити цей застосунок з автозапуску? - .search-for-application = Шукати застосунок -legacy-applications = Сумісність із застосунками для X11 - .desc = Масштабування та глобальні скорочення в застосунках для віконного менеджеру X11. -legacy-app-global-shortcuts = Глобальні скорочення в застосунках для X11 - .desc = Глобальні скорочення дозволяють застосункам читати натискання клавіш та кнопок миші навіть якщо вони були здійснені під час роботи з іншим застосунком. Це може використовуватися для таких функцій, як активація або вимкнення голосу кнопкою. За замовчуванням ця функція вимкнена для застосунків, які використовують X11, для того, щоб такі застосунки не отримали чутливу інформацію. - .none = Ніякі клавіши - .modifiers = Лише клавіши-модифікатори (Super, Shift, Control, Alt) + .remove-dialog-title = Вилучити { $name }? + .remove-dialog-description = Вилучити цей застосунок з автозапуску? + .add-startup-app = Додати застосунок до автозапуску +legacy-applications = Сумісність із застосунками X11 +legacy-app-global-shortcuts = Глобальні сполучення клавіш у застосунках X11 + .desc = Глобальні сполучення дозволяють іншим застосункам реагувати на натискання клавіш і кнопок миші, навіть якщо вони виконані в іншому застосунку, наприклад для функцій активації або вимкнення голосу кнопкою. За замовчуванням ця функція вимкнена у застосунках X11, щоб уникнути перехоплення чутливої інформації. + .none = Ніякі клавіші + .modifiers = Модифікатори (Super, Shift, Control, Alt) .combination = Усі клавіши у комбінації з клавішами Super, Control або Alt - .all = Усі клавіши - .mouse = Події натискання кнопок миші у застосунках для X11 -legacy-app-scaling = Масштабування застосунків для X11 - .scaled-gaming = Оптимізуватия для ігор та повноекранних застосунків - .gaming-description = Звичайні застосунки для X11 можуть бути трохи більше/менше за розмірами у порівненні зі застосунками для Wayland. - .scaled-applications = Оптимізувати для звичайних застосунків - .applications-description = Ігри та повноекранні застосунки для X11 можуть використовувати роздільну здатність іншу за нативну для вашого монітору. + .all = Усі клавіші + .mouse = Події натискання кнопок миші у застосунках X11 +legacy-app-scaling = Масштабування застосунків X11 + .scaled-gaming = Оптимізувати для ігор та повноекранних застосунків + .gaming-description = Застосунки X11 можуть виглядати трохи більшими або меншими, ніж застосунки Wayland. + .scaled-applications = Оптимізувати для застосунків + .applications-description = Ігри та повноекранні застосунки X11 можуть не відповідати роздільній здатності дисплея. .scaled-compatibility = Режим максимальної сумісності - .compatibility-description = Застосунки для X11 можуть виглядати нечітко на HiDPI екранах. - .preferred-display = Надавати перевагу цьому дисплею для ігор та повноекранних застосунків на X11 - .no-display = Ніякий + .compatibility-description = Застосунки X11 можуть виглядати нечітко на екранах HiDPI. + .preferred-display = Перевага дисплею для ігор та повноекранних X11-застосунків + .no-display = Не вибрано administrator = Адміністратор - .desc = Адміністратори можуть змінювати налаштування для усіх користувачів, а також додавати нових та видаляти інших користувачів. + .desc = Адміністратори можуть змінювати налаштування для всіх користувачів, додавати та видаляти інших користувачів add-user = Додати користувача change-password = Змінити пароль remove-user = Видалити користувача full-name = Повне ім'я -invalid-username = Неприпустиме ім'я користувача. -password-mismatch = Обидва паролі повинні зівпадати. +invalid-username = Неприпустиме ім'я користувача +password-mismatch = Обидва паролі мусять збігатися save = Зберегти +qr-code-unavailable = QR-код недоступний +network-name = Ім'я мережі +share = Ширити мережу +scan-to-connect-description = Відскануйте QR-код, щоб з'єднатися з цією мережею. +sound-hd-audio = HD Аудіо +sound-usb-audio = USB Аудіо +sound-device-profiles = Профілі пристроїв +shadows-floating = Плавучі вікна + .clip = Вирівняти до кутів системи та застосувати тіні +shadows-tiling = Укладені вікна + .clip = Вирівняти до системних кутів + .shadow = Застосувати тіні +shadow-and-corners = Тіні й кути вікон +sound-device-port-unplugged = Відключено +place-here = Розмістити тут віджети +workspaces-overview = Режим огляду робочих просторів + .action-on-typing = Дія при введенні тексту + .none = Не вибрано + .launcher = Відкрити запускач + .applications = Відкрити застосунки +xdg-entry-touchpad = Сенсорна панель +xdg-entry-wired = Дротове +xdg-entry-startup-apps-comment = Налаштування застосунків, які запускаються при вході у систему +xdg-entry-region-language = Регіон та мова +xdg-entry-bluetooth-comment = Керувати Bluetooth пристроями +xdg-entry-default-apps-comment = Типовий вебпереглядач, поштовий клієнт, файли та інші застосунки +xdg-entry-keyboard-comment = Джерела введення, перемикання, введення спеціальних символів, сполучення +xdg-entry-power = Живлення та акумулятор +xdg-entry-mouse = Миша +xdg-entry-mouse-comment = Швидкість миші, прискорення, природне гортання +xdg-entry-system = Система і обліковки +xdg-entry-window-management = Керування вікнами +xdg-entry-a11y = Доступність +xdg-entry-time-language-comment = Керування датою, часом, регіоном і мовою системи +xdg-entry-displays-comment = Налаштування дисплея +xdg-entry-time-language = Дата та час +xdg-entry-users = Користувачі +xdg-entry-default-apps = Типові застосунки +xdg-entry-applications-comment = Типові застосунки, автозапуск і сумісність X11 +xdg-entry-panel = Панель +xdg-entry-notifications = Сповіщення +xdg-entry-wireless-comment = Wi-Fi з'єднання і профілі підключення +xdg-entry-desktop = Стільниця +xdg-entry-wallpaper = Тло +xdg-entry-keyboard = Клавіатура +xdg-entry-displays = Дисплеї +xdg-entry-network = Мережа та Wi‑Fi +xdg-entry-date-time = Дата та час +xdg-entry-users-comment = Автентифікація та облікові записи користувачів +xdg-entry-input-comment = Клавіатура, курсор тощо +xdg-entry-dock-comment = Необов’язкова область для панелі застосунків і віджетів +xdg-entry-wallpaper-comment = Відображення тла: зображення, колір або показ слайдів +xdg-entry-dock = Область завдань +xdg-entry-startup-apps = Автозапуск +xdg-entry-wireless = Wi-Fi +xdg-entry-system-comment = Система, облікові записи та оновлення мікропрограми +xdg-entry-x11-applications-comment = Масштабування застосунків X11 і глобальні сполучення клавіш +xdg-entry-region-language-comment = Формат дати, часу та чисел на основі вашого регіону +xdg-entry-about-comment = Назва пристрою, відомості про обладнення і операційну систему +xdg-entry-appearance-comment = Акцентні кольори та оформлення +xdg-entry-comment = Застосунок налаштувань для середовища COSMIC +xdg-entry-notifications-comment = Не турбувати, сповіщення на екрані блокування, налаштування застосунків +xdg-entry-applications = Застосунки +xdg-entry-about = Про систему +xdg-entry-input = Пристрої введення +xdg-entry-sound-comment = Налаштування звуку для пристроїв, сповіщень та застосунків +xdg-entry-touchpad-comment = Швидкість сенсорної панелі, варіанти натискання, жести +xdg-entry-vpn-comment = VPN з'єднання та профілі підключення +xdg-entry-appearance = Вигляд +xdg-entry-workspaces-comment = Орієнтація та поведінка робочих просторів +xdg-entry-network-comment = Керуйте мережевими з’єднаннями +xdg-entry-panel-comment = Головна панель з елементами керування та віджетами +xdg-entry-sound = Звук +xdg-entry-power-comment = Режими живлення та параметри заощадження енергії +xdg-entry-workspaces = Робочі простори +xdg-entry-date-time-comment = Часовий пояс, автоматичне налаштування годинника та формат часу +xdg-entry-x11-applications = Сумісність із застосунками X11 +xdg-entry-window-management-comment = Дія клавіші Super, параметри керування вікнами та додаткові налаштування укладання вікон +xdg-entry-wired-comment = Дротове з'єднання і профілі підключень +xdg-entry-desktop-comment = Тло, вигляд, панель, область завдань, керування вікнами та налаштування робочого простору +xdg-entry-mouse-keywords = COSMIC;Миша;Прискорення;Прокручування;Гортання;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-notifications-keywords = COSMIC;Сповіщення;Блокування;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-startup-apps-keywords = COSMIC;Автозапуск;Запуск;Застосунок;Програма;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-wired-keywords = COSMIC;Дротове;LAN;Мережа;З'єднання;Підключення;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-appearance-keywords = COSMIC;Колір;Акценту;Піктограма;Іконка;Значок;Шрифт;Черенки;Тема;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-dock-keywords = COSMIC;Область;Завдань;Док;Панель;Віджет;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-panel-keywords = COSMIC;Панель;Віджет;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-desktop-keywords = COSMIC;Стільниця;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-x11-applications-keywords = COSMIC;X11;Застосунок;Програма;Гра;Сумісність;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-touchpad-keywords = COSMIC;Сенсорна;Панель;Тачпад;Жести;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-system-keywords = COSMIC;Про;Систему;Система;Інформація;Облікові;Записи;Обліковка;Мікропрограма;Прошивка;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;Мережа;З'єднання;Підключення;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-about-keywords = COSMIC;Про;Систему;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-a11y-keywords = COSMIC;Доступність;Екран;Читач;Диктор;Лупа;Контраст;Колір;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-date-time-keywords = COSMIC;Час;Часовий;Пояс;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-network-keywords = COSMIC;Мережа;Бездротове;WiFi;VPN;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-workspaces-keywords = COSMIC;Робочий;Простір;Простори;Режим;Огляду;Огляд;Орієнтація;Монітор;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-wallpaper-keywords = COSMIC;Тло;Шпалери;Показ;Слайдів;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-users-keywords = COSMIC;Користувач;Обліковий;Запис;Обліковка;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-vpn-keywords = COSMIC;VPN;Мережа;З'єднання;Підключення;OpenVPN;OpenConnect;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-time-language-keywords = COSMIC;Система;Час;Дата;Регіон;Мова;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-input-keywords = COSMIC;Ввід;Клавіатура;Миша;Миші;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-sound-keywords = COSMIC;Звук;Аудіо;Сповіщення;Сигнал;Pipewire;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-power-keywords = COSMIC;Живлення;Акумулятор;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-default-apps-keywords = COSMIC;Типові;Застосунки;Програми;КОСМІК;КОСМОС;КОСМІЧНЕ +xdg-entry-keywords = COSMIC;Налаштування;Настройки;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-region-language-keywords = COSMIC;Регіон;Мова;Дата;Формат;Час;Локалізація;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-applications-keywords = COSMIC;Автозапуск;X11;Типові;Застосунок;Програма;Запуск;Сумісність;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-keyboard-keywords = COSMIC;Клавіатура;Ввід;Джерело;Сполучення;Клавіш;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-window-management-keywords = COSMIC;Керувати;Вікнами;Укладання;Мозаїка;Tiling;Клавіша;Super;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-displays-keywords = COSMIC;Дисплей;Екран;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-bluetooth-keywords = COSMIC;Bluetooth;Блютуз;Бездротове;З’єднання;КОСМІК;КОСМОС;КОСМІЧНЕ; +xdg-entry-a11y-comment = Екранний читач, лупа, високий контраст і фільтри кольорів +no-search-results = Пошук не дав результатів. diff --git a/i18n/uz/cosmic_settings.ftl b/i18n/uz/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/yue-Hant/cosmic_settings.ftl b/i18n/yue-Hant/cosmic_settings.ftl new file mode 100644 index 0000000..e69de29 diff --git a/i18n/zh-CN/cosmic_settings.ftl b/i18n/zh-CN/cosmic_settings.ftl index 5a85977..a8fab47 100644 --- a/i18n/zh-CN/cosmic_settings.ftl +++ b/i18n/zh-CN/cosmic_settings.ftl @@ -4,15 +4,68 @@ ok = 确定 unknown = 未知 number = { $number } +## Freedesktop desktop entries + +xdg-entry-about = 关于 +xdg-entry-about-comment = 设备名称、硬件信息、操作系统默认设置 +xdg-entry-a11y = 无障碍 +xdg-entry-a11y-comment = 屏幕阅读器、放大镜、高对比度以及色彩滤镜 +xdg-entry-appearance = 外观 +xdg-entry-appearance-comment = 主题色和个性化 +xdg-entry-applications = 应用程序 +xdg-entry-applications-comment = 默认应用程序、自动启动应用程序和 X11 应用程序兼容性设置 +xdg-entry-bluetooth-comment = 管理蓝牙设备 +xdg-entry-date-time = 日期与时间 +xdg-entry-date-time-comment = 时区、自动时钟设置和时间格式 +xdg-entry-default-apps = 默认应用程序 +xdg-entry-default-apps-comment = 默认网络浏览器、邮件客户端、文件管理器和其他应用程序 +xdg-entry-desktop = 桌面 +xdg-entry-displays = 显示器 +xdg-entry-displays-comment = 管理显示器设置 +xdg-entry-dock = 程序坞 +xdg-entry-dock-comment = 可选的应用程序和小部件的工具栏 +xdg-entry-input = 输入设备 +xdg-entry-input-comment = 键盘与光标设置 +xdg-entry-keyboard = 键盘 +xdg-entry-keyboard-comment = 输入源、切换、特殊字符输入、快捷键 +xdg-entry-mouse = 鼠标 +xdg-entry-mouse-comment = 鼠标速度、加速度和自然滚动 +xdg-entry-network = 网络与无线 +xdg-entry-network-comment = 管理网络连接 +xdg-entry-notifications = 通知 +xdg-entry-notifications-comment = 勿扰模式、锁屏通知和每个应用程序的设置 +xdg-entry-panel = 面板 +xdg-entry-panel-comment = 主系统栏,用于菜单和小部件 +xdg-entry-power = 电源与电池 +xdg-entry-power-comment = 电源模式和节能选项 +xdg-entry-region-language = 区域与语言 +xdg-entry-region-language-comment = 根据您的区域格式化日期、时间和数字 +xdg-entry-sound = 声音 +xdg-entry-sound-comment = 设备、警报和应用程序的音频设置 +xdg-entry-startup-apps = 自动启动应用程序 +xdg-entry-startup-apps-comment = 配置登录时运行的应用程序 +xdg-entry-system = 系统与账户 +xdg-entry-system-comment = 系统信息、账户和固件更新 +xdg-entry-time-language = 时间与语言 +xdg-entry-touchpad = 触摸板 +xdg-entry-touchpad-comment = 触摸板速度、点击选项和手势 +xdg-entry-users = 用户 +xdg-entry-users-comment = 身份验证和用户账户 +xdg-entry-vpn-comment = VPN 连接和配置文件 +xdg-entry-wallpaper = 壁纸 +xdg-entry-wallpaper-comment = 壁纸图片、颜色和幻灯片选项 +xdg-entry-window-management = 窗口管理 +xdg-entry-window-management-comment = Super 键操作、窗口控制选项和额外的窗口平铺选项 +xdg-entry-wired = 有线连接 +xdg-entry-wired-comment = 有线连接和配置文件 +xdg-entry-wireless-comment = Wi-Fi 连接和配置文件 +xdg-entry-workspaces = 工作区 +xdg-entry-workspaces-comment = 工作区方向、总览和多显示屏行为 +xdg-entry-x11-applications = X11 应用程序兼容性 +xdg-entry-x11-applications-comment = X11 窗口系统应用程序缩放、主要显示器和全局快捷键 + ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] 有线 - [wifi] Wi-Fi - [vpn] VPN - *[other] 未知 - }连接和连接配置。 add-network = 添加网络 .profile = 添加配置 add-vpn = 添加 VPN @@ -24,7 +77,7 @@ connecting = 正在连接… disconnect = 断开连接 forget = 忘记 known-networks = 已知网络 -network-and-wireless = 网络和无线 +network-and-wireless = 网络与无线 no-networks = 未找到任何网络。 no-vpn = 没有可用的 VPN 连接。 password = 密码 @@ -99,7 +152,6 @@ activate = 激活 confirm = 确认 enable = 启用 bluetooth = 蓝牙 - .desc = 管理蓝牙设备 .status = 当蓝牙设置打开时,此系统显示为 { $aliases }。 .connected = 已连接 .connecting = 正在连接 @@ -146,8 +198,8 @@ magnifier = 放大镜 { "" } 按 { $zoom_out } 缩小, } - 按超级键并滚动鼠标 - .scroll_controls = 按超级键并使用鼠标或触摸板滚动来启用缩放 + 按 Super 并滚动鼠标 + .scroll_controls = 按 Super 并使用鼠标或触摸板滚动来启用缩放 .show_overlay = 显示放大镜叠加层 .increment = 缩放增量 .signin = 登录时启动放大镜 @@ -171,7 +223,6 @@ desktop = 桌面 wallpaper = 壁纸 .change = 图片更换间隙 - .desc = 壁纸图片、颜色和幻灯片选项。 .fit = 壁纸适应方式 .folder-dialog = 选择壁纸文件夹 .image-dialog = 选择壁纸图片 @@ -202,7 +253,6 @@ never = 从不 ## Desktop: Appearance appearance = 外观 - .desc = 主题色和主题设置 accent-color = 主题色 app-background = 窗口背景 auto = 自动 @@ -262,12 +312,10 @@ monospace-font = 等宽字体 ## Desktop: Notifications notifications = 通知 - .desc = 勿扰模式、锁屏通知以及各应用程序的通知设置 ## Desktop: Panel panel = 面板 - .desc = 用于菜单和小部件的主系统栏 add = 添加 add-applet = 添加小部件 all = 全部 @@ -275,12 +323,12 @@ applets = 小部件 center-segment = 中间区段 end-segment = 结束区段 large = 大 -no-applets-found = 未找到小部件... +no-applets-found = 未找到小部件… panel-bottom = 底部 panel-left = 左侧 panel-right = 右侧 panel-top = 顶部 -search-applets = 搜索小部件... +search-applets = 搜索小部件… small = 小 start-segment = 开始区段 panel-appearance = 外观 @@ -310,13 +358,11 @@ panel-missing = 缺少面板配置 ## Desktop: Dock dock = 程序坞 - .desc = 用于应用程序和小部件的可选栏 ## Desktop: Window management window-management = 窗口管理 - .desc = 超级键动作、窗口控制选项和额外的窗口平铺选项 -super-key = 超级键动作 +super-key = Super 键动作 .launcher = 打开启动器 .workspaces = 打开工作区 .applications = 打开应用程序 @@ -334,7 +380,6 @@ focus-navigation = 焦点导航 ## Desktop: Workspaces workspaces = 工作区 - .desc = 工作区方向和行为 workspaces-behavior = 工作区行为 .dynamic = 动态工作区 .dynamic-desc = 自动移除空的工作区 @@ -361,7 +406,6 @@ color = 颜色 .sidebar = 颜色配置文件 .temperature = 色温 display = 显示 - .desc = 管理显示器和夜灯 .arrangement = 显示器排列 .arrangement-desc = 拖动显示器来重新排列 .enable = 启用显示器 @@ -410,7 +454,6 @@ dialog = 对话框 ## Sound sound = 声音 - .desc = 音频设置 sound-output = 输出 .volume = 输出音量 .device = 输出设备 @@ -431,8 +474,7 @@ sound-applications = 应用程序 ## Power -power = 电源和电池 - .desc = 管理电源设置 +power = 电源与电池 battery = 电池 .minute = { $value } { $value -> @@ -477,7 +519,6 @@ power-saving = 节能选项 acceleration-desc = 根据速度自动调整跟踪灵敏度 disable-while-typing = 打字时禁用触摸板 input-devices = 输入设备 - .desc = 输入设备 primary-button = 主按键 .desc = 设置物理按键的顺序 .left = 左 @@ -496,9 +537,8 @@ fast = 快 short = 短 long = 长 keyboard = 键盘 - .desc = 输入源、切换方式、特殊字符输入和快捷键 keyboard-sources = 输入源 - .desc = 可以使用超级键+空格键组合切换输入源。可以在键盘快捷键设置中自定义。 + .desc = 可以使用 Super + 空格键组合切换输入源。可以在键盘快捷键设置中自定义。 .move-up = 上移 .move-down = 下移 .settings = 设置 @@ -520,7 +560,7 @@ keyboard-numlock-boot = 数字锁定 .off = 关闭 .set = 设置数字锁定启动状态 added = 已添加 -type-to-search = 输入即可搜索... +type-to-search = 输入即可搜索… show-extended-input-sources = 显示扩展输入源 ## Input: Keyboard: Shortcuts @@ -642,7 +682,7 @@ system-shortcut = 系统快捷键 .web-browser = 打开网络浏览器 .window-switcher = 切换打开的窗口 .window-switcher-previous = 反向切换打开的窗口 - .workspace-overview = 打开工作区概览 + .workspace-overview = 打开工作区总览 window-tiling = 窗口平铺 .horizontal = 设置水平布局 .vertical = 设置垂直布局 @@ -659,7 +699,6 @@ zoom-out = 缩小 ## Input: Mouse mouse = 鼠标 - .desc = 鼠标速度、加速度、自然滚动 .speed = 鼠标速度 .acceleration = 启用鼠标加速度 @@ -674,7 +713,6 @@ tap-to-click = 轻触点击 .desc = 启用单指轻触进行主点击,双指轻触进行次点击,三指轻触进行中键点击 touchpad = 触控板 .acceleration = 启用触控板加速度 - .desc = 触控板速度、点击选项、手势 .speed = 触控板速度 ## Input: Gestures @@ -694,10 +732,8 @@ open-workspaces-view = 打开工作区总览 ## Time & Language -time = 时间和语言 - .desc = 不可用 +time = 时间与语言 time-date = 日期与时间 - .desc = 时区、自动时钟设置与时间格式 .auto = 自动设置 .auto-ntp = 当时区设置好后,日期与时间将自动更新 time-zone = 时区 @@ -713,11 +749,10 @@ time-format = 日期与时间格式 .sunday = 星期日 .monday = 星期一 time-region = 区域与语言 - .desc = 根据您所在的区域设置日期、时间和数字的格式 formatting = 格式设置 .dates = 日期 .time = 时间 - .date-and-time = 日期和时间 + .date-and-time = 日期与时间 .numbers = 数字 .measurement = 度量单位 .paper = 纸张 @@ -735,7 +770,6 @@ applications = 应用程序 ## Applications: Default Applications default-apps = 默认应用程序 - .desc = 默认网络浏览器、邮件客户端、文件浏览器和其他应用程序。 .web-browser = 网络浏览器 .file-manager = 文件管理器 .mail-client = 邮件客户端 @@ -746,11 +780,11 @@ default-apps = 默认应用程序 .terminal = 终端 .other-associations = 其他关联 .text-editor = 文本编辑器 + .not-installed = 未安装 ## Applications: Startup Applications startup-apps = 自动启动应用程序 - .desc = 配置登录时运行的应用程序。 .add = 添加应用程序 .user = 登录时启动的应用程序 .none = 未添加自动启动应用程序 @@ -761,7 +795,6 @@ startup-apps = 自动启动应用程序 ## Applications: Legacy Applications legacy-applications = X11 应用程序兼容性 - .desc = X11 窗口系统应用程序缩放与全局快捷键 legacy-app-global-shortcuts = X11 应用程序中的全局快捷键 .desc = 全局快捷键允许其他应用程序识别在应用程序中执行的击键和鼠标按钮事件,以实现按下通话或按下静音等功能。默认情况下,X11 应用程序中禁用全局快捷键,以确保其他应用程序无法监控包含敏感信息的键盘和鼠标事件。 .none = 无按键 @@ -786,7 +819,6 @@ system = 系统与账户 ## System: About about = 关于 - .desc = 设备名称、硬件信息、操作系统默认设置 about-device = 设备名称 .desc = 此名称将显示给其他网络或蓝牙设备 about-hardware = 硬件 @@ -807,12 +839,10 @@ about-related = 相关设置 ## System: Firmware firmware = 固件 - .desc = 固件详细信息 ## System: Users users = 用户 - .desc = 身份验证与用户账户 .admin = 管理员 .standard = 标准用户 .profile-add = 选择个人资料图像 @@ -836,3 +866,51 @@ sound-device-port-unplugged = 未插入 sound-hd-audio = 高清音频 sound-usb-audio = USB 音频 sound-device-profiles = 设备配置文件 +shadows-floating = 悬浮窗口 + .clip = 匹配系统角落并且应用阴影 +shadows-tiling = 平铺窗口 + .clip = 匹配系统角落 + .shadow = 应用阴影 +shadow-and-corners = 窗口阴影与角落 +workspaces-overview = 工作区总览 + .action-on-typing = 输入操作 + .none = 无 + .launcher = 开启启动器 + .applications = 打开应用程序 +xdg-entry-about-keywords = COSMIC;关于 +xdg-entry-wireless = Wi-Fi +xdg-entry-comment = COSMIC 桌面的设置应用程序 +xdg-entry-mouse-keywords = COSMIC;鼠标;加速度;滚动; +xdg-entry-notifications-keywords = COSMIC;通知;锁屏; +xdg-entry-startup-apps-keywords = COSMIC;自动启动;应用程序; +xdg-entry-wired-keywords = COSMIC;有线;LAN;网络;连接; +xdg-entry-appearance-keywords = COSMIC;主题色;颜色;图标;字体;主题 +xdg-entry-dock-keywords = COSMIC;程序坞;面板;小部件 +xdg-entry-panel-keywords = COSMIC;面板;小部件 +xdg-entry-time-language-comment = 管理系统日期、时间、地区和语言 +xdg-entry-desktop-keywords = COSMIC;桌面; +xdg-entry-x11-applications-keywords = COSMIC;X11;应用程序;游戏;兼容性; +xdg-entry-touchpad-keywords = COSMIC;触摸板;手势; +xdg-entry-system-keywords = COSMIC;系统;信息;账户;固件; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;网络;连接; +xdg-entry-a11y-keywords = COSMIC;无障碍;A11y;屏幕;阅读器;放大镜;对比;对比度;颜色;色彩; +xdg-entry-date-time-keywords = COSMIC;时间;时区; +xdg-entry-desktop-comment = 壁纸、外观、面板、程序坞、窗口管理和工作区设置 +xdg-entry-bluetooth-keywords = COSMIC;蓝牙; +xdg-entry-network-keywords = COSMIC;网络;无线;WiFi;VPN; +xdg-entry-workspaces-keywords = COSMIC;工作区;方向;总览;显示屏; +xdg-entry-wallpaper-keywords = COSMIC;壁纸;背景;幻灯片; +xdg-entry-users-keywords = COSMIC;用户;账户; +xdg-entry-vpn-keywords = COSMIC;VPN;网络;连接;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;系统;时间;日期;地区;语言; +xdg-entry-input-keywords = COSMIC;输入;键盘;鼠标; +xdg-entry-sound-keywords = COSMIC;声音;音频;警报;Pipewire; +xdg-entry-power-keywords = COSMIC;电源;电池 +xdg-entry-default-apps-keywords = COSMIC;默认;应用程序 +xdg-entry-keywords = COSMIC;设置; +xdg-entry-region-language-keywords = COSMIC;地区;语言;日期;格式;时间;当地;本地化; +xdg-entry-applications-keywords = COSMIC;默认;应用程序;自动启动;X11;兼容性 +xdg-entry-keyboard-keywords = COSMIC;键盘;输入;输入源;快捷键; +xdg-entry-window-management-keywords = COSMIC;窗口;管理;平铺;Super;键; +xdg-entry-displays-keywords = COSMIC;显示器;屏幕; +no-search-results = 无网络符合您的搜索。 diff --git a/i18n/zh-TW/cosmic_settings.ftl b/i18n/zh-TW/cosmic_settings.ftl index 75fca04..413d3a4 100644 --- a/i18n/zh-TW/cosmic_settings.ftl +++ b/i18n/zh-TW/cosmic_settings.ftl @@ -1,25 +1,18 @@ -app = COSMIC 控制中心 +app = COSMIC 設定 dbus-connection-error = 無法連線到 DBus -ok = OK +ok = 確定 unknown = 未知 number = { $number } ## Network & Wireless -connections-and-profiles = - { $variant -> - [wired] 有線網路 - [wifi] 無線網路 - [vpn] VPN - *[other] 未知 - } 連線及連線設定檔。 add-network = 新增網路 .profile = 新增設定檔 add-vpn = 新增 VPN airplane-on = 飛航模式已開啟。 cable-unplugged = 網路線已拔除 connect = 連線 -connected = 已連線 +connected = 已經連線 connecting = 連線中… disconnect = 中斷連線 forget = 忘記此網路 @@ -33,12 +26,12 @@ remove = 移除 settings = 設定 username = 使用者名稱 visible-networks = 可見的網路 -identity = 身分 +identity = 身分識別 auth-dialog = 需要驗證 .vpn-description = 請輸入 VPN 服務所需的使用者名稱及密碼。 .wifi-description = 請輸入密碼或加密金鑰。你也可以按下路由器上的「WPS」按鈕來連接。 forget-dialog = 忘記這個 Wi-Fi 網路? - .description = 日後如要使用此 Wi-Fi 網路,將需重新輸入密碼。 + .description = 日後若要使用此 Wi-Fi 網路,將需重新輸入密碼。 network-device-state = .activated = 已連線 .config = 連線中 @@ -55,8 +48,8 @@ network-device-state = .unmanaged = 未管理 .unplugged = 網路線已拔除 remove-connection-dialog = 移除連線設定檔? - .vpn-description = 日後如要使用此 VPN,將需重新輸入密碼。 - .wired-description = 若要再次使用此設定檔,需重新建立。 + .vpn-description = 日後若要使用此網路,將需重新輸入密碼。 + .wired-description = 日後若要使用此設定檔,將需重新建立。 vpn = VPN .connections = VPN 連線 .error = 新增 VPN 設定失敗 @@ -64,34 +57,34 @@ vpn = VPN .select-file = 選擇 VPN 配置檔案 vpn-error = VPN 錯誤 .config = 新增 VPN 設定失敗 - .connect = 無法連線到 VPN + .connect = 連線至 VPN 失敗 .connection-editor = 連線編輯器失敗 - .connection-settings = 無法取得使用中連線的設定 - .updating-state = 網路管理員狀態更新失敗 - .wireguard-config-path = WireGuard 配置檔案路徑無效 - .wireguard-config-path-desc = 選擇的檔案必須位於本機檔案系統。 - .wireguard-device = 無法建立 WireGuard 裝置 + .connection-settings = 取得活動連線的設定失敗 + .updating-state = 更新網路管理員狀態失敗 + .wireguard-config-path = WireGuard 設定的檔案路徑無效 + .wireguard-config-path-desc = 所選檔案必須位於本機檔案系統上。 + .wireguard-device = 建立 WireGuard 裝置失敗 .with-password = - 使用 nmcli 指令設定 VPN { $field -> + 使用 nmcli 設定 VPN { $field -> *[username] 使用者名稱 [password] 密碼 - [password-flags] password-flags - } 失敗 + [password-flags] 密碼選項 + }失敗 wired = 有線網路 .adapter = 有線網路卡 { $id } .connections = 有線網路連線 - .devices = 有線網路設備 + .devices = 有線網路裝置 .remove = 移除連線設定檔 -wifi = 無線網路 - .adapter = 無線網路卡 { $id } +wifi = Wi-Fi + .adapter = Wi-Fi 網路卡 { $id } .forget = 忘記此網路 -wireguard-dialog = 新增 WireGuard 設備 - .description = 為 WireGuard 配置選擇裝置名稱。 +wireguard-dialog = 新增 WireGuard 裝置 + .description = 為 WireGuard 設定選擇裝置名稱。 ## Networking: Online Accounts online-accounts = 線上帳號 - .desc = 新增帳號、郵件(IMAP、SMTP)或企業登入 + .desc = 新增帳號、郵件與企業登入 # Bluetooth @@ -99,25 +92,24 @@ activate = 啟用 confirm = 確認 enable = 啟用 bluetooth = 藍牙 - .desc = 管理藍牙設備 .status = 當藍牙設定開啟時,此系統顯示為 { $aliases }。 - .connected = 已連線 + .connected = 已經連線 .connecting = 連線中 .disconnecting = 中斷連線中 .connect = 連線 .disconnect = 中斷連線 .forget = 忘記 .dbus-error = 與 DBus 互動時發生錯誤:{ $why } - .disabled = 藍牙服務已停用 - .inactive = 藍牙服務未啟用 - .unknown = 無法啟用藍牙服務。是否已安裝 BlueZ? -bluetooth-paired = 先前連線過的裝置 - .connect = 連線 - .battery = { $percentage }% 電池電量 -bluetooth-confirm-pin = 確認藍牙PIN碼 - .description = 請確認以下 PIN 碼與顯示在 { $device } 上的 PIN 碼相符 + .disabled = 藍牙服務已經停用 + .inactive = 藍牙服務尚未啟用 + .unknown = 無法啟用藍牙服務。是否已經安裝 BlueZ? +bluetooth-paired = 先前連接的裝置 + .connect = 連接 + .battery = 電量 { $percentage }% +bluetooth-confirm-pin = 確認藍牙 PIN 碼 + .description = 請確認以下 PIN 碼與 { $device } 上顯示的是否相符 bluetooth-available = 附近的裝置 -bluetooth-adapters = 藍牙接收器 +bluetooth-adapters = 藍牙介面卡 ## Accessibility @@ -128,14 +120,14 @@ accessibility = 無障礙功能 .unavailable = 無法使用 .screen-reader = 螢幕閱讀器 .high-contrast = 高對比模式 - .invert-colors = 反相顏色 - .color-filters = 濾色鏡 + .invert-colors = 反轉顏色 + .color-filters = 色彩濾鏡 hearing = 聽覺 - .mono = 將立體聲音訊作為單聲道播放 + .mono = 將立體聲播放為單聲道 default = 預設 magnifier = 放大鏡 .controls = - 或使用這些快捷鍵: { $zoom_in -> + 或使用這些快速鍵: { $zoom_in -> [zero] { "" } *[other] { "" } @@ -156,12 +148,12 @@ magnifier = 放大鏡 .continuous = 跟隨指標連續移動 .onedge = 指標到達邊緣時移動 .centered = 保持指標置中 -color-filter = 濾色鏡類型 +color-filter = 色彩濾鏡類型 .unknown = 未知的濾鏡已啟用 .greyscale = 灰階 - .deuteranopia = 綠/紅(綠色弱,Deuteranopia) - .protanopia = 紅/綠(紅色弱,Protanopia) - .tritanopia = 藍/黃(藍色弱,Tritanopia) + .deuteranopia = 綠/紅(綠色弱視,第二型色盲) + .protanopia = 紅/綠(紅色弱視,第一型色盲) + .tritanopia = 藍/黃(藍色弱視,第三型色盲) ## Desktop @@ -171,22 +163,21 @@ desktop = 桌面 wallpaper = 桌布 .change = 更換圖片每隔 - .desc = 桌布圖片、顏色和幻燈片選項。 .fit = 桌布調整 .folder-dialog = 選擇桌布資料夾 .image-dialog = 選擇桌布圖片 .plural = 桌布 - .same = 所有顯示器使用相同的桌布 - .slide = 幻燈片放映 -add-color = 新增顏色 + .same = 全部顯示器使用相同的桌布 + .slide = 投影片放映 +add-color = 新增色彩 add-image = 新增圖片 all-displays = 所有顯示器 -colors = 顏色 +colors = 色彩 dialog-add = 新增 fill = 填滿 -fit-to-screen = 適應螢幕 -open-new-folder = 開啟新的資料夾 -recent-folders = 最近使用的資料夾 +fit-to-screen = 符合螢幕大小 +open-new-folder = 開啟新資料夾 +recent-folders = 最近使用資料夾 x-minutes = { $number } { $number -> [one] 分鐘 @@ -197,78 +188,75 @@ x-hours = [one] 小時 *[other] 小時 } -never = 從不 +never = 永不 ## Desktop: Appearance appearance = 外觀 - .desc = 介面主題與色調。 accent-color = 強調色 -app-background = 應用程式背景 +app-background = 視窗背景 auto = 自動 close = 關閉 -color-picker = 調色盤 +color-picker = 色彩選擇器 copied-to-clipboard = 已複製到剪貼簿 copy-to-clipboard = 複製到剪貼簿 -dark = 夜色 +dark = 深色 export = 匯出 -hex = Hex +hex = 十六進位 import = 匯入 -light = 明亮色 +light = 淺色 mode-and-colors = 色彩與模式 -recent-colors = 近似色 -reset-to-default = 重設至預設值 +recent-colors = 最近使用的色彩 +reset-to-default = 重新設定至預設 rgb = RGB -window-hint-accent = 使用中視窗的提示色 -window-hint-accent-toggle = 使用主題強調色作為使用中視窗的提示色 -auto-switch = 自動在明亮和夜色模式之間切換 - .sunrise = 清晨時切換為亮色調 - .sunset = 黃昏時切換為夜色調 - .next-sunrise = 下次清晨切換為亮色調 - .next-sunset = 下次黃昏切換為夜色調 +window-hint-accent = 作用中視窗提示色彩 +window-hint-accent-toggle = 使用強調色作為作用中視窗提示色彩 +auto-switch = 在淺色與深色模式間自動切換 + .sunrise = 日出時切換為淺色模式 + .sunset = 日落時切換為深色模式 + .next-sunrise = 下次日出時切換為淺色模式 + .next-sunset = 下次日落時切換為深色模式 container-background = 容器背景 .desc-detail = 容器背景與導航列、側邊欄、對話方塊等元件相關,預設從應用程式或視窗背景進行衍生。 .reset = 重設至自動 - .desc = 容器背景色與導航列、側邊欄、對話方塊等元件相關。 + .desc = 容器背景色與導航列、側邊欄、對話方塊等元件相關 control-tint = 控制元件色調 - .desc = 標準按鈕、搜尋輸入、文字輸入和類似元件的背景。 + .desc = 使用於標準按鈕、搜尋輸入、文字輸入和類似元件的背景 frosted = 系統介面呈現磨砂玻璃的透明效果 - .desc = 將磨砂玻璃的透明效果套用至面板、容器、基座、工具程式、啟動器及程式庫。 -enable-export = 將此主題套用於 GNOME 應用程式 - .desc = 並非所有圖形介面程式庫都支援自動切換,非 COSMIC 原生圖形介面程式庫所開發的程式可能需要在重啟啟動後才會套用新的主題。 -icon-theme = 圖示佈景主題 - .desc = 將不同的圖示集套用至應用程式。 + .desc = 將磨砂玻璃的透明效果套用至面板、程式塢、工具程式、啟動器及程式庫 +enable-export = 將目前主題套用至 GNOME 應用程式 + .desc = 並非所有工具組都支援自動切換。非 COSMIC 應用程式在主題變更後可能需要重新啟動。 +icon-theme = 圖示主題 + .desc = 套用不同的圖示集至應用程式 text-tint = 介面文字色調 - .desc = 在各種背景中衍生出足夠對比色的顏色。 -style = 風格 + .desc = 用來衍生出介面文字的顏色,其有足夠對比於各種表面 +style = 樣式 .round = 圓角 - .slightly-round = 半圓角 - .square = 正角 + .slightly-round = 略為圓角 + .square = 直角 interface-density = 介面密度 .comfortable = 舒適 .compact = 緊湊 .spacious = 寬敞 window-management-appearance = 視窗管理 - .active-hint = 作用中視窗提示尺寸 - .gaps = 平鋪視窗模式下的間隔距離 + .active-hint = 作用中視窗提示大小 + .gaps = 平鋪視窗周圍的間隙 ### Experimental experimental-settings = 實驗性設定 -icons-and-toolkit = 圖示和工具組佈景主題 +icons-and-toolkit = 圖示與工具組主題 interface-font = 系統字型 monospace-font = 等寬字型 ## Desktop: Notifications notifications = 通知 - .desc = 勿擾模式,鎖定畫面通知以及個別應用程式設定。 ## Desktop: Panel panel = 面板 - .desc = 桌面控制項和選單的頂部欄。 -add = 新增 +add = 添增 add-applet = 新增工具程式 all = 全部 applets = 工具程式 @@ -284,93 +272,89 @@ search-applets = 搜尋工具程式... small = 小 start-segment = 起始位置 panel-appearance = 外觀 - .match = 符合桌布主題 + .match = 符合桌面 .light = 淺色 .dark = 深色 panel-behavior-and-position = 行為和位置 .autohide = 自動隱藏面板 - .dock-autohide = 自動隱藏基座 + .dock-autohide = 自動隱藏程式塢 .position = 螢幕上的位置 .display = 顯示在螢幕上 panel-style = 樣式 .anchor-gap = 面板與螢幕邊緣的間距 - .dock-anchor-gap = 基座與螢幕邊緣的間距 + .dock-anchor-gap = 程式塢與螢幕邊緣的間距 .extend = 將面板延伸至螢幕邊緣 - .dock-extend = 將基座延伸至螢幕邊緣 + .dock-extend = 將程式塢延伸至螢幕邊緣 .appearance = 外觀 .size = 尺寸 .background-opacity = 背景透明度 panel-applets = 配置 - .dock-desc = 配置基座工具程式 + .dock-desc = 配置程式塢工具程式 .desc = 配置工具程式面板 -panel-missing = 面板配置遺失 - .desc = 由於使用自訂設定或設定檔損毀,面板配置遺失。 +panel-missing = 面板設定遺失 + .desc = 面板設定檔案因使用自訂設定而遺失,或已損毀。 .fix = 重設為預設值 ## Desktop: Dock -dock = 基座 - .desc = 應用程式匣中釘選的應用程式面板和其他工具程式。 +dock = 程式塢 ## Desktop: Window management window-management = 視窗管理 - .desc = 超級鍵動作、視窗控制選項,以及額外的視窗平鋪選項。 -super-key = 超級鍵動作 +super-key = Super 鍵動作 .launcher = 開啟啟動器 .workspaces = 開啟工作區 .applications = 開啟應用程式 - .disable = 關閉 -edge-gravity = 浮動視窗吸附至鄰近邊緣 + .disable = 停用 +edge-gravity = 浮動視窗吸附至附近邊緣 window-controls = 視窗控制項 .maximize = 顯示最大化按鈕 .minimize = 顯示最小化按鈕 - .active-window-hint = 顯示活動視窗提示 -focus-navigation = 焦點導航 - .focus-follows-cursor = 焦點跟隨滑鼠游標 - .focus-follows-cursor-delay = 焦點跟隨滑鼠游標延遲(毫秒) - .cursor-follows-focus = 滑鼠游標跟隨焦點 + .active-window-hint = 顯示作用中視窗提示 +focus-navigation = 焦點導覽 + .focus-follows-cursor = 焦點跟隨游標 + .focus-follows-cursor-delay = 焦點跟隨游標延遲(毫秒) + .cursor-follows-focus = 游標跟隨焦點 ## Desktop: Workspaces workspaces = 工作區 - .desc = 工作區方向和行為。 workspaces-behavior = 工作區行為 .dynamic = 動態工作區 - .dynamic-desc = 自動移除空白工作區。 + .dynamic-desc = 自動移除空的工作區。 .fixed = 固定數量的工作區 - .fixed-desc = 在總覽中新增或移除工作區。 + .fixed-desc = 在概覽中新增或移除工作區。 workspaces-multi-behavior = 多螢幕行為 - .span = 工作區跨螢幕顯示 - .separate = 螢幕擁有各自的工作區 -workspaces-overview-thumbnails = 工作區概觀縮圖 + .span = 工作區橫跨顯示器 + .separate = 顯示器有各自的工作區 +workspaces-overview-thumbnails = 工作區總覽縮圖 .show-number = 顯示工作區編號 .show-name = 顯示工作區名稱 workspaces-orientation = 工作區方向 .vertical = 垂直 .horizontal = 水平 -hot-corner = 觸發角 - .top-left-corner = 啟用左上角觸發角以切換工作區 +hot-corner = 熱區 + .top-left-corner = 啟用左上角熱區以開啟工作區 ## Displays -requires-restart = 需要重新啟動 -color = 顏色 +color = 色彩 .depth = 色彩深度 - .profile = 色彩特性 - .sidebar = 色彩特性 - .temperature = 色彩溫度 -display = 螢幕 - .desc = 管理螢幕、影像切換及夜色模式 + .profile = 色彩設定檔 + .sidebar = 色彩設定檔 + .temperature = 色溫 +display = 顯示螢幕 .arrangement = 螢幕排列 .arrangement-desc = 拖曳螢幕來更改排列方式 - .enable = 啟用螢幕 - .external = { $size } { $output } 外接螢幕 - .laptop = { $size } 筆記型螢幕 - .options = 螢幕選項 - .refresh-rate = 螢幕更新率 + .enable = 啟用顯示螢幕 + .external = { $size } { $output } 外接顯示螢幕 + .laptop = { $size } 筆電顯示螢幕 + .options = 顯示螢幕螢幕選項 + .refresh-rate = 螢幕更新頻率 .resolution = 解析度 - .scale = 縮放比例 + .scale = 縮放大小 .additional-scale-options = 其他縮放選項 mirroring = 投影 .id = 正在投影 { $id } @@ -387,13 +371,13 @@ mirroring = 投影 *[other] 螢幕 } night-light = 夜間模式 - .auto = 自動 (黃昏後到清晨前期間啟用) - .desc = 以暖色調來減少藍光。 + .auto = 自動(日落至日出) + .desc = 以暖色調來減少藍光 orientation = 螢幕方向 .standard = 橫式 - .rotate-90 = 旋轉 90° - .rotate-180 = 旋轉 180° - .rotate-270 = 旋轉 270° + .rotate-90 = 旋轉 90 度 + .rotate-180 = 旋轉 180 度 + .rotate-270 = 旋轉 270 度 vrr = 可變刷新率 .enabled = 已啟用 .force = 總是 @@ -402,37 +386,35 @@ vrr = 可變刷新率 scheduling = 排程 .manual = 手動排程 dialog = 對話框 - .title = 保留這些顯示設定? + .title = 保留這些顯示器設定? .keep-changes = 保留變更 .change-prompt = 設定變更將在 { $time } 秒後自動還原。 .revert-settings = 還原設定 ## Sound -sound = 音效 - .desc = N/A +sound = 音響 sound-output = 輸出 - .volume = 音量 + .volume = 輸出音量 .device = 輸出裝置 - .level = 音量大小 - .config = 設定 + .level = 輸出等級 + .config = 組態 .balance = 平衡 .left = 左 .right = 右 sound-input = 輸入 - .volume = 音量 + .volume = 輸入音量 .device = 輸入裝置 - .level = 音量大小 -sound-alerts = 警示音 - .volume = 音量 - .sound = 警示聲音 -sound-applications = 程式音效 - .desc = 程式音效設定 + .level = 輸入等級 +sound-alerts = 提示音 + .volume = 提示音音量 + .sound = 提示音音效 +sound-applications = 應用程式 + .desc = 應用程式音量與設定 ## Power -power = 電源 & 電池 - .desc = 管理電源設定 +power = 電源與電池 battery = 電池 .minute = { $value } { $value -> @@ -449,22 +431,22 @@ battery = 電池 [one] 天 *[other] 天 } - .less-than-minute = 小於一分鐘 - .and = 和 + .less-than-minute = 少於一分鐘 + .and = 與 .remaining-time = { $time } 直到 { $action -> [full] 充滿 - *[other] 電量耗盡 + *[other] 耗盡 } -connected-devices = 已連線裝置 +connected-devices = 已連接的裝置 .unknown = 未知裝置 power-mode = 電源模式 .battery = 延長電池續航力 - .battery-desc = 降低耗電量並以靜音模式運作。 + .battery-desc = 降低耗電量與靜音效能 .balanced = 平衡 - .balanced-desc = 安靜的效能和適中的耗電量。 + .balanced-desc = 安靜的效能與適度的耗電量 .performance = 高效能 - .performance-desc = 最高效能和耗電量。 + .performance-desc = 最高效能與高耗電量 .no-backend = 找不到後端。請安裝 system76-power 或 power-profiles-daemon。 power-saving = 省電選項 .turn-off-screen-after = 閒置多久後關閉螢幕 @@ -474,20 +456,19 @@ power-saving = 省電選項 ## Input -acceleration-desc = 自動依照觸控板移動加速度即時變更滑鼠速度。 -disable-while-typing = 鍵盤輸入時關閉觸控板 +acceleration-desc = 自動調整追蹤靈敏度基於速度 +disable-while-typing = 輸入時停用觸控板 input-devices = 輸入裝置 - .desc = 輸入裝置 primary-button = 主要按鈕 - .desc = 設定實體按鈕的順序。 + .desc = 設定實體按鈕的順序 .left = 左 .right = 右 scrolling = 捲動 - .two-finger = 以雙指捲動 - .edge = 在觸控板邊緣以單指捲動 + .two-finger = 使用兩指捲動 + .edge = 使用一指沿邊緣捲動 .speed = 捲動速度 .natural = 自然捲動 - .natural-desc = 捲動內容而非視界 + .natural-desc = 捲動內容而非檢視畫面 ## Input: Keyboard @@ -496,132 +477,133 @@ fast = 快 short = 短 long = 長 keyboard = 鍵盤 - .desc = 鍵盤輸入來源、切換、特殊字元輸入、捷徑。 keyboard-sources = 輸入法 - .desc = 輸入法可使用 Super+Space 按鍵組合進行切換,此項設定可以在鍵盤快捷鍵設定頁面進行修改 + .desc = 輸入法可使用 Super+Space 按鍵組合進行切換,此項設定可以在鍵盤快速鍵設定頁面進行修改 .move-up = 往上 .move-down = 往下 .settings = 設定 .view-layout = 檢視鍵盤布局 .remove = 移除 .add = 新增輸入法 -keyboard-special-char = 特殊輸入 +keyboard-special-char = 特殊字輸入 .alternate = 進階按鍵 - .compose = 組合鍵 + .compose = 組合按鍵 + .compose-desc = 組合按鍵允許輸入多樣字元。要使用它,請按組合按鍵,再按字元依序。例如,按組合按鍵接著按 C 和 o 鍵,將輸入 ©;按組合按鍵接著按 a 和 ‘ 鍵,將輸入 á。 .caps = 大寫鎖定鍵 -keyboard-typing-assist = 鍵盤輸入 - .repeat-rate = 重複率 +keyboard-typing-assist = 輸入 + .repeat-rate = 重複速率 .repeat-delay = 重複延遲 -keyboard-numlock-boot = 鍵盤數字鎖定開機 - .boot-state = 開機狀態 - .last-boot = 上次開機狀態 - .on = 開 - .off = 關 - .set = 設定數字鎖定鍵開機狀態 -added = 新增 -type-to-search = 輸入關鍵字以進行搜尋... +keyboard-numlock-boot = 數字鍵盤鎖定 + .boot-state = 開機時的狀態 + .last-boot = 上次開機 + .on = 開啟 + .off = 關閉 + .set = 設定數字鍵盤鎖定開機狀態 +added = 已新增 +type-to-search = 輸入進行搜尋... show-extended-input-sources = 顯示延伸輸入來源 ## Input: Keyboard: Shortcuts -keyboard-shortcuts = 鍵盤快捷鍵 - .desc = 顯示與修改快捷鍵 -add-another-keybinding = 新增其他按鍵綁定 +keyboard-shortcuts = 鍵盤快速鍵 + .desc = 顯示與修改快速鍵 +add-another-keybinding = 添加另一個按鍵組合 cancel = 取消 -command = 命令 +command = 指令 custom = 自訂 -debug = 除錯 +debug = 偵錯 disabled = 已停用 -input-source-switch = 切換鍵盤輸入法 -migrate-workspace-prev = 將工作區移至上一個輸出 -migrate-workspace-next = 將工作區移至下一個輸出 +input-source-switch = 切換鍵盤語言輸入來源 +migrate-workspace-prev = 將工作區遷移至上一個輸出 +migrate-workspace-next = 將工作區遷移至下一個輸出 migrate-workspace = - 將工作區移至輸出 { $direction -> + 將工作區遷移至 { $direction -> *[down] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [up] 上方 - } + }的輸出 navigate = 導覽 replace = 取代 -shortcut-name = 捷徑名稱 +shortcut-name = 快速鍵名稱 system-controls = 系統控制 terminate = 終止 toggle-stacking = 切換視窗堆疊 type-key-combination = 輸入按鍵組合 -custom-shortcuts = 自訂捷徑 - .add = 新增捷徑 - .context = 新增自訂捷徑 - .none = 沒有自訂捷徑 -modified = { $count } 項已修改 +custom-shortcuts = 自訂快速鍵 + .add = 添增快速鍵 + .context = 添增自訂快速鍵 + .none = 無自訂快速鍵 +modified = { $count } 項已經修改 nav-shortcuts = 導覽 - .prev-output = 聚焦到前一個輸出 - .next-output = 聚焦到下一個輸出 - .last-workspace = 聚焦到上一個工作區 - .prev-workspace = 聚焦到前一個工作區 - .next-workspace = 聚焦到下一個工作區 + .prev-output = 聚焦上一個輸出 + .next-output = 聚焦下一個輸出 + .last-workspace = 聚焦最後一個工作區 + .prev-workspace = 聚焦上一個工作區 + .next-workspace = 聚焦下一個工作區 .focus = - 聚焦視窗 { $direction -> + 聚焦 { $direction -> *[down] 下方 - [in] 內 - [left] 左方 - [out] 外 - [right] 右方 + [in] 內部 + [left] 左側 + [out] 外部 + [right] 右側 [up] 上方 - } + }的視窗 .output = - 切換到輸出 { $direction -> + 切換至 { $direction -> *[down] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [up] 上方 - } - .workspace = 切換到工作區 { $num } + }的輸出 + .workspace = 切換至工作區 { $num } manage-windows = 管理視窗 .close = 關閉視窗 .maximize = 最大化視窗 .fullscreen = 全螢幕視窗 .minimize = 最小化視窗 - .resize-inwards = 向內調整視窗大小 - .resize-outwards = 向外調整視窗大小 + .resize-inwards = 將視窗向內調整大小 + .resize-outwards = 將視窗向外調整大小 .toggle-sticky = 切換置頂視窗 move-windows = 移動視窗 .direction = - 移動視窗 { $direction -> + 向 { $direction -> *[down] 下 [left] 左 [right] 右 [up] 上 - } + }移動視窗 .display = - 將視窗移動到另一個螢幕 { $direction -> - *[down] 下 - [left] 左 - [right] 右 - [up] 上 - } + 將視窗移至 { $direction -> + *[down] 下方 + [left] 左側 + [right] 右側 + [up] 上方 + }的一個螢幕 .workspace = - 將視窗移動到另一個工作區 { $direction -> + 將視窗移至 { $direction -> *[below] 下方 - [left] 左方 - [right] 右方 + [left] 左側 + [right] 右側 [above] 上方 - } - .workspace-num = 將視窗移動到工作區 { $num } - .prev-workspace = 將視窗移動到上一個工作區 - .next-workspace = 將視窗移動到下一個工作區 - .last-workspace = 將視窗移動到最後一個工作區 - .next-display = 將視窗移動到下一個顯示器 - .prev-display = 將視窗移動到上一個顯示器 - .send-to-prev-workspace = 將視窗移動到上一個工作區 - .send-to-next-workspace = 將視窗移動到下一個工作區 + }的一個工作區 + .workspace-num = 將視窗移至工作區 { $num } + .prev-workspace = 將視窗移至上一個工作區 + .next-workspace = 將視窗移至下一個工作區 + .last-workspace = 將視窗移至最後一個工作區 + .next-display = 將視窗移至下一個顯示器 + .prev-display = 將視窗移至上一個顯示器 + .send-to-prev-workspace = 將視窗移至上一個工作區 + .send-to-next-workspace = 將視窗移至下一個工作區 system-shortcut = 系統 .app-library = 開啟應用程式庫 .brightness-down = 降低螢幕亮度 - .brightness-up = 增加螢幕亮度 - .home-folder = 開啟主目錄 + .brightness-up = 提高螢幕亮度 + .display-toggle = 切換內部顯示螢幕 + .home-folder = 開啟家目錄 .keyboard-brightness-down = 降低鍵盤亮度 - .keyboard-brightness-up = 增加鍵盤亮度 + .keyboard-brightness-up = 提高鍵盤亮度 .launcher = 開啟啟動器 .log-out = 登出 .lock-screen = 鎖定螢幕 @@ -631,15 +613,16 @@ system-shortcut = 系統 .play-next = 下一首 .play-prev = 上一首 .poweroff = 關機 - .screenshot = 截圖 + .screenshot = 螢幕擷圖 + .suspend = 休眠 .terminal = 開啟終端機 .touchpad-toggle = 切換觸控板 .volume-lower = 降低音量 - .volume-raise = 增加音量 + .volume-raise = 提高音量 .web-browser = 開啟網頁瀏覽器 .window-switcher = 切換視窗 .window-switcher-previous = 反向切換視窗 - .workspace-overview = 開啟工作區概覽 + .workspace-overview = 開啟工作區總覽 window-tiling = 視窗平鋪 .horizontal = 設定水平方向 .vertical = 設定垂直方向 @@ -648,7 +631,7 @@ window-tiling = 視窗平鋪 .toggle-stacking = 切換視窗堆疊 .toggle-floating = 切換視窗浮動 .toggle-orientation = 切換方向 -replace-shortcut-dialog = 取代捷徑? +replace-shortcut-dialog = 取代快速鍵? .desc = { $shortcut } 已被 { $name } 使用。如果您取代它, { $name } 將會被停用。 zoom-in = 放大 zoom-out = 縮小 @@ -656,22 +639,20 @@ zoom-out = 縮小 ## Input: Mouse mouse = 滑鼠 - .desc = 滑鼠靈敏度、加速及捲動設定 .speed = 滑鼠速度 .acceleration = 啟用滑鼠加速 ## Input: Touchpad -click-behavior = 觸控模式 - .click-finger = 觸控板雙指點擊視為滑鼠右鍵,三指點擊視為滑鼠中鍵 - .button-areas = 觸控板右下方點擊視為滑鼠右鍵,於中間下方點擊視為滑鼠中鍵 +click-behavior = 點擊行為 + .click-finger = 兩指點擊為次要點擊,三指點擊為中鍵點擊 + .button-areas = 右下角點擊為次要點擊,中下角點擊為中鍵點擊 pinch-to-zoom = 雙指撥動縮放 - .desc = 若應用程式支援,可用雙指撥動來縮放內容。 -tap-to-click = 觸擊 - .desc = 啟用單指觸擊視作滑鼠左鍵,雙指觸擊視作滑鼠右鍵,三指觸擊視作滑鼠中鍵。 + .desc = 可用雙指撥動來縮放內容,應用程式功能如有支援 +tap-to-click = 滑觸點按 + .desc = 啟用單指滑觸視作點按滑鼠左鍵,雙指滑觸視作點按滑鼠右鍵,三指滑觸視作點按滑鼠中鍵 touchpad = 觸控板 .acceleration = 啟用觸控板加速 - .desc = 觸控靈敏度、點擊和手勢 .speed = 觸控靈敏度 ## Input: Gestures @@ -683,43 +664,40 @@ gestures = 手勢 .four-finger-up = 四指向上滑動 .three-finger-any = 三指向任何方向滑動 switch-workspaces = 切換工作區 - .horizontal = 四指左右滑動 - .vertical = 四指上下滑動 -switch-between-windows = 視窗間切換 + .horizontal = 四指向左/右滑動 + .vertical = 四指向上/下滑動 +switch-between-windows = 在視窗間切換 open-application-library = 開啟應用程式庫 -open-workspaces-view = 開啟工作區概觀 +open-workspaces-view = 開啟工作區總覽 ## Time & Language -time = 時間和語言 - .desc = N/A -time-date = 日期和時間 - .desc = 時區、自動時間校正、時間格式設定 - .auto = 自動設定 - .auto-ntp = 設定時區後,日期和時間將會自動更新。 +time = 時間與語言 +time-date = 日期與時間 + .auto = 設定自動 + .auto-ntp = 設定時區後,日期與時間將會自動更新 time-zone = 時區 .auto = 自動設定時區 - .auto-info = 需要定位服務和網路存取能力 -time-format = 日期和時間格式 + .auto-info = 需要定位服務與網際網路存取 +time-format = 日期與時間格式 .twenty-four = 24 小時制 .show-seconds = 顯示秒數 - .first = 每週的第一天 - .show-date = 在條狀面板顯示日期 + .first = 每週第一天 + .show-date = 在時間工具程式中顯示日期 .friday = 星期五 .saturday = 星期六 .sunday = 星期日 .monday = 星期一 -time-region = 地區和語言 - .desc = 基於地區來格式化日期、時間及數字。 +time-region = 地區與語言 formatting = 格式設定 .dates = 日期 .time = 時間 - .date-and-time = 日期 & 時間 + .date-and-time = 日期與時間 .numbers = 數字 .measurement = 度量衡 .paper = 紙張 preferred-languages = 偏好語言 - .desc = 語言的順序決定桌面的翻譯語言,變更將在下次登入時生效。 + .desc = 語言順序決定使用者介面使用的語言。變更將在下次登入時生效。 add-language = 新增語言 .context = 新增語言 install-additional-languages = 安裝其他語言 @@ -732,7 +710,6 @@ applications = 應用程式 ## Applications: Default Applications default-apps = 預設應用程式 - .desc = 預設網頁瀏覽器、郵件用戶端、檔案瀏覽器和其他應用程式。 .web-browser = 網頁瀏覽器 .file-manager = 檔案管理員 .mail-client = 郵件用戶端 @@ -743,81 +720,194 @@ default-apps = 預設應用程式 .terminal = 終端機 .other-associations = 其他關聯 .text-editor = 文字編輯器 + .not-installed = 尚未安裝 ## Applications: Startup Applications startup-apps = 啟動應用程式 - .desc = 設定登入時執行的應用程式。 - .add = 新增應用程式 + .add = 添增應用程式 .user = 您登入時啟動的應用程式 - .none = 未新增啟動應用程式 - .remove-dialog-title = 移除 { $name }? - .remove-dialog-description = 您確定要移除此啟動應用程式嗎? - .search-for-application = 搜尋應用程式 + .none = 尚無添新增啟動應用程式 + .remove-dialog-title = 移除 { $name } 嗎? + .remove-dialog-description = 是否移除此啟動應用程式? + .add-startup-app = 添增啟動應用程式 ## Applications: Legacy Applications legacy-applications = X11 應用程式相容性 - .desc = X11 視窗系統應用程式縮放和全域快捷鍵。 -legacy-app-global-shortcuts = X11 應用程式中的全域快捷鍵 - .desc = 全域快捷鍵允許在應用程式中執行的按鍵和滑鼠按鈕事件被其他應用程式識別,用於「按鍵通話」或「按鍵靜音」等功能。預設情況下,此功能在 X11 應用程式中被停用,以確保其他應用程式無法監視包含敏感資訊的鍵盤和滑鼠事件。 +legacy-app-global-shortcuts = X11 應用程式中的整體快速鍵 + .desc = 整體快速鍵允許在應用程式中執行的按鍵和滑鼠按鈕事件被其他應用程式識別,用於「按鍵通話」或「按鍵靜音」等功能。預設情況下,此功能在 X11 應用程式中被停用,以確保其他應用程式無法監視包含敏感資訊的鍵盤和滑鼠事件。 .none = 無按鍵 .modifiers = 修飾鍵 (Super, Shift, Control, Alt) - .combination = 當按下 Super、Control 或 Alt 修飾鍵時的所有按鍵 - .all = 所有按鍵 + .combination = 當按下 Super、Control 或 Alt 修飾鍵時的全部按鍵 + .all = 全部按鍵 .mouse = X11 應用程式中的滑鼠按鈕事件 legacy-app-scaling = X11 視窗系統應用程式縮放 - .scaled-gaming = 為遊戲和全螢幕應用程式最佳化 - .gaming-description = X11 應用程式可能比 Wayland 應用程式稍大/稍小。 - .scaled-applications = 為應用程式最佳化 - .applications-description = 遊戲和全螢幕 X11 應用程式可能不符合您的顯示器解析度。 + .scaled-gaming = 針對遊戲與全螢幕應用程式最佳化 + .gaming-description = X11 應用程式相較於 Wayland 應用程式可能顯得稍大/稍小 + .scaled-applications = 針對應用程式最佳化 + .applications-description = 遊戲與全螢幕 X11 應用程式可能無法符合您的顯示器解析度 .scaled-compatibility = 最大相容性模式 - .compatibility-description = X11 應用程式在 HiDPI 螢幕上可能會出現模糊。 - .preferred-display = 遊戲和全螢幕 X11 應用程式的偏好顯示器 + .compatibility-description = X11 應用程式在 HiDPI 螢幕上可能顯得模糊 + .preferred-display = 遊戲與全螢幕 X11 應用程式的偏好顯示器 .no-display = 無 ## System -system = 系統與帳戶 +system = 系統與帳號 ## System: About about = 關於 - .desc = 裝置名稱、硬體資訊、作業系統。 about-device = 裝置名稱 - .desc = 此名稱用於顯示給其他網路或藍牙裝置。 + .desc = 此名稱用於顯示給其他網路或藍牙裝置 about-hardware = 硬體 .model = 硬體型號 .memory = 記憶體 .processor = 處理器 .graphics = 顯示卡 - .disk-capacity = 硬碟空間 + .disk-capacity = 磁碟容量 about-os = 作業系統 .os = 系統 .os-architecture = 系統架構 + .kernel = 核心版本 .desktop-environment = 桌面環境 .windowing-system = 視窗系統 about-related = 相關設定 - .support = 取得幫助 + .support = 取得支援 ## System: Firmware firmware = 韌體 - .desc = 韌體資訊。 ## System: Users users = 使用者 - .desc = 驗證、登入、畫面鎖定 .admin = 管理員 .standard = 標準 .profile-add = 選擇個人資料圖片 administrator = 系統管理員 - .desc = 系統管理員可以變更所有使用者的設定,新增和移除其他使用者。 + .desc = 系統管理員可以變更全部使用者的設定,添增和移除其他使用者 add-user = 新增使用者 change-password = 變更密碼 remove-user = 移除使用者 -full-name = 姓名 -invalid-username = 無效的使用者名稱。 -password-mismatch = 密碼與確認密碼必須相符。 +full-name = 全名 +invalid-username = 無效的使用者名稱 +password-mismatch = 密碼與確認密碼必須相符 save = 儲存 +xdg-entry-dock-comment = 可選的應用程式和工具程式的工具欄 +xdg-entry-dock = 程式塢 +xdg-entry-displays-keywords = COSMIC;顯示器;熒幕; +xdg-entry-displays-comment = 管理顯示器設定 +xdg-entry-displays = 顯示器 +xdg-entry-desktop-keywords = COSMIC;桌面; +xdg-entry-desktop = 桌面 +xdg-entry-default-apps-keywords = COSMIC;預設;應用程式 +xdg-entry-default-apps = 預設應用程式 +xdg-entry-date-time-keywords = COSMIC;時間;時區; +xdg-entry-date-time-comment = 時區、自動時鐘設定和時間格式 +xdg-entry-date-time = 日期與時間 +xdg-entry-bluetooth-keywords = COSMIC;藍牙; +xdg-entry-bluetooth-comment = 管理藍牙裝置 +xdg-entry-applications-keywords = COSMIC;預設;應用程式;啟動;X11;兼容性 +xdg-entry-applications-comment = 預設應用程式、啟動應用程式和 X11 應用程式兼容性設定 +xdg-entry-appearance-keywords = COSMIC;強調色;颜色;圖示;字體;主題 +xdg-entry-appearance-comment = 強調色和主題 +xdg-entry-applications = 應用程式 +xdg-entry-appearance = 外觀 +xdg-entry-a11y-keywords = COSMIC;無障礙;A11y;螢幕;閱讀器;放大鏡;對比;對比度;颜色;色彩; +xdg-entry-a11y-comment = 螢幕閱讀器、放大鏡、高對比以及濾色鏡 +xdg-entry-a11y = 無障礙 +xdg-entry-about-keywords = COSMIC;關於 +xdg-entry-about-comment = 裝置名稱、硬體資訊、作業系統預設 +xdg-entry-about = 關於 +xdg-entry-keywords = COSMIC;設定; +xdg-entry-dock-keywords = COSMIC;程式塢;面板;工具程式 +xdg-entry-region-language = 地區與語言 +xdg-entry-notifications-keywords = COSMIC;通知;鎖定; +xdg-entry-power = 電源與電池 +xdg-entry-panel-keywords = COSMIC;面板;工具程式 +xdg-entry-panel = 面板 +xdg-entry-notifications = 通知 +xdg-entry-startup-apps = 開機啟動應用程式 +xdg-entry-region-language-comment = 依據您所在的地區設定日期、時間和數字的格式 +xdg-entry-notifications-comment = 勿擾模式、鎖定螢幕通知、及各個應用程式設定 +xdg-entry-sound-keywords = COSMIC;音響;音訊;提醒;Pipewire; +xdg-entry-power-keywords = COSMIC;電源;電池 +xdg-entry-region-language-keywords = COSMIC;地區;語言;日期;格式;時間;本地;本地化; +xdg-entry-sound-comment = 裝置、提醒和應用程式的音訊設定 +xdg-entry-panel-comment = 主要系統列, 用於選單和工具程式 +xdg-entry-sound = 音響 +xdg-entry-power-comment = 電源模式和省電選項 +xdg-entry-network-keywords = COSMIC;網路;無線;WiFi;VPN; +xdg-entry-network-comment = 管理網路連線 +xdg-entry-network = 網路與無線 +xdg-entry-mouse-keywords = COSMIC;滑鼠;加速度;滾動; +xdg-entry-mouse-comment = 滑鼠速度、加速度和自然滾動 +xdg-entry-mouse = 滑鼠 +xdg-entry-keyboard-keywords = COSMIC;鍵盤;輸入;輸入源;快速鍵; +xdg-entry-keyboard-comment = 輸入源、切換、特殊字符輸入、快速鍵 +xdg-entry-keyboard = 鍵盤 +xdg-entry-input-keywords = COSMIC;輸入;鍵盤;滑鼠; +xdg-entry-input-comment = 鍵盤與滑鼠設定 +xdg-entry-input = 輸入裝置 +xdg-entry-desktop-comment = 桌布、外觀、面板、程式塢、視窗管理和工作區設定 +xdg-entry-default-apps-comment = 預設網頁瀏覽器、郵件用戶端、檔案管理器和其他應用程式 +xdg-entry-touchpad = 觸控板 +xdg-entry-wired = 有線連接 +xdg-entry-startup-apps-comment = 當登入運行的應用程式進行調設 +xdg-entry-startup-apps-keywords = COSMIC;開機啟動;應用程式; +xdg-entry-wired-keywords = COSMIC;有線連接;LAN;網路;連接; +xdg-entry-system = 系統與帳號 +xdg-entry-window-management = 視窗管理 +xdg-entry-time-language-comment = 管理系統日期、時間、區域及語言 +xdg-entry-x11-applications-keywords = COSMIC;X11;應用程式;遊戲;相容性; +xdg-entry-time-language = 時間與語言 +xdg-entry-users = 使用者 +xdg-entry-system-keywords = COSMIC;系統;資訊;帳號;韌體; +xdg-entry-wireless-keywords = COSMIC;WiFi;Wi-Fi;網路;連接; +xdg-entry-wireless-comment = Wi-Fi 連接與連接設定檔案 +xdg-entry-wallpaper = 背景圖片 +xdg-entry-users-comment = 身份驗證與使用者帳號 +xdg-entry-wallpaper-comment = 背景圖片、顏色及投影片選項 +xdg-entry-wireless = Wi-Fi +xdg-entry-workspaces-keywords = COSMIC;工作區;方向;總覽;螢幕; +xdg-entry-system-comment = 系統資訊、帳號及韌體更新 +xdg-entry-x11-applications-comment = X11 視窗系統應用程式縮放大小、主要顯示螢幕和整體快速鍵 +xdg-entry-wallpaper-keywords = COSMIC;背景圖片;背景;投影片; +xdg-entry-users-keywords = COSMIC;使用者;帳戶; +xdg-entry-vpn-keywords = COSMIC;VPN;網路;連接;OpenVPN;OpenConnect; +xdg-entry-time-language-keywords = COSMIC;系統;時間;日期;地區;語言; +xdg-entry-touchpad-comment = 觸控板速度、點按選項及手勢 +xdg-entry-vpn-comment = VPN 連接和連接設定檔案 +xdg-entry-window-management-keywords = COSMIC;視窗;管理;平鋪;Super;鍵; +xdg-entry-workspaces-comment = 工作區方向、總覽及多重顯示器行為 +xdg-entry-workspaces = 工作區 +xdg-entry-x11-applications = X11 應用程式相容性 +xdg-entry-window-management-comment = Super 鍵動作、視窗控制選項及附加視窗平鋪選項 +xdg-entry-wired-comment = 有線連接和連接設定檔案 +share = 分享網路 +scan-to-connect-description = 掃描 QR 碼以連接至該網路。 +qr-code-unavailable = QR 碼無可使用 +network-name = 網路名稱 +xdg-entry-touchpad-keywords = COSMIC;觸控板;手勢; +xdg-entry-comment = COSMIC 桌面設定應用程式 +sound-device-profiles = 裝置設定檔案 +sound-usb-audio = USB 音訊 +sound-hd-audio = 高解析度音訊 +sound-device-port-unplugged = 尚未插接 +amplification = 音量擴大 + .desc = 允許將音量提高至 150% +workspaces-overview = 工作區總覽 + .action-on-typing = 輸入動作 + .none = 無 + .launcher = 開啟啟動器 + .applications = 開啟應用程式 +place-here = 在此放置工具程式 +shadow-and-corners = 視窗陰影與角型 +shadows-tiling = 平鋪視窗 + .clip = 符合系統角型 + .shadow = 套用陰影 +shadows-floating = 浮動視窗 + .clip = 符合系統角型和套用陰影 +no-search-results = 沒有網路符合您所要搜尋的。 diff --git a/justfile b/justfile index 2b77832..deed88c 100644 --- a/justfile +++ b/justfile @@ -31,14 +31,14 @@ install: install -Dm0644 {{'resources' / 'polkit-1' / 'rules.d' / 'cosmic-settings.rules'}} {{polkit-rules-dst}} install -Dm0644 {{'resources' / 'polkit-1' / 'actions' / appid + '.Users.policy'}} {{policy-users-dst}} install -Dm0755 {{cargo-target-dir / 'release' / name}} {{bin-dst}} - cd resources/applications && find * -type f -exec install -Dm0644 '{}' '{{appdir}}/{}' \; + cd target/xdgen && find * -type f -exec install -Dm0644 '{}' '{{appdir}}/{}' \; cd resources/default_schema && find * -type f -exec install -Dm0644 '{}' '{{default-schema-target}}/{}' \; cd resources/icons && find * -type f -exec install -Dm0644 '{}' '{{iconsdir}}/{}' \; # Uninstalls everything (requires same arguments as given to install) uninstall: rm {{bin-dst}} {{metainfo-dst}} {{polkit-rules-dst}} {{policy-users-dst}} - cd resources/applications && find * -type f -exec rm '{{appdir}}/{}' \; + cd target/xdgen && find * -type f -exec rm '{{appdir}}/{}' \; cd resources/default_schema && find * -type f -exec rm '{{default-schema-target}}/{}' \; cd resources/icons && find * -type f -exec rm '{{iconsdir}}/{}' \; diff --git a/page/Cargo.toml b/page/Cargo.toml index 638e5de..7547599 100644 --- a/page/Cargo.toml +++ b/page/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "cosmic-settings-page" -version = "1.0.2" +version = "1.0.7" edition = "2024" [dependencies] -derive_setters = "0.1.8" -regex = "1.12.2" +derive_setters = "0.1.9" +regex = "1.12.3" slotmap = "1.1.1" libcosmic = { workspace = true } downcast-rs = "2.0.2" url = "2.5.8" -slab = "0.4.11" +slab = "0.4.12" diff --git a/page/src/section.rs b/page/src/section.rs index 3492e3a..c8cf839 100644 --- a/page/src/section.rs +++ b/page/src/section.rs @@ -40,7 +40,7 @@ pub struct Section { pub search_ignore: bool, } -impl Default for Section { +impl Default for Section { fn default() -> Self { Self { title: String::new(), @@ -120,7 +120,7 @@ impl Section { #[must_use] #[inline] -pub fn unimplemented<'a, Message: 'static>( +pub fn unimplemented<'a, Message: Clone + 'static>( _binder: &'a Binder, _page: &'a dyn Page, _section: &'a Section, diff --git a/pages/wallpapers/Cargo.toml b/pages/wallpapers/Cargo.toml index f3969d7..b148edb 100644 --- a/pages/wallpapers/Cargo.toml +++ b/pages/wallpapers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-wallpaper" -version = "1.0.2" +version = "1.0.7" edition = "2024" rust-version.workspace = true @@ -11,11 +11,11 @@ cosmic-bg-config = { workspace = true } cosmic-randr-shell = { workspace = true } dirs = "6.0.0" eyre = "0.6.12" -fast_image_resize = { version = "5", features = [ +fast_image_resize = { version = "6", features = [ "image", ] } futures-lite = "2.6.1" -futures-util = "0.3.31" +futures-util = "0.3.32" image = "0.25.9" infer = "0.19.0" jxl-oxide = { version = "0.12.5", features = ["image"] } diff --git a/pages/wallpapers/src/lib.rs b/pages/wallpapers/src/lib.rs index fe7e338..498b424 100644 --- a/pages/wallpapers/src/lib.rs +++ b/pages/wallpapers/src/lib.rs @@ -210,29 +210,29 @@ fn load_thumbnail( cache_dir: Option<&Path>, path: &Path, ) -> Option { - if let Some(cache_dir) = cache_dir { - if let Ok(ctime) = path.metadata().and_then(|meta| meta.created()) { - // Search for thumbnail by a unique hash string. - let mut hasher = DefaultHasher::new(); - path.hash(&mut hasher); - ctime.hash(&mut hasher); - let hash = hasher.finish(); + if let Some(cache_dir) = cache_dir + && let Ok(ctime) = path.metadata().and_then(|meta| meta.created()) + { + // Search for thumbnail by a unique hash string. + let mut hasher = DefaultHasher::new(); + path.hash(&mut hasher); + ctime.hash(&mut hasher); + let hash = hasher.finish(); - let thumbnail_path = cache_dir.join(format!("{hash:x}.png")); + let thumbnail_path = cache_dir.join(format!("{hash:x}.png")); - if thumbnail_path.exists() { - if let Some(image) = open_image(input_buffer, &thumbnail_path) { - return Some(ImageOperation::Cached(image)); - } - - let _res = std::fs::remove_file(&thumbnail_path); + if thumbnail_path.exists() { + if let Some(image) = open_image(input_buffer, &thumbnail_path) { + return Some(ImageOperation::Cached(image)); } - return Some(ImageOperation::GenerateThumbnail { - path: Some(thumbnail_path), - image: open_image(input_buffer, path)?, - }); + let _res = std::fs::remove_file(&thumbnail_path); } + + return Some(ImageOperation::GenerateThumbnail { + path: Some(thumbnail_path), + image: open_image(input_buffer, path)?, + }); } if let Some(image) = open_image(input_buffer, path) { @@ -396,7 +396,7 @@ fn border_radius( p += (2 * x + 2) as i32; } else { // draw when moving to next pixel in y-direction - if y % 16 == 0 { + if y.is_multiple_of(16) { draw(img, alpha, x / 16, y / 16); draw(img, alpha, y / 16, x / 16); skip_draw = true; diff --git a/resources/applications/com.system76.CosmicSettings.About.desktop b/resources/applications/com.system76.CosmicSettings.About.desktop index 5f1393f..757ca82 100644 --- a/resources/applications/com.system76.CosmicSettings.About.desktop +++ b/resources/applications/com.system76.CosmicSettings.About.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=About -Name[ar]=عن -Name[cs]=O systému -Name[zh_CN]=关于 -Name[pl]=O systemie -Name[hu]=Rendszerinformáció -Name[pt]=Sobre -Name[nl]=Over -Name[af]=Oor -Name[sk]=O systéme -Name[sv]=Om -Name[es]=A cerca de -Name[fr]=À propos -Name[it]=Informazioni su Comment=Device name, hardware information, operating system defaults. -Comment[ar]=اسم الجهاز، معلومات العتاد، إعدادات نظام التشغيل المبدئية. -Comment[cs]=Název zařízení, hardwarové informace, výchozí nastavení operačního systému. -Comment[zh_CN]=设备名称、硬件信息、操作系统默认设置 -Comment[pl]=Nazwa urządzenia, informacje o sprzęcie i systemie operacyjnym. -Comment[hu]=Eszköznév, hardverinformációk és az operációs rendszer alapértelmezett beállításai. -Comment[pt]=Nome do dispositivo, informações de hardware e padrões do sistema operacional. -Comment[nl]=Apparaatnaam, hardware-informatie, standaardinstellingen van het besturingssysteem. -Comment[af]=Toestelnaam, hardeware-inligtings, standaardinstellings van die bedryfstelsel. -Comment[sk]=Názov zariadenia, hardvérové informácie, predvolené nastavenia systému. -Comment[sv]=Enhetsnamn, hårdvaruinformation, standardinställningar för operativsystem. -Comment[es]=Nombre del dispositivo, información de hardware y valores del sistema operativo. -Comment[fr]=Nom de l'appareil, informations sur le matériel et paramètres par défaut du système d'exploitation. -Comment[it]=Nome del dispositivo, informazioni sull'hardware e sul sistema operativo. Type=Application Exec=cosmic-settings about Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;About NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-about diff --git a/resources/applications/com.system76.CosmicSettings.Accessibility.desktop b/resources/applications/com.system76.CosmicSettings.Accessibility.desktop index 4270b0a..9a46ce5 100644 --- a/resources/applications/com.system76.CosmicSettings.Accessibility.desktop +++ b/resources/applications/com.system76.CosmicSettings.Accessibility.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Accessibility -Name[ar]=الإتاحة -Name[cs]=Přístupnost -Name[zh_CN]=辅助功能 -Name[hu]=Akadálymentesség -Name[pt]=Acessibilidade -Name[nl]=Toegankelijkheden -Name[af]=Toeganklikhede -Name[sk]=Prístupnosť -Name[sv]=Tillgänglighet -Name[es]=Accesibilidad -Name[pl]=Dostępność -Name[fr]=Accessibilité -Name[it]=Accessibilità -Comment=Accessibility settings. -Comment[ar]=إعدادات الإتاحة -Comment[cs]=Nastavení přístupnosti. -Comment[zh_CN]=辅助功能设置 -Comment[hu]=Akadálymentességi beállítások. -Comment[pt]=Configurações de acessibilidade. -Comment[nl]=Toegankelijkheidsinstellingen. -Comment[af]=Toeganklikheidsinstellings. -Comment[sk]=Nastavenia prístupnosti. -Comment[sv]=Tillgänglighetsinställningar. -Comment[es]=Configuración de accesibilidad. -Comment[pl]=Ustawienia dostępności. -Comment[fr]=Paramètres d'accessibilité. -Comment[it]=Impostazioni accessibilità. +Comment=Screen reader, magnifier, high contrast, and color filters. Type=Application Exec=cosmic-settings accessibility Terminal=false Categories=COSMIC -Keywords=COSMIC;theme; +Keywords=COSMIC;Accessibility;A11y;Screen;Reader;Magnifier;Contrast;Color; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-desktop-accessibility diff --git a/resources/applications/com.system76.CosmicSettings.Appearance.desktop b/resources/applications/com.system76.CosmicSettings.Appearance.desktop index 61e999e..2a9b328 100644 --- a/resources/applications/com.system76.CosmicSettings.Appearance.desktop +++ b/resources/applications/com.system76.CosmicSettings.Appearance.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Appearance -Name[ar]=المظهر -Name[cs]=Vzhled -Name[zh_CN]=外观 -Name[pl]=Wygląd -Name[hu]=Megjelenés -Name[pt]=Aparência -Name[nl]=Weergave -Name[af]=Weergawe -Name[sk]=Vzhľad -Name[sv]=Utseende -Name[es]=Apariencia -Name[fr]=Apparence -Name[it]=Aspetto Comment=Accent colors and theming. -Comment[ar]=ألوان التمييز والسمات. -Comment[cs]=Doplňkové barvy a témata. -Comment[zh_CN]=强调色和个性化 -Comment[pl]=Kolory akcentów i styl. -Comment[hu]=Kiemelő színek és téma. -Comment[pt]=Cores de destaque e temas. -Comment[nl]=Accentkleuren en thema's. -Comment[af]=Aksentkleure en temas. -Comment[sk]=Akcentové farby a témy. -Comment[sv]=Accentfärger och teman. -Comment[es]=Colores de énfasis y temas. -Comment[fr]=Couleurs d'accentuation et thèmes. -Comment[it]=Colore d'accento e temi. Type=Application Exec=cosmic-settings appearance Terminal=false Categories=COSMIC -Keywords=COSMIC;theme; +Keywords=COSMIC;Accent;Color;Icon;Font;Theme NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-appearance diff --git a/resources/applications/com.system76.CosmicSettings.Applications.desktop b/resources/applications/com.system76.CosmicSettings.Applications.desktop index 6825c9b..317e39c 100644 --- a/resources/applications/com.system76.CosmicSettings.Applications.desktop +++ b/resources/applications/com.system76.CosmicSettings.Applications.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Applications -Name[ar]=التطبيقات -Name[cs]=Aplikace -Name[zh_CN]=应用程序 -Name[hu]=Alkalmazások -Name[pt]=Aplicativos -Name[nl]=Toepassingen -Name[af]=Toepassings -Name[sk]=Aplikácie -Name[sv]=Program -Name[es]=Aplicaciones -Name[pl]=Aplikacje -Name[fr]=Applications -Name[it]=Applicazioni -Comment=Manage application settings. -Comment[ar]=أدر إعدادات التطبيق. -Comment[cs]=Správa nastavení aplikací. -Comment[zh_CN]=管理应用程序设置 -Comment[hu]=Alkalmazásbeállítások kezelése. -Comment[pt]=Gerenciar configurações de aplicativos. -Comment[nl]=Instellingen voor toepassingen beheren. -Comment[af]=Bestuur toepassingsinstellings. -Comment[sk]=Spravovať nastavenia aplikácií. -Comment[sv]=Hantera programinställningar. -Comment[es]=Gestionar configuración de aplicaciones. -Comment[pl]=Zarządzaj ustawieniami aplikacji. -Comment[fr]=Gérer les paramètres de l'application. -Comment[it]=Gestione delle impostazioni delle applicazioni. +Comment=Default applications, startup applications, and X11 application compatibility settings. Type=Application Exec=cosmic-settings applications Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Default;Application;Startup;X11;Compatibility NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-applications diff --git a/resources/applications/com.system76.CosmicSettings.Bluetooth.desktop b/resources/applications/com.system76.CosmicSettings.Bluetooth.desktop index 9f2a120..32fd9ab 100644 --- a/resources/applications/com.system76.CosmicSettings.Bluetooth.desktop +++ b/resources/applications/com.system76.CosmicSettings.Bluetooth.desktop @@ -1,35 +1,11 @@ [Desktop Entry] Name=Bluetooth -Name[ar]=البلوتوث -Name[cs]=Bluetooth -Name[zh_CN]=蓝牙 -Name[pl]=Bluetooth -Name[hu]=Bluetooth -Name[pt]=Bluetooth -Name[sk]=Bluetooth -Name[sv]=Bluetooth -Name[es]=Bluetooth -Name[fr]=Bluetooth -Name[it]=Bluetooth -Comment=Manage Bluetooth devices -Comment[ar]=أدر أجهزة البلوتوث -Comment[cs]=Správa Bluetooth zařízení. -Comment[zh_CN]=管理蓝牙设备 -Comment[pl]=Zarządzaj urządzeniami Bluetooth -Comment[hu]=Bluetooth-eszközök kezelése -Comment[pt]=Gerenciar dispositivos Bluetooth -Comment[sk]=Spravovať Bluetooth zariadenia -Comment[sv]=Hantera Bluetooth-enheter -Comment[nl]=Bluetooth-apparaten beheren -Comment[af]=Bestuur Bluetooth-toestelle -Comment[es]=Gestionar dispositivos Bluetooth -Comment[fr]=Gérer les appareils Bluetooth -Comment[it]=Gestione dispositivi Bluetooth +Comment=Manage Bluetooth devices. Type=Application Exec=cosmic-settings bluetooth Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Bluetooth; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-bluetooth diff --git a/resources/applications/com.system76.CosmicSettings.DateTime.desktop b/resources/applications/com.system76.CosmicSettings.DateTime.desktop index 29b6080..50e0359 100644 --- a/resources/applications/com.system76.CosmicSettings.DateTime.desktop +++ b/resources/applications/com.system76.CosmicSettings.DateTime.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Date & Time -Name[ar]=التاريخ والوقت -Name[cs]=Datum a čas -Name[zh_CN]=日期和时间 -Name[hu]=Dátum és idő -Name[pl]=Data i godzina -Name[pt]=Data e Hora -Name[nl]=Datum en tijd -Name[af]=Datum en tyd -Name[sk]=Dátum a čas -Name[sv]=Datum & Tid -Name[es]=Fecha y Hora -Name[fr]=Date et heure -Name[it]=Data e Ora Comment=Time zone, automatic clock settings, and time formatting. -Comment[ar]=المنطقة الزمنية وإعدادات الساعة التلقائية وتنسيق الوقت. -Comment[cs]=Časová zóna, automatické nastavení času a formátování času. -Comment[zh_CN]=时区,自动时钟设置和时间格式 -Comment[pl]=Strefy czasowe, automatyczna konfiguracja zegara i format wyświetlania czasu. -Comment[hu]=Időzóna, automatikus órabeállítások és időformátum. -Comment[pt]=Fuso horário, hora automática e formatação. -Comment[nl]=Tijdszone, automatische klokinstellingen en tijdformatering. -Comment[af]=Tydsone, outomatiese klokinstellings en tydformatering. -Comment[sk]=Časové pásmo, automatické nastavenie hodín a formátovanie času. -Comment[sv]=Tidzon, automatiska klockinställningar, och tidsformat. -Comment[es]=Zona horaria, configuración automática del reloj y formatos de hora. -Comment[fr]=Fuseau horaire, réglage de l'heure automatique et formatage de l'heure. -Comment[it]=Fuso orario, impostazione automatica dell'ora e del formato. Type=Application Exec=cosmic-settings date-time Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords= COSMIC;Time;Zone; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-date-and-time diff --git a/resources/applications/com.system76.CosmicSettings.DefaultApps.desktop b/resources/applications/com.system76.CosmicSettings.DefaultApps.desktop index 36779c1..7c0fe17 100644 --- a/resources/applications/com.system76.CosmicSettings.DefaultApps.desktop +++ b/resources/applications/com.system76.CosmicSettings.DefaultApps.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Default applications -Name[ar]=التطبيقات المبدئية -Name[cs]=Výchozí aplikace -Name[zh_CN]=默认应用程序 -Name[pl]=Domyślne aplikacje -Name[hu]=Alapértelmezett alkalmazások -Name[pt]=Aplicativos padrão -Name[nl]=Standaard toepassingen -Name[af]=Standaard toepassings -Name[sk]=Predvolené aplikácie -Name[sv]=Standardprogram -Name[es]=Aplicaciones predeterminadas -Name[fr]=Applications par défaut -Name[it]=Applicazioni predefinite Comment=Default web browser, mail client, file browser, and other applications. -Comment[ar]=متصفح الويب المبدئي، عميل البريد، متصفح الملفات، والتطبيقات الأخرى. -Comment[cs]=Výchozí webový prohlížeč, poštovní klient, prohlížeč souborů a další aplikace. -Comment[zh_CN]=默认网络浏览器、邮件客户端、文件浏览器和其他应用程序 -Comment[pl]=Domyślna przeglądarka, klient poczty e-mail, menedżer plików i inne aplikacje. -Comment[hu]=Alapértelmezett böngésző, levelezőprogram, fájlkezelő és egyéb alkalmazások. -Comment[pt]=Navegador web padrão, cliente de email, gestor de arquivos e outros aplicativos. -Comment[nl]=Standaard webbrowser, mailprogramma, bestandsbeheerder en andere apps. -Comment[af]=Standaard webblaaier, e-poskliënt, lêerblaaier en ander toepassings. -Comment[sk]=Predvolený webový prehliadač, e-mailový klient, správca súborov a ďalšie aplikácie. -Comment[sv]=Standardwebläsare, e-postklient, filbläddrare, och andra program. -Comment[es]=Navegador web predeterminado, cliente de correo, explorador de archivos y otras aplicaciones. -Comment[fr]=Navigateur web, client mail, explorateur de fichiers, et autres applications. -Comment[it]=Browser web predefinito, client di posta, esplora file e altre applicazioni. Type=Application Exec=cosmic-settings default-apps Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Default;Application NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-default-applications diff --git a/resources/applications/com.system76.CosmicSettings.Desktop.desktop b/resources/applications/com.system76.CosmicSettings.Desktop.desktop index 9de131d..ad3a2cf 100644 --- a/resources/applications/com.system76.CosmicSettings.Desktop.desktop +++ b/resources/applications/com.system76.CosmicSettings.Desktop.desktop @@ -1,24 +1,11 @@ [Desktop Entry] Name=Desktop -Name[ar]=سطح المكتب -Name[cs]=Plocha -Name[zh_CN]=桌面 -Name[pl]=Pulpit -Name[hu]=Asztal -Name[pt]=Área de Trabalho -Name[nl]=Bureaublad -Name[sk]=Pracovná plocha -Name[sv]=Skrivbord -Name[es]=Escritorio -Name[fr]=Bureau -Comment= -Comment[cs]=Nastavení pracovní plochy, vzhledu a chování oken. -Comment[sk]=Nastavenia pracovnej plochy, vzhľadu a správania okien +Comment=Wallpaper, appearance, panel, dock, window management and workspace settings. Type=Application Exec=cosmic-settings desktop Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Desktop; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-desktop diff --git a/resources/applications/com.system76.CosmicSettings.Displays.desktop b/resources/applications/com.system76.CosmicSettings.Displays.desktop index 17acc1b..0827939 100644 --- a/resources/applications/com.system76.CosmicSettings.Displays.desktop +++ b/resources/applications/com.system76.CosmicSettings.Displays.desktop @@ -1,37 +1,11 @@ [Desktop Entry] Name=Displays -Name[ar]=شاشات العرض -Name[cs]=Displeje -Name[zh_CN]=显示器 -Name[pl]=Ekrany -Name[hu]=Kijelzők -Name[pt]=Telas -Name[nl]=Beeldschermen -Name[af]=Vertoonskerme -Name[sk]=Displeje -Name[sv]=Skärmar -Name[es]=Pantallas -Name[fr]=Écrans -Name[it]=Schermo -Comment=Display options, graphics modes, and night light. -Comment[ar]=خيارات العرض، وأنماط الرسوميات، والوضع الليلي. -Comment[cs]=Možnosti displeje, grafické režimy a noční světlo. -Comment[zh_CN]=显示器选项、图形模式和夜间模式 -Comment[pl]=Ustawienia wyświetlania, opcje grafiki i podświetlanie nocne. -Comment[hu]=Kijelzőbeállítások, grafikus módok és éjszakai fény. -Comment[pt]=Opções de tela, monitores, modos gráficos e luz noturna. -Comment[nl]=Weergaveopties, grafische modi en nachtlicht. -Comment[af]=Vertoonopsies, grafiese modusse en naglig. -Comment[sk]=Možnosti displeja, grafické režimy a nočné svetlo. -Comment[sv]=Skärmalternativ, grafiklägen, och nattljus. -Comment[es]=Opciones de pantalla, modos gráficos y luz nocturna. -Comment[fr]=Options d'affichage, modes graphiques et éclairage nocturne. -Comment[it]=Opzioni dello schermo, impostazioni e luce notturna. +Comment=Manage display configuration settings. Type=Application Exec=cosmic-settings displays Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Display; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-displays diff --git a/resources/applications/com.system76.CosmicSettings.Dock.desktop b/resources/applications/com.system76.CosmicSettings.Dock.desktop index cd25e8f..ae22550 100644 --- a/resources/applications/com.system76.CosmicSettings.Dock.desktop +++ b/resources/applications/com.system76.CosmicSettings.Dock.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Dock -Name[ar]=الإرساء -Name[cs]=Dok -Name[zh_CN]=程序坞 -Name[pl]=Dok -Name[hu]=Dokk -Name[pt]=Dock -Name[sk]=Dok -Name[sv]=Docka -Name[es]=Panel -Name[fr]=Dock Comment=An optional bar for apps and applets. -Comment[ar]=شريط اختياري للتطبيقات والبريمجات. -Comment[cs]=Volitelná lišta pro aplikace a applety. -Comment[zh_CN]=可选的应用程序和小部件的工具栏 -Comment[pl]=Panel z przypiętymi aplikacjami w zasobniku i innymi apletami. -Comment[hu]=Egy opcionális sáv alkalmazásokhoz és kisalkalmazásokhoz. -Comment[pt]=Painel com aplicativos fixados e outros miniaplicativos. -Comment[sk]=Voliteľný panel pre aplikácie a applety. -Comment[sv]=En valfri list för program och applets. -Comment[nl]=Een optionele balk voor apps en applets. -Comment[af]='n Opsionele balk vir programme en applets. -Comment[es]=Panel opcional para aplicaciones y otros applets. -Comment[fr]=Barre facultative pour les applications et les applets. Type=Application Exec=cosmic-settings dock Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Dock;Panel;Applet NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-dock diff --git a/resources/applications/com.system76.CosmicSettings.Input.desktop b/resources/applications/com.system76.CosmicSettings.Input.desktop index 1f63520..4cc4dc1 100644 --- a/resources/applications/com.system76.CosmicSettings.Input.desktop +++ b/resources/applications/com.system76.CosmicSettings.Input.desktop @@ -1,35 +1,11 @@ [Desktop Entry] Name=Input Devices -Name[ar]=أجهزة الإدخال -Name[cs]=Vstupní zařízení -Name[zh_CN]=输入设备 -Name[pl]=Urządzenia wprowadzania danych -Name[hu]=Beviteli eszközök -Name[pt]=Dispositivos de Entrada -Name[nl]=Invoerapparaten -Name[af]=Invoertoestelle -Name[sk]=Vstupné zariadenia -Name[sv]=Inmatningsenheter -Name[es]=Dispositivos de entrada -Name[fr]=Périphériques d'entrée -Name[it]=Dispositivi di immissione -Comment=Keyboard, cursor, etc. -Comment[ar]=لوحة المفاتيح، المؤشر، إلخ. -Comment[cs]=Klávesnice, kurzor a další. -Comment[zh_CN]=输入设备 -Comment[nl]=Toetsenbord, muis, enz. -Comment[af]=Sleutelbord, muis, ens. -Comment[hu]=Billentyűzet, mutató, stb. -Comment[sk]=Klávesnica, kurzor a ďalšie. -Comment[sv]=Tangentbord, markör, etc. -Comment[es]=Teclado, ratón, etc. -Comment[fr]=Clavier, curseur, etc. -Comment[it]=Tastiera, mouse, ecc. +Comment=Keyboard and mouse settings. Type=Application Exec=cosmic-settings input Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Input;Keyboard;Mouse;Mice; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-input-devices diff --git a/resources/applications/com.system76.CosmicSettings.Keyboard.desktop b/resources/applications/com.system76.CosmicSettings.Keyboard.desktop index 9197cfb..a915dfb 100644 --- a/resources/applications/com.system76.CosmicSettings.Keyboard.desktop +++ b/resources/applications/com.system76.CosmicSettings.Keyboard.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Keyboard -Name[ar]=لوحة المفاتيح -Name[cs]=Klávesnice -Name[zh_CN]=键盘 -Name[pl]=Klawiatura -Name[hu]=Billentyűzet -Name[pt]=Teclado -Name[nl]=Toetsenbord -Name[sk]=Klávesnica -Name[sv]=Tangentbord -Name[es]=Teclado -Name[fr]=Clavier Comment=Input sources, switching, special character entry, shortcuts. -Comment[ar]=مصادر الإدخال، التبديل، إدخال الأحرف الخاصة، الاختصارات. -Comment[cs]=Metody zadávání, přepínání, vkládání speciálních znaků, zkratky. -Comment[zh_CN]=输入源、切换、特殊字符输入、快捷键 -Comment[pl]=Źródła wprowadzania, przełączanie, specjalne klawisze, skróty. -Comment[hu]=Bemeneti források, váltásuk, speciális karakterek, billentyűparancsok. -Comment[pt]=Métodos de entrada, entrada de caracteres especiais, atalhos. -Comment[nl]=Invoermethodes, speciale tekens, en sneltoetsen. -Comment[sk]=Vstupné zdroje, prepínanie, zadávanie špeciálnych znakov, skratky. -Comment[sv]=Inmatningskällor, växling, specialtecken, genvägar. -Comment[es]=Entrada de teclado, conmutación, carácteres especiales, atajos. -Comment[fr]=Sources d'entrée, commutation, saisie de caractères spéciaux, raccourcis. Type=Application Exec=cosmic-settings keyboard Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Keyboard;Input;Source;Shortcuts; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-desktop-keyboard diff --git a/resources/applications/com.system76.CosmicSettings.LegacyApplications.desktop b/resources/applications/com.system76.CosmicSettings.LegacyApplications.desktop index 627237f..e6a4d5d 100644 --- a/resources/applications/com.system76.CosmicSettings.LegacyApplications.desktop +++ b/resources/applications/com.system76.CosmicSettings.LegacyApplications.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=X11 Applications Compatibility -Name[ar]=توافق تطبيقات اكس11 -Name[cs]=Kompatibilita X11 aplikací -Name[zh_CN]=X11应用程序兼容性 -Name[hu]=X11 alkalmazások támogatása -Name[pt]=Compatibilidade com aplicativos X11. -Name[nl]=Compatibiliteit met X11-toepassingen. -Name[sk]=Kompatibilita X11 aplikácií -Name[sv]=X11 program kompatibilitet -Name[es]=Compatibilidad para aplicaciones X11 -Name[pl]=Kompatybilność aplikacji X11 -Name[fr]=Compatibilité des applications X11 -Comment=X11 Window system application scaling and Global shortcuts. -Comment[ar]=توسيع نطاق تطبيق نظام النوافذ اكس11 والاختصارات العامة. -Comment[cs]=Škálování a globální klávesové zkratky aplikací využívajících okenní systém X11. -Comment[zh_CN]=X11窗口系统应用程序缩放和全局快捷键 -Comment[hu]=X11 ablakkezelő rendszer alkalmazásméretezés és globális billentyűparancsok. -Comment[pt]=Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais. -Comment[nl]=X11-toepassingsvensters schalen, en globale sneltoetsen. -Comment[sk]=Škálovanie X11 aplikácií a globálne skratky. -Comment[sv]=Applikationsskalning för X11 fönstersystem och globala genvägar. -Comment[es]=Escalado de aplicaciones del sistema de ventanas X11 y atajos globales. -Comment[pl]=Skalowanie aplikacji systemu okien X11 i globalne skróty klawiszowe. -Comment[fr]=Mise à l'échelle des applications du gestionnaire de fenêtres X11 et raccourcis globaux. +Comment=X11 window system application scaling, primary display, and global shortcuts. Type=Application Exec=cosmic-settings legacy-applications Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;X11;Application;Game;Compatibility; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-x11-applications-compatibility diff --git a/resources/applications/com.system76.CosmicSettings.Mouse.desktop b/resources/applications/com.system76.CosmicSettings.Mouse.desktop index 0c904c0..fe12825 100644 --- a/resources/applications/com.system76.CosmicSettings.Mouse.desktop +++ b/resources/applications/com.system76.CosmicSettings.Mouse.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Mouse -Name[ar]=الفأرة -Name[cs]=Myš -Name[zh_CN]=鼠标 -Name[pl]=Mysz -Name[hu]=Egér -Name[pt]=Mouse -Name[nl]=Muis -Name[sk]=Myš -Name[sv]=Mus -Name[es]=Ratón -Name[fr]=Souris Comment=Mouse speed, acceleration, and natural scrolling. -Comment[ar]=سرعة الفأرة، والتسارع، والتمرير الطبيعي. -Comment[cs]=Citlivost myši, akcelerace, přirozené posouvání. -Comment[zh_CN]=鼠标速度、加速度和自然滚动 -Comment[pl]=Prędkość myszy, przyspieszenie i naturalne przewijanie. -Comment[hu]=Egérsebesség, gyorsítás és természetes görgetés. -Comment[pt]=Velocidade do mouse, aceleração e rolagem natural. -Comment[nl]=Muissnelheid en -versnelling, en 'natuurlijk' scrollen. -Comment[sk]=Rýchlosť myši, akcelerácia a prirodzené rolovanie. -Comment[sv]=Mushastighet, acceleration, och naturlig rullning. -Comment[es]=Velocidad del ratón, aceleración y desplazamiento natural. -Comment[fr]=Vitesse de la souris, accélération, défilement naturel. Type=Application Exec=cosmic-settings mouse Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Mouse;Acceleration;Scrolling; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-mouse diff --git a/resources/applications/com.system76.CosmicSettings.Network.desktop b/resources/applications/com.system76.CosmicSettings.Network.desktop index 3472a5c..5d82d24 100644 --- a/resources/applications/com.system76.CosmicSettings.Network.desktop +++ b/resources/applications/com.system76.CosmicSettings.Network.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Network & Wireless -Name[ar]=الشبكة والاتصالات اللاسلكية -Name[cs]=Síť a Wi-Fi -Name[zh_CN]=网络和无线 -Name[pl]=Sieć i połączenia bezprzewodowe -Name[hu]=Hálózat és Wi-Fi -Name[pt]=Rede e Wi-Fi -Name[nl]=Netwerk en wifi -Name[sk]=Sieť & Bezdrôtové -Name[sv]=Nätverk & Wi-Fi -Name[es]=Red e inalámbrico -Name[fr]=Réseau et sans fil Comment=Manage network connections -Comment[ar]=أدر اتصالات الشبكة -Comment[cs]=Správa síťových připojení. -Comment[zh_CN]=管理网络连接 -Comment[pl]=Zarządzaj połączeniami sieciowymi -Comment[hu]=Hálózati kapcsolatok kezelése -Comment[pt]=Gerenciar conexões de rede -Comment[nl]=Netwerkverbindingen beheren -Comment[sk]=Spravovať sieťové pripojenia -Comment[sv]=Hantera nätverksanslutningar -Comment[es]=Gestionar conexiones de red -Comment[fr]=Gérer les connexions réseau Type=Application Exec=cosmic-settings network Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Network;Wireless;WiFi;VPN; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-network-and-wireless diff --git a/resources/applications/com.system76.CosmicSettings.Notifications.desktop b/resources/applications/com.system76.CosmicSettings.Notifications.desktop index 418da24..17add5a 100644 --- a/resources/applications/com.system76.CosmicSettings.Notifications.desktop +++ b/resources/applications/com.system76.CosmicSettings.Notifications.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Notifications -Name[ar]=الإشعارات -Name[cs]=Oznámení -Name[zh_CN]=通知 -Name[pl]=Powiadomienia -Name[hu]=Értesítések -Name[pt]=Notificações -Name[nl]=Meldingsinstellingen -Name[sk]=Oznámenia -Name[sv]=Aviseringar -Name[es]=Notificaciones -Name[fr]=Notifications Comment=Do Not Disturb, lockscreen notifications, and per-application settings. -Comment[ar]=عدم الإزعاج، إشعارات شاشة القفل، وإعدادات لكل تطبيق. -Comment[cs]=Nerušit, oznámení na zamykací obrazovce a nastavení pro specifické aplikace. -Comment[zh_CN]=勿扰模式、锁屏通知和每个应用程序的设置 -Comment[pl]=Tryb „nie przeszkadzać”, powiadomienia na ekranie blokady i ustawienia poszczególnych aplikacji. -Comment[hu]=Ne zavarjanak, zárolási képernyő értesítések és alkalmazásonkénti beállítások. -Comment[pt]="Não Perturbe", notificações na tela de bloqueio e ajustes por aplicativo. -Comment[nl]="Niet storen", meldingen op het vergrendelingsscherm en meldingsinstellingen per app. -Comment[sk]=Nerušiť, oznámenia na uzamknutej obrazovke a nastavenia pre aplikácie. -Comment[sv]=Stör ej, aviseringar på låsskärm, och inställningar per program. -Comment[es]=No molestar, notificaciones de pantalla de bloqueo y ajustes de aplicación. -Comment[fr]=Ne pas déranger, notifications sur l'écran de verrouillage et paramètres par application. Type=Application Exec=cosmic-settings notifications Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Notification;Lock; NoDisplay=true OnlyShowIn=COSMIC Icon=com.system76.CosmicSettings diff --git a/resources/applications/com.system76.CosmicSettings.Panel.desktop b/resources/applications/com.system76.CosmicSettings.Panel.desktop index 6b2fc3a..7e88ea2 100644 --- a/resources/applications/com.system76.CosmicSettings.Panel.desktop +++ b/resources/applications/com.system76.CosmicSettings.Panel.desktop @@ -1,30 +1,11 @@ [Desktop Entry] Name=Panel -Name[ar]=اللوحة -Name[cs]=Panel -Name[zh_CN]=面板 -Name[pl]=Panel -Name[hu]=Panel -Name[pt]=Painel -Name[sk]=Panel -Name[sv]=Panel -Name[es]=Barra Comment=Primary system bar for menus and applets. -Comment[ar]=شريط النظام الأساسي للقوائم والبريمجات. -Comment[cs]=Hlavní systémová lišta pro menu a applety. -Comment[zh_CN]=主系统栏,用于菜单和小部件。 -Comment[hu]=Fő rendszersáv menükhöz és kisalkalmazásokhoz. -Comment[pt]=Barra superior com controles e menus. -Comment[nl]=De standaard systeembalk voor menu's en applets. -Comment[sk]=Hlavný systémový panel pre menu a applety. -Comment[sv]=Primär systemfält för menyer och applets. -Comment[es]=Barra principal del sistema para menús y applets. -Comment[fr]=Barre système principale pour les menus et les applets. Type=Application Exec=cosmic-settings panel Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Panel;Applet NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-panel diff --git a/resources/applications/com.system76.CosmicSettings.Power.desktop b/resources/applications/com.system76.CosmicSettings.Power.desktop index 7846752..928f530 100644 --- a/resources/applications/com.system76.CosmicSettings.Power.desktop +++ b/resources/applications/com.system76.CosmicSettings.Power.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Power & Battery -Name[ar]=الطاقة والبطارية -Name[cs]=Napájení a baterie -Name[zh_CN]=电源和电池 -Name[hu]=Energia és akkumulátor -Name[pl]=Zasilanie i bateria -Name[pt]=Energia e Bateria -Name[nl]=Energie en batterij -Name[sk]=Napájanie & Batéria -Name[sv]=Ström & Batteri -Name[es]=Energía y batería -Name[fr]=Alimentation et batterie Comment=Power modes and power saving options. -Comment[ar]=أوضاع الطاقة وخيارات توفير الطاقة. -Comment[cs]=Režimy napájení a možnosti úspory energie. -Comment[zh_CN]=电源模式和节能选项 -Comment[pl]=Tryby zasilania i opcje oszczędzania energii. -Comment[hu]=Energiagazdálkodási módok és energiagazdálkodási beállítások. -Comment[pt]=Modos de energia e opções de economia de energia. -Comment[nl]=Energieverbruik en -besparingsopties. -Comment[sk]=Režimy napájania a možnosti úspory energie. -Comment[sv]=Strömalternativ och energisparalternativ. -Comment[es]=Modos de energía y opciones de ahorro de energía. -Comment[fr]=Modes d'alimentation et options d'économie d'énergie. Type=Application Exec=cosmic-settings power Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Power;Battery NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-power-and-battery diff --git a/resources/applications/com.system76.CosmicSettings.RegionLanguage.desktop b/resources/applications/com.system76.CosmicSettings.RegionLanguage.desktop index 9ba3a55..3597a8e 100644 --- a/resources/applications/com.system76.CosmicSettings.RegionLanguage.desktop +++ b/resources/applications/com.system76.CosmicSettings.RegionLanguage.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Region & Language -Name[ar]=اللغة والمنطقة -Name[cs]=Region a jazyk -Name[zh_CN]=区域和语言 -Name[pl]=Region i język -Name[hu]=Régió és nyelv -Name[pt]=Região e Idioma -Name[nl]=Taal en regio -Name[sk]=Región & Jazyk -Name[sv]=Region & språk -Name[es]=Región e Idioma -Name[fr]=Région et langue Comment=Format dates, times, and numbers based on your region. -Comment[ar]=نسق التواريخ والأوقات والأرقام بناءً على منطقتك. -Comment[cs]=Formátujte datumy, časy a čísla podle vašeho regionu. -Comment[zh_CN]=根据您的区域格式化日期、时间和数字 -Comment[hu]=Dátumok, időpontok és számok formázása a régió alapján. -Comment[pl]=Format wyświetlanych dat, godzin i liczb dopasowany do regionu. -Comment[pt]=Formatação de datas, horas e números baseados em sua região. -Comment[nl]=Regionale datum-, tijd- en getalweergave. -Comment[sk]=Formátovanie dátumov, časov a čísel podľa vášho regiónu. -Comment[sv]=Formatera datum, tider och siffror baserat på din region. -Comment[es]=Formato de fechas, horas y números según su región. -Comment[fr]=Formater les dates, les heures et les nombres en fonction de votre région. Type=Application Exec=cosmic-settings region-language Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Region;Language;Date;Format;Time;Locale;Localization; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-region-and-language diff --git a/resources/applications/com.system76.CosmicSettings.Sound.desktop b/resources/applications/com.system76.CosmicSettings.Sound.desktop index 4fff32a..e7b0021 100644 --- a/resources/applications/com.system76.CosmicSettings.Sound.desktop +++ b/resources/applications/com.system76.CosmicSettings.Sound.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Sound -Name[ar]=الصوت -Name[cs]=Zvuk -Name[zh_CN]=音频 -Name[pl]=Dźwięk -Name[hu]=Hang -Name[pt]=Som -Name[nl]=Geluid -Name[sk]=Zvuk -Name[sv]=Ljud -Name[es]=Sonido -Name[fr]=Son Comment=Audio settings for devices, alerts, and applications. -Comment[ar]=إعدادات الصوت للأجهزة والتنبيهات والتطبيقات. -Comment[cs]=Nastavení zvuku pro zařízení, upozornění a aplikace. -Comment[zh_CN]=设备、警报和应用程序的音频设置 -Comment[pl]=Opcje dźwięku dla urządzeń, alertów i aplikacji. -Comment[hu]=Hangbeállítások eszközökhöz, figyelmeztetésekhez és alkalmazásokhoz. -Comment[pt]=Configurações de áudio para dispositivos, alertas e aplicativos. -Comment[nl]=Geluidsinstellingen voor apparaten, alarmen en programma's. -Comment[sk]=Zvukové nastavenia pre zariadenia, upozornenia a aplikácie. -Comment[sv]=Ljudinställningar för enhter, larm och program. -Comment[es]=Configuraciones de audio para dispositivos, alertas y aplicaciones. -Comment[fr]=Paramètres audio pour les appareils, les alertes et les applications. Type=Application Exec=cosmic-settings sound Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Sound;Audio;Alert;Pipewire; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-sound diff --git a/resources/applications/com.system76.CosmicSettings.StartupApps.desktop b/resources/applications/com.system76.CosmicSettings.StartupApps.desktop index e3f8ee8..e0da81b 100644 --- a/resources/applications/com.system76.CosmicSettings.StartupApps.desktop +++ b/resources/applications/com.system76.CosmicSettings.StartupApps.desktop @@ -1,23 +1,11 @@ [Desktop Entry] -Name=Startup applications -Name[ar]=تطبيقات بدء التشغيل -Name[cs]=Automatické spouštění aplikací -Name[sv]=Uppstartsprogram -Name[hu]=Indítási alkalmazások -Name[pl]=Aplikacje startowe -Name[fr]=Applications de démarrage +Name=Startup Applications Comment=Configure applications which run on login. -Comment[ar]=اضبط التطبيقات التي تعمل عند الولوج. -Comment[cs]=Nastavte aplikace, které se spustí při přihlášení. -Comment[sv]=Konfigurera program som körs vid inloggning. -Comment[hu]=Azoknak az alkalmazásoknak a beállítása, amelyek bejelentkezéskor elindulnak. -Comment[pl]=Konfiguracja aplikacji uruchamianych po zalogowaniu. -Comment[fr]=Configurer les applications qui s'exécutent lors de la connexion. Type=Application Exec=cosmic-settings startup-apps Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Startup;Application; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-startup-applications diff --git a/resources/applications/com.system76.CosmicSettings.System.desktop b/resources/applications/com.system76.CosmicSettings.System.desktop index ca9ce78..f9c391d 100644 --- a/resources/applications/com.system76.CosmicSettings.System.desktop +++ b/resources/applications/com.system76.CosmicSettings.System.desktop @@ -1,26 +1,11 @@ [Desktop Entry] Name=System & Accounts -Name[ar]=النظام والحسابات -Name[cs]=Systém a účty -Name[sk]=Systém & Účty -Name[sv]=System & konton -Name[zh_CN]=系统和账户 -Name[pl]=System i konta -Name[hu]=Rendszer és fiókok -Name[pt]=Sistema e Contas -Name[nl]=Systeem en gebruikersaccount -Name[es]=Sistema y cuentas -Name[fr]=Système et comptes -Comment= -Comment[cs]=Systémové informace, uživatelé a firmware -Comment[nl]=Systeeminformatie, gebruikers en firmware -Comment[sk]=Systémové informácie, používatelia a firmware -Comment[es]=Información del sistema, cuentas y firmware +Comment=System information, accounts, and firmware updates. Type=Application Exec=cosmic-settings system Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;System;Info;Accounts;Firmware; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-system-and-accounts diff --git a/resources/applications/com.system76.CosmicSettings.Time.desktop b/resources/applications/com.system76.CosmicSettings.Time.desktop index ab98906..94a7266 100644 --- a/resources/applications/com.system76.CosmicSettings.Time.desktop +++ b/resources/applications/com.system76.CosmicSettings.Time.desktop @@ -1,23 +1,11 @@ [Desktop Entry] Name=Time & Language -Name[ar]=الوقت واللغة -Name[cs]=Čas a jazyk -Name[zh_CN]=时间与语言 -Name[pl]=Czas i język -Name[hu]=Idő és nyelv -Name[pt]=Hora e Idioma -Name[nl]=Tijd- en taalinstellingen -Name[sk]=Čas & Jazyk -Name[sv]=Tid & språk -Name[es]=Hora e Idioma -Name[fr]=Heure et langue -Comment= -Comment[sk]=Nastavenia času a jazyka +Comment=Manage system date, time, region, and language. Type=Application Exec=cosmic-settings time Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;System;Time;Date;Region;Language; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-time-and-language diff --git a/resources/applications/com.system76.CosmicSettings.Touchpad.desktop b/resources/applications/com.system76.CosmicSettings.Touchpad.desktop index bda1241..0035f0e 100644 --- a/resources/applications/com.system76.CosmicSettings.Touchpad.desktop +++ b/resources/applications/com.system76.CosmicSettings.Touchpad.desktop @@ -1,32 +1,11 @@ [Desktop Entry] Name=Touchpad -Name[ar]=لوحة اللمس -Name[cs]=Touchpad -Name[zh_CN]=触摸板 -Name[pl]=Gładzik -Name[hu]=Érintőpárna -Name[pt]=Touchpad -Name[sk]=Touchpad -Name[sv]=Pekplatta -Name[es]=Panel táctil -Name[fr]=Pavé tactile -Comment=Touchpad speed, click options, gestures. -Comment[ar]=سرعة لوحة اللمس، خيارات النقر، الإيماءات. -Comment[cs]=Citlivost touchpadu, nastavení klikání, gesta. -Comment[zh_CN]=触摸板速度、点击选项和手势 -Comment[pl]=Prędkość gładzika, opcje kliknięć, gesty. -Comment[hu]=Érintőpárna sebessége, kattintási beállítások, gesztusok. -Comment[pt]=Velocidade do touchpad, opções de clique, gestos. -Comment[sk]=Rýchlosť touchpadu, možnosti kliknutia, gestá. -Comment[sv]=Pekplattans hastighet, klickalternativ, gester. -Comment[nl]=Touchpad muisversnelling, klikeigenschappen en veeggebaren. -Comment[es]=Velocidad del panel táctil, opciones de clic, gestos. -Comment[fr]=Vitesse du pavé tactile, options de clic, gestes. +Comment=Touchpad speed, click options, and gestures. Type=Application Exec=cosmic-settings touchpad Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;System;Time;Date;Region;Language; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-touchpad diff --git a/resources/applications/com.system76.CosmicSettings.Users.desktop b/resources/applications/com.system76.CosmicSettings.Users.desktop index 6e4933c..2a73808 100644 --- a/resources/applications/com.system76.CosmicSettings.Users.desktop +++ b/resources/applications/com.system76.CosmicSettings.Users.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Users -Name[ar]=المستخدمين -Name[cs]=Uživatelé -Name[zh_CN]=用户 -Name[pl]=Użytkownicy -Name[hu]=Felhasználók -Name[pt]=Usuários -Name[nl]=Gebruikers -Name[sk]=Používatelia -Name[sv]=Användare -Name[es]=Usuarios -Name[fr]=Utilisateurs Comment=Authentication and user accounts. -Comment[ar]=الاستيثاق وحسابات المستخدمين. -Comment[cs]=Ověření a uživatelské účty. -Comment[zh_CN]=身份验证和用户账户 -Comment[pl]=Uwierzytelnianie i konta użytkowników. -Comment[hu]=Hitelesítés és felhasználói fiókok. -Comment[pt]=Autenticação e contas de usuário. -Comment[nl]=Authenticatie en gebruikersinstellingen. -Comment[sk]=Autentifikácia a používateľské účty. -Comment[sv]=Autentisering och användarkonton. -Comment[es]=Autenticación y cuentas de usuario. -Comment[fr]=Authentification et comptes utilisateurs. Type=Application Exec=cosmic-settings users Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;User;Account; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-users diff --git a/resources/applications/com.system76.CosmicSettings.Vpn.desktop b/resources/applications/com.system76.CosmicSettings.Vpn.desktop index 6c81135..07c775d 100644 --- a/resources/applications/com.system76.CosmicSettings.Vpn.desktop +++ b/resources/applications/com.system76.CosmicSettings.Vpn.desktop @@ -1,22 +1,11 @@ [Desktop Entry] Name=VPN Comment=VPN connections and connection profiles. -Comment[ar]=اتصالات VPN وملفات تعريف الاتصال. -Comment[cs]=VPN připojení a profily. -Comment[sk]=VPN pripojenia a profily pripojení. -Comment[sv]=VPN-anslutningar och anslutningsprofiler. -Comment[zh_CN]=VPN连接和配置文件 -Comment[pl]=Połączenia VPN i profile połączeń. -Comment[hu]=VPN-kapcsolatok és kapcsolódási profilok. -Comment[pt]=Conexões VPN e perfis de conexão. -Comment[nl]=VPN-verbindingen en VPN-profielen. -Comment[es]=Conexiones VPN y perfiles de conexión. -Comment[fr]=Connexions VPN et profils de connexion. Type=Application Exec=cosmic-settings vpn Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;VPN;Network;Connection;OpenVPN;OpenConnect; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-vpn diff --git a/resources/applications/com.system76.CosmicSettings.Wallpaper.desktop b/resources/applications/com.system76.CosmicSettings.Wallpaper.desktop index 25760d3..bbe8de3 100644 --- a/resources/applications/com.system76.CosmicSettings.Wallpaper.desktop +++ b/resources/applications/com.system76.CosmicSettings.Wallpaper.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Wallpaper -Name[ar]=خلفية الشاشة -Name[cs]=Pozadí -Name[zh_CN]=壁纸 -Name[pl]=Tapeta -Name[hu]=Háttérkép -Name[pt]=Papel de Parede -Name[nl]=Schermachtergrond -Name[sk]=Tapeta -Name[sv]=Bakgrundsbild -Name[es]=Fondo de pantalla -Name[fr]=Fond d'écran Comment=Wallpaper images, colors, and slideshow options. -Comment[ar]=صور خلفية الشاشة والألوان وخيارات عرض الشرائح. -Comment[cs]=Obrázky pozadí, barvy a možnosti prezentace. -Comment[zh_CN]=壁纸图片、颜色和幻灯片选项 -Comment[pl]=Obraz tła, kolory i opcje pokazu slajdów. -Comment[hu]=Háttérképek, színek és diavetítési beállítások. -Comment[pt]=Imagens de plano de fundo, cores, e opções de exibição em slide. -Comment[nl]=Schermachtergrond: Afbeeldingen, kleuren en diavoorstellingen. -Comment[sk]=Obrázky tapiet, farby a možnosti prezentácie. -Comment[sv]=Bakgrundsbilder, färger, och bildspelsalternativ. -Comment[es]=Imágenes de fondo, colores y opciones de carrusel de imágenes. -Comment[fr]=Images de fond d'écran, couleurs et options de diaporama. Type=Application Exec=cosmic-settings wallpaper Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Wallpaper;Background;Slideshow; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-desktop-wallpaper diff --git a/resources/applications/com.system76.CosmicSettings.WindowManagement.desktop b/resources/applications/com.system76.CosmicSettings.WindowManagement.desktop index 5699778..a641075 100644 --- a/resources/applications/com.system76.CosmicSettings.WindowManagement.desktop +++ b/resources/applications/com.system76.CosmicSettings.WindowManagement.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Window management -Name[ar]=إدارة النوافذ -Name[cs]=Správa oken -Name[zh_CN]=窗口管理 -Name[pl]=Zarządzanie oknami -Name[hu]=Ablakkezelés -Name[pt]=Gerenciamento de Janelas -Name[nl]=Vensterbeheer -Name[sk]=Správa okien -Name[sv]=Fönsterhantering -Name[es]=Gestión de ventanas -Name[fr]=Gestion des fenêtres Comment=Super key action, window control options, and additional window tiling options. -Comment[ar]=إجراء مفتاح Super، وخيارات التحكم في النوافذ، وخيارات تبليط نوافذ إضافية. -Comment[cs]=Akce klávesy Super, možnosti ovládání oken a další možnosti dlaždicového režimu oken. -Comment[zh_CN]=Super键操作、窗口控制选项和额外的窗口平铺选项 -Comment[pl]=Działanie klawisza Super, opcje kontroli oknami i dodatkowe ustawienia kafelkowania okien. -Comment[hu]=Super billentyű funkció, ablakkezelési és csempézési beállítások. -Comment[pt]=Ação da tecla Super, opções de controle de janela e opções adicionais de janelas em mosaico. -Comment[nl]=Opties voor de Supertoets, vensterbeheer en aanvullende opties voor het tegelen van vensters. -Comment[sk]=Akcia klávesu Super, možnosti ovládania okien a ďalšie možnosti dlaždicovania okien. -Comment[sv]=Åtgärd för Super-tangent, fönsterkontroll alternativ, och ytterligare fönsterplacerings alternativ. -Comment[es]=Acción de la tecla Super, opciones de control de ventana y opciones adicionales de mosaico de ventana. -Comment[fr]=Action de la touche Super, options de contrôle des fenêtres et options supplémentaires d'agencement des fenêtres. Type=Application Exec=cosmic-settings window-management Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Window;Management;Tiling;Super;Key; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-window-management diff --git a/resources/applications/com.system76.CosmicSettings.Wired.desktop b/resources/applications/com.system76.CosmicSettings.Wired.desktop index 407532a..eedc372 100644 --- a/resources/applications/com.system76.CosmicSettings.Wired.desktop +++ b/resources/applications/com.system76.CosmicSettings.Wired.desktop @@ -1,32 +1,11 @@ [Desktop Entry] -Name=Filaire -Name[ar]=سلكي -Name[cs]=Drátové -Name[zh_CN]=有线连接 -Name[pl]=Połączenia przewodowe -Name[hu]=Vezetékes kapcsolatok -Name[pt]=Rede Cabeada -Name[nl]=Kabelverbinding -Name[sk]=Káblové -Name[sv]=Tråndbunden anslutning -Name[es]=Red cableada +Name=Wired Comment=Wired connections and connection profiles. -Comment[ar]=الاتصالات السلكية وملفات تعريف الاتصال. -Comment[cs]=Drátové připojení a profily. -Comment[zh_CN]=有线连接和配置文件 -Comment[pl]=Połączenia przewodowe i profile połączeń. -Comment[hu]=Vezetékes kapcsolatok és kapcsolódási profilok. -Comment[pt]=Conexões de rede cabeada e perfis de conexão. -Comment[nl]=Kabelverbinding en verbindingsprofielen. -Comment[sk]=Káblové pripojenia a profily pripojení. -Comment[sv]=Trådbundna anslutningar och anslutningsprofiler. -Comment[es]=Conexiones cableadas y perfiles de conexión. -Comment[fr]=Connexions filaires et profils. Type=Application Exec=cosmic-settings wired Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Wired;LAN;Network;Connection; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-wired diff --git a/resources/applications/com.system76.CosmicSettings.Wireless.desktop b/resources/applications/com.system76.CosmicSettings.Wireless.desktop index ed560f1..2cc2eb6 100644 --- a/resources/applications/com.system76.CosmicSettings.Wireless.desktop +++ b/resources/applications/com.system76.CosmicSettings.Wireless.desktop @@ -1,32 +1,11 @@ [Desktop Entry] Name=Wi-Fi -Name[ar]=واي فاي -Name[cs]=Wi-Fi -Name[zh_CN]=Wi-Fi -Name[pl]=Wi-Fi -Name[hu]=Wi-Fi -Name[pt]=Wi-Fi -Name[nl]=Wifi -Name[sk]=Wi-Fi -Name[sv]=Wi-Fi -Name[es]=Wi-Fi Comment=Wi-Fi connections and connection profiles. -Comment[ar]=اتصالات واي فاي وملفات تعريف الاتصال. -Comment[cs]=Wi-Fi připojení a profily. -Comment[zh_CN]=Wi-Fi连接和配置文件 -Comment[hu]=Wi-Fi kapcsolatok és kapcsolódási profilok. -Comment[pl]=Połączenia Wi-Fi i profile połączeń. -Comment[pt]=Conexões de rede sem fio e perfis de conexão. -Comment[nl]=Wifiverbinding en verbindingsprofielen. -Comment[sk]=Wi-Fi pripojenia a profily pripojení. -Comment[sv]=Wi-Fi-anslutningar och anslutningsprofiler. -Comment[es]=Conexiones Wi-Fi y perfiles de conexión. -Comment[fr]=Connexions Wi-Fi et profils. Type=Application Exec=cosmic-settings wireless Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;WiFi;Wi-Fi;Network;Connection; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-wireless diff --git a/resources/applications/com.system76.CosmicSettings.Workspaces.desktop b/resources/applications/com.system76.CosmicSettings.Workspaces.desktop index 152cabf..2366504 100644 --- a/resources/applications/com.system76.CosmicSettings.Workspaces.desktop +++ b/resources/applications/com.system76.CosmicSettings.Workspaces.desktop @@ -1,33 +1,11 @@ [Desktop Entry] Name=Workspaces -Name[ar]=مساحات العمل -Name[cs]=Pracovní plochy -Name[zh_CN]=工作区 -Name[pl]=Obszary robocze -Name[hu]=Munkaterületek -Name[pt]=Áreas de Trabalho -Name[sk]=Pracovné priestory -Name[sv]=Arbetsytor -Name[es]=Espacios de trabajo -Name[it]=Spazi di lavoro -Name[fr]=Espaces de travail -Comment=Workspace orientation and behavior. -Comment[ar]=اتجاه وسلوك مساحة العمل. -Comment[cs]=Chování a orientace pracovních ploch. -Comment[zh_CN]=工作区方向和行为 -Comment[pl]=Kierunek i zachowanie obszarów roboczych. -Comment[hu]=Munkaterületek tájolása és viselkedése. -Comment[pt]=Orientação e comportamento da área de trabalho. -Comment[sk]=Orientácia a správanie pracovných priestorov. -Comment[sv]=Arbetsytors orientering och beteende. -Comment[es]=Orientación de los espacios de trabajo y comportamiento. -Comment[it]=Orientamento e comportamento degli spazi di lavoro. -Comment[fr]=Orientation et comportement des espaces de travail. +Comment=Workspace orientation, overview, and multi-monitor behavior. Type=Application Exec=cosmic-settings workspaces Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Workspace;Orientation;Overview;Monitor; NoDisplay=true OnlyShowIn=COSMIC Icon=preferences-workspaces diff --git a/resources/applications/com.system76.CosmicSettings.desktop b/resources/applications/com.system76.CosmicSettings.desktop index 0ce128f..e255044 100644 --- a/resources/applications/com.system76.CosmicSettings.desktop +++ b/resources/applications/com.system76.CosmicSettings.desktop @@ -1,23 +1,11 @@ [Desktop Entry] Name=COSMIC Settings -Name[ar]=إعدادات COSMIC -Name[cs]=Nastavení COSMIC -Name[zh_CN]=COSMIC 设置 -Name[pl]=Ustawienia COSMIC -Name[pt]=Configurações -Name[ru]=Параметры -Name[hu]=COSMIC Beállítások -Name[pt_BR]=Configurações -Name[sv]=COSMIC Inställningar -Name[sk]=Nastavenia COSMIC -Name[es]=Configuración COSMIC -Name[it]=Impostazioni di COSMIC -Name[fr]=Paramètres COSMIC +Comment=Settings application for COSMIC. Type=Application Exec=cosmic-settings Terminal=false Categories=COSMIC -Keywords=COSMIC +Keywords=COSMIC;Settings; OnlyShowIn=COSMIC Icon=com.system76.CosmicSettings StartupNotify=true diff --git a/resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy b/resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy index daf6e94..93ca0bc 100644 --- a/resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy +++ b/resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy @@ -16,6 +16,7 @@ Gebruikersaccount bewerken Bestuur die gebruikersrekening Felhasználói fiókok kezelése + Gestione account utente Authentication is required to change user data الاستيثاق مطلوب لتغيير بيانات المستخدم Je vyžadováno ověření pro změnu uživatelských dat @@ -24,6 +25,7 @@ Autenticação é necessária para alterar dados de usuário Autenticação é necessária para alterar dados de usuário Felhasználói adatok módosításához hitelesítés szükséges + Autenticazione necessaria per modificare i dati dell'utente no no diff --git a/subscriptions/a11y-manager/Cargo.toml b/subscriptions/a11y-manager/Cargo.toml index 78dcdf6..bfdf7c2 100644 --- a/subscriptions/a11y-manager/Cargo.toml +++ b/subscriptions/a11y-manager/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-a11y-manager-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true diff --git a/subscriptions/accessibility/Cargo.toml b/subscriptions/accessibility/Cargo.toml index 62526e2..2a3b5e6 100644 --- a/subscriptions/accessibility/Cargo.toml +++ b/subscriptions/accessibility/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-accessibility-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true @@ -8,8 +8,8 @@ publish = true [dependencies] cosmic-dbus-a11y = { git = "https://github.com/pop-os/dbus-settings-bindings" } -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } tokio = { version = "1.49.0", features = ["sync", "time"] } tracing = "0.1.44" -zbus = "5.12" +zbus = "5.13" diff --git a/subscriptions/accessibility/src/lib.rs b/subscriptions/accessibility/src/lib.rs index e2ad484..d4d6933 100644 --- a/subscriptions/accessibility/src/lib.rs +++ b/subscriptions/accessibility/src/lib.rs @@ -34,16 +34,18 @@ pub struct State { pub fn subscription() -> Subscription { struct MyId; - Subscription::run_with_id( - std::any::TypeId::of::(), - stream::channel(1, move |mut output| async move { - if let Some(state) = State::new(&mut output).await { - state.listen(&mut output).await; - } + Subscription::run_with(std::any::TypeId::of::(), |_| { + stream::channel( + 1, + move |mut output: futures::channel::mpsc::Sender| async move { + if let Some(state) = State::new(&mut output).await { + state.listen(&mut output).await; + } - futures::future::pending::<()>().await; - }), - ) + futures::future::pending::<()>().await; + }, + ) + }) } impl State { @@ -57,10 +59,10 @@ impl State { }; let (tx, rx) = tokio::sync::mpsc::unbounded_channel(); let mut enabled = false; - if let Ok(proxy) = StatusProxy::new(&conn).await { - if let Ok(status) = proxy.screen_reader_enabled().await { - enabled = status; - } + if let Ok(proxy) = StatusProxy::new(&conn).await + && let Ok(status) = proxy.screen_reader_enabled().await + { + enabled = status; } _ = output.send(Response::Init(enabled, tx)).await; Some(State { diff --git a/subscriptions/airplane-mode/Cargo.toml b/subscriptions/airplane-mode/Cargo.toml index 324de7e..403f6fe 100644 --- a/subscriptions/airplane-mode/Cargo.toml +++ b/subscriptions/airplane-mode/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "cosmic-settings-airplane-mode-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true publish = true [dependencies] -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } log = "0.4.29" rustix = "1.1.3" diff --git a/subscriptions/airplane-mode/src/lib.rs b/subscriptions/airplane-mode/src/lib.rs index 8a18ee1..1e326e7 100644 --- a/subscriptions/airplane-mode/src/lib.rs +++ b/subscriptions/airplane-mode/src/lib.rs @@ -6,8 +6,9 @@ use iced_futures::Subscription; use std::collections::HashMap; pub fn subscription() -> iced_futures::Subscription { - Subscription::run_with_id( - "airplane-mode", + struct MyId; + + Subscription::run_with(std::any::TypeId::of::(), |_| { async { match rfkill::rfkill_updates() { Ok(updates) => updates.filter_map(|state| async { @@ -25,8 +26,8 @@ pub fn subscription() -> iced_futures::Subscription { } } } - .flatten_stream(), - ) + .flatten_stream() + }) } // Test that: diff --git a/subscriptions/bluetooth/Cargo.toml b/subscriptions/bluetooth/Cargo.toml index b1af60f..0fb5a0d 100644 --- a/subscriptions/bluetooth/Cargo.toml +++ b/subscriptions/bluetooth/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-bluetooth-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true @@ -8,8 +8,8 @@ publish = true [dependencies] bluez-zbus = { git = "https://github.com/pop-os/dbus-settings-bindings" } -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } tokio = "1.49.0" tracing = "0.1.44" -zbus = "5.12.0" +zbus = "5.13.2" diff --git a/subscriptions/bluetooth/src/device.rs b/subscriptions/bluetooth/src/device.rs index 8f9f9eb..aec4a72 100644 --- a/subscriptions/bluetooth/src/device.rs +++ b/subscriptions/bluetooth/src/device.rs @@ -61,7 +61,7 @@ impl Device { let alias = alias.ok(); let device_type: String = proxy.icon().await; let paired = proxy.device.paired().await.unwrap_or(false); - let enabled = if proxy.device.connected().await.unwrap_or(false) && paired { + let enabled = if proxy.device.connected().await.unwrap_or(false) { Active::Enabled } else { Active::Disabled @@ -111,7 +111,6 @@ impl Device { } } DeviceUpdate::Paired(paired) => { - self.enabled = Active::Enabling; self.paired = paired; } DeviceUpdate::Icon(icon) => self.icon = icon, @@ -241,6 +240,9 @@ pub async fn connect_device(connection: zbus::Connection, device_path: OwnedObje let result = async { if proxy.device.connected().await? { Ok(()) + } else if !proxy.device.paired().await.unwrap_or(false) { + proxy.device.pair().await?; + proxy.device.connect().await } else { proxy.device.connect().await } diff --git a/subscriptions/network-manager/Cargo.toml b/subscriptions/network-manager/Cargo.toml index 77475bf..e40a2a8 100644 --- a/subscriptions/network-manager/Cargo.toml +++ b/subscriptions/network-manager/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-network-manager-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true @@ -10,12 +10,12 @@ publish = true cosmic-dbus-networkmanager = { git = "https://github.com/pop-os/dbus-settings-bindings" } secret-service = { version = "5.1.0", features = ["rt-tokio-crypto-rust"] } nm-secret-agent-manager = { git = "https://github.com/pop-os/dbus-settings-bindings" } -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } itertools = "0.14.0" secure-string = "0.3.0" -thiserror = "2.0.17" +thiserror = "2.0.18" tokio = "1.49.0" tracing = "0.1.44" -zbus = { version = "5.12.0", features = ["tokio"] } -bitflags = "2.10.0" +zbus = { version = "5.13.2", features = ["tokio"] } +bitflags = "2.11.0" diff --git a/subscriptions/network-manager/src/active_conns.rs b/subscriptions/network-manager/src/active_conns.rs index 291dca5..e902b2a 100644 --- a/subscriptions/network-manager/src/active_conns.rs +++ b/subscriptions/network-manager/src/active_conns.rs @@ -1,6 +1,8 @@ // Copyright 2024 System76 // SPDX-License-Identifier: MPL-2.0 +use crate::Wrapper; + use super::Event; use cosmic_dbus_networkmanager::nm::NetworkManager; use futures::{SinkExt, StreamExt}; @@ -18,13 +20,13 @@ pub fn active_conns_subscription id: I, conn: Connection, ) -> iced_futures::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(Wrapper { id, conn: conn }, |Wrapper { id: _id, conn }| { + let conn = conn.clone(); stream::channel(50, move |output| async move { watch(conn, output).await; futures::future::pending().await - }), - ) + }) + }) } pub async fn watch(conn: zbus::Connection, mut output: futures::channel::mpsc::Sender) { diff --git a/subscriptions/network-manager/src/available_wifi.rs b/subscriptions/network-manager/src/available_wifi.rs index 409580c..f467092 100644 --- a/subscriptions/network-manager/src/available_wifi.rs +++ b/subscriptions/network-manager/src/available_wifi.rs @@ -21,11 +21,11 @@ pub async fn handle_wireless_device( let mut scan_changed = device.receive_last_scan_changed().await; - if let Some(t) = scan_changed.next().await { - if let Ok(-1) = t.get().await { - tracing::error!("wireless device scan errored"); - return Ok(Default::default()); - } + if let Some(t) = scan_changed.next().await + && let Ok(-1) = t.get().await + { + tracing::error!("wireless device scan errored"); + return Ok(Default::default()); } let access_points = device.get_access_points().await?; @@ -45,10 +45,10 @@ pub async fn handle_wireless_device( if let Some((ssid, strength)) = ssid_res.ok().zip(strength_res.ok()) { let ssid = String::from_utf8_lossy(&ssid.clone()).into_owned(); - if let Some(access_point) = aps.get(&ssid) { - if access_point.strength > strength { - continue; - } + if let Some(access_point) = aps.get(&ssid) + && access_point.strength > strength + { + continue; } let Ok(flags) = ap.rsn_flags().await else { @@ -56,9 +56,10 @@ pub async fn handle_wireless_device( }; let network_type = if flags.intersects(ApSecurityFlags::KEY_MGMT_802_1X) { NetworkType::EAP - } else if flags.intersects(ApSecurityFlags::KEY_MGMTPSK) { - NetworkType::PSK - } else if flags.is_empty() { + } else if flags.intersects(ApSecurityFlags::KEY_MGMTPSK | ApSecurityFlags::KEY_MGMT_SAE) + { + NetworkType::PskOrSae + } else if flags.intersects(ApSecurityFlags::KEY_MGMT_OWE) || flags.is_empty() { NetworkType::Open } else { continue; @@ -111,6 +112,6 @@ pub struct AccessPoint { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum NetworkType { Open, - PSK, + PskOrSae, EAP, } diff --git a/subscriptions/network-manager/src/devices.rs b/subscriptions/network-manager/src/devices.rs index d111f2d..235b0b5 100644 --- a/subscriptions/network-manager/src/devices.rs +++ b/subscriptions/network-manager/src/devices.rs @@ -6,6 +6,7 @@ pub use cosmic_dbus_networkmanager::interface::enums::{ ActiveConnectionState, DeviceState, DeviceType, }; +use core::hash; use cosmic_dbus_networkmanager::nm::NetworkManager; use futures::{SinkExt, StreamExt}; use iced_futures::{self, Subscription, stream}; @@ -166,12 +167,35 @@ pub fn subscription( has_popup: bool, conn: Connection, ) -> iced_futures::Subscription { - Subscription::run_with_id( - (id, has_popup), - stream::channel(50, move |output| async move { - watch(conn, has_popup, output).await; - futures::future::pending().await - }), + struct Wrapper { + id: I, + has_popup: bool, + conn: Connection, + } + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.id.hash(state); + self.has_popup.hash(state); + } + } + Subscription::run_with( + Wrapper { + id, + has_popup, + conn, + }, + |Wrapper { + id, + has_popup, + conn, + }| { + let conn = conn.clone(); + let has_popup = *has_popup; + stream::channel(50, move |output| async move { + watch(conn, has_popup, output).await; + futures::future::pending().await + }) + }, ) } diff --git a/subscriptions/network-manager/src/hw_address.rs b/subscriptions/network-manager/src/hw_address.rs index 9803780..db29158 100644 --- a/subscriptions/network-manager/src/hw_address.rs +++ b/subscriptions/network-manager/src/hw_address.rs @@ -18,8 +18,8 @@ impl HwAddress { .ok() .map(|address| HwAddress { address }) } - pub fn from_string(arg: &String) -> Option { - HwAddress::from_str(arg.as_str()) + pub fn from_string(arg: &str) -> Option { + HwAddress::from_str(arg) } } diff --git a/subscriptions/network-manager/src/lib.rs b/subscriptions/network-manager/src/lib.rs index 21fb8c9..631eda9 100644 --- a/subscriptions/network-manager/src/lib.rs +++ b/subscriptions/network-manager/src/lib.rs @@ -9,14 +9,13 @@ pub mod hw_address; pub mod nm_secret_agent; pub mod wireless_enabled; -use std::{collections::HashMap, fmt::Debug, sync::Arc, time::Duration}; +use std::{collections::HashMap, fmt::Debug, hash::Hash, sync::Arc, time::Duration}; use available_wifi::NetworkType; pub use cosmic_dbus_networkmanager as dbus; pub use dbus::settings::connection::Settings; use cosmic_dbus_networkmanager::{ - active_connection::ActiveConnection, device::SpecificDevice, interface::{ enums::{self, ActiveConnectionState, DeviceType, NmConnectivityState}, @@ -29,7 +28,6 @@ use futures::{ FutureExt, SinkExt, StreamExt, channel::mpsc::{UnboundedReceiver, UnboundedSender, unbounded}, }; -use hw_address::HwAddress; use iced_futures::{Subscription, stream}; use secure_string::SecureString; use tokio::process::Command; @@ -43,10 +41,19 @@ use self::{ pub type SSID = Arc; pub type UUID = Arc; +pub(crate) struct Wrapper { + id: I, + conn: zbus::Connection, +} + +impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.id.hash(state); + } +} + #[derive(thiserror::Error, Debug)] pub enum Error { - #[error("access point not found")] - AccessPointNotFound, #[error("failed to list bluetooth devices with rfkill")] BluetoothRfkillList(std::io::Error), #[error("failed to activate connection")] @@ -125,13 +132,25 @@ pub fn subscription( id: I, conn: zbus::Connection, ) -> iced_futures::Subscription { - Subscription::run_with_id( - id, - stream::channel(50, |output| async move { - watch(conn, output).await; - futures::future::pending().await - }), - ) + struct Wrapper { + id: I, + conn: zbus::Connection, + } + impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.id.hash(state); + } + } + Subscription::run_with(Wrapper { id, conn }, |Wrapper { id, conn }| { + let conn = conn.clone(); + stream::channel( + 50, + |output: futures::channel::mpsc::Sender| async move { + watch(conn, output).await; + futures::future::pending().await + }, + ) + }) } pub async fn watch(conn: zbus::Connection, mut output: futures::channel::mpsc::Sender) { @@ -188,12 +207,11 @@ async fn start_listening( let mut changed = c.receive_state_changed().await; _ = tokio::time::timeout(Duration::from_secs(5), async move { loop { - if let Some(next) = changed.next().await { - if let Ok(ActiveConnectionState::Deactivated) = + if let Some(next) = changed.next().await + && let Ok(ActiveConnectionState::Deactivated) = next.get().await.map(ActiveConnectionState::from) - { - break; - } + { + break; } } }) @@ -225,12 +243,11 @@ async fn start_listening( let mut changed = c.receive_state_changed().await; _ = tokio::time::timeout(Duration::from_secs(5), async move { loop { - if let Some(next) = changed.next().await { - if let Ok(ActiveConnectionState::Deactivated) = + if let Some(next) = changed.next().await + && let Ok(ActiveConnectionState::Deactivated) = next.get().await.map(ActiveConnectionState::from) - { - break; - } + { + break; } } }) @@ -299,8 +316,8 @@ async fn start_listening( ssid, identity, password, - hw_address, secret_tx, + interface, }) => { let nm_state = NetworkManagerState::new(&conn).await.unwrap_or_default(); @@ -310,13 +327,13 @@ async fn start_listening( &ssid, identity.as_deref(), Some(password.unsecure()), - hw_address, secret_tx.clone(), if identity.is_some() { NetworkType::EAP } else { - NetworkType::PSK + NetworkType::PskOrSae }, + interface.clone(), ) .await .is_ok(); @@ -327,8 +344,8 @@ async fn start_listening( ssid: ssid.clone(), identity: identity.clone(), password: password.clone(), - hw_address, secret_tx: secret_tx.clone(), + interface, }, success, state: NetworkManagerState::new(&conn).await.unwrap_or_default(), @@ -336,17 +353,10 @@ async fn start_listening( .await; } - Some(Request::SelectAccessPoint(ssid, hw_address, network_type, secret_tx)) => { + Some(Request::SelectAccessPoint(ssid, network_type, secret_tx, interface)) => { if matches!(network_type, NetworkType::Open) { - attempt_wifi_connection( - &conn, - ssid, - hw_address, - network_type, - output, - None, - ) - .await; + attempt_wifi_connection(&conn, ssid, network_type, output, None, interface) + .await; } else { // For secured networks, check if we have saved credentials let has_saved = has_saved_wifi_credentials(&conn, &ssid).await; @@ -359,10 +369,10 @@ async fn start_listening( attempt_wifi_connection( &conn, ssid, - hw_address, network_type, output, secret_tx, + interface, ) .await; } @@ -500,12 +510,12 @@ async fn start_listening( } t => { let (tx, rx) = tokio::sync::oneshot::channel(); - let setting_name = if matches!(t, NetworkType::PSK) { + let setting_name = if matches!(t, NetworkType::PskOrSae) { "802-11-wireless-security" } else { "802-1x" }; - let pw_key = if matches!(t, NetworkType::PSK) { + let pw_key = if matches!(t, NetworkType::PskOrSae) { "psk" } else { "password" @@ -538,7 +548,8 @@ async fn start_listening( }) .await; } - }); + }) + .await; } else { let known_conns = s.list_connections().await.unwrap_or_default(); for c in known_conns { @@ -550,42 +561,41 @@ async fn start_listening( .clone() .and_then(|w| w.ssid) .and_then(|s| String::from_utf8(s).ok()) + && saved_ssid == ssid.as_ref() { - if saved_ssid == ssid.as_ref() { - let password = - c.get_secrets("802-11-wireless-security") - .await - .ok() - .and_then(|secrets| { - // Look for PSK password - secrets - .get("802-11-wireless-security") - .and_then(|sec| sec.get("psk")) - .and_then(|v| { - v.downcast_ref::().ok() - }) - .map(|s| s.to_string()) - .or_else(|| { - // Fallback to WEP key + let password = c + .get_secrets("802-11-wireless-security") + .await + .ok() + .and_then(|secrets| { + // Look for PSK password secrets .get("802-11-wireless-security") + .and_then(|sec| sec.get("psk")) + .and_then(|v| { + v.downcast_ref::().ok() + }) + .map(|s| s.to_string()) + .or_else(|| { + // Fallback to WEP key + secrets + .get("802-11-wireless-security") .and_then(|sec| sec.get("wep-key0")) .and_then(|v| { v.downcast_ref::().ok() }) .map(|s| s.to_string()) - }) - }); + }) + }); - _ = output - .send(Event::WiFiCredentials { - ssid: ssid.clone(), - password: password.map(SecureString::from), - security_type, - }) - .await; - break; - } + _ = output + .send(Event::WiFiCredentials { + ssid: ssid.clone(), + password: password.map(SecureString::from), + security_type, + }) + .await; + break; } } } @@ -626,10 +636,9 @@ async fn has_saved_wifi_credentials(conn: &zbus::Connection, ssid: &str) -> bool .wifi .and_then(|w| w.ssid) .and_then(|ssid| String::from_utf8(ssid).ok()) + && saved_ssid == ssid { - if saved_ssid == ssid { - return true; - } + return true; } } } @@ -640,10 +649,10 @@ async fn has_saved_wifi_credentials(conn: &zbus::Connection, ssid: &str) -> bool async fn attempt_wifi_connection( conn: &zbus::Connection, ssid: SSID, - hw_address: HwAddress, network_type: NetworkType, output: &mut futures::channel::mpsc::Sender, secret_tx: Option>, + interface: Option, ) { let state = NetworkManagerState::new(conn).await.unwrap_or_default(); let success = if let Err(err) = state @@ -652,9 +661,9 @@ async fn attempt_wifi_connection( ssid.as_ref(), None, None, - hw_address, secret_tx, network_type, + interface.clone(), ) .await { @@ -666,7 +675,7 @@ async fn attempt_wifi_connection( _ = request_response( conn, - Request::SelectAccessPoint(ssid, hw_address, network_type, None), + Request::SelectAccessPoint(ssid, network_type, None, interface), success, ) .then(|event| output.send(event)) @@ -688,8 +697,8 @@ pub enum Request { ssid: String, identity: Option, password: SecureString, - hw_address: HwAddress, secret_tx: Option>, + interface: Option, }, /// Get WiFi credentials for a known access point. GetWiFiCredentials( @@ -705,9 +714,9 @@ pub enum Request { /// Connect to a known access point. SelectAccessPoint( SSID, - HwAddress, NetworkType, Option>, + Option, ), /// Toggle airplaine mode. SetAirplaneMode(bool), @@ -907,9 +916,9 @@ impl NetworkManagerState { ssid: &str, identity: Option<&str>, password: Option<&str>, - hw_address: HwAddress, mut secret_tx: Option>, network_type: NetworkType, + interface: Option, ) -> Result<(), Error> { secret_tx = secret_tx.filter(|tx| !tx.is_closed()); let nm = NetworkManager::new(conn).await?; @@ -925,14 +934,6 @@ impl NetworkManagerState { } } - let Some(ap) = self - .wireless_access_points - .iter() - .find(|ap| ap.ssid.as_ref() == ssid && ap.hw_address == hw_address) - else { - return Err(Error::AccessPointNotFound); - }; - let mut conn_settings: HashMap<&str, HashMap<&str, zvariant::Value>> = HashMap::from([ ( "802-11-wireless", @@ -984,7 +985,8 @@ impl NetworkManagerState { if !matches!( device.device_type().await.unwrap_or(DeviceType::Other), DeviceType::Wifi - ) { + ) || (interface.is_some() && interface != device.interface().await.ok()) + { continue; } @@ -1000,17 +1002,16 @@ impl NetworkManagerState { .clone() .and_then(|w| w.ssid) .and_then(|ssid| String::from_utf8(ssid).ok()) + && cur_ssid == ssid { - if cur_ssid == ssid { - known_conn = Some(c); - break; - } + known_conn = Some(c); + break; } } let known_conn = if let Some(known_conn) = known_conn { - if secret_tx.is_none() || identity.is_some() { - known_conn.update(conn_settings).await?; + if (secret_tx.is_none() && password.is_some()) || identity.is_some() { + known_conn.update(conn_settings).await.unwrap(); } known_conn } else { @@ -1031,9 +1032,9 @@ impl NetworkManagerState { .ok_or_else(|| Error::MissingField("uuid"))? .clone(), ) - .map_err(|err| zbus::Error::Variant(err))?; + .map_err(zbus::Error::Variant)?; - if let Some((pass, secret_tx)) = password.clone().zip(secret_tx.as_ref()) { + if let Some((pass, secret_tx)) = password.zip(secret_tx.as_ref()) { let pass = SecureString::from(pass); let (applied_tx, applied_rx) = tokio::sync::oneshot::channel(); @@ -1073,7 +1074,7 @@ impl NetworkManagerState { .ok_or_else(|| Error::MissingField("uuid"))? .clone(), ) - .map_err(|err| zbus::Error::Variant(err))?; + .map_err(zbus::Error::Variant)?; let (applied_tx, applied_rx) = tokio::sync::oneshot::channel(); let setting_name: String = if identity.is_some() { "802-1x".into() @@ -1098,8 +1099,7 @@ impl NetworkManagerState { } } - let active_conn = - ActiveConnection::from(nm.activate_connection(&known_conn, &device).await?); + let active_conn = nm.activate_connection(&known_conn, &device).await?; let mut changes = active_conn.receive_state_changed().await; _ = tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; let mut count = 5; @@ -1137,7 +1137,7 @@ impl NetworkManagerState { .ok_or_else(|| Error::MissingField("uuid"))? .clone(), ) - .map_err(|err| zbus::Error::Variant(err))?; + .map_err(zbus::Error::Variant)?; let (applied_tx, applied_rx) = tokio::sync::oneshot::channel(); let setting_name: String = if identity.is_some() { "802-1x".into() diff --git a/subscriptions/network-manager/src/nm_secret_agent.rs b/subscriptions/network-manager/src/nm_secret_agent.rs index 4a39ab0..fa697c9 100644 --- a/subscriptions/network-manager/src/nm_secret_agent.rs +++ b/subscriptions/network-manager/src/nm_secret_agent.rs @@ -16,7 +16,7 @@ use zbus::{ pub type SecretSender = Arc>>>; -pub const SECRET_ID: &'static str = "com.system76.CosmicSettings.NetworkManager"; +pub const SECRET_ID: &str = "com.system76.CosmicSettings.NetworkManager"; pub const DBUS_PATH: &str = "/org/freedesktop/NetworkManager/SecretAgent"; bitflags! { @@ -135,11 +135,15 @@ pub fn secret_agent_stream( identifier: impl AsRef, rx: tokio::sync::mpsc::Receiver, ) -> impl Stream { - iced_futures::stream::channel(4, move |mut msg_tx| async move { - if let Err(e) = secret_agent_stream_impl(identifier.as_ref(), msg_tx.clone(), rx).await { - let _ = msg_tx.send(Event::Failed(e)).await; - } - }) + iced_futures::stream::channel( + 4, + move |mut msg_tx: futures::channel::mpsc::Sender| async move { + if let Err(e) = secret_agent_stream_impl(identifier.as_ref(), msg_tx.clone(), rx).await + { + let _ = msg_tx.send(Event::Failed(e)).await; + } + }, + ) } async fn secret_agent_stream_impl( @@ -147,6 +151,16 @@ async fn secret_agent_stream_impl( msg_tx: futures::channel::mpsc::Sender, mut rx: tokio::sync::mpsc::Receiver, ) -> Result<(), Error> { + // fail early if we can't connect, closing the channel + { + let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) + .await + .map_err(Arc::new)?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; + if collection.is_locked().await.map_err(Arc::new)? { + collection.unlock().await.map_err(Arc::new)?; + } + } // register the secret agent with NetworkManager let proxy = nm_secret_agent_manager::AgentManagerProxy::builder(&zbus::Connection::system().await?) @@ -173,8 +187,8 @@ async fn secret_agent_stream_impl( } => { let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) .await - .map_err(|e| Arc::new(e))?; - let collection = ss.get_default_collection().await.map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; if secrets.is_empty() { let mut attributes = std::collections::HashMap::new(); @@ -183,10 +197,10 @@ async fn secret_agent_stream_impl( let search_items = collection .search_items(attributes) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; for item in &search_items { - item.delete().await.map_err(|e| Arc::new(e))?; + item.delete().await.map_err(Arc::new)?; } let _ = applied_tx.send(()); @@ -208,7 +222,7 @@ async fn secret_agent_stream_impl( "text/plain", ) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; } let _ = applied_tx.send(()); } @@ -219,8 +233,8 @@ async fn secret_agent_stream_impl( } => { let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) .await - .map_err(|e| Arc::new(e))?; - let collection = ss.get_default_collection().await.map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; let mut attributes = std::collections::HashMap::new(); attributes.insert("application", SECRET_ID); @@ -230,19 +244,19 @@ async fn secret_agent_stream_impl( let search_items = collection .search_items(attributes) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; let mut secrets = HashMap::new(); for item in &search_items { let name = item .get_attributes() .await - .map_err(|e| Arc::new(e))? + .map_err(Arc::new)? .get("name") .cloned() .unwrap_or_else(|| "unknown".to_string()); - let secret = item.get_secret().await.map_err(|e| Arc::new(e))?; - let secret: String = String::from_utf8(secret)?.into(); + let secret = item.get_secret().await.map_err(Arc::new)?; + let secret: String = String::from_utf8(secret)?; secrets.insert(name, SecureString::from(secret)); } let _ = resp_tx.send(secrets); @@ -372,7 +386,7 @@ impl SettingsSecretAgent { let conn = ConnectionSettingsProxy::builder( &zbus::Connection::system() .await - .or_else(|_| Err(fdo::Error::Failed("failed to get uuid".to_string())))?, + .map_err(|_| fdo::Error::Failed("failed to get uuid".to_string()))?, ) .path(connection_path)? .build() @@ -427,13 +441,9 @@ impl SettingsSecretAgent { hints: Vec, flags: u32, ) -> HashMap> { - match self - .get_secrets_inner(connection, connection_path, setting_name, hints, flags) + self.get_secrets_inner(connection, connection_path, setting_name, hints, flags) .await - { - Ok(result) => result, - Err(_) => HashMap::new(), - } + .unwrap_or_default() } /// SaveSecrets method @@ -462,9 +472,9 @@ impl SettingsSecretAgent { let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; - let collection = ss.get_default_collection().await.map_err(|e| Arc::new(e))?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; let conn_uuid = connection .get("connection") @@ -474,10 +484,8 @@ impl SettingsSecretAgent { .to_string(); let conn = - ConnectionSettingsProxy::builder(&zbus::Connection::system().await.or_else(|_| { - Err(Error::Zbus( - fdo::Error::Failed("failed to get uuid".to_string()).into(), - )) + ConnectionSettingsProxy::builder(&zbus::Connection::system().await.map_err(|_| { + Error::Zbus(fdo::Error::Failed("failed to get uuid".to_string()).into()) })?) .path(connection_path)? .build() @@ -488,7 +496,7 @@ impl SettingsSecretAgent { .get("connection") .and_then(|m| m.get("type")) .and_then(|v| v.downcast_ref::().ok()) - .map_or(false, |t| t == "vpn"); + .is_some_and(|t| t == "vpn"); let is_always_ask = is_connection_always_ask(&settings); let mut setting_attributes = std::collections::HashMap::new(); @@ -499,7 +507,7 @@ impl SettingsSecretAgent { let search_items = collection .search_items(setting_attributes.clone()) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; let mut result = HashMap::new(); let mut setting = HashMap::new(); @@ -508,16 +516,16 @@ impl SettingsSecretAgent { let name = item .get_attributes() .await - .map_err(|e| Arc::new(e))? + .map_err(Arc::new)? .get("name") .cloned() .unwrap_or_else(|| "unknown".to_string()); - let secret = item.get_secret().await.map_err(|e| Arc::new(e))?; - let secret: String = String::from_utf8(secret)?.into(); + let secret = item.get_secret().await.map_err(Arc::new)?; + let secret: String = String::from_utf8(secret)?; setting.insert(name, zbus::zvariant::OwnedValue::from(Str::from(secret))); } result.insert(setting_name, setting); - return Ok(result); + Ok(result) } else { let hints = parse_hints(hints); let mut requested = HashSet::new(); @@ -553,49 +561,47 @@ impl SettingsSecretAgent { && e.is_disconnected() { continue; - } else { - if let Ok(secret) = resp_rx.await { - let mut named_attribute = setting_attributes.clone(); - named_attribute.insert("name", key); - let _item = collection - .create_item( - "NetworkManager Secret", - named_attribute, - secret.unsecure().as_bytes(), - true, - "text/plain", - ) - .await - .map_err(|e| Arc::new(e))?; + } else if let Ok(secret) = resp_rx.await { + let mut named_attribute = setting_attributes.clone(); + named_attribute.insert("name", key); + let _item = collection + .create_item( + "NetworkManager Secret", + named_attribute, + secret.unsecure().as_bytes(), + true, + "text/plain", + ) + .await + .map_err(Arc::new)?; - setting.insert( - key.clone(), - zbus::zvariant::OwnedValue::from(Str::from(secret.unsecure())), - ); - } + setting.insert( + key.clone(), + zbus::zvariant::OwnedValue::from(Str::from(secret.unsecure())), + ); } } else if !is_always_ask { let mut pos = None; let mut pos_with_message = None; for item in &search_items { - let attributes = item.get_attributes().await.map_err(|e| Arc::new(e))?; - if let Some(value) = attributes.get("name") { - if value == key { - if let Some(saved_message) = attributes.get("message") { - if message.as_ref().is_some_and(|msg| msg == saved_message) { - pos_with_message = Some(item); - } - break; - } else { - pos = Some(item); + let attributes = item.get_attributes().await.map_err(Arc::new)?; + if let Some(value) = attributes.get("name") + && value == key + { + if let Some(saved_message) = attributes.get("message") { + if message.as_ref().is_some_and(|msg| msg == saved_message) { + pos_with_message = Some(item); } + break; + } else { + pos = Some(item); } } } if let Some(item) = pos_with_message.or(pos) { - let secret = item.get_secret().await.map_err(|e| Arc::new(e))?; - let secret: String = String::from_utf8(secret)?.into(); + let secret = item.get_secret().await.map_err(Arc::new)?; + let secret: String = String::from_utf8(secret)?; if is_vpn { // ask anyway, but offer the previous one as a hint let (resp_tx, resp_rx) = oneshot::channel(); @@ -618,28 +624,24 @@ impl SettingsSecretAgent { && e.is_disconnected() { continue; - } else { - if let Ok(secret) = resp_rx.await { - let mut named_attribute = setting_attributes.clone(); - named_attribute.insert("name", key); - let _item = collection - .create_item( - "NetworkManager Secret", - named_attribute, - secret.unsecure().as_bytes(), - true, - "text/plain", - ) - .await - .map_err(|e| Arc::new(e))?; + } else if let Ok(secret) = resp_rx.await { + let mut named_attribute = setting_attributes.clone(); + named_attribute.insert("name", key); + let _item = collection + .create_item( + "NetworkManager Secret", + named_attribute, + secret.unsecure().as_bytes(), + true, + "text/plain", + ) + .await + .map_err(Arc::new)?; - setting.insert( - key.clone(), - zbus::zvariant::OwnedValue::from(Str::from( - secret.unsecure(), - )), - ); - } + setting.insert( + key.clone(), + zbus::zvariant::OwnedValue::from(Str::from(secret.unsecure())), + ); } } else { setting.insert( @@ -654,7 +656,7 @@ impl SettingsSecretAgent { } } result.insert(setting_name, setting); - return Ok(result); + Ok(result) } } @@ -665,8 +667,8 @@ impl SettingsSecretAgent { ) -> Result<(), Error> { let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) .await - .map_err(|e| Arc::new(e))?; - let collection = ss.get_default_collection().await.map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; let conn_uuid = connection .get("connection") @@ -682,10 +684,10 @@ impl SettingsSecretAgent { let search_items = collection .search_items(attributes) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; for item in &search_items { - item.delete().await.map_err(|e| Arc::new(e))?; + item.delete().await.map_err(Arc::new)?; } Ok(()) } @@ -696,8 +698,8 @@ impl SettingsSecretAgent { ) -> Result<(), Error> { let ss = secret_service::SecretService::connect(secret_service::EncryptionType::Dh) .await - .map_err(|e| Arc::new(e))?; - let collection = ss.get_default_collection().await.map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; + let collection = ss.get_default_collection().await.map_err(Arc::new)?; let conn_uuid = connection .get("connection") .and_then(|m| m.get("uuid")) @@ -731,7 +733,7 @@ impl SettingsSecretAgent { "text/plain", ) .await - .map_err(|e| Arc::new(e))?; + .map_err(Arc::new)?; Ok(()) } else { Err(Error::NoPasswordForIdentifier("unknown".to_string())) diff --git a/subscriptions/network-manager/src/wireless_enabled.rs b/subscriptions/network-manager/src/wireless_enabled.rs index d028093..5ad940d 100644 --- a/subscriptions/network-manager/src/wireless_enabled.rs +++ b/subscriptions/network-manager/src/wireless_enabled.rs @@ -1,6 +1,8 @@ // Copyright 2024 System76 // SPDX-License-Identifier: MPL-2.0 +use crate::Wrapper; + use super::Event; use cosmic_dbus_networkmanager::nm::NetworkManager; use futures::{SinkExt, StreamExt}; @@ -18,13 +20,13 @@ pub fn wireless_enabled_subscription iced_futures::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(Wrapper { id, conn: conn }, |Wrapper { id: _id, conn }| { + let conn = conn.clone(); stream::channel(50, move |output| async move { watch(conn, output).await; futures::future::pending().await - }), - ) + }) + }) } pub async fn watch(conn: zbus::Connection, mut output: futures::channel::mpsc::Sender) { diff --git a/subscriptions/pulse/Cargo.toml b/subscriptions/pulse/Cargo.toml new file mode 100644 index 0000000..cc4760b --- /dev/null +++ b/subscriptions/pulse/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "cosmic-settings-pulse-subscription" +version = "0.1.0" +edition = "2024" +rust-version.workspace = true + +[dependencies] +libpulse-binding = { version = "2.30.1" } +rustix = { version = "1.1.3", features = ["pipe"] } +iced_futures = { git = "https://github.com/pop-os/libcosmic" } +futures = "0.3.32" +log = "0.4.27" diff --git a/subscriptions/pulse/src/lib.rs b/subscriptions/pulse/src/lib.rs new file mode 100644 index 0000000..4220765 --- /dev/null +++ b/subscriptions/pulse/src/lib.rs @@ -0,0 +1,751 @@ +// Copyright 2024 System76 +// SPDX-License-Identifier: MPL-2.0 + +// Make sure not to fail if pulse not found, and reconnect? +// change to device shouldn't send osd? + +use futures::{SinkExt, executor::block_on}; +use iced_futures::{Subscription, stream}; +use libpulse_binding::{ + callbacks::ListResult, + channelmap::Map, + context::{ + Context, FlagSet, State, + introspect::{CardInfo, CardProfileInfo, Introspector, ServerInfo, SinkInfo, SourceInfo}, + subscribe::{Facility, InterestMaskSet, Operation}, + }, + def::{PortAvailable, Retval}, + mainloop::{ + api::MainloopApi, + events::io::IoEventInternal, + standard::{IterateResult, Mainloop}, + }, + volume::{ChannelVolumes, Volume}, +}; +use std::{ + borrow::Cow, + cell::{Cell, RefCell}, + convert::Infallible, + io::{Read, Write}, + os::{ + fd::{FromRawFd, IntoRawFd, RawFd}, + raw::c_void, + }, + rc::Rc, + str::FromStr, + sync::mpsc, +}; + +pub fn subscription() -> iced_futures::Subscription { + Subscription::run_with("pulse", |_| { + stream::channel(20, |sender| async { + std::thread::spawn(move || thread(sender)); + futures::future::pending().await + }) + }) +} + +pub fn thread(sender: futures::channel::mpsc::Sender) { + let Some(mut main_loop) = Mainloop::new() else { + log::error!("Failed to create PA main loop"); + return; + }; + + let Some(mut context) = Context::new(&main_loop, "cosmic-osd") else { + log::error!("Failed to create PA context"); + return; + }; + + let data = Rc::new(Data { + main_loop: RefCell::new(Mainloop { + _inner: Rc::clone(&main_loop._inner), + }), + introspector: context.introspect(), + sink_volume: Cell::new(None), + sink_mute: Cell::new(None), + source_volume: Cell::new(None), + source_mute: Cell::new(None), + default_sink_name: RefCell::new(None), + default_source_name: RefCell::new(None), + sender: RefCell::new(sender.clone()), + }); + + let data_clone = data.clone(); + context.set_subscribe_callback(Some(Box::new(move |facility, operation, index| { + data_clone.subscribe_cb(facility.unwrap(), operation, index); + }))); + + let _ = context.connect(None, FlagSet::NOFAIL, None); + + loop { + if sender.is_closed() { + return; + } + + match main_loop.iterate(false) { + IterateResult::Success(_) => {} + IterateResult::Err(_e) => { + return; + } + IterateResult::Quit(_e) => { + return; + } + } + + if context.get_state() == State::Ready { + break; + } + } + + // Inspect all available cards on startup + data.introspector.get_card_info_list({ + let data_weak = Rc::downgrade(&data); + move |card_info_res| { + if let Some(data) = data_weak.upgrade() { + data.card_info_cb(card_info_res) + } + } + }); + + data.get_server_info(); + context.subscribe( + InterestMaskSet::SERVER | InterestMaskSet::SINK | InterestMaskSet::SOURCE, + |_| {}, + ); + + if let Err((err, retval)) = main_loop.run() { + log::error!("PA main loop returned {:?}, error {}", retval, err); + } +} + +#[derive(Clone, Debug)] +pub enum Event { + Balance(Option), + CardInfo(Card), + DefaultSink(String), + DefaultSource(String), + SinkVolume(u32), + Channels(PulseChannels), + SinkMute(bool), + SourceVolume(u32), + SourceMute(bool), +} + +enum Request { + Volume(u32, f32), + Balance(u32, f32), + Quit, +} + +#[derive(Debug)] +pub struct PulseChannels { + tx: mpsc::Sender, + pipe_tx: std::fs::File, + index: u32, +} + +impl Clone for PulseChannels { + fn clone(&self) -> Self { + Self { + tx: self.tx.clone(), + pipe_tx: self + .pipe_tx + .try_clone() + .expect("failed to clone PulseChannels pipe writer"), + index: self.index, + } + } +} + +/// Data used by the [`handle_balance_io_new`] callback. +struct HandleBalanceData( + Context, + ChannelVolumes, + Map, + std::sync::mpsc::Receiver, +); + +/// Callback for creating an IO event source [`MainloopApi::io_new`]. +extern "C" fn handle_balance_io_new( + api: *const MainloopApi, + event: *mut IoEventInternal, + reader_fd: RawFd, + _flags: libpulse_binding::mainloop::events::io::FlagSet, + data: *mut c_void, +) { + // Take ownership of the data and borrow its contents. + let mut data = unsafe { Box::::from_raw(data as _) }; + let HandleBalanceData(ctx, volumes, map, rx) = data.as_mut(); + + // Return early if the context is not ready, and give the data back. + if ctx.get_state() != State::Ready { + let _ = Box::leak(data); + return; + } + + // If the first byte cannot be read, destroy this event source with its reader and data. + let mut buf = [0u8; 1]; + let mut reader = unsafe { std::fs::File::from_raw_fd(reader_fd) }; + if reader.read_exact(&mut buf).is_err() { + (unsafe { &*api }) + .io_free + .as_ref() + .expect("io_free function is missing")(event); + return; + } + + // Give ownership of the reader back. + _ = reader.into_raw_fd(); + + while let Ok(req) = rx.try_recv() { + match req { + Request::Volume(index, volume_scale) => { + let mut intro = ctx.introspect(); + + let new_scale = Volume((volume_scale * Volume::NORMAL.0 as f32).round() as u32); + + if let Some(v) = volumes.scale(new_scale) { + _ = intro.set_sink_volume_by_index( + index, + v, + Some(Box::new(|success| { + if !success { + log::error!("Failed to set sink balance"); + } + })), + ); + } + } + Request::Balance(index, new_balance) => { + if map.can_balance() { + if let Some(v) = volumes.set_balance(&map, new_balance) { + let mut intro = ctx.introspect(); + + _ = intro.set_sink_volume_by_index( + index, + v, + Some(Box::new(|success| { + if !success { + log::error!("Failed to set sink balance"); + } + })), + ); + } + } + } + Request::Quit => unsafe { &*api } + .quit + .as_ref() + .expect("quit function missing")(api, 0), + } + } + + let _ = Box::leak(data); +} + +impl PulseChannels { + fn new( + volumes: ChannelVolumes, + map: Map, + api: &MainloopApi, + index: u32, + ctx: Context, + ) -> PulseChannels { + let (reader, writer) = rustix::pipe::pipe_with(rustix::pipe::PipeFlags::CLOEXEC) + .expect("failed to crate pipe"); + + let (tx, rx) = mpsc::channel::(); + + // Create IO event source object for handling speaker balance. + let event_source = api.io_new.as_ref().unwrap()( + api as *const _, + reader.into_raw_fd(), + libpulse_binding::mainloop::events::io::FlagSet::INPUT, + Some(handle_balance_io_new), + Box::into_raw(Box::new(HandleBalanceData(ctx, volumes, map, rx))) as *mut c_void, + ); + + if let Some(enable) = api.io_enable.as_ref() { + enable( + event_source, + libpulse_binding::mainloop::events::io::FlagSet::INPUT, + ); + } + + Self { + tx, + pipe_tx: std::fs::File::from(writer), + index, + } + } + + /// Change the active index. + #[inline] + pub fn set_index(&mut self, index: u32) { + self.index = index; + } + + /// Set the speaker balance of the active sink. + pub fn set_balance(&mut self, balance: f32) { + if let Err(err) = self.tx.send(Request::Balance(self.index, balance)) { + log::error!("Failed to send new balance to channel"); + } else { + self.pipe_tx + .write_all(&[1]) + .expect("PulseChannels pipe write failed"); + } + } + + /// Set the volume of the active sink. + pub fn set_volume(&mut self, volume: f32) { + if let Err(err) = self.tx.send(Request::Volume(self.index, volume)) { + log::error!("Failed to send new volume to channel"); + } else { + self.pipe_tx + .write_all(&[1]) + .expect("PulseChannels pipe write failed"); + } + } + + /// Request the pulse thread to quit. + pub fn quit(mut self) { + _ = self.tx.send(Request::Quit); + _ = self.pipe_tx.write_all(&[1]); + } +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct Card { + pub object_id: u32, + pub name: String, + pub product_name: String, + pub variant: DeviceVariant, + pub ports: Vec, + pub profiles: Vec, + pub active_profile: Option, +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct CardPort { + pub name: String, + pub description: String, + pub direction: Direction, + pub port_type: PortType, + pub profile_port: u32, + pub priority: u32, + pub profiles: Vec, + pub availability: Availability, +} + +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)] +pub enum Availability { + Unknown, + No, + Yes, +} + +impl From for Availability { + fn from(pa: PortAvailable) -> Self { + match pa { + PortAvailable::Unknown => Availability::Unknown, + PortAvailable::No => Availability::No, + PortAvailable::Yes => Availability::Yes, + } + } +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct CardProfile { + pub name: String, + pub description: String, + pub available: bool, + pub n_sinks: u32, + pub n_sources: u32, + pub priority: u32, +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub enum DeviceVariant { + Alsa { alsa_card: u32 }, + Bluez5 { address: String }, +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub enum Direction { + Input, + Output, + Both, +} + +#[derive(Default, Clone, Debug, Hash, Eq, PartialEq)] +pub enum PortType { + Mic, + Speaker, + Headphones, + Headset, + Digital, + #[default] + Unknown, +} + +impl FromStr for PortType { + type Err = Infallible; + + fn from_str(s: &str) -> Result { + match s { + "mic" => Ok(PortType::Mic), + "speaker" => Ok(PortType::Speaker), + "headphones" => Ok(PortType::Headphones), + "headset" => Ok(PortType::Headset), + "digital" => Ok(PortType::Digital), + _ => Ok(PortType::Unknown), + } + } +} + +struct Data { + main_loop: RefCell, + default_sink_name: RefCell>, + default_source_name: RefCell>, + sink_volume: Cell>, + sink_mute: Cell>, + source_volume: Cell>, + source_mute: Cell>, + introspector: Introspector, + sender: RefCell>, +} + +impl Data { + fn card_info_cb(self: &Rc, card_info: ListResult<&CardInfo>) { + if let ListResult::Item(card_info) = card_info { + let Some(object_id) = card_info + .proplist + .get_str("object.id") + .and_then(|v| v.parse::().ok()) + else { + return; + }; + + let variant = if let Some(alsa_card) = card_info + .proplist + .get_str("alsa.card") + .and_then(|v| v.parse::().ok()) + { + DeviceVariant::Alsa { alsa_card } + } else if let Some(address) = card_info.proplist.get_str("api.bluez5.address") { + DeviceVariant::Bluez5 { address } + } else { + return; + }; + + let card = Card { + name: card_info + .name + .as_ref() + .map(Cow::to_string) + .unwrap_or_default(), + product_name: card_info + .proplist + .get_str("device.product.name") + .unwrap_or_default(), + object_id, + variant, + ports: card_info + .ports + .iter() + .map(|port| CardPort { + name: port.name.as_ref().map(Cow::to_string).unwrap_or_default(), + description: port + .description + .as_ref() + .map(Cow::to_string) + .unwrap_or_default(), + direction: match port.direction.bits() { + x if x == libpulse_binding::direction::FlagSet::INPUT.bits() => { + Direction::Input + } + x if x == libpulse_binding::direction::FlagSet::OUTPUT.bits() => { + Direction::Output + } + _ => Direction::Both, + }, + port_type: port + .proplist + .get_str("port.type") + .as_deref() + .map(|s| PortType::from_str(s).unwrap()) + .unwrap_or_default(), + profile_port: port + .proplist + .get_str("card.profile.port") + .and_then(|v| v.parse::().ok()) + .unwrap_or(0), + priority: port.priority, + profiles: collect_profiles(&port.profiles), + availability: port.available.into(), + }) + .collect(), + profiles: collect_profiles(&card_info.profiles), + active_profile: card_info.active_profile.as_deref().map(CardProfile::from), + }; + + if block_on(self.sender.borrow_mut().send(Event::CardInfo(card))).is_err() { + self.main_loop.borrow_mut().quit(Retval(0)); + } + } + } + + fn server_info_cb(self: &Rc, server_info: &ServerInfo) { + let new_default_sink_name = server_info + .default_sink_name + .as_ref() + .map(|x| x.clone().into_owned()); + let mut default_sink_name = self.default_sink_name.borrow_mut(); + if new_default_sink_name != *default_sink_name { + if let Some(name) = &new_default_sink_name { + _ = block_on( + self.sender + .borrow_mut() + .send(Event::DefaultSink(name.clone())), + ); + self.get_sink_info_by_name(name); + } + *default_sink_name = new_default_sink_name; + } + + let new_default_source_name = server_info + .default_source_name + .as_ref() + .map(|x| x.clone().into_owned()); + let mut default_source_name = self.default_source_name.borrow_mut(); + if new_default_source_name != *default_source_name { + if let Some(name) = &new_default_source_name { + _ = block_on( + self.sender + .borrow_mut() + .send(Event::DefaultSource(name.clone())), + ); + self.get_source_info_by_name(name); + } + *default_source_name = new_default_source_name; + } + } + + fn get_server_info(self: &Rc) { + let data = self.clone(); + self.introspector + .get_server_info(move |server_info| data.server_info_cb(server_info)); + } + + fn sink_info_cb(&self, sink_info_res: ListResult<&SinkInfo>) { + if let ListResult::Item(sink_info) = sink_info_res { + if sink_info.name.as_deref() != self.default_sink_name.borrow().as_deref() { + return; + } + let balance = (sink_info.channel_map.can_balance() + && sink_info.base_volume.is_normal()) + .then(|| sink_info.volume.get_balance(&sink_info.channel_map)); + + let volume = sink_info.volume.max().0 / (Volume::NORMAL.0 / 100); + if self.sink_mute.get() != Some(sink_info.mute) { + self.sink_mute.set(Some(sink_info.mute)); + if block_on( + self.sender + .borrow_mut() + .send(Event::SinkMute(sink_info.mute)), + ) + .is_err() + { + self.main_loop.borrow_mut().quit(Retval(0)); + } + } + if self.sink_volume.get() != Some(volume) { + self.sink_volume.set(Some(volume)); + if block_on(self.sender.borrow_mut().send(Event::SinkVolume(volume))).is_err() { + self.main_loop.borrow_mut().quit(Retval(0)); + } + } + if block_on(self.sender.borrow_mut().send(Event::Balance(balance))).is_err() { + self.main_loop.borrow_mut().quit(Retval(0)); + } + let mut main_loop = self.main_loop.borrow_mut(); + let api = main_loop.get_api(); + if let Some(mut ctx) = Context::new(&*main_loop, "balance") { + let _ = ctx.connect(None, FlagSet::NOFAIL, None); + + let channels = PulseChannels::new( + sink_info.volume, + sink_info.channel_map, + api, + sink_info.index, + ctx, + ); + + if block_on(self.sender.borrow_mut().send(Event::Channels(channels))).is_err() { + main_loop.quit(Retval(0)); + } + } + } + } + + fn source_info_cb(&self, source_info_res: ListResult<&SourceInfo>) { + if let ListResult::Item(source_info) = source_info_res { + if source_info.name.as_deref() != self.default_source_name.borrow().as_deref() { + return; + } + let volume = source_info.volume.max().0 / (Volume::NORMAL.0 / 100); + if self.source_mute.get() != Some(source_info.mute) { + self.source_mute.set(Some(source_info.mute)); + if block_on( + self.sender + .borrow_mut() + .send(Event::SourceMute(source_info.mute)), + ) + .is_err() + { + self.main_loop.borrow_mut().quit(Retval(0)); + } + } + if self.source_volume.get() != Some(volume) { + self.source_volume.set(Some(volume)); + if block_on(self.sender.borrow_mut().send(Event::SourceVolume(volume))).is_err() { + self.main_loop.borrow_mut().quit(Retval(0)); + } + } + } + } + + fn get_card_info_by_index(self: &Rc, index: u32) { + let data = self.clone(); + self.introspector + .get_card_info_by_index(index, move |card_info_res| { + data.card_info_cb(card_info_res); + }); + } + + fn get_sink_info_by_index(self: &Rc, index: u32) { + let data = self.clone(); + self.introspector.get_sink_info_by_index( + index, + move |sink_info_res: ListResult<&SinkInfo<'_>>| { + if let ListResult::Item(ref info) = sink_info_res { + if let Some(card_index) = info.card { + let data_clone = data.clone(); + data.introspector.get_card_info_by_index( + card_index, + move |card_info_res| { + data_clone.card_info_cb(card_info_res); + }, + ); + } + } + data.sink_info_cb(sink_info_res); + }, + ); + } + + fn get_sink_info_by_name(self: &Rc, name: &str) { + let data = self.clone(); + self.introspector + .get_sink_info_by_name(name, move |sink_info_res| { + if let ListResult::Item(ref info) = sink_info_res { + if let Some(card_index) = info.card { + let data_clone = data.clone(); + data.introspector.get_card_info_by_index( + card_index, + move |card_info_res| { + data_clone.card_info_cb(card_info_res); + }, + ); + } + } + data.sink_info_cb(sink_info_res); + }); + } + + fn get_source_info_by_index(self: &Rc, index: u32) { + let data = self.clone(); + self.introspector + .get_source_info_by_index(index, move |source_info_res| { + if let ListResult::Item(ref info) = source_info_res { + if let Some(card_index) = info.card { + let data_clone = data.clone(); + data.introspector.get_card_info_by_index( + card_index, + move |card_info_res| { + data_clone.card_info_cb(card_info_res); + }, + ); + } + } + data.source_info_cb(source_info_res); + }); + } + + fn get_source_info_by_name(self: &Rc, name: &str) { + let data = self.clone(); + self.introspector + .get_source_info_by_name(name, move |source_info_res| { + if let ListResult::Item(ref info) = source_info_res { + if let Some(card_index) = info.card { + let data_clone = data.clone(); + data.introspector.get_card_info_by_index( + card_index, + move |card_info_res| { + data_clone.card_info_cb(card_info_res); + }, + ); + } + } + data.source_info_cb(source_info_res); + }); + } + + fn subscribe_cb( + self: &Rc, + facility: Facility, + _operation: Option, + index: u32, + ) { + match facility { + Facility::Server => { + self.get_server_info(); + } + Facility::Sink => { + self.get_sink_info_by_index(index); + } + Facility::Source => { + self.get_source_info_by_index(index); + } + Facility::Card => { + self.get_card_info_by_index(index); + } + _ => {} + } + } +} + +fn collect_profiles(profiles: &[CardProfileInfo]) -> Vec { + profiles.iter().map(CardProfile::from).collect() +} + +impl From<&CardProfileInfo<'_>> for CardProfile { + fn from(profile: &CardProfileInfo) -> Self { + CardProfile { + name: profile + .name + .as_ref() + .map(Cow::to_string) + .unwrap_or_default(), + description: profile + .description + .as_ref() + .map(Cow::to_string) + .unwrap_or_default(), + available: profile.available, + n_sinks: profile.n_sinks, + n_sources: profile.n_sources, + priority: profile.priority, + } + } +} diff --git a/subscriptions/settings-daemon/Cargo.toml b/subscriptions/settings-daemon/Cargo.toml index 807cfe1..aa67fbe 100644 --- a/subscriptions/settings-daemon/Cargo.toml +++ b/subscriptions/settings-daemon/Cargo.toml @@ -1,14 +1,14 @@ [package] name = "cosmic-settings-daemon-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" rust-version.workspace = true publish = true [dependencies] -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } log = "0.4.29" tokio = "1.49.0" tokio-stream = "0.1.18" -zbus = "5.12.0" +zbus = "5.13.2" diff --git a/subscriptions/settings-daemon/src/lib.rs b/subscriptions/settings-daemon/src/lib.rs index 5438593..313bfb6 100644 --- a/subscriptions/settings-daemon/src/lib.rs +++ b/subscriptions/settings-daemon/src/lib.rs @@ -3,53 +3,76 @@ // XXX error handling? +use std::hash::Hash; + use futures::{FutureExt, StreamExt}; use iced_futures::Subscription; use tokio::sync::mpsc::{UnboundedSender, unbounded_channel}; use tokio_stream::wrappers::UnboundedReceiverStream; +pub(crate) struct Wrapper { + id: &'static str, + conn: zbus::Connection, +} + +impl Hash for Wrapper { + fn hash(&self, state: &mut H) { + self.id.hash(state); + } +} + pub fn subscription(connection: zbus::Connection) -> iced_futures::Subscription { - Subscription::run_with_id( - "settings-daemon", - async move { - let settings_daemon = match CosmicSettingsDaemonProxy::new(&connection).await { - Ok(value) => value, - Err(err) => { - log::error!("Error connecting to settings daemon: {}", err); - futures::future::pending().await - } - }; - - let (tx, rx) = unbounded_channel(); - - let max_brightness_stream = settings_daemon - .receive_max_display_brightness_changed() - .await; - let brightness_stream = settings_daemon.receive_display_brightness_changed().await; - - let initial = futures::stream::iter([Event::Sender(tx)]); - - initial.chain(futures::stream_select!( - Box::pin(UnboundedReceiverStream::new(rx).filter_map(move |request| { - let settings_daemon = settings_daemon.clone(); - async move { - match request { - Request::SetDisplayBrightness(brightness) => { - let _ = settings_daemon.set_display_brightness(brightness).await; - } - } - None:: + Subscription::run_with( + Wrapper { + id: "settings-daemon", + conn: connection, + }, + |Wrapper { + id: _id, + conn: connection, + }| { + let connection = connection.clone(); + async move { + let settings_daemon = match CosmicSettingsDaemonProxy::new(&connection).await { + Ok(value) => value, + Err(err) => { + log::error!("Error connecting to settings daemon: {}", err); + futures::future::pending().await } - })), - Box::pin(max_brightness_stream.filter_map(|evt| async move { - Some(Event::MaxDisplayBrightness(evt.get().await.ok()?)) - })), - Box::pin(brightness_stream.filter_map(|evt| async move { - Some(Event::DisplayBrightness(evt.get().await.ok()?)) - })) - )) - } - .flatten_stream(), + }; + + let (tx, rx) = unbounded_channel(); + + let max_brightness_stream = settings_daemon + .receive_max_display_brightness_changed() + .await; + let brightness_stream = settings_daemon.receive_display_brightness_changed().await; + + let initial = futures::stream::iter([Event::Sender(tx)]); + + initial.chain(futures::stream_select!( + Box::pin(UnboundedReceiverStream::new(rx).filter_map(move |request| { + let settings_daemon = settings_daemon.clone(); + async move { + match request { + Request::SetDisplayBrightness(brightness) => { + let _ = + settings_daemon.set_display_brightness(brightness).await; + } + } + None:: + } + })), + Box::pin(max_brightness_stream.filter_map(|evt| async move { + Some(Event::MaxDisplayBrightness(evt.get().await.ok()?)) + })), + Box::pin(brightness_stream.filter_map(|evt| async move { + Some(Event::DisplayBrightness(evt.get().await.ok()?)) + })) + )) + } + .flatten_stream() + }, ) } diff --git a/subscriptions/sound/Cargo.toml b/subscriptions/sound/Cargo.toml index 85820f6..adf5891 100644 --- a/subscriptions/sound/Cargo.toml +++ b/subscriptions/sound/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cosmic-settings-sound-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" rust-version.workspace = true license = "MPL-2.0" @@ -8,7 +8,7 @@ publish = true [dependencies] cosmic-pipewire = { path = "../../crates/cosmic-pipewire" } -futures = "0.3.31" +futures = "0.3.32" intmap = "3.1.3" libcosmic = { git = "https://github.com/pop-os/libcosmic", default-features = false } numtoa = "1.0.0-alpha1" diff --git a/subscriptions/sound/src/lib.rs b/subscriptions/sound/src/lib.rs index e129c59..adac229 100644 --- a/subscriptions/sound/src/lib.rs +++ b/subscriptions/sound/src/lib.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 use cosmic::Task; -use cosmic::iced_futures::MaybeSend; +use cosmic::iced::stream; use cosmic_pipewire as pipewire; use futures::{SinkExt, Stream}; use intmap::IntMap; @@ -18,37 +18,40 @@ pub type NodeId = u32; pub type ProfileId = i32; pub type RouteId = u32; -pub fn watch() -> impl Stream + MaybeSend + 'static { - cosmic::iced_futures::stream::channel(1, |mut emitter| async move { - loop { - let (cancel_tx, cancel_rx) = futures::channel::oneshot::channel::<()>(); - let sender = Arc::new((Mutex::new(Vec::new()), tokio::sync::Notify::const_new())); - let receiver = sender.clone(); +pub fn watch() -> impl Stream + Send + 'static { + stream::channel( + 1, + |mut emitter: futures::channel::mpsc::Sender| async move { + loop { + let (cancel_tx, cancel_rx) = futures::channel::oneshot::channel::<()>(); + let sender = Arc::new((Mutex::new(Vec::new()), tokio::sync::Notify::const_new())); + let receiver = sender.clone(); - _ = emitter - .send(Message::SubHandle(Arc::new(SubscriptionHandle { - cancel_tx, - pipewire: pipewire::run(move |event| { - sender.0.lock().unwrap().push(event); - sender.1.notify_one(); - }), - }))) - .await; + _ = emitter + .send(Message::SubHandle(Arc::new(SubscriptionHandle { + cancel_tx, + pipewire: pipewire::run(move |event| { + sender.0.lock().unwrap().push(event); + sender.1.notify_one(); + }), + }))) + .await; - let forwarder = Box::pin(async { - loop { - _ = receiver.1.notified().await; - let events = std::mem::take(&mut *receiver.0.lock().unwrap()); - if !events.is_empty() { - _ = emitter.send(Message::Server(Arc::from(events))).await; - tokio::time::sleep(Duration::from_millis(64)).await; + let forwarder = Box::pin(async { + loop { + _ = receiver.1.notified().await; + let events = std::mem::take(&mut *receiver.0.lock().unwrap()); + if !events.is_empty() { + _ = emitter.send(Message::Server(Arc::from(events))).await; + tokio::time::sleep(Duration::from_millis(64)).await; + } } - } - }); + }); - futures::future::select(cancel_rx, forwarder).await; - } - }) + futures::future::select(cancel_rx, forwarder).await; + } + }, + ) } #[derive(Default)] @@ -251,7 +254,7 @@ impl Model { None } else { - self.node_names.get(node_id).map(|name| name.clone()) + self.node_names.get(node_id).cloned() }; tokio::task::spawn(async move { @@ -327,10 +330,8 @@ impl Model { } None - } else if let Some(name) = self.node_names.get(node_id) { - Some(name.clone()) } else { - None + self.node_names.get(node_id).cloned() }; tokio::task::spawn(async move { @@ -526,24 +527,25 @@ impl Model { } } - pipewire::Event::AddProfile(id, profile) => { - if let Some(p) = self.active_profiles.get_mut(id) { - if p.index == profile.index { - *p = profile.clone(); - } + pipewire::Event::AddProfile(id, index, profile) => { + if let Some(p) = self.active_profiles.get_mut(id) + && p.index == profile.index + { + *p = profile.clone(); } let profiles = self.device_profiles.entry(id).or_default(); - for p in profiles.iter_mut() { - if p.index == profile.index { - *p = profile; - - self.update_ui_profiles(); - return; - } + if profiles.len() < index as usize + 1 { + let additional = (index as usize + 1) - profiles.capacity(); + profiles.reserve_exact(additional); + profiles.extend(std::iter::repeat_n( + pipewire::Profile::default(), + additional, + )); } - profiles.push(profile); + profiles[index as usize] = profile; + self.update_ui_profiles(); } @@ -676,12 +678,22 @@ impl Model { fn add_route(&mut self, id: DeviceId, index: u32, route: pipewire::Route) { self.update_device_route_name(&route, id); + + tracing::debug!(target: "sound", + "Device {} added route {} ({:?}); {:?}", + id, + route.name, + route.direction, + route.available + ); + let routes = self.device_routes.entry(id).or_default(); if routes.len() < index as usize + 1 { let additional = (index as usize + 1) - routes.capacity(); routes.reserve_exact(additional); routes.extend(std::iter::repeat_n(pipewire::Route::default(), additional)); } + routes[index as usize] = route; } @@ -705,12 +717,12 @@ impl Model { if let Some(pos) = self.sink_node_ids.iter().position(|&node_id| node_id == id) { self.sink_node_ids.remove(pos); self.sinks.remove(pos); - if let Some(node_id) = self.active_sink_node { - if id == node_id { - self.active_sink = None; - self.active_sink_node = None; - self.active_sink_node_name.clear(); - } + if let Some(node_id) = self.active_sink_node + && id == node_id + { + self.active_sink = None; + self.active_sink_node = None; + self.active_sink_node_name.clear(); } } else if let Some(pos) = self .source_node_ids @@ -719,12 +731,12 @@ impl Model { { self.source_node_ids.remove(pos); self.sources.remove(pos); - if let Some(node_id) = self.active_source_node { - if id == node_id { - self.active_source = None; - self.active_source_node = None; - self.active_source_node_name.clear(); - } + if let Some(node_id) = self.active_source_node + && id == node_id + { + self.active_source = None; + self.active_source_node = None; + self.active_source_node_name.clear(); } } diff --git a/subscriptions/upower/Cargo.toml b/subscriptions/upower/Cargo.toml index 173327a..4121a10 100644 --- a/subscriptions/upower/Cargo.toml +++ b/subscriptions/upower/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "cosmic-settings-upower-subscription" -version = "1.0.2" +version = "1.0.7" edition = "2024" license = "MPL-2.0" rust-version.workspace = true publish = true [dependencies] -futures = "0.3.31" +futures = "0.3.32" iced_futures = { git = "https://github.com/pop-os/libcosmic" } log = "0.4.29" tokio = "1.49.0" tokio-stream = "0.1.18" upower_dbus = { git = "https://github.com/pop-os/dbus-settings-bindings" } -zbus = "5.12.0" +zbus = "5.13.2" diff --git a/subscriptions/upower/src/lib.rs b/subscriptions/upower/src/lib.rs index 5612c44..e594774 100644 --- a/subscriptions/upower/src/lib.rs +++ b/subscriptions/upower/src/lib.rs @@ -10,8 +10,7 @@ pub mod device { pub fn device_subscription( id: I, ) -> iced_futures::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(id, |_| { async move { match events().await { Ok(stream) => stream, @@ -21,8 +20,8 @@ pub mod device { } } } - .flatten_stream(), - ) + .flatten_stream() + }) } async fn display_device() -> zbus::Result<(UPowerProxy<'static>, DeviceProxy<'static>)> { @@ -106,8 +105,7 @@ pub mod kbdbacklight { pub fn kbd_backlight_subscription( id: I, ) -> iced_futures::Subscription { - Subscription::run_with_id( - id, + Subscription::run_with(id, |_| { async move { match events().await { Ok(stream) => stream, @@ -117,8 +115,8 @@ pub mod kbdbacklight { } } } - .flatten_stream(), - ) + .flatten_stream() + }) } enum Event {