{"guid":"fb0493ed-6d80-5024-9410-980364f87d9b","title":"systemd's D-Bus Implementation, And Its Python asyncio Binding","subtitle":null,"slug":"glt25-495-systemd-s-d-bus-implementation-and-its-python-asyncio-binding","link":"https://pretalx.linuxtage.at/glt25/talk/38MNWT/","description":"An overview of D-Bus, systemd, and systemd's own D-Bus implementation, [`sd-bus`](https://0pointer.net/blog/the-new-sd-bus-api-of-systemd.html). Less slide show, more live coding in Python and [`asyncio`](https://docs.python.org/3/library/asyncio.html\u003e).\n\nD-Bus is a broker-based interprocess communication mechanism which has been used for ages in Linux's desktop environments like [GNOME](https://www.gnome.org/) or [KDE](https://kde.org/).\n\n[systemd](https://systemd.io/), the Linux init system and service manager, likewise consists of many loosely coupled components. Since systemd's inception, likewise, its components are using D-Bus to communicate.\n\nOver time, the systemd developers have become uncomfortable with the existing D-Bus implementation they were using. They created another implementation, [sd-bus](https://0pointer.net/blog/the-new-sd-bus-api-of-systemd.html), tailored towards systemd's needs - minimal and fast.\n\nThis talk gives an overview of D-Bus and its concepts, and then shows how sd-bus is used to implement one's own interfaces and components. Out of its many language bindings, we will use Python to implement a use case, just to show how simple this is.\n\nYou will probably like the use of [asyncio](https://docs.python.org/3/library/asyncio.html) in the talk. For those of you who don't know what this is and what problems it solves, I'll try to explain, however hard that may be. I might fail though. If you are interested: my last year's talk [Python, asyncio, libgpiod, and Pointless Blinking](https://media.ccc.de/v/glt24-435-python-asyncio-libgpiod-and-pointless-blinking) contains a deeper [asyncio](https://docs.python.org/3/library/asyncio.html) introduction.\n\nLicensed to the public under https://creativecommons.org/licenses/by/4.0/","original_language":"eng","persons":["Jörg Faschingbauer"],"view_count":241,"promoted":false,"date":"2025-04-26T18:00:00.000+02:00","release_date":"2025-04-26T00:00:00.000+02:00","updated_at":"2026-04-12T01:30:04.543+02:00","tags":["495","2025","glt25","Entwicklung","HS i1","glt25-eng","Day 2"],"length":2897,"duration":2897,"thumb_url":"https://static.media.ccc.de/media/events/glt/2025/495-fb0493ed-6d80-5024-9410-980364f87d9b.jpg","poster_url":"https://static.media.ccc.de/media/events/glt/2025/495-fb0493ed-6d80-5024-9410-980364f87d9b_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/glt/2025/495-fb0493ed-6d80-5024-9410-980364f87d9b.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/glt/2025/495-fb0493ed-6d80-5024-9410-980364f87d9b.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/glt25-495-systemd-s-d-bus-implementation-and-its-python-asyncio-binding","url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_title":"Grazer Linuxtage 2025","conference_url":"https://api.media.ccc.de/public/conferences/glt25","related":[],"recordings":[{"size":44,"length":2897,"mime_type":"audio/mpeg","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2025-04-26T20:04:05.745+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/mp3/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/87311","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"},{"size":28,"length":2897,"mime_type":"audio/opus","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2025-04-26T20:00:17.992+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/opus/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_opus.opus","url":"https://api.media.ccc.de/public/recordings/87309","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"},{"size":383,"length":2897,"mime_type":"video/webm","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2025-04-27T01:43:22.401+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/webm-hd/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/87371","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"},{"size":117,"length":2897,"mime_type":"video/webm","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2025-04-27T01:02:57.312+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/webm-sd/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/87365","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"},{"size":119,"length":2897,"mime_type":"video/mp4","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2025-04-26T20:16:57.872+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/h264-sd/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_sd.mp4","url":"https://api.media.ccc.de/public/recordings/87319","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"},{"size":463,"length":2897,"mime_type":"video/mp4","language":"eng","filename":"glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2025-04-26T20:00:13.237+02:00","recording_url":"https://cdn.media.ccc.de/events/glt25/h264-hd/glt25-495-eng-systemds_D-Bus_Implementation_And_Its_Python_asyncio_Binding_hd.mp4","url":"https://api.media.ccc.de/public/recordings/87308","event_url":"https://api.media.ccc.de/public/events/fb0493ed-6d80-5024-9410-980364f87d9b","conference_url":"https://api.media.ccc.de/public/conferences/glt25"}]}