From 3e2f7368d0d5da8802d8d84810dd6ed92b9bc8eb Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Thu, 30 Jul 2026 17:56:39 +0200 Subject: [PATCH 01/20] start-cosmic: use sh Nothing else is cosmic uses bash, so it's only a dependency for a single script. Rewrite start-cosmic as a shell script, dropping the dependency on bash. No AI/LLM-generated code is included in this PR. --- data/start-cosmic | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/data/start-cosmic b/data/start-cosmic index c91f463..d3b08be 100755 --- a/data/start-cosmic +++ b/data/start-cosmic @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh set -e @@ -23,8 +23,8 @@ fi if [ -n "${SHELL}" ]; then # --in-login-shell: our flag to indicate that we don't need to recurse any further if [ "${1}" != "--in-login-shell" ]; then - # `exec -l`: like `login`, prefixes $SHELL with a hyphen to start a login shell - exec bash -c "exec -l '${SHELL}' -c '${0} --in-login-shell'" + # `-l`: start $SHELL as a login shell so it sources the user's profile. + exec "${SHELL}" -l -c "'${0}' --in-login-shell" fi fi @@ -42,7 +42,7 @@ export DCONF_PROFILE=cosmic # Set the QT platform theme to CuteCosmic. Fallback to qt6ct if CuteCosmic is not installed. if [ -z "$QT_QPA_PLATFORMTHEME" ]; then export QT_QPA_PLATFORMTHEME=cosmic - for QT_PLUGIN_PATH in /usr/lib{*,/*}/qt6/plugins; do + for QT_PLUGIN_PATH in /usr/lib*/qt6/plugins /usr/lib/*/qt6/plugins; do if [ -f "${QT_PLUGIN_PATH}/platformthemes/libcutecosmictheme.so" ]; then # CuteCosmic found, no need for a fallback. export QT_QPA_PLATFORMTHEME=cosmic @@ -84,30 +84,26 @@ if command -v systemctl >/dev/null; then # For environment variables already imported into the user's # session, if the value imported differs from the value in this # environment, update it. - mapfile -t existing_env_vars < <(systemctl --user show-environment) - for env_var in "${existing_env_vars[@]}"; do + systemctl --user show-environment | while IFS= read -r env_var; do env_var_name="${env_var%%=*}" - env_var_value=${!env_var_name:-} + env_var_value="$(printenv "${env_var_name}" || true)" # Skip current iteration if the environment variable's value # in the current envionment is unset. - if [[ -z "${env_var_value}" ]]; then + if [ -z "${env_var_value}" ]; then continue fi - env_var_val_str_to_compare="${env_var_name}=${env_var_value}" - env_var_val_str_to_compare_ansi_c_quoted="${env_var_name}=\$'$(printf '%q' "${env_var_value}")'" - if [[ "${env_var}" == "${env_var_val_str_to_compare}" ]]; then - continue - elif [[ "${env_var}" == "${env_var_val_str_to_compare_ansi_c_quoted}" ]]; then + # Skip updating variables where systemd already holds this exact value. + if [ "${env_var}" = "${env_var_name}=${env_var_value}" ]; then continue fi - systemctl --user import-environment "${env_var_name}" ||: + systemctl --user import-environment "${env_var_name}" || true done fi # Run cosmic-session -if [[ -z "${DBUS_SESSION_BUS_ADDRESS}" ]]; then +if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then exec /usr/bin/dbus-run-session -- /usr/bin/cosmic-session else exec /usr/bin/cosmic-session From 3bdf11741a430821ea0114aa670ad3dff8fd8e09 Mon Sep 17 00:00:00 2001 From: Hugo Osvaldo Barrera Date: Thu, 30 Jul 2026 17:45:46 +0200 Subject: [PATCH 02/20] Fix hardcoded values for XDG_RUNTIME_DIR Remove hardcoded values and use the proper backing environment variable instead. --- data/start-cosmic | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/start-cosmic b/data/start-cosmic index d3b08be..18944fc 100755 --- a/data/start-cosmic +++ b/data/start-cosmic @@ -56,8 +56,8 @@ if [ -z "$QT_QPA_PLATFORMTHEME" ]; then fi # Start gnome keyring components if the daemon is active -# -> check if /run/user/$UID/keyring exists -if [ -d "/run/user/$(id -u)/keyring" ]; then +# -> check if $XDG_RUNTIME_DIR/keyring exists +if [ -d "$XDG_RUNTIME_DIR/keyring" ]; then # Use PATH lookup instead of hardcoding /usr/bin if command -v gnome-keyring-daemon >/dev/null 2>&1; then @@ -69,10 +69,10 @@ if [ -d "/run/user/$(id -u)/keyring" ]; then # Only set SSH_AUTH_SOCK if the socket actually exists. Either # set the correct one, or don't set one at all. Don't set the # wrong value. - if [ -S "/run/user/$(id -u)/gcr/ssh" ]; then - export SSH_AUTH_SOCK="/run/user/$(id -u)/gcr/ssh" - elif [ -S "/run/user/$(id -u)/keyring/ssh" ]; then - export SSH_AUTH_SOCK="/run/user/$(id -u)/keyring/ssh" + if [ -S "$XDG_RUNTIME_DIR/gcr/ssh" ]; then + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh" + elif [ -S "$XDG_RUNTIME_DIR/keyring/ssh" ]; then + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" fi fi From fa2d2a40cec25a07046236aab68f44dea2b2dbe8 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Fri, 21 Aug 2026 09:54:33 +0200 Subject: [PATCH 03/20] session: plafonne les trames pre-rendues par le pilote NVIDIA Passe __GL_MaxFramesAllowed=1 a cosmic-comp lorsque /proc/driver/nvidia existe. Sans cela le pilote laisse grossir sa file de trames pre-rendues, ce qui ajoute de la latence a l'affichage (smithay#1562, cosmic-comp#1179). La variable n'est ajoutee que sur machine NVIDIA ; ailleurs l'environnement transmis reste le seul COSMIC_SESSION_SOCK. Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 16 ++++++++-------- src/comp.rs | 11 ++++++++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efb8899..33d25c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1889,14 +1889,6 @@ dependencies = [ name = "softbuffer" version = "0.4.1" -[[patch.unused]] -name = "cosmic-freedesktop-icons" -version = "0.4.0" - -[[patch.unused]] -name = "smithay-clipboard" -version = "0.8.0" - [[patch.unused]] name = "dpi" version = "0.1.2" @@ -1944,3 +1936,11 @@ version = "0.31.0-beta.2" [[patch.unused]] name = "winit-x11" version = "0.31.0-beta.2" + +[[patch.unused]] +name = "cosmic-freedesktop-icons" +version = "0.4.0" + +[[patch.unused]] +name = "smithay-clipboard" +version = "0.8.0" diff --git a/src/comp.rs b/src/comp.rs index 8457d08..47ec37c 100644 --- a/src/comp.rs +++ b/src/comp.rs @@ -122,12 +122,21 @@ pub fn run_compositor( Ok(tokio::spawn(async move { // Create a new process handler for cosmic-comp, with our compositor socket's // file descriptor as the `COSMIC_SESSION_SOCK` environment variable. + let mut comp_env = vec![( + "COSMIC_SESSION_SOCK".to_string(), + comp.as_raw_fd().to_string(), + )]; + // NVIDIA keeps a growing pool of pre-rendered compositor frames + // (smithay#1562 / cosmic-comp#1179). Cap it to a single buffer. + if std::path::Path::new("/proc/driver/nvidia").exists() { + comp_env.push(("__GL_MaxFramesAllowed".to_string(), "1".to_string())); + } process_manager .start_process( Process::new() .with_executable(exec) .with_args(args) - .with_env([("COSMIC_SESSION_SOCK", comp.as_raw_fd().to_string())]) + .with_env(comp_env) .with_on_exit(move |pman, _, err_code, _will_restart| { let session_dbus_tx = session_dbus_tx.clone(); async move { From 4904c346e81541e3afe90cc6981edfeb98179518 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Thu, 27 Aug 2026 07:58:50 +0200 Subject: [PATCH 04/20] chore: fige Cargo.lock tel que resolu apres le merge 1.7.0 Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 33d25c9..544ad68 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1885,10 +1885,18 @@ dependencies = [ "winnow", ] +[[patch.unused]] +name = "cosmic-freedesktop-icons" +version = "0.4.0" + [[patch.unused]] name = "softbuffer" version = "0.4.1" +[[patch.unused]] +name = "smithay-clipboard" +version = "0.8.0" + [[patch.unused]] name = "dpi" version = "0.1.2" @@ -1936,11 +1944,3 @@ version = "0.31.0-beta.2" [[patch.unused]] name = "winit-x11" version = "0.31.0-beta.2" - -[[patch.unused]] -name = "cosmic-freedesktop-icons" -version = "0.4.0" - -[[patch.unused]] -name = "smithay-clipboard" -version = "0.8.0" From 7a4f481ea0dab40a8fd3feb477ce27bc3859dccb Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Fri, 4 Sep 2026 10:48:53 +0200 Subject: [PATCH 05/20] chore: fige Cargo.lock (reordonnancement patch.unused par cargo) --- Cargo.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 544ad68..06dcb62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1889,14 +1889,6 @@ dependencies = [ name = "cosmic-freedesktop-icons" version = "0.4.0" -[[patch.unused]] -name = "softbuffer" -version = "0.4.1" - -[[patch.unused]] -name = "smithay-clipboard" -version = "0.8.0" - [[patch.unused]] name = "dpi" version = "0.1.2" @@ -1944,3 +1936,11 @@ version = "0.31.0-beta.2" [[patch.unused]] name = "winit-x11" version = "0.31.0-beta.2" + +[[patch.unused]] +name = "smithay-clipboard" +version = "0.8.0" + +[[patch.unused]] +name = "softbuffer" +version = "0.4.1" From d02ced62971fcfe8c8eb785fcd0c3b2eab26348e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Tue, 25 Aug 2026 12:55:16 +0200 Subject: [PATCH 06/20] feat: add version argument --- src/main.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main.rs b/src/main.rs index 0f2c00f..1db82d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,6 +46,13 @@ const ENVIRONMENT_NAME: &'static str = "COSMIC"; #[tokio::main(flavor = "current_thread")] async fn main() -> Result<()> { + if let Some(arg) = env::args().nth(1) + && (arg == "--version" || arg == "-V") + { + println!("cosmic-session {}", env!("CARGO_PKG_VERSION")); + return Ok(()); + } + color_eyre::install().wrap_err("failed to install color_eyre error handler")?; let trace = tracing_subscriber::registry(); From 3ccf897693f2af81235fcfaf41456b7d031cfb4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vuka=C5=A1in=20Vojinovi=C4=87?= <150025636+git-f0x@users.noreply.github.com> Date: Fri, 4 Sep 2026 19:24:06 +0200 Subject: [PATCH 07/20] feat: set `COSMIC_VERSION` env var --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c37f2ce..a9181bc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "cosmic-session" -version = "1.0.0" +version = "1.8.0" dependencies = [ "color-eyre", "cosmic-dbus-a11y", diff --git a/Cargo.toml b/Cargo.toml index 136af09..47f8dea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cosmic-session" description = "The session manager for the COSMIC desktop environment" -version = "1.0.0" +version = "1.8.0" license = "GPL-3.0-only" edition = "2024" rust-version = "1.93" diff --git a/src/main.rs b/src/main.rs index 1db82d0..6c26691 100644 --- a/src/main.rs +++ b/src/main.rs @@ -166,6 +166,13 @@ async fn start( env_vars.push(("XDG_SESSION_TYPE".to_string(), "wayland".to_string())); systemd::set_systemd_environment("XDG_SESSION_TYPE", "wayland").await; + // expose the session version + env_vars.push(( + "COSMIC_VERSION".to_string(), + env!("CARGO_PKG_VERSION").to_string(), + )); + systemd::set_systemd_environment("COSMIC_VERSION", env!("CARGO_PKG_VERSION")).await; + #[cfg(feature = "systemd")] let _inhibit_fd = if *is_systemd_used() { match get_systemd_env().await { From cd90a03e3fa525a4ff9442fdd341859c3ced2ebb Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Mon, 14 Sep 2026 17:54:49 +0200 Subject: [PATCH 08/20] Epoch 1.9.0 version update Generated by cosmic-epoch scripts/version-update.sh --- Cargo.lock | 564 ++++++++++++++++------------------------------- Cargo.toml | 2 +- debian/changelog | 6 + 3 files changed, 202 insertions(+), 370 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a9181bc..69e1a49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,19 +19,13 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - [[package]] name = "async-broadcast" version = "0.7.2" @@ -125,7 +119,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -154,13 +148,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] @@ -171,9 +165,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "backtrace" @@ -192,9 +186,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" [[package]] name = "block" @@ -204,9 +198,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "blocking" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa" dependencies = [ "async-channel", "async-task", @@ -217,32 +211,32 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cc" -version = "1.2.61" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4" dependencies = [ "find-msvc-tools", "shlex", @@ -293,14 +287,14 @@ dependencies = [ [[package]] name = "cosmic-dbus-a11y" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#507e342c21d3ce6ae41b1d4f3fa2f0ad5ee23e75" +source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ "zbus", ] [[package]] name = "cosmic-session" -version = "1.8.0" +version = "1.9.0" dependencies = [ "color-eyre", "cosmic-dbus-a11y", @@ -326,9 +320,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" [[package]] name = "dirs" @@ -375,7 +369,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -396,11 +390,10 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.4.1" +version = "5.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" dependencies = [ - "concurrent-queue", "parking", "pin-project-lite", ] @@ -417,37 +410,32 @@ dependencies = [ [[package]] name = "eyre" -version = "0.6.12" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" dependencies = [ + "autocfg", "indenter", "once_cell", ] [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" [[package]] name = "freedesktop-desktop-entry" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28273c5c6b97a5f07724f6652f064c0c7f637f9aa5e7c09c83bc3bc4ad4ea245" +checksum = "9cfa09933e03f1ced380ad639822d65cb59a1914217da6c72aa8db3563e94214" dependencies = [ "bstr", "gettext-rs", @@ -460,15 +448,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -485,32 +473,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-core", "futures-macro", @@ -544,22 +532,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "wasip2", - "wasip3", ] [[package]] name = "gettext-rs" -version = "0.7.7" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5857dc1b7f0fee86961de833f434e29494d72af102ce5355738c0664222bdf" +checksum = "9df5e3fa8c077b15fdfa8ce130e2bc73d663b8aaa6d51b71421b8659980b1d80" dependencies = [ "gettext-sys", "locale_config", @@ -567,9 +553,9 @@ dependencies = [ [[package]] name = "gettext-sys" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea859ab0dd7e70ff823032b3e077d03d39c965d68c6c10775add60e999d8ee9" +checksum = "4caa7e4460b196107cc1bb2629488e8b6dbb7f34f6683ea6753c4ac22f590785" dependencies = [ "cc", "temp-dir", @@ -583,30 +569,15 @@ checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "hashbrown" -version = "0.15.5" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", -] - -[[package]] -name = "hashbrown" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" [[package]] name = "hex" @@ -614,12 +585,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "indenter" version = "0.3.4" @@ -628,14 +593,12 @@ checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" dependencies = [ "equivalent", - "hashbrown 0.17.0", - "serde", - "serde_core", + "hashbrown", ] [[package]] @@ -646,11 +609,12 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -676,23 +640,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libredox" -version = "0.1.16" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +checksum = "6480ccc157a1389bb2e4891b24751b0f798ba640d22386f23143fbcc89da195a" dependencies = [ "libc", ] @@ -727,9 +685,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "log-panics" @@ -771,9 +729,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memoffset" @@ -795,9 +753,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" dependencies = [ "libc", "wasi", @@ -875,9 +833,9 @@ dependencies = [ [[package]] name = "owo-colors" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" +checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" [[package]] name = "parking" @@ -948,16 +906,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -969,18 +917,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -999,9 +947,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha", "rand_core", @@ -1048,9 +996,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -1060,9 +1008,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -1071,15 +1019,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustc-demangle" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustix" @@ -1096,9 +1044,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "scopeguard" @@ -1106,17 +1054,11 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" - [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -1124,29 +1066,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -1157,13 +1099,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] @@ -1183,9 +1125,9 @@ checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "signal-hook-registry" @@ -1214,15 +1156,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891" [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys", @@ -1230,9 +1172,20 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9" dependencies = [ "proc-macro2", "quote", @@ -1258,7 +1211,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys", @@ -1266,38 +1219,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] [[package]] name = "tokio" -version = "1.52.1" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -1313,20 +1266,20 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.5", ] [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", @@ -1346,9 +1299,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.15+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614" dependencies = [ "indexmap", "toml_datetime", @@ -1358,9 +1311,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] @@ -1384,7 +1337,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1470,17 +1423,11 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "uuid" -version = "1.23.1" +version = "1.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" dependencies = [ "js-sys", "serde_core", @@ -1507,27 +1454,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf" dependencies = [ "cfg-if", "once_cell", @@ -1538,9 +1476,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1548,60 +1486,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 3.0.5", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "winapi" version = "0.3.9" @@ -1641,107 +1545,19 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "xdg" version = "3.0.0" @@ -1750,9 +1566,9 @@ checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" [[package]] name = "zbus" -version = "5.15.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" +checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907" dependencies = [ "async-broadcast", "async-executor", @@ -1786,14 +1602,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.15.0" +version = "5.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" +checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 3.0.5", "zbus_names", "zvariant", "zvariant_utils", @@ -1801,9 +1617,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.2" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" +checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" dependencies = [ "serde", "winnow", @@ -1821,67 +1637,77 @@ dependencies = [ ] [[package]] -name = "zerocopy" -version = "0.8.48" +name = "zcheapstr" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473" +dependencies = [ + "serde", +] + +[[package]] +name = "zerocopy" +version = "0.8.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zvariant" -version = "5.10.1" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db0ecb8987cf5e92653c57c098f7f0e39a03112edb796f4fe089fb7eaa14ff" +checksum = "c1d34c27cc6cdd1f458427519dd6b8612f7b7e3f7b9a0b2355d041dda9869147" dependencies = [ "endi", "enumflags2", "serde", "winnow", + "zcheapstr", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.10.1" +version = "5.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b949b639ab1b4bed763aa7481ba0e368af68d8b55532f8ed4bec86a59f2ca98" +checksum = "864155e69b4352db0c7f374917bf45d1e0c8d17659c8b3dbf9795f3673f8c497" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 3.0.5", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.3.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" +checksum = "bad0294361a320b694a328460dc73add56c306150f5cb6bfafc44446120008a3" dependencies = [ "proc-macro2", "quote", "serde", - "syn", + "syn 3.0.5", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 47f8dea..3031a67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cosmic-session" description = "The session manager for the COSMIC desktop environment" -version = "1.8.0" +version = "1.9.0" license = "GPL-3.0-only" edition = "2024" rust-version = "1.93" diff --git a/debian/changelog b/debian/changelog index e890468..3201725 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cosmic-session (1.9.0) noble; urgency=medium + + * Epoch 1.9.0 version update + + -- Michael Murphy Mon, 14 Sep 2026 17:54:45 +0200 + cosmic-session (1.0.0) noble; urgency=medium * Initial release From 2770d1155ae1503dfaa7807548363e77cb849e9c Mon Sep 17 00:00:00 2001 From: Christoph Dalski Date: Tue, 15 Sep 2026 16:53:45 +0200 Subject: [PATCH 09/20] fix: login shell path interpreted as string by modern shells The single quotes around the login shell path are interpreted as string by modern shells like nushell. The exec call breaks. Tested locally with nushell. Fixes: #221 --- data/start-cosmic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/start-cosmic b/data/start-cosmic index 18944fc..a5f1842 100755 --- a/data/start-cosmic +++ b/data/start-cosmic @@ -24,7 +24,7 @@ if [ -n "${SHELL}" ]; then # --in-login-shell: our flag to indicate that we don't need to recurse any further if [ "${1}" != "--in-login-shell" ]; then # `-l`: start $SHELL as a login shell so it sources the user's profile. - exec "${SHELL}" -l -c "'${0}' --in-login-shell" + exec "${SHELL}" -l -c "${0} --in-login-shell" fi fi From b712061806c4a2e49256da16fe4eece0562a412f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 15 Sep 2026 19:15:05 -0600 Subject: [PATCH 10/20] Add cosmic-osk --- debian/control | 1 + src/main.rs | 3 +++ 2 files changed, 4 insertions(+) diff --git a/debian/control b/debian/control index e8d41e0..df90ba4 100644 --- a/debian/control +++ b/debian/control @@ -27,6 +27,7 @@ Depends: cosmic-launcher, cosmic-notifications, cosmic-osd, + cosmic-osk, cosmic-panel, cosmic-randr, cosmic-screenshot, diff --git a/src/main.rs b/src/main.rs index 6c26691..ed08703 100644 --- a/src/main.rs +++ b/src/main.rs @@ -352,6 +352,9 @@ async fn start( let span = info_span!(parent: None, "cosmic-osd"); start_component("cosmic-osd", span, &process_manager, &env_vars).await; + let span = info_span!(parent: None, "cosmic-osk"); + start_component("cosmic-osk", span, &process_manager, &env_vars).await; + let span = info_span!(parent: None, "cosmic-bg"); start_component("cosmic-bg", span, &process_manager, &env_vars).await; From 2e0ee1b796ff5406ae7f477c3ad4be3ef00a45c3 Mon Sep 17 00:00:00 2001 From: r0chd Date: Wed, 9 Sep 2026 00:10:30 +0200 Subject: [PATCH 11/20] update flake.lock --- flake.lock | 41 ++++++++++++++++++----------------------- flake.nix | 5 ++--- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/flake.lock b/flake.lock index 8d2b776..67223ed 100644 --- a/flake.lock +++ b/flake.lock @@ -1,17 +1,12 @@ { "nodes": { "crane": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, "locked": { - "lastModified": 1702141249, - "narHash": "sha256-8wDpJKbDTDqFmyJfNEJOLrHYDoEzCjCbmz+lSRoU3CI=", + "lastModified": 1788465171, + "narHash": "sha256-Y1/TTVXjYXGF068IThQH9fPSZ0SIE74PABlUxnWTUH0=", "owner": "ipetkov", "repo": "crane", - "rev": "62fc1a0cbe144c1014d956e603d56bf1ffe69c7d", + "rev": "eb35abda9f232cc6610b1d1e3200d15c49b7ac54", "type": "github" }, "original": { @@ -28,11 +23,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1702189261, - "narHash": "sha256-TN6gE1eZddDhAoRrScV6Wji1Nk3uqMIDjGwN5ZesAZk=", + "lastModified": 1788865058, + "narHash": "sha256-ZkvwEHlSa46BkODMEwHCEh9hlUC2igneJ+noEUn9ww4=", "owner": "nix-community", "repo": "fenix", - "rev": "cae060dbaf53430bb2b549ced0affd54d40e6cee", + "rev": "9efa138447c5773995d98d9aafa9eba4982aceab", "type": "github" }, "original": { @@ -46,11 +41,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -61,11 +56,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1701697642, - "narHash": "sha256-L217WytWZHSY8GW9Gx1A64OnNctbuDbfslaTEofXXRw=", + "lastModified": 1757882181, + "narHash": "sha256-+cCxYIh2UNalTz364p+QYmWHs0P+6wDhiWR4jDIKQIU=", "owner": "numtide", "repo": "nix-filter", - "rev": "c843418ecfd0344ecb85844b082ff5675e02c443", + "rev": "59c44d1909c72441144b93cf0f054be7fe764de5", "type": "github" }, "original": { @@ -76,11 +71,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702206697, - "narHash": "sha256-vE9oEx3Y8TO5MnWwFlmopjHd1JoEBno+EhsfUCq5iR8=", + "lastModified": 1788865024, + "narHash": "sha256-3YkAzvtt4LoE11IcBDzPshIF3fJ0aIoILqE7dAg8CLI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "29d6c96900b9b576c2fb89491452f283aa979819", + "rev": "422d1ae605d7fcd9896412b37dc065c456c0eefb", "type": "github" }, "original": { @@ -102,11 +97,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1702153490, - "narHash": "sha256-F98s0+mUHtqiUk9iCApPTy23YMLmcKqTfsShpIPB40Q=", + "lastModified": 1788794694, + "narHash": "sha256-FROpcpM2ELawfxhW8cWuz8m3dp/0EFAFCiK+AbNw95w=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "9d87a23cdef6087c1a0c97980949e2310271a941", + "rev": "48d839420745124e85140234ce783ccd90dab24e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index eb7660f..e96ed92 100644 --- a/flake.nix +++ b/flake.nix @@ -7,7 +7,6 @@ nix-filter.url = "github:numtide/nix-filter"; crane = { url = "github:ipetkov/crane"; - inputs.nixpkgs.follows = "nixpkgs"; }; fenix = { url = "github:nix-community/fenix"; @@ -19,7 +18,7 @@ flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: let pkgs = nixpkgs.legacyPackages.${system}; - craneLib = crane.lib.${system}.overrideToolchain fenix.packages.${system}.stable.toolchain; + craneLib = (crane.mkLib pkgs).overrideToolchain fenix.packages.${system}.stable.toolchain; pkgDef = { nativeBuildInputs = with pkgs; [ just pkg-config autoPatchelfHook ]; @@ -47,7 +46,7 @@ inherit cosmic-session; }; - packages.default = cosmic-session.overrideAttrs (oldAttrs: rec { + packages.default = cosmic-session.overrideAttrs (oldAttrs: { buildPhase = '' just prefix=$out xdp_cosmic=/run/current-system/sw/bin/xdg-desktop-portal-cosmic build ''; From 81dd888ec9b675356ad3db1c2d980bb308b73a5a Mon Sep 17 00:00:00 2001 From: r0chd Date: Wed, 9 Sep 2026 00:22:01 +0200 Subject: [PATCH 12/20] Fix compilation error when autostart feature is enabled without systemd --- src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index ed08703..20b8651 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,8 +24,9 @@ use std::path::PathBuf; #[cfg(feature = "autostart")] use std::process::{Command, Stdio}; use std::sync::Arc; +use systemd::is_systemd_used; #[cfg(feature = "systemd")] -use systemd::{get_systemd_env, is_systemd_used, spawn_scope}; +use systemd::{get_systemd_env, spawn_scope}; use tokio::signal::unix::{SignalKind, signal}; use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::{Mutex, oneshot}; From 1e4f10b5821982688e4a8a39f819be0bc2ad3e74 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 23 Sep 2026 12:42:27 -0400 Subject: [PATCH 13/20] Recommend cosmic-viewer and set as default image viewer --- data/cosmic-mimeapps.list | 39 ++++++++++++++++++--------------------- debian/control | 1 + 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/data/cosmic-mimeapps.list b/data/cosmic-mimeapps.list index 8637e9b..70bec90 100644 --- a/data/cosmic-mimeapps.list +++ b/data/cosmic-mimeapps.list @@ -160,27 +160,24 @@ application/vnd.debian.binary-package=com.system76.CosmicStore.desktop application/vnd.flatpak.ref=com.system76.CosmicStore.desktop x-scheme-handler/appstream=com.system76.CosmicStore.desktop x-scheme-handler/mime=com.system76.CosmicStore.desktop -image/bmp=org.gnome.eog.desktop -image/gif=org.gnome.eog.desktop -image/jpeg=org.gnome.eog.desktop -image/jpg=org.gnome.eog.desktop -image/pjpeg=org.gnome.eog.desktop -image/png=org.gnome.eog.desktop -image/svg+xml=org.gnome.eog.desktop -image/svg+xml-compressed=org.gnome.eog.desktop -image/x-bmp=org.gnome.eog.desktop -image/x-gray=org.gnome.eog.desktop -image/x-icb=org.gnome.eog.desktop -image/x-ico=org.gnome.eog.desktop -image/x-pcx=org.gnome.eog.desktop -image/x-png=org.gnome.eog.desktop -image/x-portable-anymap=org.gnome.eog.desktop -image/x-portable-bitmap=org.gnome.eog.desktop -image/x-portable-graymap=org.gnome.eog.desktop -image/x-portable-pixmap=org.gnome.eog.desktop -image/x-xbitmap=org.gnome.eog.desktop -image/x-xpixmap=org.gnome.eog.desktop -image/vnd.wap.wbmp=org.gnome.eog.desktop +image/bmp=com.system76.CosmicViewer.desktop +image/gif=com.system76.CosmicViewer.desktop +image/jpeg=com.system76.CosmicViewer.desktop +image/jpg=com.system76.CosmicViewer.desktop +image/pjpeg=com.system76.CosmicViewer.desktop +image/png=com.system76.CosmicViewer.desktop +image/svg+xml=com.system76.CosmicViewer.desktop +image/svg+xml-compressed=com.system76.CosmicViewer.desktop +image/x-bmp=com.system76.CosmicViewer.desktop +image/x-gray=com.system76.CosmicViewer.desktop +image/x-icb=com.system76.CosmicViewer.desktop +image/x-ico=com.system76.CosmicViewer.desktop +image/x-png=com.system76.CosmicViewer.desktop +image/x-portable-bitmap=com.system76.CosmicViewer.desktop +image/x-portable-graymap=com.system76.CosmicViewer.desktop +image/x-portable-pixmap=com.system76.CosmicViewer.desktop +image/x-xbitmap=com.system76.CosmicViewer.desktop +image/x-xpixmap=com.system76.CosmicViewer.desktop image/g3fax=gimp.desktop image/x-compressed-xcf=gimp.desktop image/x-fits=gimp.desktop diff --git a/debian/control b/debian/control index df90ba4..ab2e939 100644 --- a/debian/control +++ b/debian/control @@ -47,6 +47,7 @@ Recommends: cosmic-player, cosmic-store, cosmic-term, + cosmic-viewer, cosmic-wallpapers, orca, system-config-printer, From a73b324002663caf29e00b49b93f18f9428375c0 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Thu, 24 Sep 2026 21:03:54 +0200 Subject: [PATCH 14/20] chore: fige Cargo.lock (epoch-1.9.0, [patch] locaux) Co-Authored-By: Claude Opus 5.5 (1M context) --- Cargo.lock | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 69e1a49..c6c101b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -287,7 +287,6 @@ dependencies = [ [[package]] name = "cosmic-dbus-a11y" version = "0.1.0" -source = "git+https://github.com/pop-os/dbus-settings-bindings#eed01dd3609e90e3c8cd043656734c500956c793" dependencies = [ "zbus", ] @@ -1711,3 +1710,63 @@ dependencies = [ "syn 3.0.5", "winnow", ] + +[[patch.unused]] +name = "smithay-clipboard" +version = "0.8.0" + +[[patch.unused]] +name = "cosmic-freedesktop-icons" +version = "0.4.0" + +[[patch.unused]] +name = "softbuffer" +version = "0.4.1" + +[[patch.unused]] +name = "dpi" +version = "0.1.2" + +[[patch.unused]] +name = "winit" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-android" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-appkit" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-common" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-core" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-orbital" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-uikit" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-wayland" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-web" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-win32" +version = "0.31.0-beta.2" + +[[patch.unused]] +name = "winit-x11" +version = "0.31.0-beta.2" From 70f9b96ca6f1f065b58d9837de9bae5abbeeab71 Mon Sep 17 00:00:00 2001 From: Jim Witte Date: Sun, 20 Sep 2026 21:08:52 -0500 Subject: [PATCH 15/20] fix: preserve configured SSH_AUTH_SOCK --- data/start-cosmic | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/data/start-cosmic b/data/start-cosmic index a5f1842..46dec47 100755 --- a/data/start-cosmic +++ b/data/start-cosmic @@ -66,13 +66,14 @@ if [ -d "$XDG_RUNTIME_DIR/keyring" ]; then echo "gnome-keyring-daemon not found in PATH" >&2 fi - # Only set SSH_AUTH_SOCK if the socket actually exists. Either - # set the correct one, or don't set one at all. Don't set the - # wrong value. - if [ -S "$XDG_RUNTIME_DIR/gcr/ssh" ]; then - export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh" - elif [ -S "$XDG_RUNTIME_DIR/keyring/ssh" ]; then - export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" + # Preserve an SSH agent configured by the user. Otherwise, use a + # Gnome Keyring SSH socket if one exists. + if [ -z "$SSH_AUTH_SOCK" ]; then + if [ -S "$XDG_RUNTIME_DIR/gcr/ssh" ]; then + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh" + elif [ -S "$XDG_RUNTIME_DIR/keyring/ssh" ]; then + export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/keyring/ssh" + fi fi fi From ad097e98ec066ffd3406e0942966aa1b312de555 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 30 Sep 2026 09:56:15 -0600 Subject: [PATCH 16/20] COSMIC policy update Generated by cosmic-epoch scripts/policy-update.sh. Uses `policy_nobuild` branch to avoid package builds as it contains no code changes. --- .github/PULL_REQUEST_TEMPLATE.md | 16 +++++++++------- .github/workflows/require-checklist.yml | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/require-checklist.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e6ca28b..63abe52 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,10 @@ -- [ ] I have disclosed use of any AI generated code in my commit messages. - - If you are using an LLM, and do not fully understand the changes it is making to the code base, do not create a PR. - - In our experience, AI generated code often results in overly complex code that lacks enough context for a proper fix or feature inclusion. This results in considerably longer code reviews. Due to this, AI authored or partially authored PRs may be closed without comment. -- [ ] I understand these changes in full and will be able to respond to review comments. -- [ ] My change is accurately described in the commit message. -- [ ] My contribution is tested and working as described. -- [ ] I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions. +Replace this text with a description of your changes, and why these changes are important. Read and acknowledge the list below. PRs without a completed checkbox will be closed. +--- + +- I have not included any LLM (also known as AI) generated content in this PR, including code, comments, and descriptions. +- I understand these changes in full and will be able to respond to review comments. +- My change is accurately described in the commit message. +- My contribution is tested and working as described. +- I have read the [Developer Certificate of Origin](https://developercertificate.org/) and certify my contribution under its conditions. +- [ ] I have read and followed all of the above requirements. For more information, see our [contributor guide](https://github.com/pop-os/pop/blob/master/CONTRIBUTING.md). diff --git a/.github/workflows/require-checklist.yml b/.github/workflows/require-checklist.yml new file mode 100644 index 0000000..fd4ca8c --- /dev/null +++ b/.github/workflows/require-checklist.yml @@ -0,0 +1,14 @@ +# From https://github.com/mheap/require-checklist-action, license MIT +name: Require Checklist + +on: + pull_request: + types: [opened, edited, synchronize] + +jobs: + job1: + runs-on: ubuntu-latest + steps: + - uses: mheap/require-checklist-action@v2 + with: + requireChecklist: true From a692a3006a35084f9daf543fb9d461f9ac68df2e Mon Sep 17 00:00:00 2001 From: Christoph Dalski Date: Mon, 14 Sep 2026 19:24:18 +0200 Subject: [PATCH 17/20] fix: pass systemd user env vars to cosmic-session Read the env vars of the systemd user manager before cosmic-comp starts and pass them to it. fixes #171 --- src/comp.rs | 7 +++++- src/main.rs | 40 +++++++++------------------------ src/systemd.rs | 61 +++++++++++++++++++++++++++++++------------------- 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/comp.rs b/src/comp.rs index 8457d08..31ef79a 100644 --- a/src/comp.rs +++ b/src/comp.rs @@ -99,6 +99,7 @@ pub fn run_compositor( process_manager: &ProcessManager, exec: String, args: Vec, + env: Vec<(String, String)>, _token: CancellationToken, env_tx: oneshot::Sender>, session_dbus_tx: mpsc::Sender, @@ -119,6 +120,7 @@ pub fn run_compositor( OwnedFd::from(std_stream) }; mark_as_not_cloexec(&comp).expect("Failed to mark fd as not cloexec"); + Ok(tokio::spawn(async move { // Create a new process handler for cosmic-comp, with our compositor socket's // file descriptor as the `COSMIC_SESSION_SOCK` environment variable. @@ -127,7 +129,10 @@ pub fn run_compositor( Process::new() .with_executable(exec) .with_args(args) - .with_env([("COSMIC_SESSION_SOCK", comp.as_raw_fd().to_string())]) + .with_env(env.into_iter().chain([( + "COSMIC_SESSION_SOCK".to_string(), + comp.as_raw_fd().to_string(), + )])) .with_on_exit(move |pman, _, err_code, _will_restart| { let session_dbus_tx = session_dbus_tx.clone(); async move { diff --git a/src/main.rs b/src/main.rs index 20b8651..989eb44 100644 --- a/src/main.rs +++ b/src/main.rs @@ -24,9 +24,9 @@ use std::path::PathBuf; #[cfg(feature = "autostart")] use std::process::{Command, Stdio}; use std::sync::Arc; -use systemd::is_systemd_used; #[cfg(feature = "systemd")] -use systemd::{get_systemd_env, spawn_scope}; +use systemd::spawn_scope; +use systemd::{get_systemd_env, is_systemd_used}; use tokio::signal::unix::{SignalKind, signal}; use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::{Mutex, oneshot}; @@ -143,10 +143,12 @@ async fn start( .await; let token = CancellationToken::new(); let (env_tx, env_rx) = oneshot::channel(); + let systemd_env = get_systemd_env().await; let compositor_handle = comp::run_compositor( &process_manager, executable.clone(), args, + systemd_env.clone(), token.child_token(), env_tx, session_tx, @@ -163,8 +165,12 @@ async fn start( env_vars ); - // now that cosmic-comp is ready, set XDG_SESSION_TYPE=wayland for new processes - env_vars.push(("XDG_SESSION_TYPE".to_string(), "wayland".to_string())); + // now that cosmic-comp is ready, extend the env vars with the systemd_env and set XDG_SESSION_TYPE=wayland for new processes + env_vars.extend( + systemd_env + .into_iter() + .chain([("XDG_SESSION_TYPE".to_string(), "wayland".to_string())]), + ); systemd::set_systemd_environment("XDG_SESSION_TYPE", "wayland").await; // expose the session version @@ -176,32 +182,6 @@ async fn start( #[cfg(feature = "systemd")] let _inhibit_fd = if *is_systemd_used() { - match get_systemd_env().await { - Ok(env) => { - for systemd_env in env { - // Only update the envvar if unset - if std::env::var_os(&systemd_env.key).is_none() { - // Blacklist of envvars that we shouldn't touch (taken from KDE) - if (!systemd_env.key.starts_with("XDG_") - || systemd_env.key == "XDG_DATA_DIRS" - || systemd_env.key == "XDG_CONFIG_DIRS") - && systemd_env.key != "DISPLAY" - && systemd_env.key != "XAUTHORITY" - && systemd_env.key != "WAYLAND_DISPLAY" - && systemd_env.key != "WAYLAND_SOCKET" - && systemd_env.key != "_" - && systemd_env.key != "SHELL" - && systemd_env.key != "SHLVL" - { - env_vars.push((systemd_env.key, systemd_env.value)); - } - } - } - } - Err(err) => { - warn!("Failed to sync systemd environment {}.", err); - } - }; #[cfg(feature = "logind")] match zbus::Connection::system().await { Ok(connection) => match logind_zbus::manager::ManagerProxy::new(&connection).await { diff --git a/src/systemd.rs b/src/systemd.rs index cbf64d5..1bad338 100644 --- a/src/systemd.rs +++ b/src/systemd.rs @@ -4,24 +4,10 @@ use std::path::Path; use std::process::{Command, Stdio}; use std::sync::OnceLock; +#[cfg(feature = "systemd")] use zbus::Connection; use zbus::zvariant::{Array, OwnedValue}; -#[derive(Debug)] -pub struct EnvVar { - pub key: String, - pub value: String, -} - -impl From<(&str, &str)> for EnvVar { - fn from(val: (&str, &str)) -> Self { - EnvVar { - key: val.0.to_owned(), - value: val.1.to_owned(), - } - } -} - #[cfg(feature = "systemd")] use zbus_systemd::systemd1::ManagerProxy as SystemdManagerProxy; @@ -54,18 +40,47 @@ pub fn is_systemd_used() -> &'static bool { } #[cfg(feature = "systemd")] -pub async fn get_systemd_env() -> Result, zbus::Error> { +async fn load_systemd_env() -> zbus::Result> { let connection = Connection::session().await?; let systemd_manager = SystemdManagerProxy::new(&connection).await?; - let systemd_env = systemd_manager.environment().await?; + systemd_manager.environment().await +} - let mut out: Vec = Vec::new(); - for i in systemd_env { - if let Some(b) = i.split_once("=") { - out.push(b.into()); - } +/// Get the systemd user manager environment variables. +/// Is Empty if systemd isn't used. +pub async fn get_systemd_env() -> Vec<(String, String)> { + #[cfg(feature = "systemd")] + if *is_systemd_used() { + return match load_systemd_env().await { + Ok(env) => { + env.iter() + // split into key value pairs + .filter_map(|var| var.split_once("=")) + .filter(|&(key, _value)| { + // Only update the envvar if unset + std::env::var_os(key).is_none() + // Blocklist of envvars that we shouldn't touch (taken from KDE) + && (!key.starts_with("XDG_") + || key == "XDG_DATA_DIRS" + || key == "XDG_CONFIG_DIRS") + && key != "DISPLAY" + && key != "XAUTHORITY" + && key != "WAYLAND_DISPLAY" + && key != "WAYLAND_SOCKET" + && key != "_" + && key != "SHELL" + && key != "SHLVL" + }) + .map(|(key, value)| (key.to_owned(), value.to_owned())) + .collect() + } + Err(err) => { + warn!("Failed to sync systemd environment {}.", err); + Vec::new() + } + }; } - Ok(out) + Vec::new() } #[cfg(feature = "systemd")] From 8b6cd49f4c8315cdcf34bff7c265e3e73e6d9d6e Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Thu, 17 Sep 2026 21:39:23 -0400 Subject: [PATCH 18/20] Fix building without systemd + minor clippy Some of the feature gates were out of date for builds precluding systemd, logind, or both. I also cleaned up the systemd/logind gates in general as well as fixed a few very minor clippy lints. --- Cargo.toml | 4 +- src/main.rs | 109 ++++++++++++++++++++++++++++--------------------- src/systemd.rs | 51 ++++++++--------------- 3 files changed, 80 insertions(+), 84 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3031a67..22c764f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,6 @@ logind-zbus = { version = "5.3.2", optional = true } [features] systemd = ["dep:zbus_systemd", "dep:tracing-journald"] -logind = ["systemd", "logind-zbus"] -default = ["logind"] +logind = ["dep:logind-zbus"] +default = ["logind", "systemd"] autostart = ["dep:shell-words", "dep:dirs", "dep:freedesktop-desktop-entry"] diff --git a/src/main.rs b/src/main.rs index 989eb44..a081118 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ mod comp; mod notifications; mod process; mod service; +#[cfg(feature = "systemd")] mod systemd; use color_eyre::Result; @@ -15,18 +16,13 @@ use launch_pad::ProcessManager; use launch_pad::process::Process; use service::SessionRequest; use std::borrow::Cow; -#[cfg(feature = "autostart")] -use std::collections::HashSet; use std::env; use std::os::fd::AsRawFd; -#[cfg(feature = "autostart")] -use std::path::PathBuf; -#[cfg(feature = "autostart")] -use std::process::{Command, Stdio}; use std::sync::Arc; +#[cfg(any(feature = "autostart", feature = "systemd"))] +use std::{path::Path, sync::OnceLock}; #[cfg(feature = "systemd")] -use systemd::spawn_scope; -use systemd::{get_systemd_env, is_systemd_used}; +use systemd::{get_systemd_env, spawn_scope}; use tokio::signal::unix::{SignalKind, signal}; use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::{Mutex, oneshot}; @@ -36,14 +32,20 @@ use tracing::Instrument; use tracing::metadata::LevelFilter; use tracing_subscriber::prelude::*; use tracing_subscriber::{EnvFilter, fmt}; +#[cfg(feature = "autostart")] +use { + std::collections::HashSet, + std::path::PathBuf, + std::process::{Command, Stdio}, +}; use crate::notifications::{ DAEMON_NOTIFICATIONS_FD, PANEL_NOTIFICATIONS_FD, notifications_process, }; #[cfg(feature = "autostart")] -const AUTOSTART_DIR: &'static str = "autostart"; +const AUTOSTART_DIR: &str = "autostart"; #[cfg(feature = "autostart")] -const ENVIRONMENT_NAME: &'static str = "COSMIC"; +const ENVIRONMENT_NAME: &str = "COSMIC"; #[tokio::main(flavor = "current_thread")] async fn main() -> Result<()> { @@ -143,7 +145,15 @@ async fn start( .await; let token = CancellationToken::new(); let (env_tx, env_rx) = oneshot::channel(); - let systemd_env = get_systemd_env().await; + + #[cfg(feature = "systemd")] + let systemd_env = if *is_systemd_used() { + get_systemd_env().await + } else { + Vec::new() + }; + #[cfg(not(feature = "systemd"))] + let systemd_env = Vec::new(); let compositor_handle = comp::run_compositor( &process_manager, executable.clone(), @@ -165,12 +175,13 @@ async fn start( env_vars ); - // now that cosmic-comp is ready, extend the env vars with the systemd_env and set XDG_SESSION_TYPE=wayland for new processes + // now that cosmic-comp is ready, set XDG_SESSION_TYPE=wayland for new processes env_vars.extend( systemd_env .into_iter() .chain([("XDG_SESSION_TYPE".to_string(), "wayland".to_string())]), ); + #[cfg(feature = "systemd")] systemd::set_systemd_environment("XDG_SESSION_TYPE", "wayland").await; // expose the session version @@ -178,42 +189,36 @@ async fn start( "COSMIC_VERSION".to_string(), env!("CARGO_PKG_VERSION").to_string(), )); + #[cfg(feature = "systemd")] systemd::set_systemd_environment("COSMIC_VERSION", env!("CARGO_PKG_VERSION")).await; - #[cfg(feature = "systemd")] - let _inhibit_fd = if *is_systemd_used() { - #[cfg(feature = "logind")] - match zbus::Connection::system().await { - Ok(connection) => match logind_zbus::manager::ManagerProxy::new(&connection).await { - Ok(proxy) => match proxy - .inhibit( - logind_zbus::manager::InhibitType::HandlePowerKey, - "Cosmic Session", - "Show confirmation dialog.", - "block", - ) - .await - { - Ok(fd) => Some(fd), - Err(err) => { - error!("Failed to inhibit power key {err:?}"); - None - } - }, + #[cfg(feature = "logind")] + let _inhibit_fd = match zbus::Connection::system().await { + Ok(connection) => match logind_zbus::manager::ManagerProxy::new(&connection).await { + Ok(proxy) => match proxy + .inhibit( + logind_zbus::manager::InhibitType::HandlePowerKey, + "Cosmic Session", + "Show confirmation dialog.", + "block", + ) + .await + { + Ok(fd) => Some(fd), Err(err) => { - error!("Failed to connect to logind manager {err:?}"); + error!("Failed to inhibit power key {err:?}"); None } }, Err(err) => { - error!("Failed to connect to system dbus {err:?}"); + error!("Failed to connect to logind manager {err:?}"); None } + }, + Err(err) => { + error!("Failed to connect to system dbus {err:?}"); + None } - #[cfg(not(feature = "logind"))] - None - } else { - None }; let stdout_span = info_span!(parent: None, "cosmic-settings-daemon"); @@ -254,8 +259,10 @@ async fn start( // - cosmic-comp is ready // - we've set any related variables // - cosmic-settings-daemon is ready + #[cfg(feature = "systemd")] systemd::start_systemd_target().await; // Always stop the target when the process exits or panics. + #[cfg(feature = "systemd")] scopeguard::defer! { systemd::stop_systemd_target(); } @@ -388,17 +395,17 @@ async fn start( } // skip if we have an OnlyShowIn entry that doesn't include COSMIC - if let Some(only_show_in) = entry.only_show_in() { - if !only_show_in.contains(&ENVIRONMENT_NAME) { - continue; - } + if let Some(only_show_in) = entry.only_show_in() + && !only_show_in.contains(&ENVIRONMENT_NAME) + { + continue; } // ... OR we have a NotShowIn entry that includes COSMIC - if let Some(not_show_in) = entry.not_show_in() { - if not_show_in.contains(&ENVIRONMENT_NAME) { - continue; - } + if let Some(not_show_in) = entry.not_show_in() + && not_show_in.contains(&ENVIRONMENT_NAME) + { + continue; } info!( @@ -417,7 +424,7 @@ async fn start( .collect::>(); // escape them - let escaped_args = shell_words::split(&*filtered_args.join(" ")); + let escaped_args = shell_words::split(&filtered_args.join(" ")); if let Ok(args) = escaped_args { info!("trying to start {} {}", program_name, args.join(" ")); @@ -556,3 +563,11 @@ async fn start_component( error!("failed to start {}: {}", cmd, err); } } + +/// Determine if systemd is used as the init system. This should work on all +/// linux distributions. +#[cfg(any(feature = "autostart", feature = "systemd"))] +fn is_systemd_used() -> &'static bool { + static IS_SYSTEMD_USED: OnceLock = OnceLock::new(); + IS_SYSTEMD_USED.get_or_init(|| Path::new("/run/systemd/system").exists()) +} diff --git a/src/systemd.rs b/src/systemd.rs index 1bad338..77c03e9 100644 --- a/src/systemd.rs +++ b/src/systemd.rs @@ -1,14 +1,9 @@ // SPDX-License-Identifier: GPL-3.0-only -use std::path::Path; use std::process::{Command, Stdio}; -use std::sync::OnceLock; -#[cfg(feature = "systemd")] use zbus::Connection; use zbus::zvariant::{Array, OwnedValue}; - -#[cfg(feature = "systemd")] use zbus_systemd::systemd1::ManagerProxy as SystemdManagerProxy; pub async fn set_systemd_environment(key: &str, value: &str) { @@ -32,14 +27,6 @@ pub fn stop_systemd_target() { ) } -/// Determine if systemd is used as the init system. This should work on all -/// linux distributions. -pub fn is_systemd_used() -> &'static bool { - static IS_SYSTEMD_USED: OnceLock = OnceLock::new(); - IS_SYSTEMD_USED.get_or_init(|| Path::new("/run/systemd/system").exists()) -} - -#[cfg(feature = "systemd")] async fn load_systemd_env() -> zbus::Result> { let connection = Connection::session().await?; let systemd_manager = SystemdManagerProxy::new(&connection).await?; @@ -47,18 +34,15 @@ async fn load_systemd_env() -> zbus::Result> { } /// Get the systemd user manager environment variables. -/// Is Empty if systemd isn't used. pub async fn get_systemd_env() -> Vec<(String, String)> { - #[cfg(feature = "systemd")] - if *is_systemd_used() { - return match load_systemd_env().await { - Ok(env) => { - env.iter() - // split into key value pairs - .filter_map(|var| var.split_once("=")) - .filter(|&(key, _value)| { - // Only update the envvar if unset - std::env::var_os(key).is_none() + match load_systemd_env().await { + Ok(env) => { + env.iter() + // split into key value pairs + .filter_map(|var| var.split_once("=")) + .filter(|&(key, _value)| { + // Only update the envvar if unset + std::env::var_os(key).is_none() // Blocklist of envvars that we shouldn't touch (taken from KDE) && (!key.starts_with("XDG_") || key == "XDG_DATA_DIRS" @@ -70,20 +54,17 @@ pub async fn get_systemd_env() -> Vec<(String, String)> { && key != "_" && key != "SHELL" && key != "SHLVL" - }) - .map(|(key, value)| (key.to_owned(), value.to_owned())) - .collect() - } - Err(err) => { - warn!("Failed to sync systemd environment {}.", err); - Vec::new() - } - }; + }) + .map(|(key, value)| (key.to_owned(), value.to_owned())) + .collect() + } + Err(err) => { + warn!("Failed to sync systemd environment {}.", err); + Vec::new() + } } - Vec::new() } -#[cfg(feature = "systemd")] /// Spawn a systemd scope unit with the given name and PIDs. pub async fn spawn_scope(mut command: String, pids: Vec) -> Result<(), zbus::Error> { let connection = Connection::session().await?; From 8093b59bb1262b0612d814e6540ba936303f735a Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Mon, 5 Oct 2026 21:26:34 +0200 Subject: [PATCH 19/20] Epoch 1.10.0 version update [x] Generated by cosmic-epoch scripts/version-update.sh --- Cargo.lock | 136 +++++++++++++++++++----------------------- Cargo.toml | 2 +- cargo.just | 70 ++++++++++++++++++++++ debian/changelog | 6 ++ debian/source/options | 6 ++ 5 files changed, 145 insertions(+), 75 deletions(-) create mode 100644 cargo.just create mode 100644 debian/source/options diff --git a/Cargo.lock b/Cargo.lock index 69e1a49..7279a7c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,13 +113,13 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +checksum = "4f8abc12baad266b1c8cec146854c195b5864b4221d4b2ca7296a7ae82d9e451" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.6", ] [[package]] @@ -154,7 +154,7 @@ checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -234,9 +234,9 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "cc" -version = "1.4.6" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4" +checksum = "f74872d07caf508b30a21f6836e7d7016a2eaf7d9ff4f48deaa58cd8a0407630" dependencies = [ "find-msvc-tools", "shlex", @@ -244,9 +244,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] name = "color-eyre" @@ -294,7 +294,7 @@ dependencies = [ [[package]] name = "cosmic-session" -version = "1.9.0" +version = "1.10.0" dependencies = [ "color-eyre", "cosmic-dbus-a11y", @@ -427,9 +427,9 @@ checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" +checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" [[package]] name = "freedesktop-desktop-entry" @@ -479,7 +479,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -507,17 +507,6 @@ dependencies = [ "slab", ] -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - [[package]] name = "getrandom" version = "0.3.4" @@ -609,9 +598,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.105" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ "cfg-if", "futures-util", @@ -636,21 +625,21 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb" [[package]] name = "libc" -version = "0.2.189" +version = "0.2.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" +checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78" [[package]] name = "libredox" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6480ccc157a1389bb2e4891b24751b0f798ba640d22386f23143fbcc89da195a" +checksum = "61ff90caf6077a803a240f62fdbe88645a890bbca49ef8174c3cb0404362171d" dependencies = [ "libc", ] @@ -753,9 +742,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +checksum = "1788edb87fdc09c7e26304471e2f5be8cdefb1b6930d6e3985fc02ff53bf86ee" dependencies = [ "libc", "wasi", @@ -985,11 +974,10 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +checksum = "60dc65c0ff1a7ae1294b0c67b9f14baf70b644404010370171787bfac1038fc0" dependencies = [ - "getrandom 0.2.17", "libredox", "thiserror", ] @@ -1031,9 +1019,9 @@ checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" [[package]] name = "rustix" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" dependencies = [ "bitflags", "errno", @@ -1081,7 +1069,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1105,7 +1093,7 @@ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1156,9 +1144,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.16.1" +version = "1.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891" +checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e" [[package]] name = "socket2" @@ -1183,9 +1171,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" dependencies = [ "proc-macro2", "quote", @@ -1219,22 +1207,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.20" +version = "2.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1248,9 +1236,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.53.1" +version = "1.53.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044" dependencies = [ "bytes", "libc", @@ -1272,7 +1260,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", ] [[package]] @@ -1413,21 +1401,21 @@ dependencies = [ [[package]] name = "unicase" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" +checksum = "357cc3acc6a036009fd6c973ed009037c732d60d0b4f6c673e9041497482a28f" [[package]] name = "unicode-ident" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] name = "uuid" -version = "1.26.1" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce" +checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a" dependencies = [ "js-sys", "serde_core", @@ -1463,9 +1451,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.128" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", "once_cell", @@ -1476,9 +1464,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.128" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1486,22 +1474,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.128" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.128" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ "unicode-ident", ] @@ -1609,7 +1597,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "zbus_names", "zvariant", "zvariant_utils", @@ -1647,18 +1635,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.57" +version = "0.8.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873" +checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.57" +version = "0.8.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc" +checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82" dependencies = [ "proc-macro2", "quote", @@ -1695,7 +1683,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 3.0.5", + "syn 3.0.6", "zvariant_utils", ] @@ -1708,6 +1696,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 3.0.5", + "syn 3.0.6", "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 22c764f..936aa30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cosmic-session" description = "The session manager for the COSMIC desktop environment" -version = "1.9.0" +version = "1.10.0" license = "GPL-3.0-only" edition = "2024" rust-version = "1.93" diff --git a/cargo.just b/cargo.just new file mode 100644 index 0000000..fb09e1e --- /dev/null +++ b/cargo.just @@ -0,0 +1,70 @@ +cargo-target-dir := env('CARGO_TARGET_DIR', 'target') + +# Compile with debug profile +[no-cd] +build-debug *args: + cargo build {{args}} + +# Compile with release profile +[no-cd] +build-release *args: (build-debug '--release' args) + +# Compile with a vendored tarball +[no-cd] +build-vendored *args: vendor-extract (build-release '--frozen --offline' args) + +# Check for errors and linter warnings +[no-cd] +check *args: + cargo clippy --all-features {{args}} -- -W clippy::pedantic + +# Runs a check with JSON message format for IDE integration +[no-cd] +check-json: (check '--message-format=json') + +# Remove Cargo build artifacts +[no-cd] +clean: + cargo clean + +# Also remove .cargo and vendored dependencies +[no-cd] +clean-dist: clean + rm -rf .cargo vendor vendor.tar target + +# Run the application for testing purposes +[no-cd] +run *args: + cargo run {{args}} + +# Run `cargo test` +[no-cd] +test *args: + cargo test {{args}} + +# Vendor Cargo dependencies locally +[no-cd] +vendor: + #!/usr/bin/env bash + mkdir -p .cargo + cargo vendor --locked | head -n -1 > .cargo/config.toml + echo 'directory = "vendor"' >> .cargo/config.toml + echo >> .cargo/config.toml + echo '[env]' >> .cargo/config.toml + if [ -n "${SOURCE_DATE_EPOCH}" ] + then + source_date="$(date -d "@${SOURCE_DATE_EPOCH}" "+%Y-%m-%d")" + echo "VERGEN_GIT_COMMIT_DATE = \"${source_date}\"" >> .cargo/config.toml + fi + if [ -n "${SOURCE_GIT_HASH}" ] + then + echo "VERGEN_GIT_SHA = \"${SOURCE_GIT_HASH}\"" >> .cargo/config.toml + fi + tar pcf vendor.tar .cargo vendor + rm -rf .cargo vendor + +# Extracts vendored dependencies +[no-cd] +vendor-extract: + rm -rf vendor + tar pxf vendor.tar diff --git a/debian/changelog b/debian/changelog index 3201725..d205827 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cosmic-session (1.10.0) noble; urgency=medium + + * Epoch 1.10.0 version update + + -- Michael Murphy Mon, 05 Oct 2026 21:26:30 +0200 + cosmic-session (1.9.0) noble; urgency=medium * Epoch 1.9.0 version update diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..2f8c4a1 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,6 @@ +tar-ignore=.github +tar-ignore=target/.rustc_info.json +tar-ignore=target/CACHEDIR.TAG +tar-ignore=target/debug +tar-ignore=target/release +tar-ignore=vendor From 7d9d67e0b21800a98c1fb99b3fe16b468f31b044 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Sun, 11 Oct 2026 07:02:21 +0200 Subject: [PATCH 20/20] chore: fige Cargo.lock (epoch-1.10.0, [patch] locaux) Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f7710a3..f85b487 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1699,10 +1699,6 @@ dependencies = [ "winnow", ] -[[patch.unused]] -name = "smithay-clipboard" -version = "0.8.0" - [[patch.unused]] name = "cosmic-freedesktop-icons" version = "0.4.0" @@ -1711,6 +1707,10 @@ version = "0.4.0" name = "softbuffer" version = "0.4.1" +[[patch.unused]] +name = "smithay-clipboard" +version = "0.8.0" + [[patch.unused]] name = "dpi" version = "0.1.2"