#!/bin/sh #| exec csi -s "$0" "$@" |# (use posix mylib files clojurian-syntax) (define *icondir* "/usr/share/dzen2/bitmaps/") (define (icon name) (conc "^i(" *icondir* name ")")) (define (mocp-filename) (let1 filename (string-chomp (system-read-result "mocp -Q %file")) (if (string-null? filename) #f (pathname-file filename)))) (define (mocp-title) (let1 title (string-chomp (system-read-result "mocp -Q %title")) (if (string-null? title) #f title))) (define (mocp) (if-let (title (or (mocp-title) (mocp-filename))) (begin (printf "^ca(1,mocp -G)~A " (icon "music.xbm")) (display (string-chomp (system-read-result "mocp -Q [%ct/%tt]"))) (display " ") (display title) (display " ^ca() ")) (begin (printf "~A No music " (icon "music.xbm"))))) (define (set-volume-command vol) (conc "amixer -c 1 set Master " vol " unmute && " "amixer -c 1 set Headphone unmute && " "amixer -c 1 set Speaker unmute")) (define (set-volume-label vol text) (conc "^ca(1," (set-volume-command vol) ")" text "^ca()")) (define (get-volume) (let1 res (system-read-result "amixer -c 1 get Master") (if-let (m (irregex-search '(: "[" (=> vol (+ num) "%") "]") res)) (irregex-match-substring m 'vol) ""))) (define (volume) (display (set-volume-label "0%" (conc (icon "volume.xbm") " " (get-volume)))) (display (set-volume-label "10%+" "[ + ]")) (display (set-volume-label "10%-" "[ - ]")) (display " ")) (define (line) (mocp) ; wifi ; network ; memory (volume) ; battery (printf "^fg(yellow)~A " (icon "battery.xbm")) (display (string-join (string-split (system-read-result "acpi") "\n") " - ")) (display "^fg() ") ; date & time (print (seconds->string (current-seconds)))) (define (one-line-loop) (line) (flush-output) (sleep 1) (one-line-loop)) (with-output-to-pipe "dzen2 -ta r -y 2000 -fn 'xft:Ricty Diminished' -e 'button2=;'" one-line-loop)