main
Raw Download raw file
 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}