git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitf08c02f48524c8408b9c2f754be1af1f56d0104f
parent3adf4c7125
authorLucas Galante <[email protected]>
date2026-06-27 12:04
perf: bypass configure wait tracking during interactive resizing

 src/server/window_manager.rs | 38 +++++++++++++++++++++++++++++++-------
 1 file changed, 31 insertions(+), 7 deletions(-)

diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index a1c3cf9..b065c50 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -267,11 +267,33 @@ impl WindowManager {
             
             let pid = (*w).unreliable_pid();
             let mut cmdline = if pid > 0 {
-                std::fs::read_to_string(format!("/proc/{}/cmdline", pid))
-                    .unwrap_or_default()
-                    .replace('\0', " ")
-                    .trim()
-                    .to_string()
+                let proc_cmdline = std::fs::read(format!("/proc/{}/cmdline", pid)).unwrap_or_default();
+                if !proc_cmdline.is_empty() {
+                    let mut args: Vec<String> = proc_cmdline
+                        .split(|&b| b == 0)
+                        .map(|arg| String::from_utf8_lossy(arg).into_owned())
+                        .collect();
+                    if args.last().map_or(false, |s| s.is_empty()) {
+                        args.pop();
+                    }
+                    if !args.is_empty() && args[0].starts_with("/tmp/.mount_") {
+                        if let Ok(environ_bytes) = std::fs::read(format!("/proc/{}/environ", pid)) {
+                            let appimage_opt = environ_bytes
+                                .split(|&b| b == 0)
+                                .find(|env_var| env_var.starts_with(b"APPIMAGE="))
+                                .map(|env_var| {
+                                    let val_bytes = &env_var[b"APPIMAGE=".len()..];
+                                    String::from_utf8_lossy(val_bytes).into_owned()
+                                });
+                            if let Some(appimage_path) = appimage_opt {
+                                args[0] = appimage_path;
+                            }
+                        }
+                    }
+                    args.join(" ")
+                } else {
+                    String::new()
+                }
             } else {
                 String::new()
             };
@@ -552,8 +574,10 @@ impl WindowManager {
             match (*node).get() {
                 crate::wm_node::WmNodeType::Window(window) => {
                     if (*window).manage_finish() {
-                        if let WindowManagerState::InflightConfigures(ref mut count) = self.state {
-                            *count += 1;
+                        if !(*window).wm_requested.resizing {
+                            if let WindowManagerState::InflightConfigures(ref mut count) = self.state {
+                                *count += 1;
+                            }
                         }
                     }
                 }