このブログはURLが変更になりました

新しいブログはこちら→ https://matsuu.hatenablog.com/

awesomeでバッテリ消費状態をバーに表示させるHAL編

iwamatsuさんのawesome で バッテリ消費状態をバーに表示させる をHAL + awesomeでやるとこんな感じになる。

bat_text = widget({ type = "textbox", align = "right" })
bat_bar = widget({ type = "progressbar", align = "right" })
bat_bar.width = 30
bat_bar.height = 0.75
bat_bar:bar_properties_set('bat', {
    bg = '#222222',
    fg = '#287755',
    fg_center = '#287755',
    fg_end = '#287755',
    fg_off = '#222222',
    reverse = false,
    min_value = 0,
    max_value = 100
})
bat_refresh = function()
    local fd

    local bat_udi = awful.util.pread("hal-find-by-property --key info.category --string battery")
    if bat_udi == nil then
      return nil
    end

    local charge_level = string.gsub(awful.util.pread("hal-get-property --key battery.charge_level.percentage --udi " .. bat_udi), "%s*$", "")
    local ac_udi = string.gsub(awful.util.pread("hal-find-by-property --key info.category --string ac_adapter"), "%s*$", "")
    local ac_present = string.gsub(awful.util.pread("hal-get-property --key ac_adapter.present --udi " .. ac_udi), "%s*$", "")

    local fg, fg_center, fg_end
    if ac_present == "true" then
        fg = '#287755'
        fg_center = '#287755'
        fg_end = '#287755'
    else
        fg = '#772855'
        fg_center = '#772855'
        fg_end = '#772855'
    end
    bat_text.text = charge_level .. "%"
    bat_bar:bar_properties_set('bat', {
      fg = fg,
      fg_center = fg_center,
      fg_end = fg_end,
    })
    bat_bar:bar_data_add("bat", charge_level)
    return true
end
bat_status = bat_refresh()

で、これをwiboxに入れて、

     mywibox[s].widgets = { mylauncher,
                            mytaglist[s],
                            mytasklist[s],
                            mypromptbox[s],
+                           bat_status and bat_text,
+                           bat_status and bat_bar,
                            mytextbox,
                            mylayoutbox[s],
                            s == 1 and mysystray or nil }

日時処理と同じようにtimer.registerにbat_refreshを放り込めばOK。

awful.hooks.timer.register(15, bat_refresh)

awesome-gitでしか確認していない。awesome-3.1.1などの古いバージョンで動くかどうかは未確認。
あとはdbus経由でACアダプタが抜かれた瞬時に表示が切り替わると嬉しいですね。