(defpoll software_list :initial '[{"package_name":"package","package_version":"1","upstream_version":"1","up_to_date":"true"}]' :interval "43200s" 'software-release-monitor') (defvar reveal_software true) (defwidget software_revealer [] (revealer-on-press :visible {(jq(workspacesArray, '.[]\|select(.focused==true).num') <= 20) && (jq(workspacesArray, '.[]\|select(.focused==true).num') >= 11)} ; :visible {jq(workspacesArray, '.[]\|select(.focused==true).num') <= 9} :revealvar reveal_software :revealvar-name "reveal_software" :width 300 (button :width 300 :class "revealer-title" "Software Monitor ${reveal_software ? '' : ''}") (softwareupdates :json {software_list}))) (defwidget softwareupdates [json] (box :class "notes" :orientation "v" :halign "baseline" :width 300 :height 150 :space-evenly true (for software in json (button :onclick "notify-send '${software.package_name} is ${(software.up_to_date == 'true' ) ? 'up to date!' : 'outdated!'}' 'upstream: ${software.upstream_version}\\npackage: ${software.package_version}'" (box :orientation "h" :space-evenly false (label ;; :xalign 0 :halign "start" :hexpand true :wrap false :truncate true :text "${software.package_name}") (box :orientation "v" :halign "end" (label :valign "end" :halign "end" :class "details" :text "${software.upstream_version} ") (label :valign "start" :halign "end" :class "details" :text "${software.package_version} 󰏖")) (label :halign "end" :class "status" :style {(software.up_to_date == "true" ) ? "color: green;" : "color: red;"} :text {(software.up_to_date == "true" ) ? "" : ""})))) ))