diff options
| author | Ophestra Umiker <cat@ophivana.moe> | 2024-11-03 03:07:02 +0900 |
|---|---|---|
| committer | Ophestra Umiker <cat@ophivana.moe> | 2024-11-03 03:07:02 +0900 |
| commit | bfcce3ff75017aa8a4306cae88a4f31d9cc7238c (patch) | |
| tree | 236aa5ee95aa448d715858445b5045bed51c65dd /internal/app | |
| parent | 8cd3651bb612200bc1a4c7456e5722fb24bc10b7 (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.go | 2 | ||||
| -rw-r--r-- | internal/app/share.dbus.go | 4 | ||||
| -rw-r--r-- | internal/app/start.go | 9 |
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 { |
