LoginSignup
1
1

More than 5 years have passed since last update.

awesome(window manager)のwidgetでテキストをマークアップする

Posted at

awesome3.5ではwibox.widget.textboxを用いたテキストでPangoのマークアップ記法が使えるようになった. つまりwidgetでのテキストを色付けにとどまらずそれなりに装飾できるようになったわけだ.
今回はCPUやメモリの使用率などをwidgetに置くことができるViciousを用いて紹介していく.

タグの使い方

Viciousの詳しい使い方は上記のリンク先に譲るとして, ここではCPU使用率を例にとる.
まず, widgetは

rc.lua
cpuwidget = wibox.widget.textbox()
vicious.register(cpuwidget, vicious.widgets.cpu, "CPU:$1%")

で作成できるが, この第3引数のstring部分にマークアップを使用できる.
例えば,

rc.lua
cpuwidget = wibox.widget.textbox()
vicious.register(cpuwidget, vicious.widgets.cpu, "CPU:<span color='#EE0000' style='italic'>$1</span>%")

で数字が赤色イタリックに.
このようにspanタグで様々な装飾が可能になる.
使用可能な属性はPangoのドキュメントを参照.
ちなみにBoldや取り消し線などいくつかの属性は以下のような簡易タグが用意されている.

<b>Bold text</b>
<s>取り消し線</s>

さらにvicious.registerの第3引数ではstringを返す関数を入れることができるため, 夢が発散することだろう.

使用例

最後に参考程度に私のViciousのバッテリー残量のテキスト部分の設定でも載せておく.
残量やったり充電中かどうかでなんやかんや変わる.

rc.lua
battext = wibox.widget.textbox()
vicious.register(
    battext, vicious.widgets.bat,
    function(widget, args)
        local status = args[1]
        local percent = args[2]
        local str =
            "<span weight='bold' size='xx-large' color='%s'>" ..
            "%s</span>%d "
        if status == "+" then
            status = "☺"
        elseif status == "-" then
            status = "⍨"
        end
        if percent > 75 then
            return string.format(str, "#00CC00", status, percent)
        elseif percent > 50 then
            return string.format(str, "#66CC00", status, percent)
        elseif percent > 25 then
            return string.format(str, "#CCCC00", status, percent)
        elseif percent > 10 then
            return string.format(str, "#CC6600", status, percent)
        else
            return string.format(str, "#CC0000", status, percent)
        end
    end,
    61, "BAT1")
end
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1