31 lines
1.1 KiB
Common 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
|