aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-11-03 03:07:02 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-11-03 03:07:02 +0900
commitbfcce3ff75017aa8a4306cae88a4f31d9cc7238c (patch)
tree236aa5ee95aa448d715858445b5045bed51c65dd /internal/app
parent8cd3651bb612200bc1a4c7456e5722fb24bc10b7 (diff)
system/dbus: buffer xdg-dbus-proxy messages
Pointing xdg-dbus-proxy to stdout/stderr makes a huge mess. This change enables app to neatly print out prefixed xdg-dbus-proxy messages after output is resumed. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'internal/app')
-rw-r--r--internal/app/seal.go2
-rw-r--r--internal/app/share.dbus.go4
-rw-r--r--internal/app/start.go9
3 files changed, 14 insertions, 1 deletions
diff --git a/internal/app/seal.go b/internal/app/seal.go
index 502ec6e2..ca7048b7 100644
--- a/internal/app/seal.go
+++ b/internal/app/seal.go
@@ -41,6 +41,8 @@ type appSeal struct {
id string
// wayland mediation, disabled if nil
wl *shim.Wayland
+ // dbus proxy message buffer retriever
+ dbusMsg func(f func(msgbuf []string))
// freedesktop application ID
fid string
diff --git a/internal/app/share.dbus.go b/internal/app/share.dbus.go
index a96b1de5..c80bbb92 100644
--- a/internal/app/share.dbus.go
+++ b/internal/app/share.dbus.go
@@ -22,8 +22,10 @@ func (seal *appSeal) shareDBus(config [2]*dbus.Config) error {
sessionPath, systemPath := path.Join(seal.share, "bus"), path.Join(seal.share, "system_bus_socket")
// configure dbus proxy
- if err := seal.sys.ProxyDBus(config[0], config[1], sessionPath, systemPath); err != nil {
+ if f, err := seal.sys.ProxyDBus(config[0], config[1], sessionPath, systemPath); err != nil {
return err
+ } else {
+ seal.dbusMsg = f
}
// share proxy sockets
diff --git a/internal/app/start.go b/internal/app/start.go
index 376d3067..67a091c6 100644
--- a/internal/app/start.go
+++ b/internal/app/start.go
@@ -185,6 +185,15 @@ func (a *app) Wait() (int, error) {
// child process exited, resume output
fmsg.Resume()
+ // print queued up dbus messages
+ if a.seal.dbusMsg != nil {
+ a.seal.dbusMsg(func(msgbuf []string) {
+ for _, msg := range msgbuf {
+ fmsg.Println(msg)
+ }
+ })
+ }
+
// close wayland connection
if a.seal.wl != nil {
if err := a.seal.wl.Close(); err != nil {