From 342e15ec802e9fe5bbfee0d70265931d4186cb24 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Thu, 15 Dec 2022 01:16:15 -0500 Subject: Automated commit --- 2022/info/dbus-after.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to '2022/info') diff --git a/2022/info/dbus-after.md b/2022/info/dbus-after.md index 4eb95a1a..4b1f44f2 100644 --- a/2022/info/dbus-after.md +++ b/2022/info/dbus-after.md @@ -108,8 +108,8 @@ [[!template text="""and almost certainly only usable on Linux.""" start="00:04:22.040" video="mainVideo-dbus" id="subtitle"]] [[!template text="""If you want to interact with D-Bus from Emacs,""" start="00:04:24.440" video="mainVideo-dbus" id="subtitle"]] [[!template text="""it's fairly straightforward.""" start="00:04:28.920" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""There's a collection of functions like `dbus-get-property'""" start="00:04:30.080" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""or `dbus-call-method', et cetera,""" start="00:04:33.200" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""There's a collection of functions like dbus-get-property""" start="00:04:30.080" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""or dbus-call-method, et cetera,""" start="00:04:33.200" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and they almost all take this same set""" start="00:04:35.040" video="mainVideo-dbus" id="subtitle"]] [[!template text="""of four arguments at the beginning:""" start="00:04:37.640" video="mainVideo-dbus" id="subtitle"]] [[!template text="""bus, service, path, and interface.""" start="00:04:39.320" video="mainVideo-dbus" id="subtitle"]] @@ -137,7 +137,7 @@ [[!template text="""so there's never any chance""" start="00:05:35.600" video="mainVideo-dbus" id="subtitle"]] [[!template text="""of mixing up which thing is what.""" start="00:05:36.880" video="mainVideo-dbus" id="subtitle"]] [[!template text="""So this sets the endpoint to that object,""" start="00:05:38.560" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""calls `debase-get-property' on it,""" start="00:05:41.480" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""calls debase-get-property on it,""" start="00:05:41.480" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and you can see it works exactly the same.""" start="00:05:43.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""The thing that's really nice about this, though,""" start="00:05:45.040" video="mainVideo-dbus" id="subtitle"]] [[!template text="""is it knows that so many of these arguments""" start="00:05:47.360" video="mainVideo-dbus" id="subtitle"]] @@ -155,7 +155,7 @@ [[!template new="1" text="""Because so many objects have multiple interfaces,""" start="00:06:13.440" video="mainVideo-dbus" id="subtitle"]] [[!template text="""you often find yourself needing to look""" start="00:06:18.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""at a different aspect of that object.""" start="00:06:20.320" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""This is supported with the built-in EIEIO `clone' method,""" start="00:06:22.480" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""This is supported with the built-in EIEIO clone method,""" start="00:06:22.480" video="mainVideo-dbus" id="subtitle"]] [[!template text="""which takes an object""" start="00:06:26.600" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and a set of keyword arguments to replace.""" start="00:06:28.280" video="mainVideo-dbus" id="subtitle"]] [[!template text="""So in this case, we can see we're calling""" start="00:06:30.440" video="mainVideo-dbus" id="subtitle"]] @@ -179,7 +179,7 @@ [[!template text="""and it's still named meson.""" start="00:07:11.360" video="mainVideo-dbus" id="subtitle"]] [[!template new="1" text="""You can also, if you don't want to use the object,""" start="00:07:12.480" video="mainVideo-dbus" id="subtitle"]] [[!template text="""you can provide the raw argument list.""" start="00:07:16.320" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""Under the covers, this is basically an `flet'""" start="00:07:18.240" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""Under the covers, this is basically an flet""" start="00:07:18.240" video="mainVideo-dbus" id="subtitle"]] [[!template text="""where you're currying all of these functions""" start="00:07:20.920" video="mainVideo-dbus" id="subtitle"]] [[!template text="""so they start with those argument lists.""" start="00:07:23.280" video="mainVideo-dbus" id="subtitle"]] [[!template text="""And you can see I'm running on a Linux machine,""" start="00:07:25.440" video="mainVideo-dbus" id="subtitle"]] @@ -203,21 +203,21 @@ [[!template text="""so any feedback or contributions are very welcome.""" start="00:08:09.680" video="mainVideo-dbus" id="subtitle"]] [[!template new="1" text="""Let's generate some Elisp code""" start="00:08:14.200" video="mainVideo-dbus" id="subtitle"]] [[!template text="""for that hostname1 service we were interacting with before.""" start="00:08:16.920" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""`debase-gen-class' is the generation class,""" start="00:08:19.640" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""debase-gen-class is the generation class,""" start="00:08:19.640" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and it says to create a class that matches this interface,""" start="00:08:23.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""named "hostname1", and then the rest of these arguments""" start="00:08:26.080" video="mainVideo-dbus" id="subtitle"]] [[!template text="""are the same ones to target the endpoint,""" start="00:08:29.000" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""just like with `debase-object',""" start="00:08:31.000" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""because it extends `debase-object'.""" start="00:08:32.920" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""`debase-gen-code' is a generic function""" start="00:08:34.760" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""that takes any `debase-gen' class.""" start="00:08:37.680" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""just like with debase-object,""" start="00:08:31.000" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""because it extends debase-object.""" start="00:08:32.920" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""debase-gen-code is a generic function""" start="00:08:34.760" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""that takes any debase-gen class.""" start="00:08:37.680" video="mainVideo-dbus" id="subtitle"]] [[!template text="""There are different classes for functions,""" start="00:08:40.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""properties, et cetera,""" start="00:08:42.280" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and it creates all of the code for it.""" start="00:08:43.360" video="mainVideo-dbus" id="subtitle"]] [[!template text="""If we evaluate it, we can see the results""" start="00:08:45.480" video="mainVideo-dbus" id="subtitle"]] [[!template text="""look about like we would expect:""" start="00:08:48.280" video="mainVideo-dbus" id="subtitle"]] [[!template text="""creates a defclass named "hostname1",""" start="00:08:49.960" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""which extends `debase-object',""" start="00:08:52.160" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""which extends debase-object,""" start="00:08:52.160" video="mainVideo-dbus" id="subtitle"]] [[!template text="""has all of the slots and accessors defined,""" start="00:08:53.880" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and then methods that define everything""" start="00:08:56.640" video="mainVideo-dbus" id="subtitle"]] [[!template text="""that you might want to do with it, including documentation.""" start="00:08:59.320" video="mainVideo-dbus" id="subtitle"]] @@ -225,7 +225,7 @@ [[!template text="""but as I mentioned,""" start="00:09:04.760" video="mainVideo-dbus" id="subtitle"]] [[!template text="""you can provide an XML interface description instead,""" start="00:09:05.480" video="mainVideo-dbus" id="subtitle"]] [[!template text="""if you like.""" start="00:09:08.040" video="mainVideo-dbus" id="subtitle"]] -[[!template new="1" text="""Debase also comes with `debase-objectmanager',""" start="00:09:08.680" video="mainVideo-dbus" id="subtitle"]] +[[!template new="1" text="""Debase also comes with "debase-objectmanager",""" start="00:09:08.680" video="mainVideo-dbus" id="subtitle"]] [[!template text="""which is convenience for the D-Bus ObjectManager interface.""" start="00:09:12.280" video="mainVideo-dbus" id="subtitle"]] [[!template text="""This is used in a lot of places in D-Bus,""" start="00:09:15.400" video="mainVideo-dbus" id="subtitle"]] [[!template text="""where an object manages other objects.""" start="00:09:18.000" video="mainVideo-dbus" id="subtitle"]] @@ -235,7 +235,7 @@ [[!template text="""you can enumerate all of the network hardware,""" start="00:09:26.880" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and by subscribing to the signals,""" start="00:09:28.880" video="mainVideo-dbus" id="subtitle"]] [[!template text="""you can be notified when they change.""" start="00:09:31.040" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""`debase-objectmanager' keeps a local cache,""" start="00:09:33.000" video="mainVideo-dbus" id="subtitle"]] +[[!template text=""""debase-objectmanager" keeps a local cache,""" start="00:09:33.000" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and will fire a callback on any change.""" start="00:09:36.000" video="mainVideo-dbus" id="subtitle"]] [[!template text="""So it's the building block for that dynamic user interface,""" start="00:09:38.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""like you would see in a desktop system,""" start="00:09:41.240" video="mainVideo-dbus" id="subtitle"]] @@ -270,7 +270,7 @@ [[!template text="""In this case, I've chosen the very secure password""" start="00:10:43.520" video="mainVideo-dbus" id="subtitle"]] [[!template text="""of "password".""" start="00:10:46.600" video="mainVideo-dbus" id="subtitle"]] [[!template text="""I hit Enter, and it unlocks it, and it mounts it,""" start="00:10:47.560" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""and it opens `dired' looking at it.""" start="00:10:51.200" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""and it opens "dired" looking at it.""" start="00:10:51.200" video="mainVideo-dbus" id="subtitle"]] [[!template text="""And here's a little README.""" start="00:10:53.320" video="mainVideo-dbus" id="subtitle"]] [[!template text="""Let's see what it says.""" start="00:10:54.440" video="mainVideo-dbus" id="subtitle"]] [[!template text=""""Hello, EmacsConf."""" start="00:10:55.560" video="mainVideo-dbus" id="subtitle"]] @@ -287,10 +287,10 @@ [[!template text="""a sort of fire-and-forget system,""" start="00:11:25.000" video="mainVideo-dbus" id="subtitle"]] [[!template text="""you can actually get results back from the remote operation.""" start="00:11:26.680" video="mainVideo-dbus" id="subtitle"]] [[!template text="""So here's some code.""" start="00:11:30.120" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""Here's a `dbus-eval' function, which takes a string,""" start="00:11:32.000" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""Here's a dbus-eval function, which takes a string,""" start="00:11:32.000" video="mainVideo-dbus" id="subtitle"]] [[!template text="""reads it, and evaluates it,""" start="00:11:35.680" video="mainVideo-dbus" id="subtitle"]] [[!template text="""and returns whatever that value is.""" start="00:11:37.360" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""Then we have a `debase-bind' block""" start="00:11:39.360" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""Then we have a debase-bind block""" start="00:11:39.360" video="mainVideo-dbus" id="subtitle"]] [[!template text="""that sets up an object on the session bus.""" start="00:11:41.840" video="mainVideo-dbus" id="subtitle"]] [[!template text="""Again, that's my user login bus.""" start="00:11:44.800" video="mainVideo-dbus" id="subtitle"]] [[!template text="""It offers this D-Bus service Emacs.""" start="00:11:46.840" video="mainVideo-dbus" id="subtitle"]] @@ -298,7 +298,7 @@ [[!template text="""And again, the path is a constant in there.""" start="00:11:53.400" video="mainVideo-dbus" id="subtitle"]] [[!template text="""And we're gonna create this interface,""" start="00:11:55.440" video="mainVideo-dbus" id="subtitle"]] [[!template text="""org.gnu.Emacs.Eval, and then register a method called Eval""" start="00:11:57.160" video="mainVideo-dbus" id="subtitle"]] -[[!template text="""that calls that `dbus-eval' function.""" start="00:12:02.520" video="mainVideo-dbus" id="subtitle"]] +[[!template text="""that calls that dbus-eval function.""" start="00:12:02.520" video="mainVideo-dbus" id="subtitle"]] [[!template text="""Pretty straightforward, only a handful of lines of code.""" start="00:12:04.760" video="mainVideo-dbus" id="subtitle"]] [[!template text="""To test this out, we're going to use the dbus-send utility.""" start="00:12:08.120" video="mainVideo-dbus" id="subtitle"]] [[!template text="""This is a command line program that interacts with D-Bus.""" start="00:12:12.400" video="mainVideo-dbus" id="subtitle"]] -- cgit v1.2.3