clipboard lib

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Function to copy text to clipboard
void copyToClipboard(const char *text) {
    // Open clipboard for writing
    FILE *clipboard = popen("xclip -selection clipboard", "w");

    // Check if clipboard is open
    if (clipboard == NULL) {
        perror("Error opening clipboard");
        exit(EXIT_FAILURE);
    }

    // Write text to clipboard
    fprintf(clipboard, "%s", text);

    // Close clipboard
    if (pclose(clipboard) != 0) {
        perror("Error closing clipboard");
        exit(EXIT_FAILURE);
    }
}

// Function to paste text from clipboard
char *pasteFromClipboard() {
    // Open clipboard for reading
    FILE *clipboard = popen("xclip -selection clipboard -o", "r");

    // Check if clipboard is open
    if (clipboard == NULL) {
        perror("Error opening clipboard");
        exit(EXIT_FAILURE);
    }

    // Allocate memory for pasted text
    char *pastedText = NULL;
    size_t bufferSize = 0;

    // Read text from clipboard
    if (getline(&pastedText, &bufferSize, clipboard) == -1) {
        perror("Error reading from clipboard");
        exit(EXIT_FAILURE);
    }

    // Close clipboard
    if (pclose(clipboard) != 0) {
        perror("Error closing clipboard");
        exit(EXIT_FAILURE);
    }

    return pastedText;
}

int main() {
    // Example usage
    const char *textToCopy = "Hello, clipboard!";

    // Copy text to clipboard
    copyToClipboard(textToCopy);
    printf("Text copied to clipboard: %s\n", textToCopy);

    // Paste text from clipboard
    char *pastedText = pasteFromClipboard();
    printf("Text pasted from clipboard: %s\n", pastedText);

    // Free allocated memory for pasted text
    free(pastedText);

    return 0;
}