From e61da07522a060da98fa3a56db3d0360469b26cf Mon Sep 17 00:00:00 2001 From: auric <104602845+ihateamongus@users.noreply.github.com> Date: Mon, 8 Sep 2025 21:19:14 -0500 Subject: organize repository layout --- archive/breathing-exo-daemon/display/display | Bin 0 -> 15688 bytes .../breathing-exo-daemon/display/display-shm-x.c | 94 +++++++++++++++++++++ archive/breathing-exo-daemon/display/display-shm.c | 40 +++++++++ archive/breathing-exo-daemon/display/display-x | Bin 0 -> 16304 bytes 4 files changed, 134 insertions(+) create mode 100644 archive/breathing-exo-daemon/display/display create mode 100644 archive/breathing-exo-daemon/display/display-shm-x.c create mode 100644 archive/breathing-exo-daemon/display/display-shm.c create mode 100644 archive/breathing-exo-daemon/display/display-x (limited to 'archive/breathing-exo-daemon/display') diff --git a/archive/breathing-exo-daemon/display/display b/archive/breathing-exo-daemon/display/display new file mode 100644 index 0000000..b181258 Binary files /dev/null and b/archive/breathing-exo-daemon/display/display differ diff --git a/archive/breathing-exo-daemon/display/display-shm-x.c b/archive/breathing-exo-daemon/display/display-shm-x.c new file mode 100644 index 0000000..2695fd0 --- /dev/null +++ b/archive/breathing-exo-daemon/display/display-shm-x.c @@ -0,0 +1,94 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define SHM_NAME "/breathing_color_shm" // Shared memory name (same as in exo.c) +#define COLOR_SIZE 8 // Size for one color (e.g., #RRGGBB) + +int main() { + // Open shared memory object + int shm_fd = shm_open(SHM_NAME, O_RDONLY, 0666); + if (shm_fd == -1) { + perror("Failed to open shared memory"); + return 1; + } + + // Map shared memory into the process's address space + char *shm_ptr = mmap(NULL, COLOR_SIZE, PROT_READ, MAP_SHARED, shm_fd, 0); + if (shm_ptr == MAP_FAILED) { + perror("Failed to map shared memory"); + close(shm_fd); + return 1; + } + + // Initialize X11 + Display *display = XOpenDisplay(NULL); + if (display == NULL) { + perror("Unable to open X display"); + munmap(shm_ptr, COLOR_SIZE); + close(shm_fd); + return 1; + } + + // Create a window + int screen = DefaultScreen(display); + Window window = XCreateSimpleWindow(display, RootWindow(display, screen), 0, 0, 400, 400, 1, BlackPixel(display, screen), BlackPixel(display, screen)); + + // Set window properties + XStoreName(display, window, "Breathing Color Display"); + XMapWindow(display, window); + + // Set the window's background color initially + XFlush(display); + + // Start reading colors and updating the window + while (1) { + // Read the current color from shared memory + XColor color; + if (XParseColor(display, DefaultColormap(display, screen), shm_ptr, &color) == 0) { + fprintf(stderr, "Invalid color in shared memory: %s\n", shm_ptr); + continue; + } + + // Allocate the color in the X server + if (XAllocColor(display, DefaultColormap(display, screen), &color) == 0) { + fprintf(stderr, "Failed to allocate color: %s\n", shm_ptr); + continue; + } + + // Change the background color of the window + XSetWindowBackground(display, window, color.pixel); + XClearWindow(display, window); + + // Process X events + XEvent event; + while (XPending(display)) { + XNextEvent(display, &event); + if (event.type == ClientMessage) { + // Exit on close event (or any client message) + XDestroyWindow(display, window); + XCloseDisplay(display); + munmap(shm_ptr, COLOR_SIZE); + close(shm_fd); + return 0; + } + } + + // Sleep a little before checking for the next color update + usleep(100000); // 0.1 seconds + } + + // Clean up + XDestroyWindow(display, window); + XCloseDisplay(display); + munmap(shm_ptr, COLOR_SIZE); + close(shm_fd); + + return 0; +} + diff --git a/archive/breathing-exo-daemon/display/display-shm.c b/archive/breathing-exo-daemon/display/display-shm.c new file mode 100644 index 0000000..435077a --- /dev/null +++ b/archive/breathing-exo-daemon/display/display-shm.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include +#include +#include + +#define SHM_NAME "/breathing_color_shm" // Shared memory name (same as in exo.c) +#define COLOR_SIZE 8 // Size for one color (e.g., #RRGGBB) + +int main() { + int shm_fd; + char *shm_ptr; + + // Open shared memory object + shm_fd = shm_open(SHM_NAME, O_RDONLY, 0666); + if (shm_fd == -1) { + perror("Failed to open shared memory"); + return 1; + } + + // Map shared memory into the process's address space + shm_ptr = mmap(NULL, COLOR_SIZE, PROT_READ, MAP_SHARED, shm_fd, 0); + if (shm_ptr == MAP_FAILED) { + perror("Failed to map shared memory"); + close(shm_fd); + return 1; + } + + // Read the color from shared memory and print it + printf("Breathing color: %s\n", shm_ptr); + + // Clean up + munmap(shm_ptr, COLOR_SIZE); + close(shm_fd); + + return 0; +} + diff --git a/archive/breathing-exo-daemon/display/display-x b/archive/breathing-exo-daemon/display/display-x new file mode 100644 index 0000000..87622d2 Binary files /dev/null and b/archive/breathing-exo-daemon/display/display-x differ -- cgit v1.2.3