Skip to content

Instantly share code, notes, and snippets.

@uasi
Created March 1, 2021 05:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uasi/0cde224cec507dabfba73d7f2a84715f to your computer and use it in GitHub Desktop.
Save uasi/0cde224cec507dabfba73d7f2a84715f to your computer and use it in GitHub Desktop.
pbtail.rkt
#!/usr/bin/env racket
#lang racket
(require racket/base)
(require racket/port)
(require racket/system)
(define (pbpaste)
(with-output-to-string
(lambda () (system "pbpaste"))))
(define (display/ln-if-needed str)
(if (or (raw-mode) (string-suffix? str "\n")) display displayln))
(define raw-mode (make-parameter #f))
(command-line
#:once-each
[("--raw" "-r") "Raw mode" (raw-mode #t)])
(with-handlers ([exn:break? (lambda (x) (exit 0))])
(let loop ([prev-pb (pbpaste)])
(sleep 1)
(let ([pb (pbpaste)])
(cond [(not (equal? pb prev-pb))
(display/ln-if-needed pb)])
(loop pb))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment