2009年8月1日土曜日

Awesomeの設定

タイル型WMのAwesomeを前回インストールし終わり、
少しカスタマイズしてみたので、忘れないためにめもめも。

設定ファイルは~/.config/awesome/rc.luaというファイルであり、
Lua言語にて書かれています。

Emacsでは標準だとLua言語はシンタックスハイライトされないので
(何となく見づらいので)
lua-modeをインストールした。

$ sudo pacman -S emacs-lua-mode


.emacsへ下記追加、.luaファイルを読み込む時自動でLua-modeで起動します。
(setq auto-mode-alist (cons '("\.lua$" . lua-mode) auto-mode-alist))
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)


とりあえず標準でも十分使えるんだけどちょっと味気ないので、
下部へステータスバーを作成しPC情報を追加してみた。

Awesomeではrc.luaでほぼ全て設定しているので、編集する時は
バックアップを取って行った方がいいです。
(ウィンドウの位置・挙動等このファイルで制御しているので)

プログラミングについて素人なので簡単にしか中身は読めませんが、
標準の設定で上から順に

1.ライブラリの呼び出し
2.テーマの呼び出し
3.ターミナル、エディタの設定
4.タイルのレイアウト設定
5.フローティングさせるアプリの設定
6.アプリの起動するタグの設定
7.タグの個数、名称の設定
8.メニュー、タスクリスト、システムトレイの設定
9.マウス、キーバインドの設定及びウィンドウの制御

となっているはずです。

今回は8と9の間に、PC情報のウィジェットの各設定を追加します。

まず、ウィジェットの追加はwickedライブラリが必要になる為、
rc.luaへwickedライブラリを追加する。
require("wicked")


続いて、本家のページやArchLinuxのWikiを参考に下記を追加した。
もろ載っているのそのまんまですが^^;
-- Create a Volume progressmeter
--------------------------------
cardid = 0
channel = "PCM"
function volume (mode, widget)
if mode == "update" then
local status = io.popen("amixer -c " .. cardid .. " -- sget " .. channel):read("*all")

local volume = string.match(status, "(%d?%d?%d)%%")

status = string.match(status, "%[(o[^%]]*)%]")

if string.find(status, "on", 1, true) then
widget:bar_properties_set("vol", {["bg"] = "#000000"})
else
widget:bar_properties_set("vol", {["bg"] = "#cc3333"})
end
widget:bar_data_add("vol", volume)
elseif mode == "up" then
awful.util.spawn("amixer -q -c " .. cardid .. " sset " .. channel .. " 2%+")
volume("update", widget)
elseif mode == "down" then
awful.util.spawn("amixer -q -c " .. cardid .. " sset " .. channel .. " 2%-")
volume("update", widget)
else
awful.util.spawn("amixer -c " .. cardid .. " sset " .. channel .. " toggle")
volume("update", widget)
end
end

pb_volume = widget({ type = "progressbar", align = "right" })
pb_volume.width = 12
pb_volume.height = 1.0
pb_volume.gap = 0
pb_volume.border_padding = 1
pb_volume.border_width = 1
pb_volume.ticks_count = 5
pb_volume.vertical = true

pb_volume:bar_properties_set("vol",
{
["bg"] = 'black',
["fg"] = '',
["fg_center"] = '',
["fg_end"] = 'white',
["fg_off"] = 'black',
["border_color"] = 'black',
["min_value"] = "0.0",
["max_value"] = "100.0",
["reverse"] = false
})

pb_volume:buttons({
button({ }, 4, function () volume("up", pb_volume) end),
button({ }, 5, function () volume("down", pb_volume) end),
button({ }, 1, function () volume("mute", pb_volume) end)
})

awful.hooks.timer.register(5, function () volume("update", pb_volume) end)

-- Widgets using wicked

-- Spacer
sikiri = widget({ type = "textbox" , name=sikiri , align = "right" })
sikiri.text = " | "

-- date
datewidget = widget({
type = 'textbox',
name = 'datewidget',
align = "right"
})
wicked.register(datewidget, wicked.widgets.date,
'%Y年%m月%d日(%a) %H:%M ')

-- Merory usage
memwidget = widget({
type = 'textbox',
name = 'memwidget',
align = "right"
})
wicked.register(memwidget, wicked.widgets.mem,
' RAM: $1% ($2Mb/$3Mb) | ')
-- Memory bar

-- file system
fswidget = widget({
type = 'textbox',
name = 'fswidget',
align = "right"
})
wicked.register(fswidget, wicked.widgets.fs,
' FS: /Root:${/ usep}% , /home:${/home usep}% (${/home used}/${/home size}) | ', 30)

-- cpu
cpuwidget = widget({
type = 'textbox',
name = 'cpuwidget',
align = "right"
})
wicked.register(cpuwidget, wicked.widgets.cpu,
' | CPU: $1% ')

-- CPU bar
cpugraphwidget = widget({ type = 'graph', name = 'cpugraphwidget', align = 'right' })
cpugraphwidget.height = 0.75
cpugraphwidget.width = 30
cpugraphwidget.bg = '#000022'
cpugraphwidget.border_color = '#0a0a0a'
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set( 'cpu', { fg = '#60ff60', fg_center = '#50e050', fg_end = '#40d040', vertical_gradient = false } )
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu' )

-- net
netwidget = widget({
type = 'textbox',
name = 'netwidget',
align = "right"
})
wicked.register(netwidget, wicked.widgets.net,
' NET: ${eth0 down}/${eth0 up} (${eth0 rx}/${eth0 tx}) | ',
nil, nil, 3)

-- {{{ MPD Widget
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'left'
})

wicked.register(mpdwidget, wicked.widgets.mpd,
' Now Playing : $1')

-- statebar in the bottom
mystatebar = wibox( {position = "bottom", fg = beautiful.fg_normal, bg = beautiful.bg_normal} )
mystatebar.widgets = {
mpdwidget,
cpuwidget,
cpugraphwidget,
sikiri,
memwidget,
fswidget,
netwidget,
datewidget,
}
mystatebar.screen = 1


以上で下記画像の様にデスクトップ下部へPC情報を追加できた。

0 件のコメント:

コメントを投稿