Posted on Thu Jun 19 23:37:13 +0900 2008 by nabeken
http://awesome.naquadah.org/wiki/index.php/Awesome_3_configuration を参考に、まずは Lua について調べる。
http://www.lua.org/pil/ をさらっと読んだ。言語としては tables を使うことでオブジェクト指向のように扱っているようだ。
awful の中を見てみる。
-- Grab environment we need local assert = assert local loadstring = loadstring local ipairs = ipairs local pairs = pairs local unpack = unpack local awesome = awesome local screen = screen local client = client local tag = tag local mouse = mouse local os = os local table = table local hooks = hooks local keygrabber = keygrabber
これらの変数は C バインディングと対応しているようだ。たとえば、 clilent という変数は lua.c -> client.c -> awesome_client_methods に対応するメソッド/Cでの関数が列挙されている。
したがって、ちょっと名前空間がややこしいことになっている。awful.client.mogemoge というのは、ライブラリのメソッドを使うもので、 client.mogemoge というのは、C バインディングが提供しているメソッドを直接使っている。また、前者は lua の tables であるから、ライブラリの外から使うには awful.lua の最後で export する必要がある。
まず、レイアウトが増えている。xmonadみたいな下半分を1つのウインドウ、上半分を残りのウインドウで縦分割するものや、その逆版も。これいいですね。masterの数によって、クライアントの番号付けや、リサイズの方向がおかしいので修正しないと。
awesome-2.x にあった client_zoom という機能がなくなっている。とりあえず、パッチ書いたのが取りこまれました。
タグを重ねる機能がまだないな。awful を書けばたぶん実装できる。現在のスクリーンショット https://projects.tsuntsun.net/~nabeken/awesome-3.png