From 7fe8b63d2c576f57589cd9bfbaf6831baeb28286 Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Mon, 20 May 2019 14:57:26 +0800
Subject: [PATCH] Explicitly start osd if org.freedesktop.Notifications is not
owned
---
session.go | 18 +++++++++++++++---
utils.go | 15 +++++++++++++++
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/session.go b/session.go
index 2b610df..ca85df6 100644
--- a/session.go
+++ b/session.go
@@ -355,9 +355,21 @@ func (m *SessionManager) launchDDE() {
osdRunning, err := isOSDRunning()
if err != nil {
logger.Warning(err)
- } else if osdRunning && globalXSManager.NeedRestartOSD() {
- // restart osd
- m.launch("/usr/lib/deepin-daemon/dde-osd", false)
+ } else {
+ if osdRunning {
+ if globalXSManager.NeedRestartOSD() {
+ logger.Info("Restart dde-osd")
+ m.launch("/usr/lib/deepin-daemon/dde-osd", false)
+ }
+ } else {
+ notificationsOwned, err := isNotificationsOwned()
+ if err != nil {
+ logger.Warning("failed to get org.freedesktop.Notifications status:", err)
+ } else if !notificationsOwned {
+ logger.Info("Explicitly start dde-osd")
+ m.launch("/usr/lib/deepin-daemon/dde-osd", false)
+ }
+ }
}
groups, err := loadGroupFile()
diff --git a/utils.go b/utils.go
index cc10c25..25c5f35 100644
--- a/utils.go
+++ b/utils.go
@@ -256,3 +256,18 @@ func isOSDRunning() (bool, error) {
}
return has, nil
}
+
+func isNotificationsOwned() (bool, error) {
+ sessionBus, err := dbus.SessionBus()
+ if err != nil {
+ return false, err
+ }
+
+ var has bool
+ err = sessionBus.BusObject().Call("org.freedesktop.DBus.NameHasOwner", 0,
+ "org.freedesktop.Notifications").Store(&has)
+ if err != nil {
+ return false, err
+ }
+ return has, nil
+}
--
2.21.0