;;; module/sidebar.fnl --- Informational sidebar ;;; Code: (local awful (require :awful)) (local beautiful (require :beautiful)) (local lain (require :lain)) (local wibox (require :wibox)) (local std (require :lib.std)) (local tag-list (require :widget.tag-list)) (local task-list (require :widget.task-list)) (local textclock (require :widget.textclock)) (local markup lain.util.markup) ;;; ;; Functions (fn border [t margin] (let [side (or margin 2) end (+ side 1)] {1 t :bottom end :left side :right side :top end :widget wibox.container.margin} )) (fn center [t] {1 t :align "center" :widget wibox.container.place}) (local sb-clock (textclock "%H\n%M")) (local sb-systray (doto (wibox.widget.systray) (: :set_base_size 24))) (fn bat-hm [] (let [[h m] (std.s-split _G.bat_now.time ":") baticon "\u{f241}"] (: _G.widget :set_markup (.. baticon "\n" h "\n" m)))) (fn bat-icon [] ;; FA ;; (let [full "\u{f240}" ;; x75 "\u{f241}" ;; x50 "\u{f242}" ;; x25 "\u{f243}" ;; empty "\u{f244}" (let [full "\u{e02b}" x75 "\u{e02c}" x50 "\u{e02d}" x25 "\u{e02e}" empty "\u{e136}" charging "\u{e02a}" status _G.bat_now.status level _G.bat_now.perc icon (if (= status "Full") full (= status "Charging") charging (> level 75) x75 (> level 50) x50 (> level 25) x25 empty)] (: _G.widget :set_markup (markup.font "Typicons 28" icon)))) (fn bat-markup [] (bat-icon)) (fn pulse-icon [] (let [icon {:muted "\u{e133}" :low "\u{e135}" :med "\u{e132}" :high "\u{e134}"} muted (= _G.volume_now.muted "yes") vol (tonumber _G.volume_now.left) icon (if muted icon.muted (> vol 35) icon.high (> vol 5) icon.med icon.low)] (: _G.widget :set_markup (markup.font "Typicons 24" icon)))) (fn pulse-icon+text [] (let [icon {:muted "\u{e133}" :low "\u{e135}" :med "\u{e132}" :high "\u{e134}"} muted (= _G.volume_now.muted "yes") vol (tonumber _G.volume_now.left) icon (if muted icon.muted (> vol 35) icon.high (> vol 5) icon.med icon.low) s (if muted "" (.. "\n" (tostring vol) "%"))] (: _G.widget :set_markup (.. (markup.font "Typicons 24" icon) s)))) (fn pulse-markup [] (pulse-icon)) ;; TODO Plug/unplug notifications (local battery (lain.widget.bat {:battery "BAT1" :ac "ACAD" :notify "on" :n_perc [10 20] :settings bat-markup})) (local pulse (lain.widget.pulse {:settings pulse-markup})) (fn draw-sidebar [s] (set s.sb (awful.wibar {:position beautiful.sidebar_position :width beautiful.sidebar_width :screen s})) (: s.sb :setup {:layout wibox.layout.align.vertical 1 {1 (border (tag-list s)) ;; 2 (task-list s) :layout wibox.layout.fixed.vertical} 2 nil 3 {1 (center battery.widget) 2 (center pulse.widget) ;; 2 sb-systray 3 {1 (border {1 {1 (center sb-clock) :top 2 :bottom 2 :widget wibox.container.margin} :widget wibox.container.background :bg beautiful.sidebar_bg_info}) :layout wibox.layout.fixed.vertical} :layout wibox.layout.fixed.vertical}})) ;;; ;; Configuration (awful.screen.connect_for_each_screen draw-sidebar) {} ;;; module/sidebar.fnl ends here