From 68beafe911e120e1922566e61ad64597fe544b92 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Thu, 21 Dec 2023 10:41:46 -0800 Subject: [PATCH] Subscribe to changes in cosmic-comp configuration --- Cargo.lock | 70 +++++++++++++++++++++++++++-------------------------- Cargo.toml | 5 ++++ src/main.rs | 37 +++++++++++++++++++++++----- 3 files changed, 72 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd37fe3..6b96577 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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]] diff --git a/Cargo.toml b/Cargo.toml index 6ee6a60..46a4b51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" } diff --git a/src/main.rs b/src/main.rs index 97ce56e..ad1dc32 100644 --- a/src/main.rs +++ b/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 = static TOPLEVEL_MIME: Lazy = 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, +} +*/ + #[derive(Parser, Debug, Clone)] #[command(author, version, about, long_about = None)] #[command(propagate_version = true)] @@ -120,6 +131,7 @@ enum Msg { DndWorkspaceData(String, Vec), 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)); }