Я сам придумал способ, но это довольно неприятно, так как мне пришлось использовать дополнительные пакеты:
(define (get-position)
(define a (open-output-string))
(run-shell-command "xdotool getmouselocation" 'output a)
(define output (get-output-string a))
(close-port a)
((lambda (x) (list (string->number (cadar x)) (string->number (cadadr x))))
(map (string-splitter 'delimiter #\:) ((string-splitter) ((string-trimmer) output)))))
(define resolution (let ((a (open-output-string)))
(run-shell-command "xdpyinfo | grep dimensions | awk '{print $2;}'" 'output a)
(define output (get-output-string a))
(close-port a)
(map string->number ((string-splitter 'delimiter #\x)
((string-trimmer) output)))))
Затем, чтобы получить относительное положение курсора на экране, вы просто
(map (lambda (x y) (inexact (/ x y))) (get-position) resolution)
(Вы должны заранее установить xdpyinfo и xdotool, так что имейте это в виду)