├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .vscode └── settings.json ├── Cargo.lock ├── Cargo.toml ├── LICENSE.md ├── README.md ├── cosmic-settings ├── Cargo.toml ├── README.md ├── i18n.toml └── src │ ├── app.rs │ ├── config.rs │ ├── localize.rs │ ├── main.rs │ ├── pages │ ├── accessibility │ │ ├── magnifier.rs │ │ └── mod.rs │ ├── applications │ │ ├── default_apps.rs │ │ ├── legacy_applications.rs │ │ ├── mod.rs │ │ └── startup_apps.rs │ ├── bluetooth │ │ └── mod.rs │ ├── desktop │ │ ├── appearance │ │ │ ├── font_config.rs │ │ │ ├── icon_themes.rs │ │ │ └── mod.rs │ │ ├── dock │ │ │ ├── applets.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── panel │ │ │ ├── applets_inner.rs │ │ │ ├── inner.rs │ │ │ └── mod.rs │ │ ├── wallpaper │ │ │ ├── config.rs │ │ │ ├── mod.rs │ │ │ └── widgets.rs │ │ ├── window_management.rs │ │ └── workspaces.rs │ ├── display │ │ ├── arrangement.rs │ │ ├── mod.rs │ │ └── night_light.rs │ ├── input │ │ ├── keyboard │ │ │ ├── mod.rs │ │ │ └── shortcuts │ │ │ │ ├── common.rs │ │ │ │ ├── custom.rs │ │ │ │ ├── manage_windows.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── move_window.rs │ │ │ │ ├── nav.rs │ │ │ │ ├── system.rs │ │ │ │ └── tiling.rs │ │ ├── mod.rs │ │ ├── mouse.rs │ │ └── touchpad.rs │ ├── mod.rs │ ├── networking │ │ ├── mod.rs │ │ ├── vpn │ │ │ ├── mod.rs │ │ │ └── nmcli.rs │ │ ├── wifi.rs │ │ └── wired.rs │ ├── power │ │ ├── backend │ │ │ ├── mod.rs │ │ │ ├── ppdaemon.rs │ │ │ └── s76powerdaemon.rs │ │ └── mod.rs │ ├── sound.rs │ ├── system │ │ ├── about.rs │ │ ├── firmware.rs │ │ ├── mod.rs │ │ └── users │ │ │ ├── getent.rs │ │ │ └── mod.rs │ └── time │ │ ├── date.rs │ │ ├── mod.rs │ │ └── region.rs │ ├── subscription │ ├── bluetooth.rs │ ├── daytime.rs │ ├── desktop_files.rs │ └── mod.rs │ ├── theme.rs │ ├── utils.rs │ └── widget │ └── mod.rs ├── debian ├── changelog ├── control ├── copyright ├── install ├── rules └── source │ ├── format │ └── options ├── flake.lock ├── flake.nix ├── i18n ├── ar │ └── cosmic_settings.ftl ├── be │ └── cosmic_settings.ftl ├── bg │ └── cosmic_settings.ftl ├── cs │ └── cosmic_settings.ftl ├── da │ └── cosmic_settings.ftl ├── de │ └── cosmic_settings.ftl ├── en │ └── cosmic_settings.ftl ├── es-419 │ └── cosmic-settings.ftl ├── es │ └── cosmic_settings.ftl ├── fa │ └── cosmic_settings.ftl ├── fr │ └── cosmic_settings.ftl ├── ga │ └── cosmic_settings.ftl ├── hi │ └── cosmic_settings.ftl ├── hu │ └── cosmic_settings.ftl ├── it │ └── cosmic_settings.ftl ├── ja │ └── cosmic_settings.ftl ├── kn │ └── cosmic_settings.ftl ├── nl │ └── cosmic_settings.ftl ├── pl │ └── cosmic_settings.ftl ├── pt-BR │ └── cosmic_settings.ftl ├── pt │ └── cosmic_settings.ftl ├── ro │ └── cosmic_settings.ftl ├── ru │ └── cosmic_settings.ftl ├── sk │ └── cosmic_settings.ftl ├── sr-Cyrl │ └── cosmic_settings.ftl ├── sr-Latn │ └── cosmic_settings.ftl ├── sv │ └── cosmic_settings.ftl ├── th │ └── cosmic_settings.ftl ├── tr │ └── cosmic_settings.ftl ├── uk │ └── cosmic_settings.ftl ├── zh-CN │ └── cosmic_settings.ftl └── zh-TW │ └── cosmic_settings.ftl ├── justfile ├── page ├── Cargo.toml ├── README.md └── src │ ├── binder.rs │ ├── insert.rs │ ├── lib.rs │ └── section.rs ├── pages ├── system │ ├── Cargo.toml │ └── src │ │ ├── about.rs │ │ └── lib.rs └── wallpapers │ ├── Cargo.toml │ └── src │ └── lib.rs ├── resources ├── accent_palette_dark.ron ├── accent_palette_light.ron ├── com.system76.CosmicSettings.About.desktop ├── com.system76.CosmicSettings.Accessibility.desktop ├── com.system76.CosmicSettings.Appearance.desktop ├── com.system76.CosmicSettings.Applications.desktop ├── com.system76.CosmicSettings.Bluetooth.desktop ├── com.system76.CosmicSettings.DateTime.desktop ├── com.system76.CosmicSettings.DefaultApps.desktop ├── com.system76.CosmicSettings.Desktop.desktop ├── com.system76.CosmicSettings.Displays.desktop ├── com.system76.CosmicSettings.Dock.desktop ├── com.system76.CosmicSettings.Firmware.desktop ├── com.system76.CosmicSettings.Input.desktop ├── com.system76.CosmicSettings.Keyboard.desktop ├── com.system76.CosmicSettings.LegacyApplications.desktop ├── com.system76.CosmicSettings.Mouse.desktop ├── com.system76.CosmicSettings.Network.desktop ├── com.system76.CosmicSettings.Notifications.desktop ├── com.system76.CosmicSettings.Panel.desktop ├── com.system76.CosmicSettings.Power.desktop ├── com.system76.CosmicSettings.RegionLanguage.desktop ├── com.system76.CosmicSettings.Sound.desktop ├── com.system76.CosmicSettings.System.desktop ├── com.system76.CosmicSettings.Time.desktop ├── com.system76.CosmicSettings.Touchpad.desktop ├── com.system76.CosmicSettings.Users.desktop ├── com.system76.CosmicSettings.Vpn.desktop ├── com.system76.CosmicSettings.Wallpaper.desktop ├── com.system76.CosmicSettings.WindowManagement.desktop ├── com.system76.CosmicSettings.Wired.desktop ├── com.system76.CosmicSettings.Wireless.desktop ├── com.system76.CosmicSettings.Workspaces.desktop ├── com.system76.CosmicSettings.desktop ├── com.system76.CosmicSettings.metainfo.xml ├── default_schema │ ├── com.system76.CosmicTheme.Dark.Builder │ │ └── v1 │ │ │ ├── accent │ │ │ ├── active_hint │ │ │ ├── bg_color │ │ │ ├── corner_radii │ │ │ ├── destructive │ │ │ ├── gaps │ │ │ ├── is_dark │ │ │ ├── is_frosted │ │ │ ├── neutral_tint │ │ │ ├── palette │ │ │ ├── primary_container_bg │ │ │ ├── secondary_container_bg │ │ │ ├── spacing │ │ │ ├── success │ │ │ ├── text_tint │ │ │ ├── warning │ │ │ └── window_hint │ ├── com.system76.CosmicTheme.Dark │ │ └── v1 │ │ │ ├── accent │ │ │ ├── accent_button │ │ │ ├── accent_text │ │ │ ├── active_hint │ │ │ ├── background │ │ │ ├── button │ │ │ ├── corner_radii │ │ │ ├── destructive │ │ │ ├── destructive_button │ │ │ ├── gaps │ │ │ ├── icon_button │ │ │ ├── is_dark │ │ │ ├── is_frosted │ │ │ ├── is_high_contrast │ │ │ ├── link_button │ │ │ ├── name │ │ │ ├── palette │ │ │ ├── primary │ │ │ ├── secondary │ │ │ ├── shade │ │ │ ├── spacing │ │ │ ├── success │ │ │ ├── success_button │ │ │ ├── text_button │ │ │ ├── warning │ │ │ ├── warning_button │ │ │ └── window_hint │ ├── com.system76.CosmicTheme.Light.Builder │ │ └── v1 │ │ │ ├── accent │ │ │ ├── active_hint │ │ │ ├── bg_color │ │ │ ├── corner_radii │ │ │ ├── destructive │ │ │ ├── gaps │ │ │ ├── is_frosted │ │ │ ├── neutral_tint │ │ │ ├── palette │ │ │ ├── primary_container_bg │ │ │ ├── secondary_container_bg │ │ │ ├── spacing │ │ │ ├── success │ │ │ ├── text_tint │ │ │ ├── warning │ │ │ └── window_hint │ ├── com.system76.CosmicTheme.Light │ │ └── v1 │ │ │ ├── accent │ │ │ ├── accent_button │ │ │ ├── accent_text │ │ │ ├── active_hint │ │ │ ├── background │ │ │ ├── button │ │ │ ├── corner_radii │ │ │ ├── destructive │ │ │ ├── destructive_button │ │ │ ├── gaps │ │ │ ├── icon_button │ │ │ ├── is_dark │ │ │ ├── is_frosted │ │ │ ├── is_high_contrast │ │ │ ├── link_button │ │ │ ├── name │ │ │ ├── palette │ │ │ ├── primary │ │ │ ├── secondary │ │ │ ├── shade │ │ │ ├── spacing │ │ │ ├── success │ │ │ ├── success_button │ │ │ ├── text_button │ │ │ ├── warning │ │ │ ├── warning_button │ │ │ └── window_hint │ └── com.system76.CosmicTheme.Mode │ │ └── v1 │ │ ├── auto_switch │ │ └── is_dark ├── icons │ ├── 128x128 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 16x16 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 24x24 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 256x256 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 32x32 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 48x48 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ ├── 64x64 │ │ └── apps │ │ │ └── com.system76.CosmicSettings.svg │ └── scalable │ │ └── status │ │ ├── illustration-accessibility-magnifier-applet.svg │ │ ├── illustration-appearance-dark-style-round.svg │ │ ├── illustration-appearance-dark-style-slightly-round.svg │ │ ├── illustration-appearance-dark-style-square.svg │ │ ├── illustration-appearance-light-style-round.svg │ │ ├── illustration-appearance-light-style-slightly-round.svg │ │ ├── illustration-appearance-light-style-square.svg │ │ ├── illustration-appearance-mode-dark.svg │ │ └── illustration-appearance-mode-light.svg └── polkit-1 │ ├── actions │ └── com.system76.CosmicSettings.Users.policy │ └── rules.d │ └── cosmic-settings.rules ├── rust-toolchain.toml └── scripts ├── cargo.just └── common.just /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous integration 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | 8 | jobs: 9 | fmt: 10 | name: Rustfmt 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - name: install toolchain 15 | run: rustup toolchain install 1.80.1 --component rustfmt 16 | - name: fmt 17 | run: cargo fmt --all --check 18 | 19 | clippy: 20 | name: Clippy Check 21 | runs-on: ubuntu-24.04 22 | steps: 23 | - name: install system dependencies 24 | 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 25 | - uses: actions/checkout@v3 26 | - name: install toolchain 27 | run: rustup toolchain install 1.80.1 --component clippy 28 | - name: clippy 29 | run: cargo clippy --all-features 30 | 31 | test: 32 | name: Test 33 | runs-on: ubuntu-24.04 34 | steps: 35 | - name: install system dependencies 36 | 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 37 | - uses: actions/checkout@v3 38 | - name: install toolchain 39 | run: rustup show 40 | - name: test 41 | run: cargo test --all-features 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | target 3 | vendor 4 | vendor.tar 5 | .cargo 6 | debian/* 7 | !debian/changelog 8 | !debian/control 9 | !debian/copyright 10 | !debian/rules 11 | !debian/source 12 | !debian/install 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // "rust-analyzer.check.overrideCommand": ["just", "check-json"] 3 | } -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["cosmic-settings", "page", "pages/*"] 3 | default-members = ["cosmic-settings"] 4 | resolver = "2" 5 | 6 | [workspace.package] 7 | rust-version = "1.80.0" 8 | 9 | [workspace.dependencies] 10 | cosmic-randr = { git = "https://github.com/pop-os/cosmic-randr" } 11 | tokio = { version = "1.43.0", features = ["macros"] } 12 | 13 | [workspace.dependencies.libcosmic] 14 | features = ["multi-window", "winit", "tokio"] 15 | git = "https://github.com/pop-os/libcosmic" 16 | 17 | [workspace.dependencies.cosmic-config] 18 | git = "https://github.com/pop-os/libcosmic" 19 | 20 | [workspace.dependencies.cosmic-bg-config] 21 | git = "https://github.com/pop-os/cosmic-bg" 22 | 23 | [workspace.dependencies.cosmic-comp-config] 24 | git = "https://github.com/pop-os/cosmic-comp" 25 | 26 | [workspace.dependencies.cosmic-idle-config] 27 | git = "https://github.com/pop-os/cosmic-idle" 28 | 29 | [workspace.dependencies.cosmic-panel-config] 30 | git = "https://github.com/pop-os/cosmic-panel" 31 | 32 | [workspace.dependencies.cosmic-randr-shell] 33 | git = "https://github.com/pop-os/cosmic-randr" 34 | 35 | [workspace.dependencies.sctk] 36 | git = "https://github.com/smithay/client-toolkit/" 37 | package = "smithay-client-toolkit" 38 | # rev = "c583de8" 39 | 40 | [profile.release-with-debug] 41 | inherits = "release" 42 | debug = true 43 | 44 | [profile.release] 45 | opt-level = "s" 46 | lto = "thin" 47 | 48 | # [patch.'https://github.com/smithay/client-toolkit/'] 49 | # smithay-client-toolkit = { git = "https://github.com/smithay/client-toolkit//", rev = "c583de8" } 50 | 51 | [patch.'https://github.com/pop-os/cosmic-protocols'] 52 | cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "1425bd4" } 53 | cosmic-client-toolkit = { git = "https://github.com/pop-os/cosmic-protocols//", rev = "1425bd4" } 54 | 55 | # [patch.'https://github.com/pop-os/cosmic-settings-daemon'] 56 | # cosmic-settings-config = { git = "https://github.com/pop-os/cosmic-settings-daemon//", branch = "input_nobuild" } 57 | 58 | # For development and testing purposes 59 | # [patch.'https://github.com/pop-os/libcosmic'] 60 | # libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "drop-menu-tree-changes" } 61 | # cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "drop-menu-tree-changes" } 62 | # cosmic-theme = { git = "https://github.com/pop-os/libcosmic//", branch = "drop-menu-tree-changes" } 63 | # libcosmic = { path = "../libcosmic" } 64 | # cosmic-config = { path = "../libcosmic/cosmic-config" } 65 | # cosmic-theme = { path = "../libcosmic/cosmic-theme" } 66 | 67 | # [patch.'https://github.com/pop-os/dbus-settings-bindings'] 68 | # cosmic-dbus-networkmanager = { path = "../dbus-settings-bindings/networkmanager" } 69 | # upower_dbus = { path = "../dbus-settings-bindings/upower" } 70 | 71 | [patch."https://github.com/smithay/client-toolkit.git"] 72 | sctk = { package = "smithay-client-toolkit", version = "=0.19.2" } 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # COSMIC Settings 2 | 3 | The settings application for the [COSMIC desktop environment][cosmic-epoch]. 4 | 5 | ## Translators 6 | 7 | Translation files may be found in the [i18n directory](./i18n). New translations may copy the [English (en) localization](./i18n/en) of the project and rename `en` to the desired [ISO 639-1 language code][iso-codes]. Translations may be submitted through GitHub as an issue or pull request. Submissions by email or other means are also acceptable; with the preferred name and email to associate with the changes. 8 | 9 | ## Distributors 10 | 11 | The accent palettes on the Appearance settings page are configurable through the cosmic-config directory at `/usr/share/cosmic/com.system76.CosmicSettings/v1/`. One at `accent_palette_dark`, and another at `accent_palette_light`. Examples can be found at [resources/accent_palette_dark.ron](./resources/accent_palette_dark.ron) and [resources/accent_palette_light.ron](./resources/accent_palette_light.ron). This can be copied locally to `~/.config/cosmic/com.system76.CosmicSettings/v1/` for testing, and then move to `/usr/share/cosmic` for packaging. 12 | 13 | ## Build 14 | 15 | ### Dependencies 16 | 17 | See the `Build-Depends` section of the [debian control file](./debian/control). 18 | 19 | ### Install 20 | 21 | COSMIC uses [just][just] as its preferred build tool. 22 | 23 | ```sh 24 | just 25 | sudo just install 26 | ``` 27 | 28 | ### Packaging 29 | 30 | If packaging for a Linux distribution, vendor dependencies locally with the `vendor` rule, and build with the vendored sources using the `build-vendored` rule. When installing files, use the `rootdir` and `prefix` variables to change installation paths. 31 | 32 | ```sh 33 | just vendor 34 | just build-vendored 35 | just rootdir=debian/cosmic-settings prefix=/usr install 36 | ``` 37 | 38 | It is recommended to build a source tarball with the vendored dependencies, which can typically be done by running `just vendor` on the host system before it enters the build environment. Reference [debian/rules](./debian/rules) to see how we generate debian packages with `sbuild`. 39 | 40 | ## Developers 41 | 42 | Developers should install [rustup][rustup] and configure their editor to use [rust-analyzer][rust-analyzer]. Run `just check` to ensure that the changes you make are free of linter warnings. You may configure your editor to run `just check-json` as the rust-analyzer check command. 43 | 44 | To improve compilation times, disable LTO in the release profile, install the [mold][mold] linker, and configure [sccache][sccache] for use with Rust. The [mold][mold] linker will only improve link times if LTO is disabled. 45 | 46 | Run the cosmic-settings binary with `just run` so that logs will be emitted to stderr, and crashes will generate detailed backtraces. Applications shouldn't crash, so when writing code, avoid use of `unwrap()` and `expect()`. Instead, log errors with `tracing::error!()` or `tracing::warn!()`. 47 | 48 | ## License 49 | 50 | Licensed under the [GNU Public License 3.0](https://choosealicense.com/licenses/gpl-3.0). 51 | 52 | ### Contribution 53 | 54 | Any contribution intentionally submitted for inclusion in the work by you shall be licensed under the GNU Public License 3.0 (GPL-3.0). Each source file should have a SPDX copyright notice at the top of the file: 55 | 56 | ``` 57 | // SPDX-License-Identifier: GPL-3.0-only 58 | ``` 59 | 60 | [cosmic-epoch]: https://github.com/pop-os/cosmic-epoch 61 | [iso-codes]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes 62 | [just]: https://github.com/casey/just 63 | [rustup]: https://rustup.rs/ 64 | [rust-analyzer]: https://rust-analyzer.github.io/ 65 | [mold]: https://github.com/rui314/mold 66 | [sccache]: https://github.com/mozilla/sccache 67 | -------------------------------------------------------------------------------- /cosmic-settings/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pop-os/cosmic-settings/e810acd8f15e3267960ebba1595427f87172ab0d/cosmic-settings/README.md -------------------------------------------------------------------------------- /cosmic-settings/i18n.toml: -------------------------------------------------------------------------------- 1 | fallback_language = "en" 2 | 3 | [fluent] 4 | assets_dir = "../i18n" -------------------------------------------------------------------------------- /cosmic-settings/src/config.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic::{ 5 | cosmic_config::{self, ConfigGet, ConfigSet}, 6 | cosmic_theme::palette::Srgba, 7 | }; 8 | 9 | const NAME: &str = "com.system76.CosmicSettings"; 10 | 11 | const ACTIVE_PAGE: &str = "active_page"; 12 | const ACCENT_PALETTE_DARK: &str = "accent_palette_dark"; 13 | const ACCENT_PALETTE_LIGHT: &str = "accent_palette_light"; 14 | 15 | #[must_use] 16 | #[derive(Debug, Clone)] 17 | pub struct Config { 18 | config: cosmic_config::Config, 19 | state: cosmic_config::Config, 20 | } 21 | 22 | impl Config { 23 | pub fn new() -> Self { 24 | let config = match cosmic_config::Config::new(NAME, 1) { 25 | Ok(config) => config, 26 | Err(why) => { 27 | panic!("failed to get {NAME} config: {:?}", why); 28 | } 29 | }; 30 | 31 | let state = match cosmic_config::Config::new_state(NAME, 1) { 32 | Ok(state) => state, 33 | Err(why) => { 34 | panic!("failed to get {NAME} state: {:?}", why); 35 | } 36 | }; 37 | 38 | Self { config, state } 39 | } 40 | 41 | pub fn accent_palette_dark(&self) -> Result, cosmic_config::Error> { 42 | self.config.get::>(ACCENT_PALETTE_DARK) 43 | } 44 | 45 | pub fn accent_palette_light(&self) -> Result, cosmic_config::Error> { 46 | self.config.get::>(ACCENT_PALETTE_LIGHT) 47 | } 48 | 49 | pub fn active_page(&self) -> Box { 50 | self.state 51 | .get::>(ACTIVE_PAGE) 52 | .unwrap_or_else(|_| Box::from("desktop")) 53 | } 54 | 55 | pub fn set_active_page(&self, page: Box) { 56 | if let Err(why) = self.state.set::>(ACTIVE_PAGE, page.clone()) { 57 | tracing::error!(?why, "failed to store active page ID"); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /cosmic-settings/src/localize.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use i18n_embed::{ 5 | DefaultLocalizer, LanguageLoader, Localizer, 6 | fluent::{FluentLanguageLoader, fluent_language_loader}, 7 | }; 8 | use once_cell::sync::Lazy; 9 | use rust_embed::RustEmbed; 10 | 11 | #[derive(RustEmbed)] 12 | #[folder = "../i18n/"] 13 | struct Localizations; 14 | 15 | pub static LANGUAGE_LOADER: Lazy = Lazy::new(|| { 16 | let loader: FluentLanguageLoader = fluent_language_loader!(); 17 | 18 | loader 19 | .load_fallback_language(&Localizations) 20 | .expect("Error while loading fallback language"); 21 | 22 | // In test, disable the isolating markers to help with string assertion 23 | #[cfg(test)] 24 | loader.set_use_isolating(false); 25 | 26 | loader 27 | }); 28 | 29 | #[macro_export] 30 | macro_rules! fl { 31 | ($message_id:literal) => {{ 32 | i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER, $message_id) 33 | }}; 34 | 35 | ($message_id:literal, $($args:expr),*) => {{ 36 | i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER, $message_id, $($args), *) 37 | }}; 38 | } 39 | 40 | // Get the `Localizer` to be used for localizing this library. 41 | #[must_use] 42 | #[inline(always)] 43 | pub fn localizer() -> Box { 44 | Box::from(DefaultLocalizer::new(&*LANGUAGE_LOADER, &Localizations)) 45 | } 46 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/applications/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | #[cfg(feature = "page-default-apps")] 5 | pub mod default_apps; 6 | 7 | pub mod startup_apps; 8 | 9 | #[cfg(feature = "page-legacy-applications")] 10 | pub mod legacy_applications; 11 | 12 | use cosmic_settings_page as page; 13 | 14 | #[derive(Default)] 15 | pub struct Page { 16 | entity: page::Entity, 17 | } 18 | 19 | impl page::Page for Page { 20 | fn set_id(&mut self, entity: page::Entity) { 21 | self.entity = entity; 22 | } 23 | 24 | fn info(&self) -> page::Info { 25 | page::Info::new("applications", "preferences-applications-symbolic") 26 | .title(fl!("applications")) 27 | } 28 | } 29 | 30 | impl page::AutoBind for Page { 31 | fn sub_pages( 32 | mut page: page::Insert, 33 | ) -> page::Insert { 34 | #[cfg(feature = "page-default-apps")] 35 | { 36 | page = page.sub_page::(); 37 | } 38 | 39 | page = page.sub_page::(); 40 | 41 | #[cfg(feature = "page-legacy-applications")] 42 | { 43 | page = page.sub_page::(); 44 | } 45 | 46 | page 47 | } 48 | } 49 | 50 | #[derive(Copy, Clone, Debug)] 51 | pub enum Message {} 52 | 53 | impl Page { 54 | pub fn update(&mut self, _message: Message) {} 55 | } 56 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/desktop/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | pub mod appearance; 5 | #[cfg(feature = "wayland")] 6 | pub mod dock; 7 | #[cfg(feature = "wayland")] 8 | pub mod panel; 9 | pub mod wallpaper; 10 | #[cfg(feature = "page-window-management")] 11 | pub mod window_management; 12 | #[cfg(feature = "page-workspaces")] 13 | pub mod workspaces; 14 | 15 | use cosmic_settings_page as page; 16 | 17 | #[derive(Debug)] 18 | #[allow(clippy::struct_excessive_bools)] 19 | #[derive(Default)] 20 | pub struct Page { 21 | entity: page::Entity, 22 | } 23 | 24 | impl page::Page for Page { 25 | fn set_id(&mut self, entity: page::Entity) { 26 | self.entity = entity; 27 | } 28 | 29 | fn info(&self) -> page::Info { 30 | page::Info::new("desktop", "video-display-symbolic").title(fl!("desktop")) 31 | } 32 | } 33 | 34 | impl page::AutoBind for Page { 35 | fn sub_pages( 36 | mut page: page::Insert, 37 | ) -> page::Insert { 38 | page = page.sub_page::(); 39 | page = page.sub_page::(); 40 | 41 | #[cfg(feature = "wayland")] 42 | { 43 | page = page.sub_page::(); 44 | page = page.sub_page::(); 45 | } 46 | 47 | #[cfg(feature = "page-window-management")] 48 | { 49 | page = page.sub_page::(); 50 | } 51 | 52 | #[cfg(feature = "page-workspaces")] 53 | { 54 | page = page.sub_page::(); 55 | } 56 | 57 | page 58 | } 59 | } 60 | 61 | #[derive(Copy, Clone, Debug)] 62 | pub enum Message {} 63 | 64 | impl Page { 65 | pub fn update(&mut self, _message: Message) {} 66 | } 67 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/display/night_light.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use super::{Message, NightLight}; 5 | use crate::pages; 6 | use cosmic::iced_core::{Alignment, Length}; 7 | use cosmic::widget::{ 8 | button, column, container, icon, list_column, row, settings, text, toggler, vertical_space, 9 | }; 10 | use cosmic::{Apply, Element, Task}; 11 | use std::sync::Arc; 12 | 13 | pub fn view( 14 | mode: &'static str, 15 | description: &'static str, 16 | button: Option<(&'static str, Message)>, 17 | ) -> Element<'static, Message> { 18 | let cosmic::cosmic_theme::Spacing { 19 | space_xxs, space_l, .. 20 | } = cosmic::theme::active().cosmic().spacing; 21 | let has_checkmark = button.is_none(); 22 | 23 | let content = column::with_capacity(4) 24 | .padding([space_xxs, space_l]) 25 | .push(text::body(mode)) 26 | .push(text::caption(description)) 27 | .push(vertical_space().height(12)) 28 | .push_maybe(button.map(|(text, message)| { 29 | button::text(text) 30 | .class(cosmic::theme::Button::Link) 31 | .trailing_icon(icon::from_name("go-next-symbolic").size(16)) 32 | .on_press(message) 33 | })); 34 | 35 | if has_checkmark { 36 | row::with_capacity(2) 37 | .align_y(Alignment::Center) 38 | .push(content) 39 | .push(icon::from_name("object-select-symbolic").size(24)) 40 | .apply(Element::from) 41 | .apply(container) 42 | .class(cosmic::theme::Container::List) 43 | .padding(8) 44 | .width(Length::Fill) 45 | .into() 46 | } else { 47 | container(content) 48 | .class(cosmic::theme::Container::List) 49 | .padding(8) 50 | .width(Length::Fill) 51 | .into() 52 | } 53 | } 54 | 55 | impl super::Page { 56 | pub fn night_light_view(&self) -> Element { 57 | let mut container = list_column(); 58 | 59 | // Displays the night light status, and a button for configuring it. 60 | container = container.add( 61 | settings::item::builder(&*super::text::NIGHT_LIGHT) 62 | .description(&*super::text::NIGHT_LIGHT_DESCRIPTION) 63 | .control( 64 | row() 65 | .align_y(Alignment::Center) 66 | .push( 67 | toggler(self.config.night_light_enabled) 68 | .on_toggle(Message::NightLight(NightLight::Toggle)), 69 | ) 70 | .push( 71 | button::icon(icon::from_name("go-next-symbolic")) 72 | .extra_small() 73 | .on_press(Message::NightLightContext), 74 | ), 75 | ), 76 | ); 77 | 78 | container 79 | .apply(Element::from) 80 | .map(crate::pages::Message::Displays) 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/input/keyboard/shortcuts/manage_windows.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use super::{ShortcutMessage, ShortcutModel}; 5 | use cosmic::{Element, Task, app::ContextDrawer}; 6 | use cosmic_settings_config::shortcuts::Action; 7 | use cosmic_settings_config::shortcuts::action::ResizeDirection; 8 | use cosmic_settings_page::{self as page, Section, section}; 9 | use slab::Slab; 10 | 11 | pub struct Page { 12 | model: super::Model, 13 | } 14 | 15 | impl Default for Page { 16 | fn default() -> Self { 17 | Self { 18 | model: super::Model::default().actions(|defaults, keybindings| { 19 | actions().iter().fold(Slab::new(), |mut slab, action| { 20 | slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); 21 | slab 22 | }) 23 | }), 24 | } 25 | } 26 | } 27 | 28 | impl Page { 29 | pub fn update(&mut self, message: ShortcutMessage) -> Task { 30 | self.model.update(message) 31 | } 32 | } 33 | 34 | impl page::Page for Page { 35 | fn set_id(&mut self, entity: page::Entity) { 36 | self.model.entity = entity; 37 | } 38 | 39 | fn info(&self) -> page::Info { 40 | page::Info::new("manage-windows", "input-keyboard-symbolic").title(fl!("manage-windows")) 41 | } 42 | 43 | fn content( 44 | &self, 45 | sections: &mut slotmap::SlotMap>, 46 | ) -> Option { 47 | Some(vec![sections.insert(shortcuts())]) 48 | } 49 | 50 | fn context_drawer(&self) -> Option> { 51 | self.model 52 | .context_drawer(crate::pages::Message::ManageWindowShortcuts) 53 | } 54 | 55 | fn dialog(&self) -> Option> { 56 | self.model 57 | .dialog() 58 | .map(|el| el.map(crate::pages::Message::ManageWindowShortcuts)) 59 | } 60 | 61 | fn on_context_drawer_close(&mut self) -> Task { 62 | self.model.on_context_drawer_close(); 63 | Task::none() 64 | } 65 | 66 | fn on_enter(&mut self) -> Task { 67 | self.model.on_enter(); 68 | Task::none() 69 | } 70 | 71 | fn on_leave(&mut self) -> Task { 72 | self.model.on_clear(); 73 | Task::none() 74 | } 75 | } 76 | 77 | impl page::AutoBind for Page {} 78 | 79 | #[must_use] 80 | pub const fn actions() -> &'static [Action] { 81 | &[ 82 | Action::Close, 83 | Action::Maximize, 84 | Action::Minimize, 85 | Action::Resizing(ResizeDirection::Inwards), 86 | Action::Resizing(ResizeDirection::Outwards), 87 | Action::ToggleSticky, 88 | ] 89 | } 90 | fn shortcuts() -> Section { 91 | let mut descriptions = Slab::new(); 92 | 93 | // Make these searchable in the global settings search. 94 | for action in actions() { 95 | descriptions.insert(super::localize_action(action)); 96 | } 97 | 98 | Section::default() 99 | .descriptions(descriptions) 100 | .view::(move |_binder, page, _section| { 101 | page.model 102 | .view() 103 | .map(crate::pages::Message::ManageWindowShortcuts) 104 | }) 105 | } 106 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/input/keyboard/shortcuts/move_window.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | // 4 | use super::{ShortcutMessage, ShortcutModel}; 5 | use cosmic::{Element, Task, app::ContextDrawer}; 6 | use cosmic_settings_config::shortcuts::Action; 7 | use cosmic_settings_config::shortcuts::action::Direction; 8 | use cosmic_settings_page::{self as page, Section, section}; 9 | use slab::Slab; 10 | 11 | pub struct Page { 12 | model: super::Model, 13 | } 14 | 15 | impl Default for Page { 16 | fn default() -> Self { 17 | Self { 18 | model: super::Model::default().actions(|defaults, keybindings| { 19 | actions().iter().fold(Slab::new(), |mut slab, action| { 20 | slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); 21 | slab 22 | }) 23 | }), 24 | } 25 | } 26 | } 27 | 28 | impl Page { 29 | pub fn update(&mut self, message: ShortcutMessage) -> Task { 30 | self.model.update(message) 31 | } 32 | } 33 | 34 | impl page::Page for Page { 35 | fn set_id(&mut self, entity: page::Entity) { 36 | self.model.entity = entity; 37 | } 38 | 39 | fn info(&self) -> page::Info { 40 | page::Info::new("move-windows", "input-keyboard-symbolic").title(fl!("move-windows")) 41 | } 42 | 43 | fn content( 44 | &self, 45 | sections: &mut slotmap::SlotMap>, 46 | ) -> Option { 47 | Some(vec![sections.insert(shortcuts())]) 48 | } 49 | 50 | fn context_drawer(&self) -> Option> { 51 | self.model 52 | .context_drawer(crate::pages::Message::MoveWindowShortcuts) 53 | } 54 | 55 | fn dialog(&self) -> Option> { 56 | self.model 57 | .dialog() 58 | .map(|el| el.map(crate::pages::Message::MoveWindowShortcuts)) 59 | } 60 | 61 | fn on_context_drawer_close(&mut self) -> Task { 62 | self.model.on_context_drawer_close(); 63 | Task::none() 64 | } 65 | 66 | fn on_enter(&mut self) -> Task { 67 | self.model.on_enter(); 68 | Task::none() 69 | } 70 | 71 | fn on_leave(&mut self) -> Task { 72 | self.model.on_clear(); 73 | Task::none() 74 | } 75 | } 76 | 77 | impl page::AutoBind for Page {} 78 | 79 | #[must_use] 80 | pub const fn actions() -> &'static [Action] { 81 | &[ 82 | Action::Move(Direction::Down), 83 | Action::Move(Direction::Left), 84 | Action::Move(Direction::Right), 85 | Action::Move(Direction::Up), 86 | Action::MoveToPreviousWorkspace, 87 | Action::MoveToNextWorkspace, 88 | Action::MoveToLastWorkspace, 89 | Action::MoveToWorkspace(1), 90 | Action::MoveToWorkspace(2), 91 | Action::MoveToWorkspace(3), 92 | Action::MoveToWorkspace(4), 93 | Action::MoveToWorkspace(5), 94 | Action::MoveToWorkspace(6), 95 | Action::MoveToWorkspace(7), 96 | Action::MoveToWorkspace(8), 97 | Action::MoveToWorkspace(9), 98 | Action::MoveToOutput(Direction::Down), 99 | Action::MoveToOutput(Direction::Left), 100 | Action::MoveToOutput(Direction::Right), 101 | Action::MoveToOutput(Direction::Up), 102 | ] 103 | } 104 | 105 | fn shortcuts() -> Section { 106 | let mut descriptions = Slab::new(); 107 | 108 | // Make these searchable in the global settings search. 109 | for action in actions() { 110 | descriptions.insert(super::localize_action(action)); 111 | } 112 | 113 | Section::default() 114 | .descriptions(descriptions) 115 | .view::(move |_binder, page, _section| { 116 | page.model 117 | .view() 118 | .map(crate::pages::Message::MoveWindowShortcuts) 119 | }) 120 | } 121 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/input/keyboard/shortcuts/nav.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use super::{ShortcutMessage, ShortcutModel}; 5 | use cosmic::app::ContextDrawer; 6 | use cosmic::{Element, Task}; 7 | use cosmic_settings_config::shortcuts::Action; 8 | use cosmic_settings_config::shortcuts::action::{Direction, FocusDirection}; 9 | use cosmic_settings_page::{self as page, Section, section}; 10 | use slab::Slab; 11 | 12 | pub struct Page { 13 | model: super::Model, 14 | } 15 | 16 | impl Default for Page { 17 | fn default() -> Self { 18 | Self { 19 | model: super::Model::default().actions(|defaults, keybindings| { 20 | actions().iter().fold(Slab::new(), |mut slab, action| { 21 | slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); 22 | slab 23 | }) 24 | }), 25 | } 26 | } 27 | } 28 | 29 | impl Page { 30 | pub fn update(&mut self, message: ShortcutMessage) -> Task { 31 | self.model.update(message) 32 | } 33 | } 34 | 35 | impl page::Page for Page { 36 | fn set_id(&mut self, entity: page::Entity) { 37 | self.model.entity = entity; 38 | } 39 | 40 | fn info(&self) -> page::Info { 41 | page::Info::new("nav-shortcuts", "input-keyboard-symbolic").title(fl!("nav-shortcuts")) 42 | } 43 | 44 | fn content( 45 | &self, 46 | sections: &mut slotmap::SlotMap>, 47 | ) -> Option { 48 | Some(vec![sections.insert(shortcuts())]) 49 | } 50 | 51 | fn context_drawer(&self) -> Option> { 52 | self.model 53 | .context_drawer(crate::pages::Message::NavShortcuts) 54 | } 55 | 56 | fn dialog(&self) -> Option> { 57 | self.model 58 | .dialog() 59 | .map(|el| el.map(crate::pages::Message::NavShortcuts)) 60 | } 61 | 62 | fn on_context_drawer_close(&mut self) -> Task { 63 | self.model.on_context_drawer_close(); 64 | Task::none() 65 | } 66 | 67 | fn on_enter(&mut self) -> Task { 68 | self.model.on_enter(); 69 | Task::none() 70 | } 71 | 72 | fn on_leave(&mut self) -> Task { 73 | self.model.on_clear(); 74 | Task::none() 75 | } 76 | } 77 | 78 | impl page::AutoBind for Page {} 79 | 80 | #[must_use] 81 | pub const fn actions() -> &'static [Action] { 82 | &[ 83 | Action::Focus(FocusDirection::Left), 84 | Action::Focus(FocusDirection::Right), 85 | Action::Focus(FocusDirection::Up), 86 | Action::Focus(FocusDirection::Down), 87 | Action::Focus(FocusDirection::In), 88 | Action::Focus(FocusDirection::Out), 89 | Action::PreviousWorkspace, 90 | Action::NextWorkspace, 91 | Action::LastWorkspace, 92 | Action::SwitchOutput(Direction::Left), 93 | Action::SwitchOutput(Direction::Right), 94 | Action::SwitchOutput(Direction::Up), 95 | Action::SwitchOutput(Direction::Down), 96 | Action::Workspace(1), 97 | Action::Workspace(2), 98 | Action::Workspace(3), 99 | Action::Workspace(4), 100 | Action::Workspace(5), 101 | Action::Workspace(6), 102 | Action::Workspace(7), 103 | Action::Workspace(8), 104 | Action::Workspace(9), 105 | ] 106 | } 107 | 108 | fn shortcuts() -> Section { 109 | let mut descriptions = Slab::new(); 110 | 111 | // Make these searchable in the global settings search. 112 | for action in actions() { 113 | descriptions.insert(super::localize_action(action)); 114 | } 115 | 116 | Section::default() 117 | .descriptions(descriptions) 118 | .view::(move |_binder, page, _section| { 119 | page.model.view().map(crate::pages::Message::NavShortcuts) 120 | }) 121 | } 122 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/input/keyboard/shortcuts/tiling.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use super::{ShortcutMessage, ShortcutModel}; 5 | use cosmic::{Element, Task, app::ContextDrawer}; 6 | use cosmic_settings_config::shortcuts::Action; 7 | use cosmic_settings_config::shortcuts::action::Orientation; 8 | use cosmic_settings_page::{self as page, Section, section}; 9 | use slab::Slab; 10 | 11 | pub struct Page { 12 | model: super::Model, 13 | } 14 | 15 | impl Default for Page { 16 | fn default() -> Self { 17 | Self { 18 | model: super::Model::default().actions(|defaults, keybindings| { 19 | actions().iter().fold(Slab::new(), |mut slab, action| { 20 | slab.insert(ShortcutModel::new(defaults, keybindings, action.clone())); 21 | slab 22 | }) 23 | }), 24 | } 25 | } 26 | } 27 | 28 | impl Page { 29 | pub fn update(&mut self, message: ShortcutMessage) -> Task { 30 | self.model.update(message) 31 | } 32 | } 33 | 34 | impl page::Page for Page { 35 | fn set_id(&mut self, entity: page::Entity) { 36 | self.model.entity = entity; 37 | } 38 | 39 | fn info(&self) -> page::Info { 40 | page::Info::new("window-tiling", "input-keyboard-symbolic").title(fl!("window-tiling")) 41 | } 42 | 43 | fn content( 44 | &self, 45 | sections: &mut slotmap::SlotMap>, 46 | ) -> Option { 47 | Some(vec![sections.insert(shortcuts())]) 48 | } 49 | 50 | fn context_drawer(&self) -> Option> { 51 | self.model 52 | .context_drawer(crate::pages::Message::TilingShortcuts) 53 | } 54 | 55 | fn dialog(&self) -> Option> { 56 | self.model 57 | .dialog() 58 | .map(|el| el.map(crate::pages::Message::TilingShortcuts)) 59 | } 60 | 61 | fn on_context_drawer_close(&mut self) -> Task { 62 | self.model.on_context_drawer_close(); 63 | Task::none() 64 | } 65 | 66 | fn on_enter(&mut self) -> Task { 67 | self.model.on_enter(); 68 | Task::none() 69 | } 70 | 71 | fn on_leave(&mut self) -> Task { 72 | self.model.on_clear(); 73 | Task::none() 74 | } 75 | } 76 | 77 | impl page::AutoBind for Page {} 78 | 79 | #[must_use] 80 | pub fn actions() -> &'static [Action] { 81 | &[ 82 | Action::ToggleTiling, 83 | Action::ToggleStacking, 84 | Action::ToggleWindowFloating, 85 | Action::ToggleOrientation, 86 | Action::Orientation(Orientation::Horizontal), 87 | Action::Orientation(Orientation::Vertical), 88 | Action::SwapWindow, 89 | ] 90 | } 91 | 92 | fn shortcuts() -> Section { 93 | let mut descriptions = Slab::new(); 94 | 95 | // Make these searchable in the global settings search. 96 | for action in actions() { 97 | descriptions.insert(super::localize_action(action)); 98 | } 99 | 100 | Section::default() 101 | .descriptions(descriptions) 102 | .view::(move |_binder, page, _section| { 103 | page.model 104 | .view() 105 | .map(crate::pages::Message::TilingShortcuts) 106 | }) 107 | } 108 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic_settings_page::Entity; 5 | 6 | #[cfg(feature = "page-accessibility")] 7 | pub mod accessibility; 8 | pub mod applications; 9 | #[cfg(feature = "page-bluetooth")] 10 | pub mod bluetooth; 11 | pub mod desktop; 12 | #[cfg(feature = "page-display")] 13 | pub mod display; 14 | #[cfg(feature = "page-input")] 15 | pub mod input; 16 | #[cfg(feature = "page-networking")] 17 | pub mod networking; 18 | #[cfg(feature = "page-power")] 19 | pub mod power; 20 | #[cfg(feature = "page-sound")] 21 | pub mod sound; 22 | pub mod system; 23 | pub mod time; 24 | 25 | #[derive(Clone, Debug)] 26 | pub enum Message { 27 | // Page-specific messages 28 | #[cfg(feature = "page-accessibility")] 29 | Accessibility(accessibility::Message), 30 | #[cfg(feature = "page-accessibility")] 31 | AccessibilityMagnifier(accessibility::magnifier::Message), 32 | #[cfg(feature = "page-about")] 33 | About(system::about::Message), 34 | Appearance(desktop::appearance::Message), 35 | Applications(applications::Message), 36 | #[cfg(feature = "page-bluetooth")] 37 | Bluetooth(bluetooth::Message), 38 | #[cfg(feature = "page-input")] 39 | CustomShortcuts(input::keyboard::shortcuts::custom::Message), 40 | #[cfg(feature = "page-date")] 41 | DateAndTime(time::date::Message), 42 | #[cfg(feature = "page-default-apps")] 43 | DefaultApps(applications::default_apps::Message), 44 | Desktop(desktop::Message), 45 | DesktopWallpaper(desktop::wallpaper::Message), 46 | #[cfg(feature = "page-workspaces")] 47 | DesktopWorkspaces(desktop::workspaces::Message), 48 | #[cfg(feature = "page-display")] 49 | Displays(display::Message), 50 | #[cfg(feature = "wayland")] 51 | Dock(desktop::dock::Message), 52 | #[cfg(feature = "wayland")] 53 | DockApplet(desktop::dock::applets::Message), 54 | External { 55 | id: String, 56 | message: Vec, 57 | }, 58 | #[cfg(feature = "page-input")] 59 | Input(input::Message), 60 | #[cfg(feature = "page-input")] 61 | Keyboard(input::keyboard::Message), 62 | #[cfg(feature = "page-input")] 63 | KeyboardShortcuts(input::keyboard::shortcuts::Message), 64 | #[cfg(feature = "page-legacy-applications")] 65 | LegacyApplications(applications::legacy_applications::Message), 66 | #[cfg(feature = "page-input")] 67 | ManageWindowShortcuts(input::keyboard::shortcuts::ShortcutMessage), 68 | #[cfg(feature = "page-input")] 69 | MoveWindowShortcuts(input::keyboard::shortcuts::ShortcutMessage), 70 | #[cfg(feature = "page-input")] 71 | NavShortcuts(input::keyboard::shortcuts::ShortcutMessage), 72 | #[cfg(feature = "page-networking")] 73 | Networking(networking::Message), 74 | Page(Entity), 75 | #[cfg(feature = "wayland")] 76 | Panel(desktop::panel::Message), 77 | #[cfg(feature = "wayland")] 78 | PanelApplet(desktop::panel::applets_inner::Message), 79 | #[cfg(feature = "page-power")] 80 | Power(power::Message), 81 | #[cfg(feature = "page-region")] 82 | Region(time::region::Message), 83 | #[cfg(feature = "page-sound")] 84 | Sound(sound::Message), 85 | StartupApps(applications::startup_apps::Message), 86 | #[cfg(feature = "page-users")] 87 | User(system::users::Message), 88 | #[cfg(feature = "page-input")] 89 | SystemShortcuts(input::keyboard::shortcuts::ShortcutMessage), 90 | #[cfg(feature = "page-input")] 91 | TilingShortcuts(input::keyboard::shortcuts::ShortcutMessage), 92 | #[cfg(feature = "page-networking")] 93 | Vpn(networking::vpn::Message), 94 | #[cfg(feature = "page-networking")] 95 | WiFi(networking::wifi::Message), 96 | #[cfg(feature = "page-window-management")] 97 | WindowManagement(desktop::window_management::Message), 98 | #[cfg(feature = "page-networking")] 99 | Wired(networking::wired::Message), 100 | 101 | // Common page functionality 102 | CloseContextDrawer, 103 | } 104 | 105 | impl From for crate::Message { 106 | fn from(message: Message) -> Self { 107 | crate::Message::PageMessage(message) 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/networking/vpn/nmcli.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic::Apply; 5 | use std::process::Stdio; 6 | 7 | pub async fn set_username(connection_name: &str, username: &str) -> Result<(), String> { 8 | tokio::process::Command::new("nmcli") 9 | .args(&["con", "mod", connection_name, "vpn.user-name", username]) 10 | .stderr(Stdio::piped()) 11 | .output() 12 | .await 13 | .apply(crate::utils::map_stderr_output) 14 | } 15 | 16 | pub async fn set_password_flags_none(connection_name: &str) -> Result<(), String> { 17 | tokio::process::Command::new("nmcli") 18 | .args([ 19 | "con", 20 | "mod", 21 | connection_name, 22 | "+vpn.data", 23 | "password-flags=0", 24 | ]) 25 | .stderr(Stdio::piped()) 26 | .output() 27 | .await 28 | .apply(crate::utils::map_stderr_output) 29 | } 30 | 31 | pub async fn set_password(connection_name: &str, password: &str) -> Result<(), String> { 32 | tokio::process::Command::new("nmcli") 33 | .args([ 34 | "con", 35 | "mod", 36 | connection_name, 37 | "vpn.secrets", 38 | &format!("password={password}"), 39 | ]) 40 | .stderr(Stdio::piped()) 41 | .output() 42 | .await 43 | .apply(crate::utils::map_stderr_output) 44 | } 45 | 46 | pub async fn connect(connection_name: &str) -> Result<(), String> { 47 | tokio::process::Command::new("nmcli") 48 | .args(&["con", "up", &connection_name]) 49 | .stderr(Stdio::piped()) 50 | .output() 51 | .await 52 | .apply(crate::utils::map_stderr_output) 53 | } 54 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/power/backend/ppdaemon.rs: -------------------------------------------------------------------------------- 1 | use zbus::proxy; 2 | 3 | #[proxy( 4 | interface = "org.freedesktop.UPower.PowerProfiles", 5 | default_path = "/org/freedesktop/UPower/PowerProfiles", 6 | assume_defaults = true 7 | )] 8 | pub trait PowerProfiles { 9 | fn hold_profile(&self, profile: &str, reason: &str, application_id: &str) -> zbus::Result; 10 | 11 | fn release_profile(&self, cookie: u32) -> zbus::Result<()>; 12 | 13 | #[zbus(signal)] 14 | fn profile_released(&self, cookie: u32) -> zbus::Result<()>; 15 | 16 | #[zbus(property)] 17 | fn actions(&self) -> zbus::Result>; 18 | 19 | #[zbus(property)] 20 | fn active_profile(&self) -> zbus::Result; 21 | #[zbus(property)] 22 | fn set_active_profile(&self, value: &str) -> zbus::Result<()>; 23 | 24 | #[zbus(property)] 25 | fn active_profile_holds( 26 | &self, 27 | ) -> zbus::Result>>; 28 | 29 | #[zbus(property)] 30 | fn performance_degraded(&self) -> zbus::Result; 31 | 32 | #[zbus(property)] 33 | fn performance_inhibited(&self) -> zbus::Result; 34 | 35 | #[zbus(property)] 36 | fn profiles( 37 | &self, 38 | ) -> zbus::Result>>; 39 | 40 | #[zbus(property)] 41 | fn version(&self) -> zbus::Result; 42 | } 43 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/power/backend/s76powerdaemon.rs: -------------------------------------------------------------------------------- 1 | use zbus::proxy; 2 | 3 | #[proxy( 4 | interface = "com.system76.PowerDaemon", 5 | default_path = "/com/system76/PowerDaemon", 6 | assume_defaults = true 7 | )] 8 | pub trait PowerDaemon { 9 | fn balanced(&self) -> zbus::Result<()>; 10 | 11 | fn battery(&self) -> zbus::Result<()>; 12 | 13 | fn get_charge_profiles( 14 | &self, 15 | ) -> zbus::Result>>; 16 | 17 | fn get_charge_thresholds(&self) -> zbus::Result<(u8, u8)>; 18 | 19 | fn get_default_graphics(&self) -> zbus::Result; 20 | 21 | fn get_external_displays_require_dgpu(&self) -> zbus::Result; 22 | 23 | fn get_graphics(&self) -> zbus::Result; 24 | 25 | fn get_graphics_power(&self) -> zbus::Result; 26 | 27 | fn get_profile(&self) -> zbus::Result; 28 | 29 | fn get_switchable(&self) -> zbus::Result; 30 | 31 | fn performance(&self) -> zbus::Result<()>; 32 | 33 | fn set_charge_thresholds(&self, thresholds: &(u8, u8)) -> zbus::Result<()>; 34 | 35 | fn set_graphics(&self, vendor: &str) -> zbus::Result<()>; 36 | 37 | fn set_graphics_power(&self, power: bool) -> zbus::Result<()>; 38 | 39 | #[zbus(signal)] 40 | fn hot_plug_detect(&self, port: u64) -> zbus::Result<()>; 41 | } 42 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/system/firmware.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic_settings_page::Section; 5 | use cosmic_settings_page::{self as page, section}; 6 | use slotmap::SlotMap; 7 | 8 | #[derive(Default)] 9 | pub struct Page { 10 | entity: page::Entity, 11 | } 12 | 13 | impl page::Page for Page { 14 | fn set_id(&mut self, entity: page::Entity) { 15 | self.entity = entity; 16 | } 17 | 18 | fn content( 19 | &self, 20 | sections: &mut SlotMap>, 21 | ) -> Option { 22 | Some(vec![sections.insert(Section::default())]) 23 | } 24 | 25 | fn info(&self) -> page::Info { 26 | page::Info::new("firmware", "firmware-manager-symbolic") 27 | .title(fl!("firmware")) 28 | .description(fl!("firmware", "desc")) 29 | } 30 | } 31 | 32 | impl page::AutoBind for Page {} 33 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/system/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | #[cfg(feature = "page-about")] 5 | pub mod about; 6 | 7 | pub mod firmware; 8 | #[cfg(feature = "page-users")] 9 | pub mod users; 10 | 11 | use cosmic_settings_page as page; 12 | 13 | #[derive(Default)] 14 | pub struct Page { 15 | entity: page::Entity, 16 | } 17 | 18 | impl page::Page for Page { 19 | fn set_id(&mut self, entity: page::Entity) { 20 | self.entity = entity; 21 | } 22 | 23 | fn info(&self) -> page::Info { 24 | page::Info::new("system", "system-users-symbolic").title(fl!("system")) 25 | } 26 | } 27 | 28 | impl page::AutoBind for Page { 29 | fn sub_pages( 30 | mut page: page::Insert, 31 | ) -> page::Insert { 32 | #[cfg(feature = "page-users")] 33 | { 34 | page = page.sub_page::(); 35 | } 36 | 37 | #[cfg(feature = "page-about")] 38 | { 39 | page = page.sub_page::(); 40 | } 41 | 42 | page = page.sub_page::(); 43 | 44 | page 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/system/users/getent.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2024 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use std::io::{BufRead, BufReader}; 5 | use std::process::Stdio; 6 | use std::str::FromStr; 7 | 8 | pub fn passwd(range: (u64, u64)) -> Vec { 9 | let spawn_res = std::process::Command::new("getent") 10 | .arg("passwd") 11 | .stdin(Stdio::null()) 12 | .stderr(Stdio::null()) 13 | .stdout(Stdio::piped()) 14 | .spawn(); 15 | 16 | let mut users = Vec::new(); 17 | 18 | if let Ok(mut child) = spawn_res { 19 | let stdout = child.stdout.take().unwrap(); 20 | let mut reader = BufReader::new(stdout); 21 | let mut line = String::new(); 22 | 23 | loop { 24 | line.clear(); 25 | match reader.read_line(&mut line) { 26 | Ok(0) | Err(_) => break, 27 | _ => (), 28 | } 29 | 30 | if let Ok(user) = line.trim().parse::() { 31 | if user.uid >= range.0 && user.uid <= range.1 { 32 | users.push(user); 33 | } 34 | } 35 | } 36 | } 37 | 38 | users 39 | } 40 | 41 | pub fn group() -> Vec { 42 | let spawn_res = std::process::Command::new("getent") 43 | .arg("group") 44 | .stdin(Stdio::null()) 45 | .stderr(Stdio::null()) 46 | .stdout(Stdio::piped()) 47 | .spawn(); 48 | 49 | let mut groups = Vec::new(); 50 | 51 | if let Ok(mut child) = spawn_res { 52 | let stdout = child.stdout.take().unwrap(); 53 | let mut reader = BufReader::new(stdout); 54 | let mut line = String::new(); 55 | 56 | loop { 57 | line.clear(); 58 | match reader.read_line(&mut line) { 59 | Ok(0) | Err(_) => break, 60 | _ => (), 61 | } 62 | 63 | if let Ok(group) = line.trim().parse::() { 64 | groups.push(group); 65 | } 66 | } 67 | } 68 | 69 | groups 70 | } 71 | 72 | #[derive(Debug, Clone, Eq, PartialEq)] 73 | pub struct Group { 74 | pub uid: u64, 75 | pub name: Box, 76 | pub users: Vec>, 77 | } 78 | 79 | impl FromStr for Group { 80 | type Err = (); 81 | 82 | fn from_str(line: &str) -> Result { 83 | let mut fields = line.split(':'); 84 | 85 | Ok(Group { 86 | name: fields.next().ok_or(())?.into(), 87 | uid: fields.nth(1).ok_or(())?.parse().map_err(|_| ())?, 88 | users: fields 89 | .next() 90 | .ok_or(())? 91 | .split(',') 92 | .map(Box::from) 93 | .collect::>(), 94 | }) 95 | } 96 | } 97 | 98 | #[derive(Debug, Clone, Eq, PartialEq)] 99 | pub struct PasswdUser { 100 | pub uid: u64, 101 | pub username: Box, 102 | pub full_name: Box, 103 | } 104 | 105 | impl FromStr for PasswdUser { 106 | type Err = (); 107 | 108 | fn from_str(line: &str) -> Result { 109 | let mut fields = line.split(':'); 110 | 111 | Ok(PasswdUser { 112 | username: fields.next().ok_or(())?.into(), 113 | uid: fields.nth(1).ok_or(())?.parse().map_err(|_| ())?, 114 | full_name: fields.nth(1).ok_or(())?.split(',').next().ok_or(())?.into(), 115 | }) 116 | } 117 | } 118 | 119 | #[cfg(test)] 120 | mod tests { 121 | use super::PasswdUser; 122 | 123 | #[test] 124 | fn passwd() { 125 | const EXAMPLE: &str = 126 | "speech-dispatcher:x:109:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false"; 127 | 128 | assert_eq!( 129 | EXAMPLE.parse::(), 130 | Ok(PasswdUser { 131 | username: Box::from("speech-dispatcher"), 132 | uid: 109, 133 | full_name: Box::from("Speech Dispatcher") 134 | }) 135 | ); 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /cosmic-settings/src/pages/time/mod.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic_settings_page as page; 5 | 6 | #[cfg(feature = "page-date")] 7 | pub mod date; 8 | #[cfg(feature = "page-region")] 9 | pub mod region; 10 | 11 | #[derive(Default)] 12 | pub struct Page { 13 | entity: page::Entity, 14 | } 15 | 16 | impl page::Page for Page { 17 | fn set_id(&mut self, entity: page::Entity) { 18 | self.entity = entity; 19 | } 20 | 21 | fn info(&self) -> page::Info { 22 | page::Info::new("time", "preferences-time-and-language-symbolic") 23 | .title(fl!("time")) 24 | .description(fl!("time", "desc")) 25 | } 26 | } 27 | 28 | impl page::AutoBind for Page { 29 | fn sub_pages( 30 | mut page: page::Insert, 31 | ) -> page::Insert { 32 | #[cfg(feature = "page-date")] 33 | { 34 | page = page.sub_page::(); 35 | } 36 | 37 | #[cfg(feature = "page-region")] 38 | { 39 | page = page.sub_page::(); 40 | } 41 | 42 | page 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /cosmic-settings/src/subscription/daytime.rs: -------------------------------------------------------------------------------- 1 | use std::any::TypeId; 2 | 3 | use ashpd::desktop::location::{Location, LocationProxy}; 4 | use cosmic::iced::{ 5 | Subscription, 6 | futures::{SinkExt, StreamExt, channel::mpsc::Sender, future}, 7 | stream, 8 | }; 9 | use sunrise::{Coordinates, SolarDay, SolarEvent}; 10 | use tokio::select; 11 | 12 | pub fn daytime() -> cosmic::iced::Subscription { 13 | struct Sunset; 14 | Subscription::run_with_id( 15 | TypeId::of::(), 16 | stream::channel(2, |tx| async { 17 | if let Err(err) = inner(tx).await { 18 | tracing::error!("Sunset subscription error: {:?}", err); 19 | } 20 | future::pending().await 21 | }), 22 | ) 23 | } 24 | 25 | enum Event { 26 | Daytime, 27 | LocationUpdated(Location), 28 | } 29 | 30 | async fn inner(mut tx: Sender) -> anyhow::Result<()> { 31 | let location_proxy = LocationProxy::new().await?; 32 | let mut updates = location_proxy.receive_location_updated().await?; 33 | 34 | let mut next = updates.next().await.map(Event::LocationUpdated); 35 | let mut loc = None; 36 | 37 | while let Some(e) = next { 38 | match e { 39 | Event::LocationUpdated(l) => { 40 | loc = Some(l); 41 | } 42 | Event::Daytime => {} 43 | }; 44 | let Some(loc) = loc.as_ref() else { 45 | break; 46 | }; 47 | 48 | let coord = Coordinates::new(loc.latitude(), loc.longitude()).unwrap(); 49 | let now = chrono::Local::now(); 50 | let date = now.date_naive(); 51 | let now_in_seconds = now.timestamp(); 52 | let current_solar_day = SolarDay::new(coord, date); 53 | let sunrise = current_solar_day 54 | .event_time(SolarEvent::Sunrise) 55 | .timestamp(); 56 | let sunset = current_solar_day.event_time(SolarEvent::Sunset).timestamp(); 57 | let daytime = now_in_seconds >= sunrise && now_in_seconds <= sunset; 58 | tx.send(daytime).await?; 59 | 60 | let sleep = if daytime { 61 | sunset - now_in_seconds 62 | } else if now_in_seconds < sunset { 63 | sunrise - now_in_seconds 64 | } else { 65 | let tmrw = now + chrono::Duration::days(1); 66 | let tmrw_sunrise = SolarDay::new(coord, tmrw.date_naive()) 67 | .event_time(SolarEvent::Sunrise) 68 | .timestamp(); 69 | tmrw_sunrise - now_in_seconds 70 | }; 71 | next = select! { 72 | () = tokio::time::sleep(tokio::time::Duration::from_secs(sleep as u64)) => { 73 | Some(Event::Daytime) 74 | }, 75 | l = updates.next() => if let Some(l) = l { 76 | Some(Event::LocationUpdated(l)) 77 | } else { 78 | break; 79 | } 80 | }; 81 | } 82 | Err(anyhow::anyhow!("Location updates ended unexpectedly.")) 83 | } 84 | -------------------------------------------------------------------------------- /cosmic-settings/src/subscription/desktop_files.rs: -------------------------------------------------------------------------------- 1 | use cosmic::{ 2 | iced::{Subscription, stream}, 3 | iced_futures::futures::{self, SinkExt}, 4 | }; 5 | use notify::{Config, Event, RecommendedWatcher, RecursiveMode, Watcher}; 6 | use std::fmt::Debug; 7 | use std::hash::Hash; 8 | use tokio::sync::mpsc::{UnboundedReceiver, unbounded_channel}; 9 | 10 | #[derive(Debug)] 11 | pub enum State { 12 | Ready, 13 | Waiting { 14 | watcher: RecommendedWatcher, 15 | rx: UnboundedReceiver>, 16 | }, 17 | Finished, 18 | } 19 | 20 | #[derive(Debug, Clone, Copy)] 21 | pub enum DesktopFileEvent { 22 | Changed, 23 | } 24 | 25 | pub fn desktop_files( 26 | id: I, 27 | ) -> cosmic::iced::Subscription { 28 | Subscription::run_with_id( 29 | id, 30 | stream::channel(50, move |mut output| async move { 31 | let mut state = State::Ready; 32 | 33 | loop { 34 | state = start_watching(state, &mut output).await; 35 | } 36 | }), 37 | ) 38 | } 39 | 40 | async fn start_watching( 41 | state: State, 42 | output: &mut futures::channel::mpsc::Sender, 43 | ) -> State { 44 | match state { 45 | State::Ready => { 46 | let paths = freedesktop_desktop_entry::default_paths(); 47 | // TODO log errors 48 | if let Ok((mut watcher, rx)) = async_watcher() { 49 | for path in paths { 50 | let _ = watcher.watch(path.as_ref(), RecursiveMode::Recursive); 51 | } 52 | 53 | _ = output.send(DesktopFileEvent::Changed).await; 54 | State::Waiting { watcher, rx } 55 | } else { 56 | State::Finished 57 | } 58 | } 59 | State::Waiting { watcher, rx } => { 60 | if let Some(rx) = async_watch(rx).await { 61 | _ = output.send(DesktopFileEvent::Changed).await; 62 | State::Waiting { watcher, rx } 63 | } else { 64 | State::Finished 65 | } 66 | } 67 | State::Finished => cosmic::iced::futures::future::pending().await, 68 | } 69 | } 70 | 71 | fn async_watcher() -> notify::Result<(RecommendedWatcher, UnboundedReceiver>)> 72 | { 73 | let (tx, rx) = unbounded_channel(); 74 | 75 | // Automatically select the best implementation for your platform. 76 | // You can also access each implementation directly e.g. INotifyWatcher. 77 | let watcher = RecommendedWatcher::new( 78 | move |res| { 79 | _ = tx.send(res); 80 | }, 81 | Config::default(), 82 | )?; 83 | 84 | Ok((watcher, rx)) 85 | } 86 | 87 | async fn async_watch( 88 | mut rx: UnboundedReceiver>, 89 | ) -> Option>> { 90 | // TODO log errors 91 | if let Some(res) = rx.recv().await { 92 | match res { 93 | Ok(_) => return Some(rx), 94 | Err(_) => return None, 95 | } 96 | } 97 | 98 | None 99 | } 100 | -------------------------------------------------------------------------------- /cosmic-settings/src/subscription/mod.rs: -------------------------------------------------------------------------------- 1 | // TODO: Do not use subscriptions for pages. 2 | mod desktop_files; 3 | pub use desktop_files::*; 4 | #[cfg(feature = "ashpd")] 5 | mod daytime; 6 | #[cfg(feature = "ashpd")] 7 | pub use daytime::*; 8 | -------------------------------------------------------------------------------- /cosmic-settings/src/theme.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use cosmic::{iced_core::Border, theme}; 5 | 6 | #[must_use] 7 | pub fn display_container_frame() -> cosmic::theme::Container<'static> { 8 | theme::Container::custom(|theme| { 9 | let cosmic = theme.cosmic(); 10 | cosmic::widget::container::Style { 11 | icon_color: None, 12 | text_color: None, 13 | background: Some(cosmic::iced::Background::Color(cosmic::iced::Color::WHITE)), 14 | border: Border { 15 | color: cosmic::iced::Color::WHITE, 16 | radius: cosmic.corner_radii.radius_xs.into(), 17 | width: 3.0, 18 | }, 19 | shadow: Default::default(), 20 | } 21 | }) 22 | } 23 | 24 | #[must_use] 25 | pub fn display_container_screen() -> cosmic::theme::Container<'static> { 26 | theme::Container::custom(|theme| { 27 | let cosmic = theme.cosmic(); 28 | cosmic::widget::container::Style { 29 | icon_color: None, 30 | text_color: None, 31 | background: Some(cosmic::iced::Background::Color(cosmic::iced::Color::BLACK)), 32 | border: Border { 33 | color: cosmic::iced::Color::BLACK, 34 | radius: cosmic.corner_radii.radius_0.into(), 35 | width: 0.0, 36 | }, 37 | shadow: Default::default(), 38 | } 39 | }) 40 | } 41 | -------------------------------------------------------------------------------- /cosmic-settings/src/utils.rs: -------------------------------------------------------------------------------- 1 | use std::{future::Future, io, process}; 2 | 3 | use futures::future::select; 4 | 5 | /// Normalize the labeling of displays across settings pages. 6 | pub fn display_name(name: &str, physical: (u32, u32)) -> String { 7 | let inches = ((physical.0.pow(2) + physical.1.pow(2)) as f32).sqrt() * 0.039_370_1; 8 | let inches_string = format!("{inches:.1}\""); 9 | 10 | match name { 11 | "eDP-1" | "LVDS1" => { 12 | fl!("display", "laptop", size = inches_string.as_str()) 13 | } 14 | output => fl!( 15 | "display", 16 | "external", 17 | size = inches_string.as_str(), 18 | output = output 19 | ), 20 | } 21 | } 22 | 23 | /// Spawn a background tasks and forward its messages 24 | pub fn forward_event_loop + Send + 'static>( 25 | event_loop: impl FnOnce(async_fn_stream::StreamEmitter) -> T + Send + 'static, 26 | ) -> (tokio::sync::oneshot::Sender<()>, cosmic::Task) { 27 | let (cancel_tx, cancel_rx) = tokio::sync::oneshot::channel::<()>(); 28 | 29 | let task = cosmic::Task::stream(async_fn_stream::fn_stream(|emitter| async move { 30 | select( 31 | std::pin::pin!(cancel_rx), 32 | std::pin::pin!(event_loop(emitter)), 33 | ) 34 | .await; 35 | })); 36 | 37 | (cancel_tx, task) 38 | } 39 | 40 | /// On process failure, return stderr as `String`. 41 | pub fn map_stderr_output(result: io::Result) -> Result<(), String> { 42 | result.map_err(|why| why.to_string()).and_then(|output| { 43 | if !output.status.success() { 44 | Err(String::from_utf8(output.stderr).unwrap_or_default()) 45 | } else { 46 | Ok(()) 47 | } 48 | }) 49 | } 50 | 51 | /// Creates a slab with predefined items 52 | #[macro_export] 53 | macro_rules! slab { 54 | ( $descriptions:ident { $( $txt_id:ident = $txt_expr:expr; )+ } ) => { 55 | let mut $descriptions = slab::Slab::new(); 56 | 57 | $( 58 | let $txt_id = $descriptions.insert($txt_expr); 59 | )+ 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | cosmic-settings (0.1.0) jammy; urgency=medium 2 | 3 | * Project in development 4 | 5 | -- Michael Murphy Wed, 25 Jan 2023 16:27:38 +0100 6 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: cosmic-settings 2 | Section: utils 3 | Priority: optional 4 | Maintainer: Michael Murphy 5 | Build-Depends: 6 | debhelper-compat (=13), 7 | cmake, 8 | fonts-open-sans, 9 | just, 10 | libclang-dev, 11 | libexpat1-dev, 12 | libfontconfig-dev, 13 | libfreetype-dev, 14 | libinput-dev, 15 | libpipewire-0.3-dev, 16 | libpulse-dev, 17 | libudev-dev, 18 | libwayland-dev, 19 | libxkbcommon-dev, 20 | mold, 21 | pkg-config, 22 | rust-all, 23 | Standards-Version: 4.6.2 24 | Homepage: https://github.com/pop-os/cosmic-settings 25 | 26 | Package: cosmic-settings 27 | Architecture: amd64 arm64 28 | Depends: 29 | ${misc:Depends}, 30 | ${shlibs:Depends}, 31 | accountsservice, 32 | cosmic-randr, 33 | gettext, 34 | iso-codes, 35 | network-manager-gnome, 36 | network-manager-openvpn, 37 | network-manager-openvpn-gnome, 38 | xkb-data, 39 | Recommends: adw-gtk3 40 | Description: Settings application for the COSMIC desktop environment 41 | Settings application for the COSMIC desktop environment 42 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: cosmic-settings 3 | Upstream-Contact: Michael Murphy 4 | Source: https://github.com/pop-os/cosmic-settings 5 | Files: * 6 | Copyright: System76 7 | License: GPL-3.0 -------------------------------------------------------------------------------- /debian/install: -------------------------------------------------------------------------------- 1 | /usr/bin/cosmic-settings 2 | /usr/share/applications/com.system76.CosmicSettings.desktop 3 | /usr/share/applications/com.system76.CosmicSettings.About.desktop 4 | /usr/share/applications/com.system76.CosmicSettings.Accessibility.desktop 5 | /usr/share/applications/com.system76.CosmicSettings.Appearance.desktop 6 | /usr/share/applications/com.system76.CosmicSettings.Applications.desktop 7 | /usr/share/applications/com.system76.CosmicSettings.Bluetooth.desktop 8 | /usr/share/applications/com.system76.CosmicSettings.DateTime.desktop 9 | /usr/share/applications/com.system76.CosmicSettings.DefaultApps.desktop 10 | /usr/share/applications/com.system76.CosmicSettings.Desktop.desktop 11 | /usr/share/applications/com.system76.CosmicSettings.Displays.desktop 12 | /usr/share/applications/com.system76.CosmicSettings.Dock.desktop 13 | /usr/share/applications/com.system76.CosmicSettings.Firmware.desktop 14 | /usr/share/applications/com.system76.CosmicSettings.Input.desktop 15 | /usr/share/applications/com.system76.CosmicSettings.Keyboard.desktop 16 | /usr/share/applications/com.system76.CosmicSettings.LegacyApplications.desktop 17 | /usr/share/applications/com.system76.CosmicSettings.Mouse.desktop 18 | /usr/share/applications/com.system76.CosmicSettings.Network.desktop 19 | /usr/share/applications/com.system76.CosmicSettings.Notifications.desktop 20 | /usr/share/applications/com.system76.CosmicSettings.Panel.desktop 21 | /usr/share/applications/com.system76.CosmicSettings.Power.desktop 22 | /usr/share/applications/com.system76.CosmicSettings.RegionLanguage.desktop 23 | /usr/share/applications/com.system76.CosmicSettings.Sound.desktop 24 | /usr/share/applications/com.system76.CosmicSettings.System.desktop 25 | /usr/share/applications/com.system76.CosmicSettings.Time.desktop 26 | /usr/share/applications/com.system76.CosmicSettings.Touchpad.desktop 27 | /usr/share/applications/com.system76.CosmicSettings.Users.desktop 28 | /usr/share/applications/com.system76.CosmicSettings.Vpn.desktop 29 | /usr/share/applications/com.system76.CosmicSettings.Wallpaper.desktop 30 | /usr/share/applications/com.system76.CosmicSettings.WindowManagement.desktop 31 | /usr/share/applications/com.system76.CosmicSettings.Wired.desktop 32 | /usr/share/applications/com.system76.CosmicSettings.Wireless.desktop 33 | /usr/share/applications/com.system76.CosmicSettings.Workspaces.desktop 34 | /usr/share/metainfo/com.system76.CosmicSettings.metainfo.xml 35 | /usr/share/polkit-1/actions/com.system76.CosmicSettings.Users.policy 36 | /usr/share/polkit-1/rules.d/cosmic-settings.rules 37 | /usr/share/cosmic/com.system76.CosmicTheme.Dark 38 | /usr/share/cosmic/com.system76.CosmicTheme.Dark.Builder 39 | /usr/share/cosmic/com.system76.CosmicTheme.Light 40 | /usr/share/cosmic/com.system76.CosmicTheme.Light.Builder 41 | /usr/share/cosmic/com.system76.CosmicTheme.Mode 42 | /usr/share/icons/hicolor 43 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | export DESTDIR = debian/tmp 4 | export VENDOR ?= 1 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_clean: 10 | if ! ischroot && test "${VENDOR}" = "1"; then \ 11 | just vendor; \ 12 | fi 13 | 14 | override_dh_auto_build: 15 | just build-vendored 16 | 17 | override_dh_auto_install: 18 | just rootdir=$(DESTDIR) install 19 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) -------------------------------------------------------------------------------- /debian/source/options: -------------------------------------------------------------------------------- 1 | tar-ignore=.github 2 | tar-ignore=.vscode 3 | tar-ignore=vendor 4 | tar-ignore=target -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "nixpkgs": { 4 | "locked": { 5 | "lastModified": 1748248602, 6 | "narHash": "sha256-LanRAm0IRpL36KpCKSknEwkBFvTLc9mDHKeAmfTrHwg=", 7 | "owner": "NixOS", 8 | "repo": "nixpkgs", 9 | "rev": "ad331efcaf680eb1c838cb339472399ea7b3cdab", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "NixOS", 14 | "ref": "nixpkgs-unstable", 15 | "repo": "nixpkgs", 16 | "type": "github" 17 | } 18 | }, 19 | "root": { 20 | "inputs": { 21 | "nixpkgs": "nixpkgs", 22 | "utils": "utils" 23 | } 24 | }, 25 | "systems": { 26 | "locked": { 27 | "lastModified": 1681028828, 28 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 29 | "owner": "nix-systems", 30 | "repo": "default", 31 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 32 | "type": "github" 33 | }, 34 | "original": { 35 | "owner": "nix-systems", 36 | "repo": "default", 37 | "type": "github" 38 | } 39 | }, 40 | "utils": { 41 | "inputs": { 42 | "systems": "systems" 43 | }, 44 | "locked": { 45 | "lastModified": 1731533236, 46 | "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 47 | "owner": "numtide", 48 | "repo": "flake-utils", 49 | "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 50 | "type": "github" 51 | }, 52 | "original": { 53 | "owner": "numtide", 54 | "repo": "flake-utils", 55 | "type": "github" 56 | } 57 | } 58 | }, 59 | "root": "root", 60 | "version": 7 61 | } 62 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "Settings application for the COSMIC desktop environment"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 | utils.url = "github:numtide/flake-utils"; 7 | }; 8 | 9 | outputs = { self, nixpkgs, utils }: 10 | utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: 11 | let 12 | pkgs = import nixpkgs { inherit system; }; 13 | 14 | runtimeDependencies = with pkgs; [ 15 | wayland 16 | # libglvnd # For libEGL 17 | vulkan-loader 18 | ]; 19 | 20 | in { 21 | devShells.default = with pkgs; mkShell rec { 22 | nativeBuildInputs = with pkgs; [ 23 | just 24 | pkg-config 25 | ]; 26 | 27 | buildInputs = with pkgs; [ 28 | clang 29 | cargo 30 | rustc 31 | rustfmt 32 | systemdMinimal 33 | bashInteractive 34 | libxkbcommon 35 | freetype 36 | fontconfig 37 | expat 38 | lld 39 | desktop-file-utils 40 | stdenv.cc.cc.lib 41 | libinput 42 | libpulseaudio.dev 43 | pipewire.dev 44 | ]; 45 | 46 | RUST_SRC_PATH = rustPlatform.rustLibSrc; 47 | RUSTFLAGS = "-C link-arg=-Wl,-rpath,${pkgs.lib.makeLibraryPath runtimeDependencies}"; 48 | LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib"; 49 | LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; 50 | }; 51 | } 52 | ); 53 | } 54 | -------------------------------------------------------------------------------- /page/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cosmic-settings-page" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | derive_setters = "0.1.6" 8 | regex = "1.11.1" 9 | slotmap = "1.0.7" 10 | libcosmic = { workspace = true } 11 | downcast-rs = "1.2.1" 12 | tokio.workspace = true 13 | url = "2.5.4" 14 | slab = "0.4.9" 15 | -------------------------------------------------------------------------------- /page/README.md: -------------------------------------------------------------------------------- 1 | # cosmic-settings-page 2 | 3 | This module contains the APIs for creating and managing settings pages. 4 | 5 | - A [Page](./src/lib.rs) implements the `Page` and `AutoBind` traits. 6 | - A [Section](./src/section.rs) is a subset of a page, with a view function to generate the UI. 7 | - The [Binder](./src/binder.rs) holds all of the pages, their sections, and additional metadata associated with them 8 | -------------------------------------------------------------------------------- /page/src/insert.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use super::{AutoBind, Binder, Content, Entity}; 5 | 6 | /// An inserted page which may have additional properties assigned to it. 7 | pub struct Insert<'a, Message> { 8 | pub model: &'a mut Binder, 9 | pub id: Entity, 10 | } 11 | 12 | impl Insert<'_, Message> { 13 | #[must_use] 14 | #[inline] 15 | pub fn id(self) -> Entity { 16 | self.id 17 | } 18 | 19 | #[must_use] 20 | #[inline] 21 | pub fn content(self, content: Content) -> Self { 22 | self.model.content.insert(self.id, content); 23 | self 24 | } 25 | 26 | /// Adds a page and associates it with its parent page. 27 | #[allow(clippy::return_self_not_must_use)] 28 | #[allow(clippy::must_use_candidate)] 29 | pub fn sub_page>(self) -> Self { 30 | let sub_page = self.model.register::

().id(); 31 | self.sub_page_inner(sub_page) 32 | } 33 | 34 | #[inline(never)] 35 | fn sub_page_inner(self, sub_page: Entity) -> Self { 36 | self.model.info[sub_page].parent = Some(self.id); 37 | 38 | self.model 39 | .sub_pages 40 | .entry(self.id) 41 | .expect("parent page missing") 42 | .and_modify(|v| v.push(sub_page)) 43 | .or_insert_with(|| vec![sub_page]); 44 | 45 | self 46 | } 47 | 48 | #[allow(clippy::return_self_not_must_use)] 49 | #[allow(clippy::must_use_candidate)] 50 | pub fn sub_page_with_id>(&mut self) -> Entity { 51 | let sub_page = self.model.register::

().id(); 52 | self.sub_page_with_id_inner(sub_page) 53 | } 54 | 55 | #[inline(never)] 56 | fn sub_page_with_id_inner(&mut self, sub_page: Entity) -> Entity { 57 | self.model.info[sub_page].parent = Some(self.id); 58 | 59 | self.model 60 | .sub_pages 61 | .entry(self.id) 62 | .expect("parent page missing") 63 | .and_modify(|v| v.push(sub_page)) 64 | .or_insert_with(|| vec![sub_page]); 65 | 66 | sub_page 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /page/src/section.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | use derive_setters::Setters; 5 | use regex::Regex; 6 | use slab::Slab; 7 | 8 | use crate::{Binder, Page}; 9 | 10 | slotmap::new_key_type! { 11 | /// The unique ID of a section of page. 12 | pub struct Entity; 13 | } 14 | 15 | pub type ShowWhileFn = Box Fn(&'a dyn Page) -> bool>; 16 | 17 | pub type ViewFn = Box< 18 | dyn for<'a> Fn( 19 | &'a Binder, 20 | &'a dyn Page, 21 | &'a Section, 22 | ) -> cosmic::Element<'a, Message>, 23 | >; 24 | 25 | /// A searchable sub-component of a page. 26 | /// 27 | /// Searches can group multiple sections together. 28 | #[derive(Setters)] 29 | #[must_use] 30 | pub struct Section { 31 | #[setters(into)] 32 | pub title: String, 33 | #[setters(into)] 34 | pub descriptions: Slab, 35 | #[setters(skip)] 36 | pub show_while: Option>, 37 | #[setters(skip)] 38 | pub view_fn: ViewFn, 39 | #[setters(bool)] 40 | pub search_ignore: bool, 41 | } 42 | 43 | impl Default for Section { 44 | fn default() -> Self { 45 | Self { 46 | title: String::new(), 47 | descriptions: Slab::new(), 48 | show_while: None, 49 | view_fn: Box::new(unimplemented), 50 | search_ignore: false, 51 | } 52 | } 53 | } 54 | 55 | impl Section { 56 | #[must_use] 57 | #[inline] 58 | pub fn search_matches(&self, rule: &Regex) -> bool { 59 | if self.search_ignore { 60 | return false; 61 | } 62 | 63 | if rule.is_match(self.title.as_str()) { 64 | return true; 65 | } 66 | 67 | for (_, description) in &self.descriptions { 68 | if rule.is_match(description) { 69 | return true; 70 | } 71 | } 72 | 73 | false 74 | } 75 | 76 | #[inline] 77 | pub fn show_while>( 78 | mut self, 79 | func: impl for<'a> Fn(&'a Model) -> bool + 'static, 80 | ) -> Self { 81 | self.show_while = Some(Box::new(move |model: &dyn Page| { 82 | let model = model.downcast_ref::().unwrap_or_else(|| { 83 | panic!( 84 | "page model type mismatch: expected {}", 85 | std::any::type_name::() 86 | ) 87 | }); 88 | 89 | func(model) 90 | })); 91 | self 92 | } 93 | 94 | /// # Panics 95 | /// 96 | /// Will panic if the `Model` type does not match the page type. 97 | #[inline] 98 | pub fn view>( 99 | mut self, 100 | func: impl for<'a> Fn( 101 | &'a Binder, 102 | &'a Model, 103 | &'a Section, 104 | ) -> cosmic::Element<'a, Message> 105 | + 'static, 106 | ) -> Self { 107 | self.view_fn = Box::new(move |binder, model: &dyn Page, section| { 108 | let model = model.downcast_ref::().unwrap_or_else(|| { 109 | panic!( 110 | "page model type mismatch: expected {}", 111 | std::any::type_name::() 112 | ) 113 | }); 114 | 115 | func(binder, model, section) 116 | }); 117 | self 118 | } 119 | } 120 | 121 | #[must_use] 122 | #[inline] 123 | pub fn unimplemented<'a, Message: 'static>( 124 | _binder: &'a Binder, 125 | _page: &'a dyn Page, 126 | _section: &'a Section, 127 | ) -> cosmic::Element<'a, Message> { 128 | cosmic::widget::settings::view_column(vec![cosmic::widget::settings::section().into()]).into() 129 | } 130 | -------------------------------------------------------------------------------- /pages/system/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cosmic-settings-system" 3 | version = "0.1.0" 4 | edition = "2021" 5 | license = "GPL-3.0-only" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | byte-unit = "5.1.6" 11 | const_format = "0.2.34" 12 | concat-in-place = "1.1.0" 13 | sysinfo = "0.31.4" 14 | memchr = "2.7.4" 15 | 16 | [dependencies.bumpalo] 17 | version = "3.17.0" 18 | features = ["collections"] 19 | -------------------------------------------------------------------------------- /pages/system/src/lib.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2023 System76 2 | // SPDX-License-Identifier: GPL-3.0-only 3 | 4 | pub mod about; 5 | -------------------------------------------------------------------------------- /pages/wallpapers/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cosmic-settings-wallpaper" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | cosmic-bg-config = { workspace = true } 10 | cosmic-config = { workspace = true } 11 | cosmic-randr-shell = { workspace = true } 12 | dirs = "5.0.1" 13 | eyre = "0.6.12" 14 | # Upstream version 5.0.0 has compilation error on Redox's toolchain 15 | fast_image_resize = { git = "https://github.com/jackpot51/fast_image_resize.git", features = [ 16 | "image", 17 | ] } 18 | freedesktop-icons = { package = "cosmic-freedesktop-icons", git = "https://github.com/pop-os/freedesktop-icons" } 19 | futures-lite = "2.6.0" 20 | futures-util = "0.3.31" 21 | image = "0.25.5" 22 | infer = "0.16.0" 23 | jxl-oxide = "0.11.3" 24 | tokio = { version = "1.44.1", features = ["sync"] } 25 | tracing = "0.1.41" 26 | -------------------------------------------------------------------------------- /resources/accent_palette_dark.ron: -------------------------------------------------------------------------------- 1 | // Example dark accent palette 2 | [ 3 | // Blue 4 | (red: 0.3882353, green: 0.81568627, blue: 0.87450981, alpha: 1.0), 5 | 6 | // Indigo 7 | (red: 0.63137255, green: 0.75294118, blue: 0.92156863, alpha: 1.0), 8 | 9 | // Purple 10 | (red: 0.90588235, green: 0.61176471, blue: 0.99607843, alpha: 1.0), 11 | 12 | // Pink 13 | (red: 1.0, green: 0.61176471, blue: 0.69411765, alpha: 1.0), 14 | 15 | // Red 16 | (red: 0.99215686, green: 0.63137255, blue: 0.62745098, alpha: 1.0), 17 | 18 | // Orange 19 | (red: 1.0, green: 0.67843137, blue: 0.0, alpha: 1.0), 20 | 21 | // Yellow 22 | (red: 0.96862745, green: 0.87843137, blue: 0.38431373, alpha: 1.0), 23 | 24 | // Green 25 | (red: 0.57254902, green: 0.81176471, blue: 0.61176471, alpha: 1.0), 26 | 27 | // Warm Grey 28 | (red: 0.79215686, green: 0.72941176, blue: 0.70588235, alpha: 1.0) 29 | ] 30 | -------------------------------------------------------------------------------- /resources/accent_palette_light.ron: -------------------------------------------------------------------------------- 1 | // Example light accent palette 2 | [ 3 | // Blue 4 | (red: 0.0, green: 0.32156863, blue: 0.35294118, alpha: 1.0), 5 | 6 | // Indigo 7 | (red: 0.18039216, green: 0.28627451, blue: 0.42745098, alpha: 1.0), 8 | 9 | // Purple 10 | (red: 0.40784314, green: 0.12941176, blue: 0.48627451, alpha: 1.0), 11 | 12 | // Pink 13 | (red: 0.52549020, green: 0.01568627, blue: 0.22745098, alpha: 1.0), 14 | 15 | // Red 16 | (red: 0.47058824, green: 0.16078431, blue: 0.18039216, alpha: 1.0), 17 | 18 | // Orange 19 | (red: 0.38431373, green: 0.25098039, blue: 0.0, alpha: 1.0), 20 | 21 | // Yellow 22 | (red: 0.32549020, green: 0.28235294, blue: 0.0, alpha: 1.0), 23 | 24 | // Green 25 | (red: 0.09411765, green: 0.33333333, blue: 0.16078431, alpha: 1.0), 26 | 27 | // Warm Grey 28 | (red: 0.33333333, green: 0.27843137, blue: 0.25882353, alpha: 1.0) 29 | ] 30 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.About.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=About 3 | Name[zh_CN]=关于 4 | Name[pl]=O systemie 5 | Name[hu]=Rendszerinformáció 6 | Name[pt]=Sobre 7 | Name[nl]=Over 8 | Comment=Device name, hardware information, operating system defaults. 9 | Comment[zh_CN]=设备名称、硬件信息、操作系统默认设置 10 | Comment[pl]=Nazwa urządzenia, informacje o sprzęcie i systemie operacyjnym. 11 | Comment[hu]=Eszköznév, hardverinformációk és az operációs rendszer alapértelmezett beállításai. 12 | Comment[pt]=Nome do dispositivo, informações de hardware e padrões do sistema operacional. 13 | Comment[nl]=Apparaatnaam, hardware-informatie en standaarden voor het besturingssysteem. 14 | Type=Settings 15 | Exec=cosmic-settings about 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-about 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Accessibility.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Accessibility 3 | Name[zh_CN]=辅助功能 4 | Name[hu]=Akadálymentesség 5 | Name[pt]=Acessibilidade 6 | Name[nl]=Toegankelijkheid 7 | Comment=Accessibility settings. 8 | Comment[zh_CN]=辅助功能设置 9 | Comment[hu]=Akadálymentességi beállítások. 10 | Comment[pt]=Configurações de acessibilidade. 11 | Comment[nl]=Toegankelijkheidsinstellingen. 12 | Type=Settings 13 | Exec=cosmic-settings accessibility 14 | Terminal=false 15 | Categories=COSMIC 16 | Keywords=COSMIC;theme; 17 | NoDisplay=true 18 | OnlyShowIn=COSMIC 19 | Icon=preferences-desktop-accessibility 20 | StartupNotify=true 21 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Appearance.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Appearance 3 | Name[zh_CN]=外观 4 | Name[pl]=Wygląd 5 | Name[hu]=Megjelenés 6 | Name[pt]=Aparência 7 | Name[nl]=Weergave 8 | Comment=Accent colors and theming. 9 | Comment[zh_CN]=强调色和个性化 10 | Comment[pl]=Kolory akcentów i styl. 11 | Comment[hu]=Kiemelő színek és téma. 12 | Comment[pt]=Cores de destaque e temas. 13 | Comment[nl]=Accentkleuren en thema's. 14 | Type=Settings 15 | Exec=cosmic-settings appearance 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC;theme; 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-appearance 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Applications.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Applications 3 | Name[zh_CN]=应用程序 4 | Name[hu]=Alkalmazások 5 | Name[pt]=Aplicativos 6 | Name[nl]=Toepassingen 7 | Comment=Manage application settings. 8 | Comment[zh_CN]=管理应用程序设置 9 | Comment[hu]=Alkalmazásbeállítások kezelése. 10 | Comment[pt]=Gerenciar configurações de aplicativos. 11 | Comment[nl]=Instellingen voor toepassingen beheren. 12 | Type=Settings 13 | Exec=cosmic-settings applications 14 | Terminal=false 15 | Categories=COSMIC 16 | Keywords=COSMIC 17 | NoDisplay=true 18 | OnlyShowIn=COSMIC 19 | Icon=preferences-applications 20 | StartupNotify=true 21 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Bluetooth.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Bluetooth 3 | Name[zh_CN]=蓝牙 4 | Name[pl]=Bluetooth 5 | Name[hu]=Bluetooth 6 | Name[pt]=Bluetooth 7 | Comment=Manage Bluetooth devices 8 | Comment[zh_CN]=管理蓝牙设备 9 | Comment[pl]=Zarządzaj urządzeniami Bluetooth 10 | Comment[hu]=Bluetooth-eszközök kezelése 11 | Comment[pt]=Gerenciar dispositivos Bluetooth 12 | Comment[nl]=Bluetooth-apparaten beheren 13 | Type=Settings 14 | Exec=cosmic-settings bluetooth 15 | Terminal=false 16 | Categories=COSMIC 17 | Keywords=COSMIC 18 | NoDisplay=true 19 | OnlyShowIn=COSMIC 20 | Icon=preferences-bluetooth 21 | StartupNotify=true 22 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.DateTime.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Date & Time 3 | Name[zh_CN]=日期和时间 4 | Name[hu]=Dátum és idő 5 | Name[pl]=Data i godzina 6 | Name[pt]=Data e Hora 7 | Name[nl]=Datum en tijd 8 | Comment=Time zone, automatic clock settings, and time formatting. 9 | Comment[zh_CN]=时区,自动时钟设置和时间格式 10 | Comment[pl]=Strefy czasowe, automatyczna konfiguracja zegara i format wyświetlania czasu. 11 | Comment[hu]=Időzóna, automatikus órabeállítások és időformátum. 12 | Comment[pt]=Fuso horário, hora automática e formatação. 13 | Comment[nl]=Tijdszones, instellingen voor de automatische klok, en tijdsweergave. 14 | Type=Settings 15 | Exec=cosmic-settings date-time 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-date-and-time 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.DefaultApps.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Default applications 3 | Name[zh_CN]=默认应用程序 4 | Name[pl]=Domyślne aplikacje 5 | Name[hu]=Alapértelmezett alkalmazások 6 | Name[pt]=Aplicativos padrão 7 | Name[nl]=Standaard toepassingen 8 | Comment=Default web browser, mail client, file browser, and other applications. 9 | Comment[zh_CN]=默认网络浏览器、邮件客户端、文件浏览器和其他应用程序 10 | Comment[pl]=Domyślna przeglądarka, klient poczty e-mail, menedżer plików i inne aplikacje. 11 | Comment[hu]=Alapértelmezett böngésző, levelezőprogram, fájlkezelő és egyéb alkalmazások. 12 | Comment[pt]=Navegador web padrão, cliente de email, gestor de arquivos e outros aplicativos. 13 | Comment[nl]=Standaard webbrowser, mailprogramma, bestandsbeheerder, en andere apps. 14 | Type=Settings 15 | Exec=cosmic-settings default-apps 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-default-applications 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Desktop.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Desktop 3 | Name[zh_CN]=桌面 4 | Name[pl]=Pulpit 5 | Name[hu]=Asztal 6 | Name[pt]=Área de Trabalho 7 | Name[nl]=Bureaublad 8 | Comment= 9 | Type=Settings 10 | Exec=cosmic-settings desktop 11 | Terminal=false 12 | Categories=COSMIC 13 | Keywords=COSMIC 14 | NoDisplay=true 15 | OnlyShowIn=COSMIC 16 | Icon=preferences-desktop 17 | StartupNotify=true 18 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Displays.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Displays 3 | Name[zh_CN]=显示器 4 | Name[pl]=Ekrany 5 | Name[hu]=Kijelzők 6 | Name[pt]=Telas 7 | Name[nl]=Beeldscherm 8 | Comment=Display options, graphics modes, and night light. 9 | Comment[zh_CN]=显示器选项、图形模式和夜间模式 10 | Comment[pl]=Ustawienia wyświetlania, opcje grafiki i podświetlanie nocne. 11 | Comment[hu]=Kijelzőbeállítások, grafikus módok és éjszakai fény. 12 | Comment[pt]=Opções de tela, monitores, modos gráficos e luz noturna. 13 | Comment[nl]=Beeldschermbeheer, schakelen tussen grafische kaarten en nachtlichtbeheer. 14 | Type=Settings 15 | Exec=cosmic-settings displays 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-displays 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Dock.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Dock 3 | Name[zh_CN]=程序坞 4 | Name[pl]=Dok 5 | Name[hu]=Dokkoló 6 | Name[pt]=Dock 7 | Comment=An optional bar for apps and applets. 8 | Comment[zh_CN]=可选的应用程序和小部件的工具栏 9 | Comment[pl]=Panel z przypiętymi aplikacjami w zasobniku i innymi apletami. 10 | Comment[hu]=Egy opcionális sáv alkalmazásokhoz és kisalkalmazásokhoz. 11 | Comment[pt]=Painel com aplicativos fixados e outros miniaplicativos. 12 | Comment[nl]=Een extra balk op het scherm met vastgezette apps en applets. 13 | Type=Settings 14 | Exec=cosmic-settings dock 15 | Terminal=false 16 | Categories=COSMIC 17 | Keywords=COSMIC 18 | NoDisplay=true 19 | OnlyShowIn=COSMIC 20 | Icon=preferences-dock 21 | StartupNotify=true 22 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Firmware.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Firmware 3 | Name[zh_CN]=固件 4 | Name[pl]=Oprogramowanie sprzętowe 5 | Name[hu]=Firmware 6 | Name[pt]=Firmware 7 | Comment=View and update firmware. 8 | Comment[zh_CN]=查看和更新固件 9 | Comment[pl]=Zobacz i aktualizuj oprogramowanie sprzętowe. 10 | Comment[hu]=Firmware megtekintése és frissítése. 11 | Comment[pt]=Visualizar e atualizar firmware. 12 | Comment[nl]=Firmware-updates tonen/bijwerken. 13 | Type=Settings 14 | Exec=cosmic-settings firmware 15 | Terminal=false 16 | Categories=COSMIC 17 | Keywords=COSMIC 18 | NoDisplay=true 19 | OnlyShowIn=COSMIC 20 | Icon=com.system76.CosmicSettings 21 | StartupNotify=true 22 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Input.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Input Devices 3 | Name[zh_CN]=输入设备 4 | Name[pl]=Urządzenia wprowadzania danych 5 | Name[hu]=Beviteli eszközök 6 | Name[pt]=Dispositivos de Entrada 7 | Name[nl]=Invoerapparaten 8 | Comment=Keyboard, cursor, etc. 9 | Comment[zh_CN]=输入设备 10 | Comment[nl]=Toetsenbord, muis, etc. 11 | Type=Settings 12 | Exec=cosmic-settings input 13 | Terminal=false 14 | Categories=COSMIC 15 | Keywords=COSMIC 16 | NoDisplay=true 17 | OnlyShowIn=COSMIC 18 | Icon=preferences-input-devices 19 | StartupNotify=true 20 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Keyboard.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Keyboard 3 | Name[zh_CN]=键盘 4 | Name[pl]=Klawiatura 5 | Name[hu]=Billentyűzet 6 | Name[pt]=Teclado 7 | Name[nl]=Toetsenbord 8 | Comment=Input sources, switching, special character entry, shortcuts. 9 | Comment[zh_CN]=输入源、切换、特殊字符输入、快捷键 10 | Comment[pl]=Źródła wprowadzania, przełączanie, specjalne klawisze, skróty. 11 | Comment[hu]=Bemeneti források, váltásuk, speciális karakterek, billentyűparancsok. 12 | Comment[pt]=Métodos de entrada, entrada de caracteres especiais, atalhos. 13 | Comment[nl]=Invoermethodes, speciale tekens, en sneltoetsen. 14 | Type=Settings 15 | Exec=cosmic-settings keyboard 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-desktop-keyboard 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.LegacyApplications.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=X11 Applications Compatibility 3 | Name[zh_CN]=X11应用程序兼容性 4 | Name[hu]=X11 alkalmazások támogatása 5 | Name[pt]=Compatibilidade com aplicativos X11. 6 | Name[nl]=Compatibiliteit met X11-toepassingen. 7 | Comment=X11 Window system application scaling and Global shortcuts. 8 | Comment[zh_CN]=X11窗口系统应用程序缩放和全局快捷键 9 | Comment[hu]=X11 ablakkezelő rendszer alkalmazásméretezés és globális billentyűparancsok. 10 | Comment[pt]=Dimensionamento de aplicativos com sistema de janelas X11 e atalhos globais. 11 | Comment[nl]=X11-toepassingsvensters schalen, en globale sneltoetsen. 12 | Type=Settings 13 | Exec=cosmic-settings legacy-applications 14 | Terminal=false 15 | Categories=COSMIC 16 | Keywords=COSMIC 17 | NoDisplay=true 18 | OnlyShowIn=COSMIC 19 | Icon=preferences-x11-applications-compatibility 20 | StartupNotify=true 21 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Mouse.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Mouse 3 | Name[zh_CN]=鼠标 4 | Name[pl]=Mysz 5 | Name[hu]=Egér 6 | Name[pt]=Mouse 7 | Name[nl]=Muis 8 | Comment=Mouse speed, acceleration, and natural scrolling. 9 | Comment[zh_CN]=鼠标速度、加速度和自然滚动 10 | Comment[pl]=Prędkość myszy, przyspieszenie i naturalne przewijanie. 11 | Comment[hu]=Egérsebesség, gyorsítás és természetes görgetés. 12 | Comment[pt]=Velocidade do mouse, aceleração e rolagem natural. 13 | Comment[nl]=Muissnelheid en -versnelling, en 'natuurlijk' scrollen. 14 | Type=Settings 15 | Exec=cosmic-settings mouse 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-mouse 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Network.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Network & Wireless 3 | Name[zh_CN]=网络和无线 4 | Name[pl]=Sieć i połączenia bezprzewodowe 5 | Name[hu]=Hálózat és Wi-Fi 6 | Name[pt]=Rede e Wi-Fi 7 | Name[nl]=Netwerk en wifi 8 | Comment=Manage network connections 9 | Comment[zh_CN]=管理网络连接 10 | Comment[pl]=Zarządzaj połączeniami sieciowymi 11 | Comment[hu]=Hálózati kapcsolatok kezelése 12 | Comment[pt]=Gerenciar conexões de rede 13 | Comment[nl]=Netwerkverbindingen beheren 14 | Type=Settings 15 | Exec=cosmic-settings network 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-network-and-wireless 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Notifications.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Notifications 3 | Name[zh_CN]=通知 4 | Name[pl]=Powiadomienia 5 | Name[hu]=Értesítések 6 | Name[pt]=Notificações 7 | Name[nl]=Meldingsinstellingen 8 | Comment=Do Not Disturb, lockscreen notifications, and per-application settings. 9 | Comment[zh_CN]=勿扰模式、锁屏通知和每个应用程序的设置 10 | Comment[pl]=Tryb „nie przeszkadzać”, powiadomienia na ekranie blokady i ustawienia poszczególnych aplikacji. 11 | Comment[hu]=Ne zavarjanak, zárolási képernyő értesítések és alkalmazásonkénti beállítások. 12 | Comment[pt]=Não Pertube, notificações na tela de bloqueio e ajustes por aplicativo. 13 | Comment[nl]="Niet storen", meldingen op het vergrendelingsscherm en meldingsinstellingen per app. 14 | Type=Settings 15 | Exec=cosmic-settings notifications 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=com.system76.CosmicSettings 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Panel.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Panel 3 | Name[zh_CN]=面板 4 | Name[pl]=Panel 5 | Name[hu]=Panel 6 | Name[pt]=Painel 7 | Comment=Primary system bar for menus and applets. 8 | Comment[zh_CN]=主系统栏,用于菜单和小部件。 9 | Comment[hu]=Fő rendszersáv menükhöz és kisalkalmazásokhoz. 10 | Comment[pt]=Barra superior com controles e menus. 11 | Comment[nl]=De standaard systeembalk voor menu's en applets. 12 | Type=Settings 13 | Exec=cosmic-settings panel 14 | Terminal=false 15 | Categories=COSMIC 16 | Keywords=COSMIC 17 | NoDisplay=true 18 | OnlyShowIn=COSMIC 19 | Icon=preferences-panel 20 | StartupNotify=true 21 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Power.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Power & Battery 3 | Name[zh_CN]=电源和电池 4 | Name[hu]=Energia és akkumulátor 5 | Name[pl]=Zasilanie i bateria 6 | Name[pt]=Energia e Bateria 7 | Name[nl]=Energie en batterij 8 | Comment=Power modes and power saving options. 9 | Comment[zh_CN]=电源模式和节能选项 10 | Comment[pl]=Tryby zasilania i opcje oszczędzania energii. 11 | Comment[hu]=Energiagazdálkodási módok és energiagazdálkodási beállítások. 12 | Comment[pt]=Modos de energia e opções de economia de energia. 13 | Comment[nl]=Energieverbruik en -besparingsopties. 14 | Type=Settings 15 | Exec=cosmic-settings power 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-power-and-battery 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.RegionLanguage.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Region & Language 3 | Name[zh_CN]=区域和语言 4 | Name[pl]=Region i język 5 | Name[hu]=Régió és nyelv 6 | Name[pt]=Região e Idioma 7 | Name[nl]=Taal en regio 8 | Comment=Format dates, times, and numbers based on your region. 9 | Comment[zh_CN]=根据您的区域格式化日期、时间和数字 10 | Comment[hu]=Dátumok, időpontok és számok formázása a régió alapján. 11 | Comment[pl]=Format wyświetlanych dat, godzin i liczb dopasowany do regionu. 12 | Comment[pt]=Formatação de datas, horas e números baseados em sua região. 13 | Comment[nl]=Regionale datum-, tijd- en getalweergave. 14 | Type=Settings 15 | Exec=cosmic-settings region-language 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-region-and-language 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Sound.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Sound 3 | Name[zh_CN]=音频 4 | Name[pl]=Dźwięk 5 | Name[hu]=Hang 6 | Name[pt]=Som 7 | Name[nl]=Geluid 8 | Comment=Audio settings for devices, alerts, and applications. 9 | Comment[zh_CN]=设备、警报和应用程序的音频设置 10 | Comment[pl]=Opcje dźwięku dla urządzeń, alertów i aplikacji. 11 | Comment[hu]=Hangbeállítások eszközökhöz, figyelmeztetésekhez és alkalmazásokhoz. 12 | Comment[pt]=Configurações de áudio para dispositivos, alertas e aplicativos. 13 | Comment[nl]=Geluidsinstellingen voor apparaten, alarmen en programma's. 14 | Type=Settings 15 | Exec=cosmic-settings sound 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-sound 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.System.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=System & Accounts 3 | Name[zh_CN]=系统和账户 4 | Name[pl]=System i konta 5 | Name[hu]=Rendszer és fiókok 6 | Name[pt]=Sistema e Contas 7 | Name[nl]=Systeem en gebruikersaccount 8 | Comment= 9 | Comment[nl]=Systeeminformatie, gebruikers en firmware 10 | Type=Settings 11 | Exec=cosmic-settings system 12 | Terminal=false 13 | Categories=COSMIC 14 | Keywords=COSMIC 15 | NoDisplay=true 16 | OnlyShowIn=COSMIC 17 | Icon=preferences-system-and-accounts 18 | StartupNotify=true 19 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Time.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Time & Language 3 | Name[zh_CN]=时间与语言 4 | Name[pl]=Czas i język 5 | Name[hu]=Idő és nyelv 6 | Name[pt]=Hora e Idioma 7 | Name[nl]=Tijd- en taalinstellingen 8 | Comment= 9 | Type=Settings 10 | Exec=cosmic-settings time 11 | Terminal=false 12 | Categories=COSMIC 13 | Keywords=COSMIC 14 | NoDisplay=true 15 | OnlyShowIn=COSMIC 16 | Icon=preferences-time-and-language 17 | StartupNotify=true 18 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Touchpad.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Touchpad 3 | Name[zh_CN]=触摸板 4 | Name[pl]=Gładzik 5 | Name[hu]=Érintőpárna 6 | Name[pt]=Touchpad 7 | Comment=Touchpad speed, click options, gestures. 8 | Comment[zh_CN]=触摸板速度、点击选项和手势 9 | Comment[pl]=Prędkość gładzika, opcje kliknięć, gesty. 10 | Comment[hu]=Érintőpárna sebessége, kattintási beállítások, gesztusok. 11 | Comment[pt]=Velocidade do touchpad, opções de clique, gestos. 12 | Comment[nl]=Touchpad muisversnelling, klikeigenschappen en veeggebaren. 13 | Type=Settings 14 | Exec=cosmic-settings touchpad 15 | Terminal=false 16 | Categories=COSMIC 17 | Keywords=COSMIC 18 | NoDisplay=true 19 | OnlyShowIn=COSMIC 20 | Icon=preferences-touchpad 21 | StartupNotify=true 22 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Users.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Users 3 | Name[zh_CN]=用户 4 | Name[pl]=Użytkownicy 5 | Name[hu]=Felhasználók 6 | Name[pt]=Usuários 7 | Name[nl]=Gebruikers 8 | Comment=Authentication and user accounts. 9 | Comment[zh_CN]=身份验证和用户账户 10 | Comment[pl]=Uwierzytelnianie i konta użytkowników. 11 | Comment[hu]=Hitelesítés és felhasználói fiókok. 12 | Comment[pt]=Autenticação e contas de usuário. 13 | Comment[nl]=Authenticatie en gebruikersinstellingen. 14 | Type=Settings 15 | Exec=cosmic-settings users 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-users 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Vpn.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=VPN 3 | Comment=VPN connections and connection profiles. 4 | Comment[zh_CN]=VPN连接和配置文件 5 | Comment[pl]=Połączenia VPN i profile połączeń. 6 | Comment[hu]=VPN-kapcsolatok és kapcsolódási profilok. 7 | Comment[pt]=Conexões VPN e perfis de conexão. 8 | Comment[nl]=VPN-verbindingen en VPN-profielen. 9 | Type=Settings 10 | Exec=cosmic-settings vpn 11 | Terminal=false 12 | Categories=COSMIC 13 | Keywords=COSMIC 14 | NoDisplay=true 15 | OnlyShowIn=COSMIC 16 | Icon=preferences-vpn 17 | StartupNotify=true 18 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Wallpaper.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Wallpaper 3 | Name[zh_CN]=壁纸 4 | Name[pl]=Tapeta 5 | Name[hu]=Háttérkép 6 | Name[pt]=Papel de Parede 7 | Name[nl]=Schermachtergrond 8 | Comment=Wallpaper images, colors, and slideshow options. 9 | Comment[zh_CN]=壁纸图片、颜色和幻灯片选项 10 | Comment[pl]=Obraz tła, kolory i opcje pokazu slajdów. 11 | Comment[hu]=Háttérképek, színek és diavetítési beállítások. 12 | Comment[pt]=Imagens de plano de fundo, cores, e opções de exibição em slide. 13 | Comment[nl]=Schermachtergrond: Afbeeldingen, kleuren en diavoorstellingen. 14 | Type=Settings 15 | Exec=cosmic-settings wallpaper 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-desktop-wallpaper 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.WindowManagement.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Window management 3 | Name[zh_CN]=窗口管理 4 | Name[pl]=Zarządzanie oknami 5 | Name[hu]=Ablakkezelés 6 | Name[pt]=Gerenciamento de Janelas 7 | Name[nl]=Vensterbeheer 8 | Comment=Super key action, window control options, and additional window tiling options. 9 | Comment[zh_CN]=Super键操作、窗口控制选项和额外的窗口平铺选项 10 | Comment[pl]=Działanie klawisza Super, opcje kontroli oknami i dodatkowe ustawienia kafelkowania okien. 11 | Comment[hu]=Super billentyű funkció, ablakkezelési és csempézési beállítások. 12 | Comment[pt]=Ação da tecla Super, opções de controle de janela e opções adicionais de janelas em mosaico. 13 | Comment[nl]=Opties voor de Supertoets, vensterbeheer en aanvullende opties voor het tegelen van vensters. 14 | Type=Settings 15 | Exec=cosmic-settings window-management 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-window-management 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Wired.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Wired 3 | Name[zh_CN]=有线连接 4 | Name[pl]=Połączenia przewodowe 5 | Name[hu]=Vezetékes kapcsolatok 6 | Name[pt]=Rede Cabeada 7 | Name[nl]=Kabelverbinding 8 | Comment=Wired connections and connection profiles. 9 | Comment[zh_CN]=有线连接和配置文件 10 | Comment[pl]=Połączenia przewodowe i profile połączeń. 11 | Comment[hu]=Vezetékes kapcsolatok és kapcsolódási profilok. 12 | Comment[pt]=Conexões de rede cabeada e perfis de conexão. 13 | Comment[nl]=Kabelverbinding en verbindingsprofielen. 14 | Type=Settings 15 | Exec=cosmic-settings wired 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-wired 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Wireless.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Wi-Fi 3 | Name[zh_CN]=Wi-Fi 4 | Name[pl]=Wi-Fi 5 | Name[hu]=Wi-Fi 6 | Name[pt]=Wi-Fi 7 | Name[nl]=Wifi 8 | Comment=Wi-Fi connections and connection profiles. 9 | Comment[zh_CN]=Wi-Fi连接和配置文件 10 | Comment[hu]=Wi-Fi kapcsolatok és kapcsolódási profilok. 11 | Comment[pl]=Połączenia Wi-Fi i profile połączeń. 12 | Comment[pt]=Conexões de rede sem fio e perfis de conexão. 13 | Comment[nl]=Wifiverbinding en verbindingsprofielen. 14 | Type=Settings 15 | Exec=cosmic-settings wireless 16 | Terminal=false 17 | Categories=COSMIC 18 | Keywords=COSMIC 19 | NoDisplay=true 20 | OnlyShowIn=COSMIC 21 | Icon=preferences-wireless 22 | StartupNotify=true 23 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.Workspaces.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Workspaces 3 | Name[zh_CN]=工作区 4 | Name[pl]=Obszary robocze 5 | Name[hu]=Munkaterületek 6 | Name[pt]=Áreas de Trabalho 7 | Comment=Workspace orientation and behavior. 8 | Comment[zh_CN]=工作区方向和行为 9 | Comment[pl]=Kierunek i zachowanie obszarów roboczych. 10 | Comment[hu]=Munkaterületek tájolása és viselkedése. 11 | Comment[pt]=Orientação e comportamento da área de trabalho. 12 | Type=Settings 13 | Exec=cosmic-settings workspaces 14 | Terminal=false 15 | Categories=COSMIC 16 | Keywords=COSMIC 17 | NoDisplay=true 18 | OnlyShowIn=COSMIC 19 | Icon=preferences-workspaces 20 | StartupNotify=true 21 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=COSMIC Settings 3 | Name[zh_CN]=COSMIC 设置 4 | Name[pl]=Ustawienia COSMIC 5 | Name[pt]=Configurações 6 | Name[hu]=COSMIC Beállítások 7 | Name[pt_BR]=Configurações 8 | Type=Application 9 | Exec=cosmic-settings 10 | Terminal=false 11 | Categories=COSMIC 12 | Keywords=COSMIC 13 | OnlyShowIn=COSMIC 14 | Icon=com.system76.CosmicSettings 15 | StartupNotify=true 16 | -------------------------------------------------------------------------------- /resources/com.system76.CosmicSettings.metainfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.system76.CosmicSettings 4 | CC0-1.0 5 | GPL-3.0-only 6 | COSMIC 7 | System76 8 | jeremy@system76.com 9 | https://github.com/pop-os/cosmic-settings 10 | https://github.com/pop-os/cosmic-settings 11 | COSMIC Settings 12 | Ustawienia COSMIC 13 | COSMIC Beállítások 14 | Configurações 15 | COSMIC instellingen 16 |

Settings application for the COSMIC desktop 17 | Aplikacja ustawień pulpitu COSMIC 18 | Beállítások a COSMIC asztali környezethez 19 | Ajuste de configurações para o desktop COSMIC 20 | Configuratiecentrum voor COSMIC desktop 21 | 22 |

Settings application for the COSMIC desktop

23 |

Aplikacja ustawień pulpitu COSMIC

24 |

Beállítások a COSMIC asztali környezethez

25 |

Ajuste de configurações para o desktop COSMIC

26 |

Configuratiecentrum voor COSMIC desktop

27 |
28 | com.system76.CosmicSettings.desktop 29 | https://raw.githubusercontent.com/pop-os/cosmic-settings/master/resources/icons/256x256/apps/com.system76.CosmicSettings.svg 30 | 31 | 32 | cosmic-settings 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/accent: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/active_hint: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/bg_color: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/corner_radii: -------------------------------------------------------------------------------- 1 | (radius_0:(0.0,0.0,0.0,0.0),radius_xs:(4.0,4.0,4.0,4.0),radius_s:(8.0,8.0,8.0,8.0),radius_m:(16.0,16.0,16.0,16.0),radius_l:(32.0,32.0,32.0,32.0),radius_xl:(160.0,160.0,160.0,160.0)) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/destructive: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/gaps: -------------------------------------------------------------------------------- 1 | (0,8) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/is_dark: -------------------------------------------------------------------------------- 1 | true -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/is_frosted: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/neutral_tint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/palette: -------------------------------------------------------------------------------- 1 | Dark((name:"cosmic-dark",blue:(red:0.5803922,green:0.92156863,blue:0.92156863,alpha:1.0),red:(red:1.0,green:0.70980394,blue:0.70980394,alpha:1.0),green:(red:0.6745098,green:0.96862745,blue:0.8235294,alpha:1.0),yellow:(red:1.0,green:0.94509804,blue:0.61960787,alpha:1.0),gray_1:(red:0.105882354,green:0.105882354,blue:0.105882354,alpha:1.0),gray_2:(red:0.14901961,green:0.14901961,blue:0.14901961,alpha:1.0),gray_3:(red:0.1882353,green:0.1882353,blue:0.1882353,alpha:1.0),neutral_0:(red:0.0,green:0.0,blue:0.0,alpha:1.0),neutral_1:(red:0.105882354,green:0.105882354,blue:0.105882354,alpha:1.0),neutral_2:(red:0.1882353,green:0.1882353,blue:0.1882353,alpha:1.0),neutral_3:(red:0.2784314,green:0.2784314,blue:0.2784314,alpha:1.0),neutral_4:(red:0.36862746,green:0.36862746,blue:0.36862746,alpha:1.0),neutral_5:(red:0.46666667,green:0.46666667,blue:0.46666667,alpha:1.0),neutral_6:(red:0.5686275,green:0.5686275,blue:0.5686275,alpha:1.0),neutral_7:(red:0.67058825,green:0.67058825,blue:0.67058825,alpha:1.0),neutral_8:(red:0.7764706,green:0.7764706,blue:0.7764706,alpha:1.0),neutral_9:(red:0.8862745,green:0.8862745,blue:0.8862745,alpha:1.0),neutral_10:(red:1.0,green:1.0,blue:1.0,alpha:1.0),bright_green:(red:0.36862746,green:0.85882354,blue:0.54901963,alpha:1.0),bright_red:(red:1.0,green:0.627451,blue:0.5647059,alpha:1.0),bright_orange:(red:1.0,green:0.6392157,blue:0.49019608,alpha:1.0),ext_warm_grey:(red:0.60784316,green:0.5568628,blue:0.5411765,alpha:1.0),ext_orange:(red:1.0,green:0.6784314,blue:0.0,alpha:1.0),ext_yellow:(red:0.99607843,green:0.85882354,blue:0.2509804,alpha:1.0),ext_blue:(red:0.28235295,green:0.7254902,blue:0.78039217,alpha:1.0),ext_purple:(red:0.8117647,green:0.49019608,blue:1.0,alpha:1.0),ext_pink:(red:0.9764706,green:0.22745098,blue:0.5137255,alpha:1.0),ext_indigo:(red:0.24313726,green:0.53333336,blue:1.0,alpha:1.0),accent_blue:(red:0.3882353,green:0.8156863,blue:0.8745098,alpha:1.0),accent_red:(red:0.99215686,green:0.6313726,blue:0.627451,alpha:1.0),accent_green:(red:0.57254905,green:0.8117647,blue:0.6117647,alpha:1.0),accent_warm_grey:(red:0.7921569,green:0.7294118,blue:0.7058824,alpha:1.0),accent_orange:(red:1.0,green:0.6784314,blue:0.0,alpha:1.0),accent_yellow:(red:0.96862745,green:0.8784314,blue:0.38431373,alpha:1.0),accent_purple:(red:0.90588236,green:0.6117647,blue:0.99607843,alpha:1.0),accent_pink:(red:1.0,green:0.6117647,blue:0.69411767,alpha:1.0),accent_indigo:(red:0.6313726,green:0.7529412,blue:0.92156863,alpha:1.0))) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/primary_container_bg: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/secondary_container_bg: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/spacing: -------------------------------------------------------------------------------- 1 | (space_none:0,space_xxxs:4,space_xxs:8,space_xs:12,space_s:16,space_m:24,space_l:32,space_xl:48,space_xxl:64,space_xxxl:128) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/success: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/text_tint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/warning: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark.Builder/v1/window_hint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/accent: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.3882353, 4 | green: 0.8156863, 5 | blue: 0.8745098, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.3883028, 10 | green: 0.7302636, 11 | blue: 0.7773224, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.23716976, 16 | green: 0.45089525, 17 | blue: 0.48030704, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.3883028, 22 | green: 0.7302636, 23 | blue: 0.7773224, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.0, 41 | blue: 0.000000000000000000000000000000000000000000036, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.3882353, 52 | green: 0.8156863, 53 | blue: 0.8745098, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.19411765, 58 | green: 0.40784314, 59 | blue: 0.4372549, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.3882353, 64 | green: 0.8156863, 65 | blue: 0.8745098, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.3882353, 70 | green: 0.8156863, 71 | blue: 0.8745098, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/accent_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.3882353, 4 | green: 0.8156863, 5 | blue: 0.8745098, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.3883028, 10 | green: 0.7302636, 11 | blue: 0.7773224, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.23716976, 16 | green: 0.45089525, 17 | blue: 0.48030704, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.3883028, 22 | green: 0.7302636, 23 | blue: 0.7773224, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.012919995, 40 | green: 0.012919999, 41 | blue: 0.012920027, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.3882353, 52 | green: 0.8156863, 53 | blue: 0.8745098, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.0, 59 | blue: 0.000000000000000000000000000000000000000000036, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.3882353, 64 | green: 0.8156863, 65 | blue: 0.8745098, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.3882353, 70 | green: 0.8156863, 71 | blue: 0.8745098, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/accent_text: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/active_hint: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/background: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.105882354, 4 | green: 0.105882354, 5 | blue: 0.105882354, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.18219745, 11 | green: 0.18219745, 12 | blue: 0.18219745, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.2639777, 17 | green: 0.2639777, 18 | blue: 0.2639777, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.34575796, 23 | green: 0.34575796, 24 | blue: 0.34575796, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.2639777, 29 | green: 0.2639777, 30 | blue: 0.2639777, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.3882353, 35 | green: 0.8156863, 36 | blue: 0.8745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.3882353, 41 | green: 0.8156863, 42 | blue: 0.8745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.7532969, 47 | green: 0.7532969, 48 | blue: 0.75329685, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.7532969, 53 | green: 0.7532969, 54 | blue: 0.75329685, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.18219745, 59 | green: 0.18219745, 60 | blue: 0.18219745, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.46774718, 65 | green: 0.46774718, 66 | blue: 0.46774715, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.743206, 71 | green: 0.74320585, 72 | blue: 0.743206, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.743206, 77 | green: 0.74320585, 78 | blue: 0.743206, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.2662247, 84 | green: 0.2662247, 85 | blue: 0.2662247, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.90759414, 90 | green: 0.9075942, 91 | blue: 0.90759414, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.15292811, 96 | green: 0.15292808, 97 | blue: 0.15292814, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.6204994, 4 | green: 0.62049943, 5 | blue: 0.6204995, 6 | alpha: 0.25, 7 | ), 8 | hover: ( 9 | red: 0.38796425, 10 | green: 0.38796428, 11 | blue: 0.38796434, 12 | alpha: 0.4, 13 | ), 14 | pressed: ( 15 | red: 0.16715199, 16 | green: 0.16715199, 17 | blue: 0.16715203, 18 | alpha: 0.625, 19 | ), 20 | selected: ( 21 | red: 0.38796425, 22 | green: 0.38796428, 23 | blue: 0.38796434, 24 | alpha: 0.4, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.7532969, 40 | green: 0.7532969, 41 | blue: 0.75329685, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.7532969, 46 | green: 0.7532969, 47 | blue: 0.75329685, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.47242564, 52 | green: 0.47242567, 53 | blue: 0.47242576, 54 | alpha: 0.34375, 55 | ), 56 | on_disabled: ( 57 | red: 0.50074834, 58 | green: 0.50074834, 59 | blue: 0.50074834, 60 | alpha: 0.625, 61 | ), 62 | border: ( 63 | red: 0.743206, 64 | green: 0.74320585, 65 | blue: 0.743206, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.743206, 70 | green: 0.74320585, 71 | blue: 0.743206, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/corner_radii: -------------------------------------------------------------------------------- 1 | ( 2 | radius_0: (0.0, 0.0, 0.0, 0.0), 3 | radius_xs: (4.0, 4.0, 4.0, 4.0), 4 | radius_s: (8.0, 8.0, 8.0, 8.0), 5 | radius_m: (16.0, 16.0, 16.0, 16.0), 6 | radius_l: (32.0, 32.0, 32.0, 32.0), 7 | radius_xl: (160.0, 160.0, 160.0, 160.0), 8 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/destructive: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 1.0, 4 | green: 0.70980394, 5 | blue: 0.70980394, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.8777146, 10 | green: 0.6455577, 11 | blue: 0.6455577, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.54305214, 16 | green: 0.39795408, 17 | blue: 0.3979541, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.8777146, 22 | green: 0.6455577, 23 | blue: 0.6455577, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.0, 41 | blue: 0.000000000000000000000000000000000000000000036, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 1.0, 52 | green: 0.70980394, 53 | blue: 0.70980394, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.5, 58 | green: 0.35490197, 59 | blue: 0.35490197, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 1.0, 64 | green: 0.70980394, 65 | blue: 0.70980394, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 1.0, 70 | green: 0.70980394, 71 | blue: 0.70980394, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/destructive_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 1.0, 4 | green: 0.70980394, 5 | blue: 0.70980394, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.8777146, 10 | green: 0.6455577, 11 | blue: 0.6455577, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.54305214, 16 | green: 0.39795408, 17 | blue: 0.3979541, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.8777146, 22 | green: 0.6455577, 23 | blue: 0.6455577, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.012919995, 40 | green: 0.012919999, 41 | blue: 0.012920027, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 1.0, 52 | green: 0.70980394, 53 | blue: 0.70980394, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.0, 59 | blue: 0.000000000000000000000000000000000000000000036, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 1.0, 64 | green: 0.70980394, 65 | blue: 0.70980394, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 1.0, 70 | green: 0.70980394, 71 | blue: 0.70980394, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/gaps: -------------------------------------------------------------------------------- 1 | (0, 8) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/icon_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.38857287, 10 | green: 0.38857284, 11 | blue: 0.38857293, 12 | alpha: 0.2, 13 | ), 14 | pressed: ( 15 | red: 0.08610422, 16 | green: 0.08610419, 17 | blue: 0.08610427, 18 | alpha: 0.5, 19 | ), 20 | selected: ( 21 | red: 0.38857287, 22 | green: 0.38857284, 23 | blue: 0.38857293, 24 | alpha: 0.2, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.743206, 40 | green: 0.74320585, 41 | blue: 0.743206, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.743206, 46 | green: 0.74320585, 47 | blue: 0.743206, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.371603, 58 | green: 0.37160292, 59 | blue: 0.371603, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.743206, 64 | green: 0.74320585, 65 | blue: 0.743206, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.743206, 70 | green: 0.74320585, 71 | blue: 0.743206, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/is_dark: -------------------------------------------------------------------------------- 1 | true -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/is_frosted: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/is_high_contrast: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/link_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.0, 10 | green: 0.0, 11 | blue: 0.0, 12 | alpha: 0.0, 13 | ), 14 | pressed: ( 15 | red: 0.0, 16 | green: 0.0, 17 | blue: 0.0, 18 | alpha: 0.0, 19 | ), 20 | selected: ( 21 | red: 0.0, 22 | green: 0.0, 23 | blue: 0.0, 24 | alpha: 0.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.3882353, 40 | green: 0.8156863, 41 | blue: 0.8745098, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.3882353, 46 | green: 0.8156863, 47 | blue: 0.8745098, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.19411765, 58 | green: 0.40784314, 59 | blue: 0.4372549, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.743206, 64 | green: 0.74320585, 65 | blue: 0.743206, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.743206, 70 | green: 0.74320585, 71 | blue: 0.743206, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/name: -------------------------------------------------------------------------------- 1 | "cosmic-dark" -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/primary: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.15292811, 4 | green: 0.15292811, 5 | blue: 0.15292808, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.21220893, 11 | green: 0.2122089, 12 | blue: 0.2122089, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.29098803, 17 | green: 0.290988, 18 | blue: 0.290988, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.36976713, 23 | green: 0.36976713, 24 | blue: 0.36976713, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.29098803, 29 | green: 0.290988, 30 | blue: 0.290988, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.3882353, 35 | green: 0.8156863, 36 | blue: 0.8745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.3882353, 41 | green: 0.8156863, 42 | blue: 0.8745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.7913618, 47 | green: 0.7913618, 48 | blue: 0.7913618, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.7913618, 53 | green: 0.7913618, 54 | blue: 0.7913618, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.21220893, 59 | green: 0.2122089, 60 | blue: 0.2122089, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.5017854, 65 | green: 0.50178534, 66 | blue: 0.50178534, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.743206, 71 | green: 0.74320585, 72 | blue: 0.743206, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.743206, 77 | green: 0.74320585, 78 | blue: 0.743206, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.31702772, 84 | green: 0.31702772, 85 | blue: 0.3170277, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.97342616, 90 | green: 0.97342616, 91 | blue: 0.97342604, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.20212594, 96 | green: 0.20212597, 97 | blue: 0.202126, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/secondary: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.20212594, 4 | green: 0.20212597, 5 | blue: 0.20212597, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.23260304, 11 | green: 0.23260307, 12 | blue: 0.23260304, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.30934274, 17 | green: 0.30934274, 18 | blue: 0.30934274, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.3860824, 23 | green: 0.38608247, 24 | blue: 0.3860824, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.30934274, 29 | green: 0.30934274, 30 | blue: 0.30934274, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.3882353, 35 | green: 0.8156863, 36 | blue: 0.8745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.3882353, 41 | green: 0.8156863, 42 | blue: 0.8745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.81693083, 47 | green: 0.8169309, 48 | blue: 0.8169309, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.81693083, 53 | green: 0.8169309, 54 | blue: 0.8169309, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.23260304, 59 | green: 0.23260307, 60 | blue: 0.23260304, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.5247669, 65 | green: 0.524767, 66 | blue: 0.524767, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.743206, 71 | green: 0.74320585, 72 | blue: 0.743206, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.743206, 77 | green: 0.74320585, 78 | blue: 0.743206, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.3174277, 84 | green: 0.31742772, 85 | blue: 0.3174277, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.7786347, 90 | green: 0.7786347, 91 | blue: 0.77863467, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.2532908, 96 | green: 0.2532908, 97 | blue: 0.25329086, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/shade: -------------------------------------------------------------------------------- 1 | ( 2 | red: 0.0, 3 | green: 0.0, 4 | blue: 0.0, 5 | alpha: 0.32, 6 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/spacing: -------------------------------------------------------------------------------- 1 | ( 2 | space_none: 0, 3 | space_xxxs: 4, 4 | space_xxs: 8, 5 | space_xs: 12, 6 | space_s: 16, 7 | space_m: 24, 8 | space_l: 32, 9 | space_xl: 48, 10 | space_xxl: 64, 11 | space_xxxl: 128, 12 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/success: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.6745098, 4 | green: 0.96862745, 5 | blue: 0.8235294, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.61732244, 10 | green: 0.85261655, 11 | blue: 0.7365381, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.38030702, 16 | green: 0.5273658, 17 | blue: 0.45481685, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.61732244, 22 | green: 0.85261655, 23 | blue: 0.7365381, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.0, 41 | blue: 0.000000000000000000000000000000000000000000036, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.6745098, 52 | green: 0.96862745, 53 | blue: 0.8235294, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.3372549, 58 | green: 0.48431373, 59 | blue: 0.4117647, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.6745098, 64 | green: 0.96862745, 65 | blue: 0.8235294, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.6745098, 70 | green: 0.96862745, 71 | blue: 0.8235294, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/success_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.6745098, 4 | green: 0.96862745, 5 | blue: 0.8235294, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.61732244, 10 | green: 0.85261655, 11 | blue: 0.7365381, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.38030702, 16 | green: 0.5273658, 17 | blue: 0.45481685, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.61732244, 22 | green: 0.85261655, 23 | blue: 0.7365381, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.012919995, 40 | green: 0.012919999, 41 | blue: 0.012920027, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.6745098, 52 | green: 0.96862745, 53 | blue: 0.8235294, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.0, 59 | blue: 0.000000000000000000000000000000000000000000036, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.6745098, 64 | green: 0.96862745, 65 | blue: 0.8235294, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.6745098, 70 | green: 0.96862745, 71 | blue: 0.8235294, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/text_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.38857287, 10 | green: 0.38857284, 11 | blue: 0.38857293, 12 | alpha: 0.2, 13 | ), 14 | pressed: ( 15 | red: 0.08610422, 16 | green: 0.08610419, 17 | blue: 0.08610427, 18 | alpha: 0.5, 19 | ), 20 | selected: ( 21 | red: 0.38857287, 22 | green: 0.38857284, 23 | blue: 0.38857293, 24 | alpha: 0.2, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.3882353, 40 | green: 0.8156863, 41 | blue: 0.8745098, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.3882353, 46 | green: 0.8156863, 47 | blue: 0.8745098, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.19411765, 58 | green: 0.40784314, 59 | blue: 0.4372549, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.743206, 64 | green: 0.74320585, 65 | blue: 0.743206, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.743206, 70 | green: 0.74320585, 71 | blue: 0.743206, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/warning: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 1.0, 4 | green: 0.94509804, 5 | blue: 0.61960787, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.8777146, 10 | green: 0.833793, 11 | blue: 0.57340086, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.54305214, 16 | green: 0.5156011, 17 | blue: 0.35285607, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.8777146, 22 | green: 0.833793, 23 | blue: 0.57340086, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.0, 41 | blue: 0.000000000000000000000000000000000000000000036, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 1.0, 52 | green: 0.94509804, 53 | blue: 0.61960787, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.5, 58 | green: 0.47254902, 59 | blue: 0.30980393, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 1.0, 64 | green: 0.94509804, 65 | blue: 0.61960787, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 1.0, 70 | green: 0.94509804, 71 | blue: 0.61960787, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/warning_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 1.0, 4 | green: 0.94509804, 5 | blue: 0.61960787, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.8777146, 10 | green: 0.833793, 11 | blue: 0.57340086, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.54305214, 16 | green: 0.5156011, 17 | blue: 0.35285607, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.8777146, 22 | green: 0.833793, 23 | blue: 0.57340086, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.3882353, 28 | green: 0.8156863, 29 | blue: 0.8745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.3882353, 34 | green: 0.8156863, 35 | blue: 0.8745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.99999994, 40 | green: 0.99999994, 41 | blue: 0.99999994, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.0, 47 | blue: 0.000000000000000000000000000000000000000000036, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 1.0, 52 | green: 0.94509804, 53 | blue: 0.61960787, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.0, 59 | blue: 0.000000000000000000000000000000000000000000036, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 1.0, 64 | green: 0.94509804, 65 | blue: 0.61960787, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 1.0, 70 | green: 0.94509804, 71 | blue: 0.61960787, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Dark/v1/window_hint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/accent: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/active_hint: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/bg_color: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/corner_radii: -------------------------------------------------------------------------------- 1 | (radius_0:(0.0,0.0,0.0,0.0),radius_xs:(4.0,4.0,4.0,4.0),radius_s:(8.0,8.0,8.0,8.0),radius_m:(16.0,16.0,16.0,16.0),radius_l:(32.0,32.0,32.0,32.0),radius_xl:(160.0,160.0,160.0,160.0)) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/destructive: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/gaps: -------------------------------------------------------------------------------- 1 | (0,8) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/is_frosted: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/neutral_tint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/palette: -------------------------------------------------------------------------------- 1 | Light((name:"cosmic-light",blue:(red:0.0,green:0.28627452,blue:0.42745098,alpha:1.0),red:(red:0.627451,green:0.14509805,blue:0.16862746,alpha:1.0),green:(red:0.23137255,green:0.43137255,blue:0.2627451,alpha:1.0),yellow:(red:0.5882353,green:0.40784314,blue:0.0,alpha:1.0),gray_1:(red:0.8666667,green:0.8666667,blue:0.8666667,alpha:1.0),gray_2:(red:0.9098039,green:0.9098039,blue:0.9098039,alpha:1.0),gray_3:(red:0.9529412,green:0.9529412,blue:0.9529412,alpha:1.0),neutral_0:(red:1.0,green:1.0,blue:1.0,alpha:1.0),neutral_1:(red:0.8862745,green:0.8862745,blue:0.8862745,alpha:1.0),neutral_2:(red:0.7764706,green:0.7764706,blue:0.7764706,alpha:1.0),neutral_3:(red:0.67058825,green:0.67058825,blue:0.67058825,alpha:1.0),neutral_4:(red:0.5686275,green:0.5686275,blue:0.5686275,alpha:1.0),neutral_5:(red:0.46666667,green:0.46666667,blue:0.46666667,alpha:1.0),neutral_6:(red:0.36862746,green:0.36862746,blue:0.36862746,alpha:1.0),neutral_7:(red:0.2784314,green:0.2784314,blue:0.2784314,alpha:1.0),neutral_8:(red:0.1882353,green:0.1882353,blue:0.1882353,alpha:1.0),neutral_9:(red:0.105882354,green:0.105882354,blue:0.105882354,alpha:1.0),neutral_10:(red:0.0,green:0.0,blue:0.0,alpha:1.0),bright_green:(red:0.0,green:0.34117648,blue:0.17254902,alpha:1.0),bright_red:(red:0.5372549,green:0.015686275,blue:0.09411765,alpha:1.0),bright_orange:(red:0.4745098,green:0.17254902,blue:0.0,alpha:1.0),ext_warm_grey:(red:0.60784316,green:0.5568628,blue:0.5411765,alpha:1.0),ext_orange:(red:0.9843137,green:0.72156864,blue:0.42352942,alpha:1.0),ext_yellow:(red:0.96862745,green:0.8784314,blue:0.38431373,alpha:1.0),ext_blue:(red:0.41568628,green:0.7921569,blue:0.84705883,alpha:1.0),ext_purple:(red:0.8352941,green:0.54901963,blue:1.0,alpha:1.0),ext_pink:(red:1.0,green:0.6117647,blue:0.8666667,alpha:1.0),ext_indigo:(red:0.58431375,green:0.76862746,blue:0.9882353,alpha:1.0),accent_blue:(red:0.0,green:0.32156864,blue:0.3529412,alpha:1.0),accent_red:(red:0.47058824,green:0.16078432,blue:0.18039216,alpha:1.0),accent_green:(red:0.09411765,green:0.33333334,blue:0.16078432,alpha:1.0),accent_warm_grey:(red:0.33333334,green:0.2784314,blue:0.25882354,alpha:1.0),accent_orange:(red:0.38431373,green:0.2509804,blue:0.0,alpha:1.0),accent_yellow:(red:0.3254902,green:0.28235295,blue:0.0,alpha:1.0),accent_purple:(red:0.40784314,green:0.12941177,blue:0.4862745,alpha:1.0),accent_pink:(red:0.5254902,green:0.015686275,blue:0.22745098,alpha:1.0),accent_indigo:(red:0.18039216,green:0.28627452,blue:0.42745098,alpha:1.0))) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/primary_container_bg: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/secondary_container_bg: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/spacing: -------------------------------------------------------------------------------- 1 | (space_none:0,space_xxxs:4,space_xxs:8,space_xs:12,space_s:16,space_m:24,space_l:32,space_xl:48,space_xxl:64,space_xxxl:128) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/success: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/text_tint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/warning: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light.Builder/v1/window_hint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/accent: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.28627452, 5 | blue: 0.42745098, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.093333334, 10 | green: 0.32235295, 11 | blue: 0.43529412, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.3882353, 16 | green: 0.53137255, 17 | blue: 0.6019608, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.093333334, 22 | green: 0.32235295, 23 | blue: 0.43529412, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 1.0, 40 | green: 1.0, 41 | blue: 1.0, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.28627452, 53 | blue: 0.42745098, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.5, 58 | green: 0.6431373, 59 | blue: 0.7137255, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.0, 64 | green: 0.28627452, 65 | blue: 0.42745098, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.0, 70 | green: 0.28627452, 71 | blue: 0.42745098, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/accent_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.28627452, 5 | blue: 0.42745098, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.093333334, 10 | green: 0.32235295, 11 | blue: 0.43529412, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.3882353, 16 | green: 0.53137255, 17 | blue: 0.6019608, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.093333334, 22 | green: 0.32235295, 23 | blue: 0.43529412, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.8862745, 40 | green: 0.8862745, 41 | blue: 0.8862745, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.28627452, 53 | blue: 0.42745098, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 1.0, 58 | green: 1.0, 59 | blue: 1.0, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.0, 64 | green: 0.28627452, 65 | blue: 0.42745098, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.0, 70 | green: 0.28627452, 71 | blue: 0.42745098, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/accent_text: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/active_hint: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/background: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.8666667, 4 | green: 0.8666667, 5 | blue: 0.8666667, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.98669606, 11 | green: 0.98669606, 12 | blue: 0.98669595, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.8880264, 17 | green: 0.8880264, 18 | blue: 0.88802636, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.7893569, 23 | green: 0.7893569, 24 | blue: 0.78935677, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.8880264, 29 | green: 0.8880264, 30 | blue: 0.88802636, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.0, 35 | green: 0.28627452, 36 | blue: 0.42745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.0, 41 | green: 0.28627452, 42 | blue: 0.42745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.17235574, 47 | green: 0.1723558, 48 | blue: 0.17235562, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.17235574, 53 | green: 0.1723558, 54 | blue: 0.17235562, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.98669606, 59 | green: 0.98669606, 60 | blue: 0.98669595, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.5795259, 65 | green: 0.57952595, 66 | blue: 0.57952577, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.1882353, 71 | green: 0.1882353, 72 | blue: 0.1882353, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.1882353, 77 | green: 0.1882353, 78 | blue: 0.1882353, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.710911, 84 | green: 0.7109109, 85 | blue: 0.7109109, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.08788813, 90 | green: 0.08788807, 91 | blue: 0.087887965, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.946989, 96 | green: 0.9469891, 97 | blue: 0.946989, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.2784314, 4 | green: 0.2784314, 5 | blue: 0.2784314, 6 | alpha: 0.25, 7 | ), 8 | hover: ( 9 | red: 0.23254903, 10 | green: 0.23254903, 11 | blue: 0.23254903, 12 | alpha: 0.4, 13 | ), 14 | pressed: ( 15 | red: 0.44392157, 16 | green: 0.44392157, 17 | blue: 0.44392157, 18 | alpha: 0.625, 19 | ), 20 | selected: ( 21 | red: 0.23254903, 22 | green: 0.23254903, 23 | blue: 0.23254903, 24 | alpha: 0.4, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.17235574, 40 | green: 0.1723558, 41 | blue: 0.17235562, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.17235574, 46 | green: 0.1723558, 47 | blue: 0.17235562, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.21198754, 52 | green: 0.21198754, 53 | blue: 0.21198754, 54 | alpha: 0.34375, 55 | ), 56 | on_disabled: ( 57 | red: 0.14186415, 58 | green: 0.14186418, 59 | blue: 0.14186409, 60 | alpha: 0.625, 61 | ), 62 | border: ( 63 | red: 0.1882353, 64 | green: 0.1882353, 65 | blue: 0.1882353, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.1882353, 70 | green: 0.1882353, 71 | blue: 0.1882353, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/corner_radii: -------------------------------------------------------------------------------- 1 | ( 2 | radius_0: (0.0, 0.0, 0.0, 0.0), 3 | radius_xs: (4.0, 4.0, 4.0, 4.0), 4 | radius_s: (8.0, 8.0, 8.0, 8.0), 5 | radius_m: (16.0, 16.0, 16.0, 16.0), 6 | radius_l: (32.0, 32.0, 32.0, 32.0), 7 | radius_xl: (160.0, 160.0, 160.0, 160.0), 8 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/destructive: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.627451, 4 | green: 0.14509805, 5 | blue: 0.16862746, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.5952941, 10 | green: 0.20941177, 11 | blue: 0.2282353, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.7019608, 16 | green: 0.46078432, 17 | blue: 0.47254902, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.5952941, 22 | green: 0.20941177, 23 | blue: 0.2282353, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 1.0, 40 | green: 1.0, 41 | blue: 1.0, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.627451, 52 | green: 0.14509805, 53 | blue: 0.16862746, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.8137255, 58 | green: 0.57254905, 59 | blue: 0.58431375, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.627451, 64 | green: 0.14509805, 65 | blue: 0.16862746, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.627451, 70 | green: 0.14509805, 71 | blue: 0.16862746, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/destructive_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.627451, 4 | green: 0.14509805, 5 | blue: 0.16862746, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.5952941, 10 | green: 0.20941177, 11 | blue: 0.2282353, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.7019608, 16 | green: 0.46078432, 17 | blue: 0.47254902, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.5952941, 22 | green: 0.20941177, 23 | blue: 0.2282353, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.8862745, 40 | green: 0.8862745, 41 | blue: 0.8862745, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.627451, 52 | green: 0.14509805, 53 | blue: 0.16862746, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 1.0, 58 | green: 1.0, 59 | blue: 1.0, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.627451, 64 | green: 0.14509805, 65 | blue: 0.16862746, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.627451, 70 | green: 0.14509805, 71 | blue: 0.16862746, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/gaps: -------------------------------------------------------------------------------- 1 | (0, 8) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/icon_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.46666667, 10 | green: 0.46666667, 11 | blue: 0.46666667, 12 | alpha: 0.2, 13 | ), 14 | pressed: ( 15 | red: 0.7764706, 16 | green: 0.7764706, 17 | blue: 0.7764706, 18 | alpha: 0.5, 19 | ), 20 | selected: ( 21 | red: 0.46666667, 22 | green: 0.46666667, 23 | blue: 0.46666667, 24 | alpha: 0.2, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.1882353, 40 | green: 0.1882353, 41 | blue: 0.1882353, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.1882353, 46 | green: 0.1882353, 47 | blue: 0.1882353, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.09411765, 58 | green: 0.09411765, 59 | blue: 0.09411765, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.1882353, 64 | green: 0.1882353, 65 | blue: 0.1882353, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.1882353, 70 | green: 0.1882353, 71 | blue: 0.1882353, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/is_dark: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/is_frosted: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/is_high_contrast: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/link_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.0, 10 | green: 0.0, 11 | blue: 0.0, 12 | alpha: 0.0, 13 | ), 14 | pressed: ( 15 | red: 0.0, 16 | green: 0.0, 17 | blue: 0.0, 18 | alpha: 0.0, 19 | ), 20 | selected: ( 21 | red: 0.0, 22 | green: 0.0, 23 | blue: 0.0, 24 | alpha: 0.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.28627452, 41 | blue: 0.42745098, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.28627452, 47 | blue: 0.42745098, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.14313726, 59 | blue: 0.21372549, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.1882353, 64 | green: 0.1882353, 65 | blue: 0.1882353, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.1882353, 70 | green: 0.1882353, 71 | blue: 0.1882353, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/name: -------------------------------------------------------------------------------- 1 | "cosmic-light" -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/primary: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.946989, 4 | green: 0.9469891, 5 | blue: 0.9469889, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.88150823, 11 | green: 0.88150835, 12 | blue: 0.8815081, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.8933574, 17 | green: 0.8933575, 18 | blue: 0.8933573, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.90520656, 23 | green: 0.9052067, 24 | blue: 0.9052065, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.8933574, 29 | green: 0.8933575, 30 | blue: 0.8933573, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.0, 35 | green: 0.28627452, 36 | blue: 0.42745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.0, 41 | green: 0.28627452, 42 | blue: 0.42745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.09687374, 47 | green: 0.09687372, 48 | blue: 0.09687359, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.09687374, 53 | green: 0.09687372, 54 | blue: 0.09687359, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.88150823, 59 | green: 0.88150835, 60 | blue: 0.8815081, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.489191, 65 | green: 0.48919103, 66 | blue: 0.48919085, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.1882353, 71 | green: 0.1882353, 72 | blue: 0.1882353, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.1882353, 77 | green: 0.1882353, 78 | blue: 0.1882353, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.78626055, 84 | green: 0.78626066, 85 | blue: 0.7862605, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.14334676, 90 | green: 0.14334682, 91 | blue: 0.14334664, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.8945333, 96 | green: 0.8945333, 97 | blue: 0.8945333, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/secondary: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.7764706, 4 | green: 0.7764706, 5 | blue: 0.7764706, 6 | alpha: 1.0, 7 | ), 8 | component: ( 9 | base: ( 10 | red: 0.82977223, 11 | green: 0.82977235, 12 | blue: 0.8297721, 13 | alpha: 1.0, 14 | ), 15 | hover: ( 16 | red: 0.746795, 17 | green: 0.7467951, 18 | blue: 0.7467949, 19 | alpha: 1.0, 20 | ), 21 | pressed: ( 22 | red: 0.6638178, 23 | green: 0.6638179, 24 | blue: 0.6638177, 25 | alpha: 1.0, 26 | ), 27 | selected: ( 28 | red: 0.746795, 29 | green: 0.7467951, 30 | blue: 0.7467949, 31 | alpha: 1.0, 32 | ), 33 | selected_text: ( 34 | red: 0.0, 35 | green: 0.28627452, 36 | blue: 0.42745098, 37 | alpha: 1.0, 38 | ), 39 | focus: ( 40 | red: 0.0, 41 | green: 0.28627452, 42 | blue: 0.42745098, 43 | alpha: 1.0, 44 | ), 45 | divider: ( 46 | red: 0.061619133, 47 | green: 0.06161908, 48 | blue: 0.06161897, 49 | alpha: 0.2, 50 | ), 51 | on: ( 52 | red: 0.061619133, 53 | green: 0.06161908, 54 | blue: 0.06161897, 55 | alpha: 1.0, 56 | ), 57 | disabled: ( 58 | red: 0.82977223, 59 | green: 0.82977235, 60 | blue: 0.8297721, 61 | alpha: 1.0, 62 | ), 63 | on_disabled: ( 64 | red: 0.4456957, 65 | green: 0.44569573, 66 | blue: 0.44569555, 67 | alpha: 1.0, 68 | ), 69 | border: ( 70 | red: 0.1882353, 71 | green: 0.1882353, 72 | blue: 0.1882353, 73 | alpha: 1.0, 74 | ), 75 | disabled_border: ( 76 | red: 0.1882353, 77 | green: 0.1882353, 78 | blue: 0.1882353, 79 | alpha: 0.5, 80 | ), 81 | ), 82 | divider: ( 83 | red: 0.62702733, 84 | green: 0.62702733, 85 | blue: 0.6270273, 86 | alpha: 1.0, 87 | ), 88 | on: ( 89 | red: 0.029254153, 90 | green: 0.029254114, 91 | blue: 0.02925403, 92 | alpha: 1.0, 93 | ), 94 | small_widget: ( 95 | red: 0.85556674, 96 | green: 0.85556674, 97 | blue: 0.85556674, 98 | alpha: 0.25, 99 | ), 100 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/shade: -------------------------------------------------------------------------------- 1 | ( 2 | red: 0.0, 3 | green: 0.0, 4 | blue: 0.0, 5 | alpha: 0.08, 6 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/spacing: -------------------------------------------------------------------------------- 1 | ( 2 | space_none: 0, 3 | space_xxxs: 4, 4 | space_xxs: 8, 5 | space_xs: 12, 6 | space_s: 16, 7 | space_m: 24, 8 | space_l: 32, 9 | space_xl: 48, 10 | space_xxl: 64, 11 | space_xxxl: 128, 12 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/success: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.23137255, 4 | green: 0.43137255, 5 | blue: 0.2627451, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.27843136, 10 | green: 0.43843138, 11 | blue: 0.30352944, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.50392157, 16 | green: 0.6039216, 17 | blue: 0.51960784, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.27843136, 22 | green: 0.43843138, 23 | blue: 0.30352944, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 1.0, 40 | green: 1.0, 41 | blue: 1.0, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.23137255, 52 | green: 0.43137255, 53 | blue: 0.2627451, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.6156863, 58 | green: 0.71568626, 59 | blue: 0.6313726, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.23137255, 64 | green: 0.43137255, 65 | blue: 0.2627451, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.23137255, 70 | green: 0.43137255, 71 | blue: 0.2627451, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/success_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.23137255, 4 | green: 0.43137255, 5 | blue: 0.2627451, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.27843136, 10 | green: 0.43843138, 11 | blue: 0.30352944, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.50392157, 16 | green: 0.6039216, 17 | blue: 0.51960784, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.27843136, 22 | green: 0.43843138, 23 | blue: 0.30352944, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.8862745, 40 | green: 0.8862745, 41 | blue: 0.8862745, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.23137255, 52 | green: 0.43137255, 53 | blue: 0.2627451, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 1.0, 58 | green: 1.0, 59 | blue: 1.0, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.23137255, 64 | green: 0.43137255, 65 | blue: 0.2627451, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.23137255, 70 | green: 0.43137255, 71 | blue: 0.2627451, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/text_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.0, 4 | green: 0.0, 5 | blue: 0.0, 6 | alpha: 0.0, 7 | ), 8 | hover: ( 9 | red: 0.46666667, 10 | green: 0.46666667, 11 | blue: 0.46666667, 12 | alpha: 0.2, 13 | ), 14 | pressed: ( 15 | red: 0.7764706, 16 | green: 0.7764706, 17 | blue: 0.7764706, 18 | alpha: 0.5, 19 | ), 20 | selected: ( 21 | red: 0.46666667, 22 | green: 0.46666667, 23 | blue: 0.46666667, 24 | alpha: 0.2, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.28627452, 41 | blue: 0.42745098, 42 | alpha: 0.2, 43 | ), 44 | on: ( 45 | red: 0.0, 46 | green: 0.28627452, 47 | blue: 0.42745098, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.0, 52 | green: 0.0, 53 | blue: 0.0, 54 | alpha: 0.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.0, 58 | green: 0.14313726, 59 | blue: 0.21372549, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.1882353, 64 | green: 0.1882353, 65 | blue: 0.1882353, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.1882353, 70 | green: 0.1882353, 71 | blue: 0.1882353, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/warning: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.5882353, 4 | green: 0.40784314, 5 | blue: 0.0, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.5639216, 10 | green: 0.41960785, 11 | blue: 0.093333334, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.68235296, 16 | green: 0.5921569, 17 | blue: 0.3882353, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.5639216, 22 | green: 0.41960785, 23 | blue: 0.093333334, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 1.0, 40 | green: 1.0, 41 | blue: 1.0, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.5882353, 52 | green: 0.40784314, 53 | blue: 0.0, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 0.7941177, 58 | green: 0.70392156, 59 | blue: 0.5, 60 | alpha: 1.0, 61 | ), 62 | border: ( 63 | red: 0.5882353, 64 | green: 0.40784314, 65 | blue: 0.0, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.5882353, 70 | green: 0.40784314, 71 | blue: 0.0, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/warning_button: -------------------------------------------------------------------------------- 1 | ( 2 | base: ( 3 | red: 0.5882353, 4 | green: 0.40784314, 5 | blue: 0.0, 6 | alpha: 1.0, 7 | ), 8 | hover: ( 9 | red: 0.5639216, 10 | green: 0.41960785, 11 | blue: 0.093333334, 12 | alpha: 1.0, 13 | ), 14 | pressed: ( 15 | red: 0.68235296, 16 | green: 0.5921569, 17 | blue: 0.3882353, 18 | alpha: 1.0, 19 | ), 20 | selected: ( 21 | red: 0.5639216, 22 | green: 0.41960785, 23 | blue: 0.093333334, 24 | alpha: 1.0, 25 | ), 26 | selected_text: ( 27 | red: 0.0, 28 | green: 0.28627452, 29 | blue: 0.42745098, 30 | alpha: 1.0, 31 | ), 32 | focus: ( 33 | red: 0.0, 34 | green: 0.28627452, 35 | blue: 0.42745098, 36 | alpha: 1.0, 37 | ), 38 | divider: ( 39 | red: 0.0, 40 | green: 0.0, 41 | blue: 0.0, 42 | alpha: 1.0, 43 | ), 44 | on: ( 45 | red: 1.0, 46 | green: 1.0, 47 | blue: 1.0, 48 | alpha: 1.0, 49 | ), 50 | disabled: ( 51 | red: 0.5882353, 52 | green: 0.40784314, 53 | blue: 0.0, 54 | alpha: 1.0, 55 | ), 56 | on_disabled: ( 57 | red: 1.0, 58 | green: 1.0, 59 | blue: 1.0, 60 | alpha: 0.5, 61 | ), 62 | border: ( 63 | red: 0.5882353, 64 | green: 0.40784314, 65 | blue: 0.0, 66 | alpha: 1.0, 67 | ), 68 | disabled_border: ( 69 | red: 0.5882353, 70 | green: 0.40784314, 71 | blue: 0.0, 72 | alpha: 0.5, 73 | ), 74 | ) -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Light/v1/window_hint: -------------------------------------------------------------------------------- 1 | None -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Mode/v1/auto_switch: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /resources/default_schema/com.system76.CosmicTheme.Mode/v1/is_dark: -------------------------------------------------------------------------------- 1 | true -------------------------------------------------------------------------------- /resources/icons/128x128/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/16x16/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /resources/icons/24x24/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/256x256/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/32x32/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/48x48/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/64x64/apps/com.system76.CosmicSettings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-dark-style-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-dark-style-slightly-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-dark-style-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-light-style-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-light-style-slightly-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-light-style-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-mode-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/icons/scalable/status/illustration-appearance-mode-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | System76 8 | https://system76.com/ 9 | 10 | 11 | Manage user accounts 12 | Gerenciar contas de usuário 13 | Gerenciar contas de usuário 14 | Gebruikersaccount bewerken 15 | Authentication is required to change user data 16 | Authenticatie is vereist om gebruikersgegevens te wijzigen 17 | Autenticação é necessária para alterar dados de usuário 18 | Autenticação é necessária para alterar dados de usuário 19 | 20 | no 21 | no 22 | auth_admin_keep 23 | 24 | org.freedesktop.accounts.user-administration org.freedesktop.accounts.change-own-user-data org.freedesktop.accounts.change-own-password org.freedesktop.realmd.configure-realm org.freedesktop.realmd.login-policy org.freedesktop.MalcontentControl.administration com.endlessm.ParentalControls.AppFilter.ReadAny com.endlessm.ParentalControls.AppFilter.ChangeAny com.endlessm.ParentalControls.AppFilter.ReadOwn com.endlessm.ParentalControls.AppFilter.ChangeOwn 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/polkit-1/rules.d/cosmic-settings.rules: -------------------------------------------------------------------------------- 1 | polkit.addRule(function(action, subject) { 2 | if ((action.id == "org.freedesktop.locale1.set-locale" || 3 | action.id == "org.freedesktop.locale1.set-keyboard" || 4 | action.id == "org.freedesktop.ModemManager1.Device.Control" || 5 | action.id == "org.freedesktop.hostname1.set-static-hostname" || 6 | action.id == "org.freedesktop.hostname1.set-hostname") && 7 | subject.local && 8 | subject.active && 9 | subject.isInGroup ("sudo")) { 10 | return polkit.Result.YES; 11 | } 12 | }); -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "1.85.1" 3 | components = ["clippy", "rustfmt"] 4 | -------------------------------------------------------------------------------- /scripts/cargo.just: -------------------------------------------------------------------------------- 1 | import "common.just" 2 | 3 | cargo-target-dir := env('CARGO_TARGET_DIR', 'target') 4 | 5 | # Use mold linker if clang and mold exists. 6 | clang-path := `which clang || true` 7 | mold-path := `which mold || true` 8 | 9 | linker-arg := if clang-path != '' { 10 | if mold-path != '' { 11 | '-C linker=' + clang-path + ' -C link-arg=--ld-path=' + mold-path + ' ' 12 | } else { 13 | '' 14 | } 15 | } else { 16 | '' 17 | } 18 | 19 | export RUSTFLAGS := linker-arg + env_var_or_default('RUSTFLAGS', '') 20 | 21 | # Compile with debug profile 22 | build-debug *args: 23 | cargo build {{args}} 24 | 25 | # Compile with release profile 26 | build-release *args: (build-debug '--release' args) 27 | 28 | # Compile with a vendored tarball 29 | build-vendored *args: vendor-extract (build-release '--frozen --offline' args) 30 | 31 | # Check for errors and linter warnings 32 | check *args: 33 | cargo clippy --all-features {{args}} -- -W clippy::pedantic 34 | 35 | # Runs a check with JSON message format for IDE integration 36 | check-json: (check '--message-format=json') 37 | 38 | # Remove Cargo build artifacts 39 | [no-cd] 40 | clean: 41 | cargo clean 42 | 43 | # Also remove .cargo and vendored dependencies 44 | [no-cd] 45 | clean-dist: clean 46 | rm -rf .cargo vendor vendor.tar target 47 | 48 | # Run the application for testing purposes 49 | run *args: 50 | env RUST_LOG=debug RUST_BACKTRACE=full cargo run {{args}} --release 51 | 52 | # Run `cargo test` 53 | test *args: 54 | cargo test {{args}} 55 | 56 | # Vendor Cargo dependencies locally 57 | [no-cd] 58 | vendor: 59 | mkdir -p .cargo 60 | cargo vendor | head -n -1 > .cargo/config.toml 61 | echo 'directory = "vendor"' >> .cargo/config.toml 62 | tar pcf vendor.tar vendor 63 | rm -rf vendor 64 | 65 | # Extracts vendored dependencies 66 | [no-cd, private] 67 | vendor-extract: 68 | rm -rf vendor 69 | tar pxf vendor.tar 70 | -------------------------------------------------------------------------------- /scripts/common.just: -------------------------------------------------------------------------------- 1 | # Check if required dependencies are installed on the system 2 | dep-check: 3 | #!/bin/sh 4 | echo "{{lib-depends}}" | while read -r lib; do 5 | if [ -n "${lib}" ]; then 6 | just dep-lib "${lib}" || exit 1 7 | fi 8 | done 9 | echo "{{cmd-depends}}" | while read -r cmd; do 10 | if [ -n "${cmd}" ]; then 11 | just dep-cmd "${cmd}" || exit 1 12 | fi 13 | done 14 | 15 | # Errors if a command does not exist 16 | [private] 17 | dep-cmd cmd: 18 | @which {{cmd}} >/dev/null || (just print-error 'missing dependency' 'command' {{cmd}}; exit 1) 19 | 20 | # Errors if a library does not exist 21 | [private] 22 | dep-lib lib: 23 | #!/bin/sh 24 | if echo {{lib}} | grep = >/dev/null; then 25 | name=$(echo {{lib}} | cut -d= -f1) 26 | version=$(echo {{lib}} | cut -d= -f2) 27 | pkg-config --exists ${name} --atleast-version ${version} || ( 28 | has=$(pkg-config --modversion ${name}) 29 | just print-error "expected version ${version}, found ${has}" 'library' ${name}; exit 1) 30 | else 31 | pkg-config --exists {{lib}} || (just print-error 'missing dependency' 'library' {{lib}}; exit 1) 32 | fi 33 | 34 | # Display a formatted error for the user. 35 | [private] 36 | print-error msg key value: 37 | @echo '\e[0;31mERROR {{msg}}, \e[1;31m{{key}}: \e[0;31m{{value}}\e[0m' --------------------------------------------------------------------------------