diff --git a/.hammerspoon/init.fnl b/.hammerspoon/init.fnl index 2b7039d..69bdc8b 100644 --- a/.hammerspoon/init.fnl +++ b/.hammerspoon/init.fnl @@ -68,8 +68,7 @@ (string.find orig-url "^https://doi.org/") ((open-with :firefox) (.. "https://sci-hub.st/" orig-url)) (string.find orig-url "^https://.*[.]usps.com/") - ((open-with :firefox) orig-url) - (open-url :firefox)))) + ((open-with :firefox) orig-url) (open-url :firefox)))) (set hs.urlevent.httpCallback (fn [scheme host params url] @@ -78,28 +77,72 @@ redirect (partial run "curl -Ls -o /dev/null -w %{url_effective}") orig-url (de-utm url) redirected (de-utm (redirect orig-url))] + ;; (hs.urlevent.openURLWithBundle orig-url bundle-ids.firefox)))) (handle redirected orig-url)))) -; (hs.urlevent.openURLWithBundle orig-url bundle-ids.firefox)))) +;;; Elgato Key Light Air + +;; finding the hostname for the key light air +; (local browser (: (hs.bonjour.new) :findServices :_elg._tcp. +; (fn [browser _ _ service _] +; (service:resolve #(log :info (: ($1:hostname) :sub 1 -2))) +; (browser:stop)))) + +(fn update-key-light-air [on?] + (let [url "http://elgato-key-light-air-5c9e.local:9123/elgato/lights" + on (if on? 1 0) + data (hs.json.encode {:lights [{: on}]})] + (hs.http.doRequest url :PUT data))) + +(fn docked? [] + (accumulate [docked? false _ v (pairs (hs.usb.attachedDevices)) &until docked?] + (or docked? (= v.productName "CalDigit Thunderbolt 3 Audio")))) + +(local key-light-air-watcher + (let [{: watcher} hs.caffeinate] + (watcher.new #(when (docked?) + (match $1 + watcher.screensDidLock (update-key-light-air false) + watcher.screensDidSleep (update-key-light-air false) + watcher.screensDidUnlock (update-key-light-air true) + watcher.screensDidWake (update-key-light-air true)))))) + +(when (docked?) + (key-light-air-watcher:start)) + +(local usb-watcher (: (hs.usb.watcher.new #(let [{: eventType : productName} $1] + (when (= productName + "CalDigit Thunderbolt 3 Audio") + (match eventType + :added (do + (update-key-light-air true) + (key-light-air-watcher:start)) + :removed (do + (update-key-light-air false) + (key-light-air-watcher:stop)))))) + :start)) ;;; Spoons (: (hs.loadSpoon :ReloadConfiguration) :start) -(hs.loadSpoon :Quitter) +; (hs.loadSpoon :Quitter) -;; fnlfmt: skip -(set spoon.Quitter.quitAppsAfter - {:Calendar 30 - :Discord 300 - :MailMate 600 - :Messages 300 - :Reeder 600 - :Slack 300 - :Telegram 300 - :Twitterrific 300}) - -(spoon.Quitter:start) +; ;; fnlfmt: skip +; (set spoon.Quitter.quitAppsAfter +; {:Calendar 30 +; :Discord 300 +; :MailMate 600 +; :Messages 300 +; :Reeder 600 +; ; :Slack 300 +; :Telegram 300 +; :Twitterrific 300}) + +; (spoon.Quitter:start) + +(when (hs.fs.attributes :local.fnl) + (require :local)) (: (hs.notify.new {:title :Hammerspoon :informativeText "Config loaded"