Invoke loginctl, systemctl and moonlock via PATH
The absolute /usr/bin paths assume an FHS layout, so every power action failed on NixOS with os error 2.
This commit is contained in:
Generated
+1
-1
@@ -616,7 +616,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "moonset"
|
name = "moonset"
|
||||||
version = "0.9.1"
|
version = "0.9.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dirs",
|
"dirs",
|
||||||
"gdk-pixbuf",
|
"gdk-pixbuf",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "moonset"
|
name = "moonset"
|
||||||
version = "0.9.1"
|
version = "0.9.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
description = "Wayland session power menu with GTK4 and Layer Shell"
|
description = "Wayland session power menu with GTK4 and Layer Shell"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
+6
-6
@@ -112,7 +112,7 @@ fn run_command(action: &'static str, program: &str, args: &[&str]) -> Result<(),
|
|||||||
/// moonlock runs independently until the user unlocks.
|
/// moonlock runs independently until the user unlocks.
|
||||||
pub fn lock() -> Result<(), PowerError> {
|
pub fn lock() -> Result<(), PowerError> {
|
||||||
log::debug!("Power action: lock (spawning moonlock)");
|
log::debug!("Power action: lock (spawning moonlock)");
|
||||||
Command::new("/usr/bin/moonlock")
|
Command::new("moonlock")
|
||||||
.stdin(Stdio::null())
|
.stdin(Stdio::null())
|
||||||
.stdout(Stdio::null())
|
.stdout(Stdio::null())
|
||||||
.stderr(Stdio::inherit())
|
.stderr(Stdio::inherit())
|
||||||
@@ -148,7 +148,7 @@ fn resolve_logout_command(
|
|||||||
|
|
||||||
match session_id {
|
match session_id {
|
||||||
Some(id) if !id.is_empty() => Ok(vec![
|
Some(id) if !id.is_empty() => Ok(vec![
|
||||||
"/usr/bin/loginctl".to_string(),
|
"loginctl".to_string(),
|
||||||
"terminate-session".to_string(),
|
"terminate-session".to_string(),
|
||||||
id.to_string(),
|
id.to_string(),
|
||||||
]),
|
]),
|
||||||
@@ -173,17 +173,17 @@ pub fn logout() -> Result<(), PowerError> {
|
|||||||
|
|
||||||
/// Hibernate the system via systemctl.
|
/// Hibernate the system via systemctl.
|
||||||
pub fn hibernate() -> Result<(), PowerError> {
|
pub fn hibernate() -> Result<(), PowerError> {
|
||||||
run_command("hibernate", "/usr/bin/systemctl", &["hibernate"])
|
run_command("hibernate", "systemctl", &["hibernate"])
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reboot the system via systemctl.
|
/// Reboot the system via systemctl.
|
||||||
pub fn reboot() -> Result<(), PowerError> {
|
pub fn reboot() -> Result<(), PowerError> {
|
||||||
run_command("reboot", "/usr/bin/systemctl", &["reboot"])
|
run_command("reboot", "systemctl", &["reboot"])
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shut down the system via systemctl.
|
/// Shut down the system via systemctl.
|
||||||
pub fn shutdown() -> Result<(), PowerError> {
|
pub fn shutdown() -> Result<(), PowerError> {
|
||||||
run_command("shutdown", "/usr/bin/systemctl", &["poweroff"])
|
run_command("shutdown", "systemctl", &["poweroff"])
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -237,7 +237,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn logout_default_uses_loginctl_with_session_id() {
|
fn logout_default_uses_loginctl_with_session_id() {
|
||||||
let parts = resolve_logout_command(None, Some("3")).unwrap();
|
let parts = resolve_logout_command(None, Some("3")).unwrap();
|
||||||
assert_eq!(parts, vec!["/usr/bin/loginctl", "terminate-session", "3"]);
|
assert_eq!(parts, vec!["loginctl", "terminate-session", "3"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user