(use clojurian-syntax) (define write-u32 (o write-u8vector blob->u8vector/shared u32vector->blob/shared u32vector)) (define (string->ipc-string msg) (with-output-to-string (lambda () (display "i3-ipc") (write-u32 (string-length msg)) (write-u32 0) (display msg)))) (define (i3-command msg) (doto (socket af/unix sock/stream) (socket-connect (unix-address (i3-socket-path))) (socket-send-all (string->ipc-string msg)) (socket-close)))