mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-13 00:42:49 -05:00
switch hto monorepo structure
This commit is contained in:
67
backend/internal/server/brightness/logind.go
Normal file
67
backend/internal/server/brightness/logind.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package brightness
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/backend/internal/log"
|
||||
"github.com/godbus/dbus/v5"
|
||||
)
|
||||
|
||||
type DBusConn interface {
|
||||
Object(dest string, path dbus.ObjectPath) dbus.BusObject
|
||||
Close() error
|
||||
}
|
||||
|
||||
type LogindBackend struct {
|
||||
conn DBusConn
|
||||
connOnce bool
|
||||
}
|
||||
|
||||
func NewLogindBackend() (*LogindBackend, error) {
|
||||
conn, err := dbus.ConnectSystemBus()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("connect to system bus: %w", err)
|
||||
}
|
||||
|
||||
obj := conn.Object("org.freedesktop.login1", "/org/freedesktop/login1/session/auto")
|
||||
call := obj.Call("org.freedesktop.DBus.Peer.Ping", 0)
|
||||
if call.Err != nil {
|
||||
conn.Close()
|
||||
return nil, fmt.Errorf("logind not available: %w", call.Err)
|
||||
}
|
||||
|
||||
conn.Close()
|
||||
|
||||
return &LogindBackend{}, nil
|
||||
}
|
||||
|
||||
func NewLogindBackendWithConn(conn DBusConn) *LogindBackend {
|
||||
return &LogindBackend{
|
||||
conn: conn,
|
||||
}
|
||||
}
|
||||
|
||||
func (b *LogindBackend) SetBrightness(subsystem, name string, brightness uint32) error {
|
||||
if b.conn == nil {
|
||||
conn, err := dbus.ConnectSystemBus()
|
||||
if err != nil {
|
||||
return fmt.Errorf("connect to system bus: %w", err)
|
||||
}
|
||||
b.conn = conn
|
||||
}
|
||||
|
||||
obj := b.conn.Object("org.freedesktop.login1", "/org/freedesktop/login1/session/auto")
|
||||
call := obj.Call("org.freedesktop.login1.Session.SetBrightness", 0, subsystem, name, brightness)
|
||||
if call.Err != nil {
|
||||
return fmt.Errorf("dbus call failed: %w", call.Err)
|
||||
}
|
||||
|
||||
log.Debugf("logind: set %s/%s to %d", subsystem, name, brightness)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *LogindBackend) Close() {
|
||||
if b.conn != nil {
|
||||
b.conn.Close()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user