108 lines
2.9 KiB
Fennel
108 lines
2.9 KiB
Fennel
;;; 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})
|
|
|
|
(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")))))
|
|
|
|
(awful.tooltip {:objects [clock]
|
|
:timer_function (lambda [] (os.date "%A %d %B %Y"))
|
|
:delay_show 0.5
|
|
:margin_leftright (dpi 10)
|
|
:margin_topbottom (dpi 8)})
|
|
|
|
(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") ""))))
|
|
|
|
(awful.tooltip {:objects [battery.widget]
|
|
:timer_function bat-detail
|
|
:delay_show 0.5
|
|
:margin_leftright (dpi 10)
|
|
:margin_topbottom (dpi 8)})
|
|
|
|
(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
|