xdg-desktop-portal-hyprland/main.c

49 lines
1010 B
C

#include <stdlib.h>
#include <stdio.h>
#include "xdpw.h"
static const char service_name[] = "org.freedesktop.impl.portal.desktop.wlr";
int main(int argc, char *argv[]) {
int ret = 0;
sd_bus *bus = NULL;
ret = sd_bus_open_user(&bus);
if (ret < 0) {
fprintf(stderr, "Failed to connect to user bus: %s\n", strerror(-ret));
goto error;
}
init_screenshot(bus);
ret = sd_bus_request_name(bus, service_name, 0);
if (ret < 0) {
fprintf(stderr, "Failed to acquire service name: %s\n", strerror(-ret));
goto error;
}
while (1) {
ret = sd_bus_process(bus, NULL);
if (ret < 0) {
fprintf(stderr, "sd_bus_process failed: %s\n", strerror(-ret));
} else if (ret > 0) {
// We processed a request, try to process another one, right-away
continue;
}
ret = sd_bus_wait(bus, (uint64_t)-1);
if (ret < 0) {
fprintf(stderr, "sd_bus_wait failed: %s\n", strerror(-ret));
goto error;
}
}
// TODO: cleanup
return EXIT_SUCCESS;
error:
sd_bus_unref(bus);
return EXIT_FAILURE;
}