Files
fastfetch/src/common/dbus.h
T

47 lines
2.3 KiB
C
Raw Normal View History

2023-01-24 10:39:33 +01:00
#pragma once
#ifdef FF_HAVE_DBUS
#include <dbus/dbus.h>
2023-01-24 10:39:33 +01:00
#include "common/FFstrbuf.h"
#include "common/library.h"
2023-01-24 10:39:33 +01:00
2026-03-29 09:28:49 +08:00
typedef struct FFDBusLibrary {
2023-01-24 10:39:33 +01:00
FF_LIBRARY_SYMBOL(dbus_bus_get)
FF_LIBRARY_SYMBOL(dbus_message_new_method_call)
FF_LIBRARY_SYMBOL(dbus_message_append_args)
2023-01-24 10:39:33 +01:00
FF_LIBRARY_SYMBOL(dbus_message_iter_init)
FF_LIBRARY_SYMBOL(dbus_message_iter_get_arg_type)
FF_LIBRARY_SYMBOL(dbus_message_iter_get_basic)
FF_LIBRARY_SYMBOL(dbus_message_iter_recurse)
FF_LIBRARY_SYMBOL(dbus_message_iter_has_next)
FF_LIBRARY_SYMBOL(dbus_message_iter_next)
FF_LIBRARY_SYMBOL(dbus_message_unref)
FF_LIBRARY_SYMBOL(dbus_connection_send_with_reply_and_block)
FF_LIBRARY_SYMBOL(dbus_connection_unref)
2023-01-24 10:39:33 +01:00
} FFDBusLibrary;
2026-03-29 09:28:49 +08:00
typedef struct FFDBusData {
2023-01-24 10:39:33 +01:00
const FFDBusLibrary* lib;
DBusConnection* connection;
} FFDBusData;
2026-03-29 09:28:49 +08:00
const char* ffDBusLoadData(DBusBusType busType, FFDBusData* data); // Returns an error message or NULL on success
bool ffDBusGetString(FFDBusData* dbus, DBusMessageIter* iter, FFstrbuf* result);
2023-01-24 10:39:33 +01:00
bool ffDBusGetBool(FFDBusData* dbus, DBusMessageIter* iter, bool* result);
2026-05-11 23:24:45 +08:00
bool ffDBusGetUint(FFDBusData* dbus, DBusMessageIter* iter, uint64_t* result);
DBusMessage* ffDBusGetMethodReply(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* method, const char* arg1, const char* arg2);
2023-01-24 10:39:33 +01:00
DBusMessage* ffDBusGetProperty(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property);
2024-04-17 19:00:45 +08:00
bool ffDBusGetPropertyString(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, FFstrbuf* result);
2026-05-11 23:24:45 +08:00
bool ffDBusGetInt(FFDBusData* dbus, DBusMessageIter* iter, int64_t* result);
bool ffDBusGetPropertyUint(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface, const char* property, uint64_t* result);
void ffDBusDestroyData(FFDBusData* data);
2023-01-24 10:39:33 +01:00
2026-03-29 09:28:49 +08:00
static inline DBusMessage* ffDBusGetAllProperties(FFDBusData* dbus, const char* busName, const char* objectPath, const char* interface) {
return ffDBusGetMethodReply(dbus, busName, objectPath, "org.freedesktop.DBus.Properties", "GetAll", interface, NULL);
}
#define FF_DBUS_AUTO_DESTROY_DATA FF_A_CLEANUP(ffDBusDestroyData)
2023-01-24 10:39:33 +01:00
#endif // FF_HAVE_DBUS