awesomeウィンドウマネージャーの見栄えを良くする

Arch Linuxで使っているデスクトップマネージャ、awesomeのテーマに若干手を入れてみたので備忘録。あんまり日本語ドキュメントないので、このあたりのカスタマイズしんどかったです。

テーマファイルの構成

awesomeの設定はいくつかのLuaファイルを使って書き換えていく。基本的には全体設定を司る~/.config/awesome/rc.luaと、外観やテーマを司るライブラリである、Beautifulの設定ファイル~/.config/awesome/themes/default/theme.luaの2つを覚えておけばいいのかなと。いずれも初期状態では配置されてないので、デフォルトファイルをコピーしてきて使う。

# cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
# cp -r /usr/share/awesome/themes/default ~/.config/awesome/themes/default

Beautifulについてはrc.luaの中で設定ファイルのパスが指定できるので、defaultという名前が嫌だったら任意で変えてもOK。あとは正直awesomeのWiki見るのが手っ取り早いとは思うのだが、設定したところだけ書いておく。ちなみに前回記事で書いたが、awesomeのデフォルトターミナルの設定もrc.luaを使うので、外観変える必要なくてもrc.luaだけは確実に要ると思う。

タグリストの書き換え

awesomeでは仮想デスクトップを"tag"と呼んで扱っていて、デフォルトの状態だと左上に1から8まで(だったかな?)の数字がタグの番号として並んでいる。あまりわかりやすいものではないし、そんなに多くタグも使わないので書き換える。

1tags = <span class="synType">{}</span>
2<span class="synStatement">for</span> s = <span class="synConstant">1</span>, screen.count() <span class="synStatement">do</span>
3    <span class="synComment">-- Each screen has its own tag table.</span>
4    tags[s] = awful.tag(<span class="synType">{</span> <span class="synConstant">"Firefox"</span>, <span class="synConstant">"Terminal"</span>, <span class="synConstant">"Vim"</span>, <span class="synConstant">"other"</span> <span class="synType">}</span>, s, layouts[<span class="synConstant">1</span>])
5<span class="synStatement">end</span>
6

あとウィンドウを開いているタグは小さな正方形が表示されたりしていて鬱陶しかったのと、あまり見栄えも良くなかったので、正方形を表示されないようにした上で、フォーカスしているタグは文字色を変えることにした。これはbeautifulの方で設定する。

1theme.taglist_fg_focus = <span class="synConstant">"#f15c22"</span>
2<span class="synComment">-- theme.taglist_squares_sel   = "/usr/share/awesome/themes/default/taglist/squarefw.png"</span>
3<span class="synComment">-- theme.taglist_squares_unsel = "/usr/share/awesome/themes/default/taglist/squarew.png"</span>
4

1行目がフォーカスされているときのfg、フォアグラウンドカラーの設定。2、3行目はデフォルトで入ってる設定だったのでコメントアウトしておいた。

ウィジェットの表示

画面上の情報表示はウィジェットとして扱う。ウィジェットを管理するライブラリはいくつかあるみたいなんだが、取っつきやすそうなので自分はviciousrc.luaの中でrequireして使っている。

$ yaourt -S vicious

インストールした上で、

1<span class="synStatement">local</span> vicious = <span class="synIdentifier">require</span>(<span class="synConstant">"vicious"</span>)
2

設定の順序としては、awesomeがもともと備えているウィジェット生成用のAPIであるwiboxを使ってウィジェットのの原型をセットし、これにviciousを使って表示させたい情報をセットする。ここではバッテリー状態と音量、Wi-Fiの状態を表示させる。どんな情報を表示させられるのか、詳細はここ

 1<span class="synComment">--</span>
 2battxtwidget = wibox.widget.textbox()
 3vicious.register(battxtwidget, vicious.widgets.bat, <span class="synConstant">" Battery: <span color='#ffffff'>$2%</span> "</span>, <span class="synConstant">60</span>, <span class="synConstant">"BAT0"</span>)
 4<span class="synComment">--</span>
 5soundwidget = wibox.widget.textbox()
 6vicious.register(soundwidget, vicious.widgets.volume, <span class="synConstant">" Vol: <span color='#ffffff'>$1</span> "</span>, <span class="synConstant">2</span>, <span class="synConstant">"Master"</span>)
 7<span class="synComment">--</span>
 8wifiwidget = wibox.widget.textbox()
 9vicious.register(wifiwidget, vicious.widgets.wifi, <span class="synConstant">" Wi-Fi: <span color='#ffffff'>${ssid}</span> "</span>, <span class="synConstant">60</span>, <span class="synConstant">"wlp1s0"</span>)
10

ウィジェットを作ったら、画面上のレイアウトにウィジェットをセットする。

1<span class="synComment">-- Widgets that are aligned to the right</span>
2<span class="synStatement">local</span> right_layout = wibox.layout.fixed.horizontal()
3<span class="synComment">-- if s == 1 then right_layout:add(wibox.widget.systray()) end</span>
4right_layout:add(soundwidget)
5right_layout:add(battxtwidget)
6right_layout:add(wifiwidget)
7right_layout:add(mytextclock)
8right_layout:add(mylayoutbox[s])
9

自分がした設定はこの程度。あとはbeautifulでtheme.font = "sans 10"の設定でフォントサイズを少し大きくしたぐらいだが、beautifulの設定ファイルを見ればわかる通り、かなり細かく色やら何やら設定ができる。このへんに凝り始めるとキリがないので自分はやめることにしたが、好きな人はやってみたらいいんじゃないですかね。1つ、GitHubですげーカッコイイテーマ配ってるの見つけたんで貼っときます。Samuraizuとか思い出すなー。