scratch-screen-share/listen-to-responses.lisp

31 lines
1.1 KiB
Common Lisp

;;;; +----------------------------------------------------------------+
;;;; | DBUS |
;;;; +----------------------------------------------------------------+
(load (sb-ext:posix-getenv "ASDF"))
(asdf:load-system 'dbus)
(defpackage #:listening-response
(:use #:cl #:dbus)
(:export #:publish-example))
(in-package #:listening-response)
(define-dbus-object root
(:path "/"))
(define-dbus-signal-handler (root response) ()
(:interface "org.freedesktop.portal.Request")
(format t "Got signal with arg ~S~%" "yup")
(force-output))
(defun listen-for-responses ()
(handler-case
(with-open-bus (bus (session-server-addresses))
(format t "Bus connection name: ~A~%" (bus-name bus))
(dbus:add-match bus :type :signal :interface "org.freedesktop.portal.Request")
(publish-objects bus))
(end-of-file ()
:disconnected-by-bus))) ; org.freedesktop.portal.Request
;; yep, works with
;; dbus-send --session --type=signal / org.freedesktop.portal.Request.Response
;; again, will need to register object on the expected response path