;;; module/sidebar.fnl --- Informational sidebar ;;; Code: (local awful (require :awful)) (local beautiful (require :beautiful)) (local gears (require :gears)) (local dpi beautiful.xresources.apply_dpi) (local lain (require :lain)) (local wibox (require :wibox)) (local std (require :lib.std)) (local button (. (require :lib.keys) :button)) (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}) (fn deftooltip [obj callback] (awful.tooltip {:objects [obj] :timer_function callback :delay_show 0.5 :margin_leftright (dpi 10) :margin_topbottom (dpi 8)})) (local clock (textclock "%H\n%M")) (local systray (doto (wibox.widget.systray) (: :set_base_size 24) (: :set_horizontal false))) (local battery (require :widget.bat)) (local pulse (require :widget.pulse)) (local clock-buttons (gears.table.join (button [] 1 (lambda [] (awful.spawn "orage"))))) (fn bat-detail [] (let [status _G.bat_now.status statustxt (if (= status "Full") "charged" (= status "Charging") "charging" (= status "Discharging") "discharging" "N/A")] (.. "Level: " _G.bat_now.perc "%\n" "Status: " statustxt "\n" (if (or (= status "Charging") (= status "Discharging")) (.. "Time left: " _G.bat_now.time " hours") "")))) (deftooltip clock (lambda [] (os.date "%A %d %B %Y"))) (deftooltip battery.widget bat-detail) (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)) :layout wibox.layout.fixed.vertical} 2 {1 (border (center (task-list s)) 4) :layout wibox.layout.flex.vertical} 3 {1 (center systray) 2 (center battery.widget) 3 {1 (border {1 {1 (center clock) :top 2 :bottom 2 :widget wibox.container.margin} :widget wibox.container.background :bg beautiful.sidebar_bg_info}) :buttons clock-buttons :layout wibox.layout.fixed.vertical} :layout wibox.layout.fixed.vertical}})) ;;; ;; Configuration (awful.screen.connect_for_each_screen draw-sidebar) {} ;;; module/sidebar.fnl ends here