Tmds.DBus.SourceGenerator 0.0.20
Tmds.DBus.SourceGenerator
A roslyn source generator targeting the Tmds.DBus.Protocol API
Introduction
This source generator completely eliminates the usage of reflection in order to be trimmer- and AOT-friendly. For further documentation of Tmds.DBus and DBus in general, see https://github.com/tmds/Tmds.DBus#readme.
Usage
Note
This Source Generator targets the
Tmds.DBus.ProtocolAPI, which means you have to explicitly install said package.
Either install the NuGet package Tmds.DBus.SourceGenerator or clone the git repository and add a project reference to the source generator in your .csproj
<ItemGroup>
<ProjectReference Include="./Tmds.DBus.SourceGenerator/Tmds.DBus.SourceGenerator/Tmds.DBus.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
<Import Project="./Tmds.DBus.SourceGenerator/Tmds.DBus.SourceGenerator/Tmds.DBus.SourceGenerator.props" />
Then add the xml definitions as AdditionalFiles to your project.
Depending on whether you want to generate a Proxy or a handler, set the DBusGeneratorMode to either Proxy or Handler, respectively.
<ItemGroup>
<AdditionalFiles Include="DBusXml/DBus.xml" DBusGeneratorMode="Proxy" />
<AdditionalFiles Include="DBusXml/StatusNotifierItem.xml" DBusGeneratorMode="Handler" />
</ItemGroup>
Now you can instantiate the generated proxy class and use it like with the traditional Tmds.DBus. For handlers, create a new class and inherit from the generated one and implement its abstract methods.
Examples
For examples, you may take a look at some projects that use this source generator:
How to obtain DBus interface definitions
DBus interface definitions are written in XML. There are mainly 2 ways for obtaining those:
- Finding the the source online somewhere... This could be a GitHub repo or some obscure website from the mid 2000s (at your own risk).
- Dumping the definition via introspection
If you have a service running on your system from which you want to extract the definition, you may use
busctl, e.g.:
To list available services:
To inspect the object tree of a service:busctl list
To dump the xml definition of the interface:busctl tree <service name>busctl introspect <service name> /path/to/object --xml-interface
Showing the top 20 packages that depend on Tmds.DBus.SourceGenerator.
| Packages | Downloads |
|---|---|
|
Avalonia.FreeDesktop
Avalonia is a cross-platform UI framework for .NET providing a flexible styling system and supporting a wide range of Operating Systems such as Windows, Linux, macOS and with experimental support for Android, iOS and WebAssembly.
|
16 |
| Version | Downloads | Last updated |
|---|---|---|
| 0.0.22 | 4 | 10/27/2025 |
| 0.0.21 | 8 | 05/23/2025 |
| 0.0.20 | 10 | 02/19/2025 |
| 0.0.19 | 10 | 02/19/2025 |
| 0.0.18 | 10 | 02/19/2025 |
| 0.0.17 | 10 | 02/19/2025 |
| 0.0.16 | 10 | 02/19/2025 |
| 0.0.15 | 10 | 02/19/2025 |
| 0.0.14 | 10 | 02/19/2025 |
| 0.0.13 | 10 | 02/19/2025 |
| 0.0.12 | 11 | 02/19/2025 |
| 0.0.11 | 10 | 02/19/2025 |
| 0.0.10 | 10 | 02/19/2025 |
| 0.0.8 | 10 | 02/19/2025 |
| 0.0.7 | 11 | 02/19/2025 |
| 0.0.6 | 10 | 02/19/2025 |
| 0.0.5 | 10 | 02/19/2025 |
| 0.0.4 | 10 | 02/19/2025 |
| 0.0.3 | 10 | 02/19/2025 |
| 0.0.2 | 10 | 02/19/2025 |