scratch-screen-share/notes.org

128 lines
4.5 KiB
Org Mode

* [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