The data/start-cosmic shell script sets environment variables and exec's cosmic-session. This logic could live directly in the binary (early in main(), using std::env::set_var), removing the runtime dependency on /bin/sh.
Every other Wayland compositor (sway, labwc, Hyprland, wayfire) launches directly from its binary without a shell wrapper. Their .desktop files point straight to the binary.
This would:
- Remove the shell dependency from the session startup path
- Simplify packaging for minimal distributions
- Be consistent with COSMIC's Rust-native approach
The .desktop entry would change from Exec=start-cosmic to Exec=cosmic-session. Users can still override environment variables via their greeter config or ~/.config/environment.d/.
This would also fix PR #193
The data/start-cosmic shell script sets environment variables and exec's cosmic-session. This logic could live directly in the binary (early in main(), using std::env::set_var), removing the runtime dependency on /bin/sh.
Every other Wayland compositor (sway, labwc, Hyprland, wayfire) launches directly from its binary without a shell wrapper. Their .desktop files point straight to the binary.
This would:
The .desktop entry would change from Exec=start-cosmic to Exec=cosmic-session. Users can still override environment variables via their greeter config or ~/.config/environment.d/.
This would also fix PR #193