diff --git a/src/config.go b/src/config.go index 18dfa80..711acfb 100644 --- a/src/config.go +++ b/src/config.go @@ -56,6 +56,7 @@ type config struct { SelectLastUser enSelectLastUser `config:"SELECT_LAST_USER" parser:"ParseSelectLastUser" default:"false"` CmdPoweroff string `config:"CMD_POWEROFF" parser:"SanitizeValue" default:"poweroff"` CmdReboot string `config:"CMD_REBOOT" parser:"SanitizeValue" default:"reboot"` + CmdSuspend string `config:"CMD_SUSPEND" parser:"SanitizeValue" default:""` } // LoadConfig handles loading of application configuration. diff --git a/src/emptty.go b/src/emptty.go index 799a616..3d85434 100644 --- a/src/emptty.go +++ b/src/emptty.go @@ -190,6 +190,7 @@ Available commands: :help, :? print this help :poweroff, :shutdown process poweroff command :reboot process reboot command + :suspend, :zzz process suspend command `) waitForReturnToExit(0) case "poweroff", "shutdown": @@ -204,6 +205,29 @@ Available commands: } else { waitForReturnToExit(0) } + case "suspend", "zzz": + var variants []string + if c.CmdSuspend != "" { + variants = append(variants, c.CmdSuspend) + } + variants = append(variants, "zzz") + variants = append(variants, "systemctl suspend") + variants = append(variants, "loginctl suspend") + + var err error + for _, v := range variants { + if err = processCommandAsCmd(v); err != nil { + continue + } else { + break + } + } + + if err != nil { + handleErr(err) + } else { + waitForReturnToExit(0) + } default: handleStrErr(fmt.Sprintf("Unknown command '%s'", command)) }