Subscribe to changes in cosmic-comp configuration
This commit is contained in:
parent
f6ba3b6f98
commit
68beafe911
3 changed files with 72 additions and 40 deletions
70
Cargo.lock
generated
70
Cargo.lock
generated
|
|
@ -154,9 +154,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.75"
|
||||
version = "1.0.76"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
|
||||
checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355"
|
||||
|
||||
[[package]]
|
||||
name = "apply"
|
||||
|
|
@ -365,7 +365,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -394,13 +394,13 @@ checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46"
|
|||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.74"
|
||||
version = "0.1.75"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
|
||||
checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -563,7 +563,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -656,7 +656,7 @@ dependencies = [
|
|||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -785,8 +785,9 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "cosmic-comp-config"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/pop-os/cosmic-comp#d4d51192b563d4244a216d8ff207f8638093e6f4"
|
||||
source = "git+https://github.com/pop-os/cosmic-comp#aa9ec52e6228150e46bff80f66989c4e51e2f9f8"
|
||||
dependencies = [
|
||||
"cosmic-config",
|
||||
"input",
|
||||
"serde",
|
||||
]
|
||||
|
|
@ -878,6 +879,7 @@ dependencies = [
|
|||
"gbm",
|
||||
"itertools 0.12.0",
|
||||
"libcosmic",
|
||||
"log",
|
||||
"memmap2 0.9.3",
|
||||
"once_cell",
|
||||
"tokio",
|
||||
|
|
@ -984,7 +986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1025,7 +1027,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1036,7 +1038,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
|
|||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1053,7 +1055,7 @@ checksum = "b4801d755ab05b6e25cbbf1afc342993aafa00e572409f9ee21633a19e609d9f"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1076,7 +1078,7 @@ dependencies = [
|
|||
"darling",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1263,7 +1265,7 @@ checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1507,7 +1509,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1655,7 +1657,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -2978,7 +2980,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3002,7 +3004,7 @@ checksum = "b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3101,7 +3103,7 @@ dependencies = [
|
|||
"phf_shared",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3136,7 +3138,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3609,7 +3611,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3620,7 +3622,7 @@ checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -3872,9 +3874,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.41"
|
||||
version = "2.0.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
|
||||
checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -3946,7 +3948,7 @@ checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4067,7 +4069,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -4316,7 +4318,7 @@ dependencies = [
|
|||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
|
@ -4350,7 +4352,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
|
@ -5120,22 +5122,22 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697"
|
|||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.7.31"
|
||||
version = "0.7.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
|
||||
checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.7.31"
|
||||
version = "0.7.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
|
||||
checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.41",
|
||||
"syn 2.0.42",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
|||
|
|
@ -23,7 +23,12 @@ zbus = { version = "3.7.0", default-features = false, features = ["tokio"] }
|
|||
once_cell = "1.18.0"
|
||||
delegate = "0.11.0"
|
||||
itertools = "0.12.0"
|
||||
log = "0.4.20"
|
||||
|
||||
[profile.dev]
|
||||
# Not usable at opt-level 0, at least with software renderer
|
||||
opt-level = 1
|
||||
|
||||
# [patch."https://github.com/pop-os/libcosmic"]
|
||||
# libcosmic = { path = "../libcosmic" }
|
||||
# cosmic-config = { path = "../libcosmic/cosmic-config" }
|
||||
|
|
|
|||
37
src/main.rs
37
src/main.rs
|
|
@ -36,7 +36,8 @@ use cosmic::{
|
|||
},
|
||||
iced_sctk::commands::layer_surface::{destroy_layer_surface, get_layer_surface},
|
||||
};
|
||||
use cosmic_comp_config::workspace::WorkspaceAmount;
|
||||
use cosmic_comp_config::{workspace::WorkspaceAmount, CosmicCompConfig};
|
||||
use cosmic_config::{cosmic_config_derive::CosmicConfigEntry, CosmicConfigEntry};
|
||||
use cosmic_config::{ConfigGet, ConfigSet};
|
||||
use once_cell::sync::Lazy;
|
||||
use std::{
|
||||
|
|
@ -59,6 +60,16 @@ static WORKSPACE_MIME: Lazy<String> =
|
|||
static TOPLEVEL_MIME: Lazy<String> =
|
||||
Lazy::new(|| format!("text/x.cosmic-toplevel-id-{}", std::process::id()));
|
||||
|
||||
/*
|
||||
#[derive(Clone, Debug, Default, PartialEq, CosmicConfigEntry)]
|
||||
struct CompConfig {
|
||||
workspaces: cosmic_comp_config::workspace::WorkspaceConfig,
|
||||
input_default: cosmic_comp_config::input::InputConfig,
|
||||
input_touchpad: cosmic_comp_config::input::InputConfig,
|
||||
input_devices: HashMap<String, cosmic_comp_config::input::InputConfig>,
|
||||
}
|
||||
*/
|
||||
|
||||
#[derive(Parser, Debug, Clone)]
|
||||
#[command(author, version, about, long_about = None)]
|
||||
#[command(propagate_version = true)]
|
||||
|
|
@ -120,6 +131,7 @@ enum Msg {
|
|||
DndWorkspaceData(String, Vec<u8>),
|
||||
SourceFinished,
|
||||
NewWorkspace,
|
||||
CompConfig(CosmicCompConfig),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
@ -174,10 +186,7 @@ struct Conf {
|
|||
impl Default for Conf {
|
||||
fn default() -> Self {
|
||||
let cosmic_comp_config = cosmic_config::Config::new("com.system76.CosmicComp", 1).unwrap();
|
||||
let workspace_config = cosmic_comp_config.get("workspaces").unwrap_or_else(|err| {
|
||||
eprintln!("Failed to read config 'worspaces': {}", err);
|
||||
cosmic_comp_config::workspace::WorkspaceConfig::default()
|
||||
});
|
||||
let workspace_config = Default::default();
|
||||
Self {
|
||||
cosmic_comp_config,
|
||||
workspace_config,
|
||||
|
|
@ -593,6 +602,10 @@ impl Application for App {
|
|||
.set("workspaces", &self.conf.workspace_config);
|
||||
}
|
||||
}
|
||||
Msg::CompConfig(c) => {
|
||||
dbg!(&c);
|
||||
self.conf.workspace_config = c.workspaces;
|
||||
}
|
||||
}
|
||||
|
||||
Command::none()
|
||||
|
|
@ -623,7 +636,19 @@ impl Application for App {
|
|||
None
|
||||
}
|
||||
});
|
||||
let mut subscriptions = vec![events];
|
||||
let config_subscription = cosmic_config::config_subscription::<_, CosmicCompConfig>(
|
||||
"config-sub",
|
||||
"com.system76.CosmicComp".into(),
|
||||
1,
|
||||
)
|
||||
.map(|(_, res)| match res {
|
||||
Ok(c) => Msg::CompConfig(c),
|
||||
Err((errs, c)) => {
|
||||
log::error!("Failed to load compositor config: {:?}", errs);
|
||||
Msg::CompConfig(c)
|
||||
}
|
||||
});
|
||||
let mut subscriptions = vec![events, config_subscription];
|
||||
if let Some(conn) = self.conn.clone() {
|
||||
subscriptions.push(wayland::subscription(conn).map(Msg::Wayland));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue