feat: switch to iced-sctk and panel outputs
This commit is contained in:
parent
13ca0fd75b
commit
75accf6b2b
6 changed files with 232 additions and 86 deletions
56
Cargo.lock
generated
56
Cargo.lock
generated
|
|
@ -766,7 +766,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cosmic-config"
|
name = "cosmic-config"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atomicwrites",
|
"atomicwrites",
|
||||||
"cosmic-config-derive 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"cosmic-config-derive 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
|
|
@ -789,7 +789,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cosmic-config-derive"
|
name = "cosmic-config-derive"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
|
|
@ -896,7 +896,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cosmic-theme"
|
name = "cosmic-theme"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cosmic-config 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"cosmic-config 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
|
|
@ -1024,6 +1024,12 @@ version = "0.2.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
|
checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cursor-icon"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "740bb192a8e2d1350119916954f4409ee7f62f149b536911eeb78ba5a20526bf"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "d3d12"
|
name = "d3d12"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
|
@ -2094,8 +2100,9 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced"
|
name = "iced"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"iced_accessibility",
|
||||||
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
"iced_futures 0.6.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_futures 0.6.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
"iced_renderer",
|
"iced_renderer",
|
||||||
|
|
@ -2109,7 +2116,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_accessibility"
|
name = "iced_accessibility"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"accesskit",
|
"accesskit",
|
||||||
"accesskit_unix",
|
"accesskit_unix",
|
||||||
|
|
@ -2130,7 +2137,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_core"
|
name = "iced_core"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"iced_accessibility",
|
"iced_accessibility",
|
||||||
|
|
@ -2157,7 +2164,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_futures"
|
name = "iced_futures"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures",
|
"futures",
|
||||||
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
|
|
@ -2170,7 +2177,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_graphics"
|
name = "iced_graphics"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
|
|
@ -2187,7 +2194,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_renderer"
|
name = "iced_renderer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iced_graphics",
|
"iced_graphics",
|
||||||
"iced_tiny_skia",
|
"iced_tiny_skia",
|
||||||
|
|
@ -2199,7 +2206,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_runtime"
|
name = "iced_runtime"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iced_accessibility",
|
"iced_accessibility",
|
||||||
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
|
|
@ -2211,7 +2218,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_sctk"
|
name = "iced_sctk"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"enum-repr",
|
"enum-repr",
|
||||||
"float-cmp",
|
"float-cmp",
|
||||||
|
|
@ -2232,7 +2239,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_style"
|
name = "iced_style"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
|
@ -2242,7 +2249,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_tiny_skia"
|
name = "iced_tiny_skia"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"cosmic-text",
|
"cosmic-text",
|
||||||
|
|
@ -2260,7 +2267,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_wgpu"
|
name = "iced_wgpu"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
|
|
@ -2282,13 +2289,14 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_widget"
|
name = "iced_widget"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iced_renderer",
|
"iced_renderer",
|
||||||
"iced_runtime",
|
"iced_runtime",
|
||||||
"iced_style",
|
"iced_style",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"ouroboros 0.13.0",
|
"ouroboros 0.13.0",
|
||||||
|
"smithay-client-toolkit 0.17.0",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
@ -2296,7 +2304,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iced_winit"
|
name = "iced_winit"
|
||||||
version = "0.9.1"
|
version = "0.9.1"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"iced_graphics",
|
"iced_graphics",
|
||||||
"iced_runtime",
|
"iced_runtime",
|
||||||
|
|
@ -2476,9 +2484,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "io-lifetimes"
|
name = "io-lifetimes"
|
||||||
version = "1.0.10"
|
version = "1.0.11"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220"
|
checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hermit-abi 0.3.1",
|
"hermit-abi 0.3.1",
|
||||||
"libc",
|
"libc",
|
||||||
|
|
@ -2600,7 +2608,7 @@ checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libcosmic"
|
name = "libcosmic"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#bf1c474d0846e31c647444ff7bd5ecb7f361efcd"
|
source = "git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text#a0c72491dce1388a515acfa9b388ccf41ef0d574"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"apply",
|
"apply",
|
||||||
"cosmic-config 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"cosmic-config 0.1.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
|
|
@ -2611,12 +2619,13 @@ dependencies = [
|
||||||
"iced",
|
"iced",
|
||||||
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
"iced_core 0.9.0 (git+https://github.com/pop-os/libcosmic?branch=cosmic-advanced-text)",
|
||||||
"iced_runtime",
|
"iced_runtime",
|
||||||
|
"iced_sctk",
|
||||||
"iced_style",
|
"iced_style",
|
||||||
"iced_widget",
|
"iced_widget",
|
||||||
"iced_winit",
|
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"palette",
|
"palette",
|
||||||
"slotmap",
|
"slotmap",
|
||||||
|
"smithay-client-toolkit 0.17.0",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -4106,10 +4115,11 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smithay-client-toolkit"
|
name = "smithay-client-toolkit"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
source = "git+https://github.com/Smithay/client-toolkit?rev=389a4f2#389a4f21872a99a3ba346cc3dabd55c4079ec191"
|
source = "git+https://github.com/pop-os/client-toolkit?tag=themed-pointer#fd15dd954bc5f0c78d079aeda7b11194a682bbff"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"calloop",
|
"calloop",
|
||||||
|
"cursor-icon",
|
||||||
"dlib",
|
"dlib",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"log",
|
"log",
|
||||||
|
|
@ -4682,9 +4692,9 @@ checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.8"
|
version = "1.0.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
|
checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-linebreak"
|
name = "unicode-linebreak"
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,4 @@ git = "https://github.com/pop-os/libcosmic"
|
||||||
# rev = "b85c504d72ee1c0d360c56042996474932df97cb"
|
# rev = "b85c504d72ee1c0d360c56042996474932df97cb"
|
||||||
branch = "cosmic-advanced-text"
|
branch = "cosmic-advanced-text"
|
||||||
default-features = false
|
default-features = false
|
||||||
features = ["debug", "winit", "tokio"]
|
features = ["debug", "wayland", "tokio"]
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,20 @@ use apply::Apply;
|
||||||
use cosmic_settings_page::{self as page, section};
|
use cosmic_settings_page::{self as page, section};
|
||||||
|
|
||||||
use cosmic::{
|
use cosmic::{
|
||||||
iced::widget::{self, column, container, horizontal_space, row},
|
iced::{
|
||||||
iced::{self, subscription, window, Application, Command, Length, Subscription},
|
self,
|
||||||
iced_runtime::window::{close, drag, minimize, toggle_maximize},
|
event::wayland::{self, WindowEvent, WindowState},
|
||||||
|
event::PlatformSpecific,
|
||||||
|
subscription, window, Application, Color, Command, Length, Subscription,
|
||||||
|
},
|
||||||
|
iced::{
|
||||||
|
widget::{self, column, container, horizontal_space, row},
|
||||||
|
window::Mode,
|
||||||
|
},
|
||||||
|
iced_sctk::commands::window::{set_mode_window, start_drag_window},
|
||||||
|
iced_style::application,
|
||||||
keyboard_nav,
|
keyboard_nav,
|
||||||
theme::Theme,
|
theme::{self, Theme},
|
||||||
widget::{
|
widget::{
|
||||||
header_bar, nav_bar, nav_bar_toggle, scrollable, search, segmented_button, settings,
|
header_bar, nav_bar, nav_bar_toggle, scrollable, search, segmented_button, settings,
|
||||||
IconSource,
|
IconSource,
|
||||||
|
|
@ -27,6 +36,8 @@ use crate::{
|
||||||
widget::{page_title, parent_page_button, search_header, sub_page_button},
|
widget::{page_title, parent_page_button, search_header, sub_page_button},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use std::process;
|
||||||
|
|
||||||
#[allow(clippy::struct_excessive_bools)]
|
#[allow(clippy::struct_excessive_bools)]
|
||||||
#[allow(clippy::module_name_repetitions)]
|
#[allow(clippy::module_name_repetitions)]
|
||||||
pub struct SettingsApp {
|
pub struct SettingsApp {
|
||||||
|
|
@ -43,6 +54,7 @@ pub struct SettingsApp {
|
||||||
pub search: search::Model,
|
pub search: search::Model,
|
||||||
pub search_selections: Vec<(page::Entity, section::Entity)>,
|
pub search_selections: Vec<(page::Entity, section::Entity)>,
|
||||||
pub show_maximize: bool,
|
pub show_maximize: bool,
|
||||||
|
pub sharp_corners: bool,
|
||||||
pub show_minimize: bool,
|
pub show_minimize: bool,
|
||||||
pub theme: Theme,
|
pub theme: Theme,
|
||||||
pub title: String,
|
pub title: String,
|
||||||
|
|
@ -65,6 +77,7 @@ pub enum Message {
|
||||||
ToggleNavBar,
|
ToggleNavBar,
|
||||||
ToggleNavBarCondensed,
|
ToggleNavBarCondensed,
|
||||||
WindowResize(u32, u32),
|
WindowResize(u32, u32),
|
||||||
|
WindowState(WindowState),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Application for SettingsApp {
|
impl Application for SettingsApp {
|
||||||
|
|
@ -77,6 +90,7 @@ impl Application for SettingsApp {
|
||||||
let mut config_path = config::PathManager::new();
|
let mut config_path = config::PathManager::new();
|
||||||
|
|
||||||
let mut app = SettingsApp {
|
let mut app = SettingsApp {
|
||||||
|
sharp_corners: false,
|
||||||
active_page: page::Entity::default(),
|
active_page: page::Entity::default(),
|
||||||
config: config_path.config("main", Config::deserialize),
|
config: config_path.config("main", Config::deserialize),
|
||||||
config_path,
|
config_path,
|
||||||
|
|
@ -142,6 +156,22 @@ impl Application for SettingsApp {
|
||||||
iced::Event::Window(_window_id, window::Event::Resized { width, height }) => {
|
iced::Event::Window(_window_id, window::Event::Resized { width, height }) => {
|
||||||
Some(Message::WindowResize(width, height))
|
Some(Message::WindowResize(width, height))
|
||||||
}
|
}
|
||||||
|
iced::Event::PlatformSpecific(PlatformSpecific::Wayland(wayland::Event::Window(
|
||||||
|
WindowEvent::State(s),
|
||||||
|
..,
|
||||||
|
))) => Some(Message::WindowState(s)),
|
||||||
|
iced::Event::PlatformSpecific(PlatformSpecific::Wayland(wayland::Event::Output(
|
||||||
|
wayland::OutputEvent::Created(Some(info)),
|
||||||
|
o,
|
||||||
|
))) if info.name.is_some() => Some(Message::PageMessage(crate::pages::Message::Panel(
|
||||||
|
panel::Message::OutputAdded(info.name.unwrap(), o),
|
||||||
|
))),
|
||||||
|
iced::Event::PlatformSpecific(PlatformSpecific::Wayland(wayland::Event::Output(
|
||||||
|
wayland::OutputEvent::Removed,
|
||||||
|
o,
|
||||||
|
))) => Some(Message::PageMessage(crate::pages::Message::Panel(
|
||||||
|
panel::Message::OutputRemoved(o),
|
||||||
|
))),
|
||||||
_ => None,
|
_ => None,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -174,10 +204,20 @@ impl Application for SettingsApp {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Message::Page(page) => return self.activate_page(page),
|
Message::Page(page) => return self.activate_page(page),
|
||||||
Message::Drag => return drag(),
|
Message::Drag => return start_drag_window(window::Id(0)),
|
||||||
Message::Close => return close(),
|
Message::Close => {
|
||||||
Message::Minimize => return minimize(true),
|
process::exit(0);
|
||||||
Message::Maximize => return toggle_maximize(),
|
}
|
||||||
|
Message::Minimize => return set_mode_window(window::Id(0), Mode::Hidden),
|
||||||
|
Message::Maximize => {
|
||||||
|
if self.sharp_corners {
|
||||||
|
self.sharp_corners = false;
|
||||||
|
return set_mode_window(window::Id(0), Mode::Windowed);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.sharp_corners = true;
|
||||||
|
return set_mode_window(window::Id(0), Mode::Fullscreen);
|
||||||
|
}
|
||||||
Message::NavBar(key) => {
|
Message::NavBar(key) => {
|
||||||
if let Some(page) = self.nav_bar.data::<page::Entity>(key).copied() {
|
if let Some(page) = self.nav_bar.data::<page::Entity>(key).copied() {
|
||||||
return self.activate_page(page);
|
return self.activate_page(page);
|
||||||
|
|
@ -225,12 +265,16 @@ impl Application for SettingsApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Message::WindowState(state) => {
|
||||||
|
dbg!(&state);
|
||||||
|
self.sharp_corners = matches!(state, WindowState::Activated);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::too_many_lines)]
|
#[allow(clippy::too_many_lines)]
|
||||||
fn view(&self) -> Element<Message> {
|
fn view(&self, _id: window::Id) -> Element<Message> {
|
||||||
let (nav_bar_message, nav_bar_toggled) = if self.is_condensed {
|
let (nav_bar_message, nav_bar_toggled) = if self.is_condensed {
|
||||||
(
|
(
|
||||||
Message::ToggleNavBarCondensed,
|
Message::ToggleNavBarCondensed,
|
||||||
|
|
@ -302,6 +346,7 @@ impl Application for SettingsApp {
|
||||||
.padding([0, 8, 8, 8])
|
.padding([0, 8, 8, 8])
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.height(Length::Fill)
|
.height(Length::Fill)
|
||||||
|
.style(theme::Container::Background)
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
column(vec![header, content]).into()
|
column(vec![header, content]).into()
|
||||||
|
|
@ -314,6 +359,25 @@ impl Application for SettingsApp {
|
||||||
fn scale_factor(&self) -> f64 {
|
fn scale_factor(&self) -> f64 {
|
||||||
self.scaling_factor as f64
|
self.scaling_factor as f64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn close_requested(&self, id: window::Id) -> Self::Message {
|
||||||
|
if id == window::Id(0) {
|
||||||
|
Message::Close
|
||||||
|
} else {
|
||||||
|
Message::None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn style(&self) -> <Self::Theme as cosmic::iced_style::application::StyleSheet>::Style {
|
||||||
|
if self.sharp_corners {
|
||||||
|
cosmic::theme::Application::default()
|
||||||
|
} else {
|
||||||
|
cosmic::theme::Application::Custom(Box::new(|theme| application::Appearance {
|
||||||
|
background_color: Color::TRANSPARENT,
|
||||||
|
text_color: theme.cosmic().on_bg_color().into(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SettingsApp {
|
impl SettingsApp {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,10 @@ pub mod pages;
|
||||||
|
|
||||||
use env_logger::Env;
|
use env_logger::Env;
|
||||||
|
|
||||||
use cosmic::iced::Application;
|
use cosmic::{
|
||||||
|
iced::{wayland::actions::window::SctkWindowSettings, Application, Limits},
|
||||||
|
iced_sctk::settings::InitialSurface,
|
||||||
|
};
|
||||||
use i18n_embed::DesktopLanguageRequester;
|
use i18n_embed::DesktopLanguageRequester;
|
||||||
|
|
||||||
/// # Errors
|
/// # Errors
|
||||||
|
|
@ -47,7 +50,11 @@ pub fn main() -> color_eyre::Result<()> {
|
||||||
|
|
||||||
cosmic::settings::set_default_icon_theme("Pop");
|
cosmic::settings::set_default_icon_theme("Pop");
|
||||||
let mut settings = cosmic::settings();
|
let mut settings = cosmic::settings();
|
||||||
settings.window.min_size = Some((600, 300));
|
settings.initial_surface = InitialSurface::XdgWindow(SctkWindowSettings {
|
||||||
|
size_limits: Limits::NONE.min_width(600.0).min_height(300.0),
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
|
||||||
SettingsApp::run(settings)?;
|
SettingsApp::run(settings)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ use cosmic::{
|
||||||
iced::widget::{button, container, horizontal_space, pick_list, row},
|
iced::widget::{button, container, horizontal_space, pick_list, row},
|
||||||
iced::Length,
|
iced::Length,
|
||||||
iced_widget::slider,
|
iced_widget::slider,
|
||||||
|
sctk::reexports::client::{backend::ObjectId, protocol::wl_output::WlOutput, Proxy},
|
||||||
theme,
|
theme,
|
||||||
widget::{icon, list, settings, text, toggler},
|
widget::{icon, list, settings, text, toggler},
|
||||||
Element,
|
Element,
|
||||||
|
|
@ -12,7 +13,7 @@ use cosmic_config::CosmicConfigEntry;
|
||||||
use cosmic_panel_config::{AutoHide, CosmicPanelConfig, CosmicPanelOuput, PanelAnchor, PanelSize};
|
use cosmic_panel_config::{AutoHide, CosmicPanelConfig, CosmicPanelOuput, PanelAnchor, PanelSize};
|
||||||
use cosmic_settings_page::{self as page, section, Section};
|
use cosmic_settings_page::{self as page, section, Section};
|
||||||
use slotmap::SlotMap;
|
use slotmap::SlotMap;
|
||||||
use std::borrow::Cow;
|
use std::{borrow::Cow, collections::HashMap};
|
||||||
|
|
||||||
mod applets;
|
mod applets;
|
||||||
|
|
||||||
|
|
@ -21,6 +22,7 @@ pub struct Page {
|
||||||
panel_config: Option<CosmicPanelConfig>,
|
panel_config: Option<CosmicPanelConfig>,
|
||||||
// TODO move these into panel config
|
// TODO move these into panel config
|
||||||
appearance: Appearance,
|
appearance: Appearance,
|
||||||
|
pub outputs: HashMap<ObjectId, (String, WlOutput)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Page {
|
impl Default for Page {
|
||||||
|
|
@ -38,6 +40,7 @@ impl Default for Page {
|
||||||
config_helper,
|
config_helper,
|
||||||
panel_config,
|
panel_config,
|
||||||
appearance: Appearance::Dark,
|
appearance: Appearance::Dark,
|
||||||
|
outputs: HashMap::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -82,7 +85,10 @@ pub fn behavior_and_position() -> Section<crate::pages::Message> {
|
||||||
])
|
])
|
||||||
.view::<Page>(|_binder, page, section| {
|
.view::<Page>(|_binder, page, section| {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
let panel_config = page.panel_config.as_ref().unwrap();
|
let panel_config = match page.panel_config.as_ref() {
|
||||||
|
Some(panel_config) => panel_config,
|
||||||
|
None => return Element::from(text(fl!("unknown"))),
|
||||||
|
};
|
||||||
settings::view_section(§ion.title)
|
settings::view_section(§ion.title)
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[0],
|
&descriptions[0],
|
||||||
|
|
@ -103,7 +109,23 @@ pub fn behavior_and_position() -> Section<crate::pages::Message> {
|
||||||
|a| Message::PanelAnchor(a.0),
|
|a| Message::PanelAnchor(a.0),
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
.add(settings::item(&descriptions[2], text("todo")))
|
.add(settings::item(
|
||||||
|
&descriptions[2],
|
||||||
|
pick_list(
|
||||||
|
Cow::from(
|
||||||
|
Some(fl!("all"))
|
||||||
|
.into_iter()
|
||||||
|
.chain(page.outputs.values().map(|(name, _)| name.clone()))
|
||||||
|
.collect::<Vec<_>>(),
|
||||||
|
),
|
||||||
|
match &panel_config.output {
|
||||||
|
CosmicPanelOuput::All => Some(fl!("all")),
|
||||||
|
CosmicPanelOuput::Active => None,
|
||||||
|
CosmicPanelOuput::Name(ref name) => Some(name.clone()),
|
||||||
|
},
|
||||||
|
Message::Output,
|
||||||
|
),
|
||||||
|
))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::Panel)
|
.map(crate::pages::Message::Panel)
|
||||||
})
|
})
|
||||||
|
|
@ -119,9 +141,12 @@ pub fn style() -> Section<crate::pages::Message> {
|
||||||
fl!("panel-style", "size"),
|
fl!("panel-style", "size"),
|
||||||
fl!("panel-style", "background-opacity"),
|
fl!("panel-style", "background-opacity"),
|
||||||
])
|
])
|
||||||
.view::<Page>(|binder, page, section| {
|
.view::<Page>(|_binder, page, section| {
|
||||||
let descriptions = §ion.descriptions;
|
let descriptions = §ion.descriptions;
|
||||||
let panel_config = page.panel_config.as_ref().unwrap();
|
let panel_config = match page.panel_config.as_ref() {
|
||||||
|
Some(panel_config) => panel_config,
|
||||||
|
None => return Element::from(text(fl!("unknown"))),
|
||||||
|
};
|
||||||
settings::view_section(§ion.title)
|
settings::view_section(§ion.title)
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[0],
|
&descriptions[0],
|
||||||
|
|
@ -145,41 +170,55 @@ pub fn style() -> Section<crate::pages::Message> {
|
||||||
))
|
))
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[3],
|
&descriptions[3],
|
||||||
slider(
|
// TODO custom discrete slider variant
|
||||||
0..=4,
|
row![
|
||||||
match panel_config.size {
|
text(fl!("small")),
|
||||||
PanelSize::XS => 0,
|
slider(
|
||||||
PanelSize::S => 1,
|
0..=4,
|
||||||
PanelSize::M => 2,
|
match panel_config.size {
|
||||||
PanelSize::L => 3,
|
PanelSize::XS => 0,
|
||||||
PanelSize::XL => 4,
|
PanelSize::S => 1,
|
||||||
},
|
PanelSize::M => 2,
|
||||||
|v| {
|
PanelSize::L => 3,
|
||||||
if v == 0 {
|
PanelSize::XL => 4,
|
||||||
Message::PanelSize(PanelSize::XS)
|
},
|
||||||
} else if v == 1 {
|
|v| {
|
||||||
Message::PanelSize(PanelSize::S)
|
if v == 0 {
|
||||||
} else if v == 2 {
|
Message::PanelSize(PanelSize::XS)
|
||||||
Message::PanelSize(PanelSize::M)
|
} else if v == 1 {
|
||||||
} else if v == 3 {
|
Message::PanelSize(PanelSize::S)
|
||||||
Message::PanelSize(PanelSize::L)
|
} else if v == 2 {
|
||||||
} else {
|
Message::PanelSize(PanelSize::M)
|
||||||
Message::PanelSize(PanelSize::XL)
|
} else if v == 3 {
|
||||||
}
|
Message::PanelSize(PanelSize::L)
|
||||||
},
|
} else {
|
||||||
),
|
Message::PanelSize(PanelSize::XL)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
text(fl!("large"))
|
||||||
|
]
|
||||||
|
.spacing(12),
|
||||||
))
|
))
|
||||||
.add(settings::item(
|
.add(settings::item(
|
||||||
&descriptions[4],
|
&descriptions[4],
|
||||||
slider(
|
row![
|
||||||
0..=100,
|
text(fl!("number", HashMap::from_iter(vec![("number", 0)]))),
|
||||||
(match panel_config.background {
|
slider(
|
||||||
cosmic_panel_config::CosmicPanelBackground::ThemeDefault(Some(a))
|
0..=100,
|
||||||
| cosmic_panel_config::CosmicPanelBackground::Color([_, _, _, a]) => a,
|
(match panel_config.background {
|
||||||
_ => 0.0,
|
cosmic_panel_config::CosmicPanelBackground::ThemeDefault(Some(
|
||||||
} * 100.0) as i32,
|
a,
|
||||||
|v| Message::Opacity(v as f32 / 100.0),
|
))
|
||||||
),
|
| cosmic_panel_config::CosmicPanelBackground::Color([_, _, _, a]) =>
|
||||||
|
a,
|
||||||
|
_ => 0.0,
|
||||||
|
} * 100.0) as i32,
|
||||||
|
|v| Message::Opacity(v as f32 / 100.0),
|
||||||
|
),
|
||||||
|
text(fl!("number", HashMap::from_iter(vec![("number", 100)]))),
|
||||||
|
]
|
||||||
|
.spacing(12),
|
||||||
))
|
))
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::Panel)
|
.map(crate::pages::Message::Panel)
|
||||||
|
|
@ -216,6 +255,8 @@ pub fn configuration() -> Section<crate::pages::Message> {
|
||||||
Element::from(settings)
|
Element::from(settings)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::module_name_repetitions)]
|
||||||
pub fn panel_dock_links() -> Section<crate::pages::Message> {
|
pub fn panel_dock_links() -> Section<crate::pages::Message> {
|
||||||
Section::default()
|
Section::default()
|
||||||
.title(fl!("desktop-panels-and-applets"))
|
.title(fl!("desktop-panels-and-applets"))
|
||||||
|
|
@ -270,6 +311,7 @@ pub fn panel_dock_links() -> Section<crate::pages::Message> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::module_name_repetitions)]
|
||||||
pub fn add_panel() -> Section<crate::pages::Message> {
|
pub fn add_panel() -> Section<crate::pages::Message> {
|
||||||
Section::default()
|
Section::default()
|
||||||
.title(fl!("panel-missing"))
|
.title(fl!("panel-missing"))
|
||||||
|
|
@ -277,12 +319,8 @@ pub fn add_panel() -> Section<crate::pages::Message> {
|
||||||
fl!("panel-missing", "desc"),
|
fl!("panel-missing", "desc"),
|
||||||
fl!("panel-missing", "fix"),
|
fl!("panel-missing", "fix"),
|
||||||
])
|
])
|
||||||
.view::<Page>(|binder, _page, section| {
|
.view::<Page>(|_binder, _page, section| {
|
||||||
let desktop = binder
|
// _descriptions = §ion.descriptions;
|
||||||
.page::<super::Page>()
|
|
||||||
.expect("desktop page not found");
|
|
||||||
|
|
||||||
let descriptions = §ion.descriptions;
|
|
||||||
settings::view_section(§ion.title)
|
settings::view_section(§ion.title)
|
||||||
.apply(Element::from)
|
.apply(Element::from)
|
||||||
.map(crate::pages::Message::Desktop)
|
.map(crate::pages::Message::Desktop)
|
||||||
|
|
@ -325,13 +363,15 @@ pub enum Message {
|
||||||
// panel messages
|
// panel messages
|
||||||
AutoHidePanel(bool),
|
AutoHidePanel(bool),
|
||||||
PanelAnchor(PanelAnchor),
|
PanelAnchor(PanelAnchor),
|
||||||
Output(CosmicPanelOuput),
|
Output(String),
|
||||||
AnchorGap(bool),
|
AnchorGap(bool),
|
||||||
PanelSize(PanelSize),
|
PanelSize(PanelSize),
|
||||||
Appearance(Appearance),
|
Appearance(Appearance),
|
||||||
ExtendToEdge(bool),
|
ExtendToEdge(bool),
|
||||||
Opacity(f32),
|
Opacity(f32),
|
||||||
Applets,
|
Applets,
|
||||||
|
OutputAdded(String, WlOutput),
|
||||||
|
OutputRemoved(WlOutput),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Page {
|
impl Page {
|
||||||
|
|
@ -347,7 +387,7 @@ impl Page {
|
||||||
handle_size: 4,
|
handle_size: 4,
|
||||||
});
|
});
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::PanelAnchor(anchor) => {
|
Message::PanelAnchor(anchor) => {
|
||||||
let helper = self.config_helper.as_ref().unwrap();
|
let helper = self.config_helper.as_ref().unwrap();
|
||||||
|
|
@ -355,16 +395,26 @@ impl Page {
|
||||||
|
|
||||||
panel_config.anchor = anchor;
|
panel_config.anchor = anchor;
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
|
}
|
||||||
|
Message::Output(name) => {
|
||||||
|
let helper = self.config_helper.as_ref().unwrap();
|
||||||
|
let panel_config = self.panel_config.as_mut().unwrap();
|
||||||
|
|
||||||
|
panel_config.output = match name {
|
||||||
|
s if s == fl!("all") => CosmicPanelOuput::All,
|
||||||
|
_ => CosmicPanelOuput::Name(name),
|
||||||
|
};
|
||||||
|
|
||||||
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::Output(_) => todo!(),
|
|
||||||
Message::AnchorGap(enabled) => {
|
Message::AnchorGap(enabled) => {
|
||||||
let helper = self.config_helper.as_ref().unwrap();
|
let helper = self.config_helper.as_ref().unwrap();
|
||||||
let panel_config = self.panel_config.as_mut().unwrap();
|
let panel_config = self.panel_config.as_mut().unwrap();
|
||||||
|
|
||||||
panel_config.anchor_gap = enabled;
|
panel_config.anchor_gap = enabled;
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::PanelSize(size) => {
|
Message::PanelSize(size) => {
|
||||||
let helper = self.config_helper.as_ref().unwrap();
|
let helper = self.config_helper.as_ref().unwrap();
|
||||||
|
|
@ -372,7 +422,7 @@ impl Page {
|
||||||
|
|
||||||
panel_config.size = size;
|
panel_config.size = size;
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::Appearance(_) => {
|
Message::Appearance(_) => {
|
||||||
//TODO update panel config to support these kinds of configs
|
//TODO update panel config to support these kinds of configs
|
||||||
|
|
@ -383,7 +433,7 @@ impl Page {
|
||||||
|
|
||||||
panel_config.expand_to_edges = enabled;
|
panel_config.expand_to_edges = enabled;
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::Opacity(opacity) => {
|
Message::Opacity(opacity) => {
|
||||||
let helper = self.config_helper.as_ref().unwrap();
|
let helper = self.config_helper.as_ref().unwrap();
|
||||||
|
|
@ -398,9 +448,16 @@ impl Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = panel_config.write_entry(helper);
|
_ = panel_config.write_entry(helper);
|
||||||
}
|
}
|
||||||
Message::Applets => todo!(),
|
Message::Applets => todo!(),
|
||||||
|
|
||||||
|
Message::OutputAdded(name, output) => {
|
||||||
|
self.outputs.insert(output.id(), (name, output));
|
||||||
|
}
|
||||||
|
Message::OutputRemoved(output) => {
|
||||||
|
self.outputs.remove(&output.id());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ app = COSMIC Settings
|
||||||
|
|
||||||
unknown = Unknown
|
unknown = Unknown
|
||||||
|
|
||||||
|
number = { $number }
|
||||||
|
|
||||||
## Desktop
|
## Desktop
|
||||||
|
|
||||||
desktop = Desktop
|
desktop = Desktop
|
||||||
|
|
@ -74,6 +76,9 @@ panel-style = Style
|
||||||
.size = Size
|
.size = Size
|
||||||
.background-opacity = Background opacity
|
.background-opacity = Background opacity
|
||||||
|
|
||||||
|
small = Small
|
||||||
|
large = Large
|
||||||
|
|
||||||
panel-applets = Configuration
|
panel-applets = Configuration
|
||||||
.desc = Configure panel applets.
|
.desc = Configure panel applets.
|
||||||
|
|
||||||
|
|
@ -82,6 +87,9 @@ panel-missing = Panel Configuration is Missing
|
||||||
.fix = Reset to default
|
.fix = Reset to default
|
||||||
|
|
||||||
applets = Applets
|
applets = Applets
|
||||||
|
|
||||||
|
all = All
|
||||||
|
|
||||||
## Desktop: Wallpaper
|
## Desktop: Wallpaper
|
||||||
|
|
||||||
wallpaper = Wallpaper
|
wallpaper = Wallpaper
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue