main
1package aod
2
3import (
4 "fmt"
5
6 "github.com/godbus/dbus/v5"
7)
8
9func poweroff() error {
10
11 const (
12 _login1 string = "org.freedesktop.login1"
13 _poweroff string = _login1 + ".Manager.PowerOff"
14 _login1Path dbus.ObjectPath = "/org/freedesktop/login1"
15 _interactive bool = false
16 _flags dbus.Flags = 0
17 )
18
19 conn, err := dbus.SystemBus()
20 if err != nil {
21 return fmt.Errorf("failed to connect to system bus: %w", err)
22 }
23 defer conn.Close()
24
25 obj := conn.Object(_login1, _login1Path)
26 err = obj.Call(_poweroff, _flags, _interactive).Err
27 if err != nil {
28 return fmt.Errorf("failed to power off the system: %w", err)
29 }
30
31 return nil
32}