   ([time]
      (let [tmap (time-map time)]
        (merge tmap {:today (get-in tmap [:stime])
-                    :bg (first images)
+                    :bg (first @images)
                     :on? false}))))
 
 (def state (atom (default-state)))

      (<! end-chan)
      (>! bg-chan true)
      (play-sound) ;; ding!
      (set-state! (default-state (next-time (get-state :time)))))) ;; set next pomodoro session

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Background logic
(defn set-bg! [bg]
  (let [img (nth images (rand-int 2))]
    (set-state! :bg img)))

(go (while true
      (<! bg-chan)
      (swap! history conj (get-state :time))
      (when (apply pomodoro? (take-last 2 @history))
        (set-bg! (get-state :bg)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(def sound (js/Audio. sound-src))
(defn play-sound [] (do (set! (.-src sound) sound-src) (.play sound)))

(def images (atom ["bg2.jpg"
                    "bg3.jpg"]))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; History
