* [2024-06-28 Fri] ** well, i'm setting up sbcl and sly? because i imagine using Common Lisp for my attempt at building screen sharing for the XR glasses for the cool runtime access, right? ** well, just flake shell and (use-package sly) is enough for .lisp files to get stuff yes, i'm still using C-M-f and stuff to move around sexps but things are fine so, what's next? well, this is nice high level description dbus https://www.freedesktop.org/wiki/Software/dbus/ and here's something to start usage https://blog.macrolet.net/posts/DBus-and-PolicyKit-from-Common-Lisp.html from https://github.com/death/dbus and even lots of examples, but i think i will need a big book on Common Lisp to learn new things? * [2024-06-29 Sat] ** going through the dbus guide, sounds neat https://develop.kde.org/docs/features/d-bus/introduction_to_dbus/ that qdbus and qdbus-viewer are in #+begin_src bash $ nix shell nixpkgs#kdePackages.qttools #+end_src ** now let's read about calling methods * the receiving of the signals * all the different tabs i had ** searching github for 'get-managed-objects usage https://github.com/search?q=get-managed-objects&type=code ** searchin github for 'define-singlan-handler usage examples https://github.com/search?q=dbus%3Adefine-dbus-signal-handler&type=code ** example in cl-notify of calling a method 'with-introspected-object https://github.com/Lautaro-Garcia/cl-notify/blob/main/src/dbus-protocol.lisp#L27 #+begin_src lisp (defmacro with-dbus-method-inovaction ((result-var method &rest args) &body body) (alexandria:with-gensyms (bus notifications-object) `(dbus:with-open-bus (,bus (dbus:session-server-addresses)) (dbus:with-introspected-object (,notifications-object ,bus "/org/freedesktop/Notifications" "org.freedesktop.Notifications") (let ((,result-var (,notifications-object "org.freedesktop.Notifications" ,method ,@args))) ,@body))))) #+end_src ** example in cl-notify of working with signals https://github.com/Lautaro-Garcia/cl-notify/blob/main/src/signals.lisp they register single handler, and add callbacks dynamically & call them from the registered function ** dbus library example for publishing objects https://github.com/death/dbus/blob/master/examples/publish.lisp ** my request for help with interactive async calls https://github.com/death/dbus/issues/31 ** old ticket on dbus repo about enabling introspection https://github.com/death/dbus/issues/23 ** example of signal-handler in stumpwm-thingy https://github.com/lokedhs/stumpwm-dbus/blob/9cf0b52876111e777da27a42e3c81269b97c0005/src/pidgin.lisp#L16 ** ref for symbold in dbus package https://quickref.common-lisp.net/dbus.html#The-dbus_002fconnections-system ** blog article with basics of usage https://blog.macrolet.net/posts/DBus-and-PolicyKit-from-Common-Lisp.html ** big article about iolib https://pages.cs.wisc.edu/~psilord/blog/data/iolib-tutorial/tutorial.html it's the one that's used to create multiplexer for communication i tried to figure out what it means to have event-loops ** docs on dbus Screenshots portal https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Screenshot.html the methods and stuff ** docs on dbus type system https://dbus.freedesktop.org/doc/dbus-specification.html#type-system i.e how to understand types of methods and properties #+begin_src lisp CL-USER> (dbus:sigexp "xsaysas") (:INT64 :STRING (:ARRAY :BYTE) :STRING (:ARRAY :STRING)) #+end_src function signature explanation can show what should lisp types be https://github.com/death/dbus/issues/17#issuecomment-418920440 ** example of flameshot how they get Screenshot via dbus https://github.com/flameshot-org/flameshot/blob/c1dac52231024174faa68a29577129ebca125dff/src/utils/screengrabber.cpp#L59 ** dbus methods for Notification https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#signals ** dbus methods of ScreenCast https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.ScreenCast.html how to start them etc ** dbus spec on Request & Response for the async methods https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.Request.html#org-freedesktop-portal-request ** repo for xdg-portal for wayland https://github.com/emersion/xdg-desktop-portal-wlr ** the python snippet to check that ScreenCast via xdg-portal works https://gitlab.gnome.org/-/snippets/19 * [2024-07-20 Sat] ** and now i want to try to get display of stuff into gtk window, i guess ** doc about cl bindings to gtk3 https://www.crategus.com/books/cl-gtk/gtk-tutorial.html#example-window-simple-c