gimp but for windows: a wayland compositor
git clone https://github.com/m-col/wimp
Files | Refs | Readme

-rw-r--r-- src/wimptool.c


      1 #include <stdio.h> 
      2 #include <stdlib.h> 
      3 #include <sys/socket.h>
      4 #include <sys/un.h>
      5 #include <unistd.h>
      6 
      7 #define SOCKET_PATH "/tmp/wimpy-sock-%s"
      8 
      9 
     10 void usage() {
     11     fprintf(stdout, "Usage: wimptool <command> <arguments>\n");
     12 }
     13 
     14 
     15 int main(int argc, char *argv[]) {
     16     if (argc < 2) {
     17 	usage();
     18 	return EXIT_FAILURE;
     19     }
     20 
     21     char *display = getenv("WAYLAND_DISPLAY");
     22     if (!display) {
     23 	fprintf(stderr, "WAYLAND_DISPLAY not set.\n");
     24 	return EXIT_FAILURE;
     25     }
     26 
     27     int sock;
     28     if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
     29 	fprintf(stderr, "Failed to create socket.\n");
     30 	return EXIT_FAILURE;
     31     }
     32 
     33     struct sockaddr_un addr;
     34     snprintf(addr.sun_path, sizeof(addr.sun_path), SOCKET_PATH, display);
     35     addr.sun_family = AF_UNIX;
     36 
     37     if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
     38 	fprintf(stderr, "Failed to connect to wimp.\n");
     39 	return EXIT_FAILURE;
     40     }
     41 
     42     char buffer[BUFSIZ] = {0};
     43     for (int i = 1; i < argc; i++) {
     44 	strcat(buffer, argv[i]);
     45 	strcat(buffer, " ");
     46     }
     47 
     48     if (send(sock, buffer, strlen(buffer), 0) == -1) {
     49 	fprintf(stderr, "Failed to send message to wimp.\n");
     50 	return EXIT_FAILURE;
     51     }
     52 
     53     char response[BUFSIZ] = {0};
     54     ssize_t len = recv(sock, response, sizeof(response) - 1, 0);
     55     if (len < 0) {
     56 	fprintf(stderr, "Error receiving a response.\n");
     57 	return EXIT_FAILURE;
     58     }
     59 
     60     if (len > 0) {
     61 	response[len] = '\0';
     62 	fprintf(stdout, "wimp: %s\n", response);
     63     }
     64     close(sock);
     65     return EXIT_SUCCESS;
     66 }
     67