mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-11 00:02:28 -04:00
idle: implement screensaver interface
- Mainly used to create the idle inhibitor when an app requests screensaver inhibit
This commit is contained in:
@@ -33,7 +33,7 @@ import (
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/pkg/syncmap"
|
||||
)
|
||||
|
||||
const APIVersion = 23
|
||||
const APIVersion = 24
|
||||
|
||||
var CLIVersion = "dev"
|
||||
|
||||
@@ -702,6 +702,38 @@ func handleSubscribe(conn net.Conn, req models.Request) {
|
||||
}()
|
||||
}
|
||||
|
||||
if shouldSubscribe("freedesktop.screensaver") && freedesktopManager != nil {
|
||||
wg.Add(1)
|
||||
screensaverChan := freedesktopManager.SubscribeScreensaver(clientID + "-screensaver")
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
defer freedesktopManager.UnsubscribeScreensaver(clientID + "-screensaver")
|
||||
|
||||
initialState := freedesktopManager.GetScreensaverState()
|
||||
select {
|
||||
case eventChan <- ServiceEvent{Service: "freedesktop.screensaver", Data: initialState}:
|
||||
case <-stopChan:
|
||||
return
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case state, ok := <-screensaverChan:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
select {
|
||||
case eventChan <- ServiceEvent{Service: "freedesktop.screensaver", Data: state}:
|
||||
case <-stopChan:
|
||||
return
|
||||
}
|
||||
case <-stopChan:
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
if shouldSubscribe("gamma") && waylandManager != nil {
|
||||
wg.Add(1)
|
||||
waylandChan := waylandManager.Subscribe(clientID + "-gamma")
|
||||
|
||||
Reference in New Issue
Block a user