~nabeken/diary/

Gentoo Linuxを使う日々。


IHANet BGP peering overview

今日からはじめるawesomeチュートリアル (3.3/3.4対応版)

Posted on Sat Oct 31 13:04:17 +0900 2009 by nabeken

今日からあなたもawesomeで快適ウインドウマネージャ生活!

awesome とは

http://awesome.naquadah.org/

Debian開発者でもあるJulien Danjouが2007年からdwmをベースに開発を開始したtiling window manager(タイル型ウインドウマネージャ)です。 進化に進化を重ね、現在ではawesome自身をa highly configurable, next generation framework window manager(高度にカスタマイズ可能で、ウインドウマネージャのための次世代のフレームワーク)と定義しています。 これまでのタイル型ウインドウマネージャから一皮剥けた形になります。

タイル型ウインドウマネージャの一般的な特徴は日本タイルのWikiを参照してください。

awesomeの主な特徴:

  • たくさんの Freedesktop.org 標準を実装。

    • システムトレイに格納されるアプリケージョンも問題なく動作。
  • XRandR, Xinerama 対応。

    • マルチディスプレイ環境でも問題なし。
  • 設定ファイルにLuaを採用。

    • プログラマブルで自身で拡張可能。

開発はGit上で行なわれています

インストール編

awesomeはその活発な開発のためディストリビューション付属のパッケージは古い場合があります。 今からawesome 2.xの使用は上記の利点を失うことになるので、推奨しません。最低でも3.1以上の利用を推奨します。 awesome 2.xと3.xでは操作体系はかわりませんが、設定ファイルと機能が大幅に異なるため、継続的に使うには 2.x は古すぎます。

Debian

JulienがDebian開発者ということもあり、彼自身がパッケージングしています。2009年10月現在、Debianにおけるバージョンは以下の通りです。

  • 安定版 (`lenny’): 2.3.3
  • テスト版 (`squeeze’) : 3.3.4

Debian GNU/Linux squeeze/testing

テスト版ユーザはパッケージをそのまま使用できます。

# aptitude install awesome

インストール後、ログアウトするとディスプレイマネージャのセッションでawesomeが選択できます。

Debian GNU/Linux lenny/stable

残念なことに、xcb関連のライブラリがlennyに収録されてる1.1とawesomeが要求する1.4で互換性がないため、全パッケージの再ビルドが必要となり、lennyでawesome3.3, 3.4のパッケージをビルドすることは現実的ではありません。 自分でなんとかがんばるか、操作だけでも習得したい場合は非常に残念ですがawesome 2.3.3を使用してください。

# aptitude install awesome

Ubuntu

Ubuntu 9.10ではawesome 3.3.4が使用できますので、インストールは簡単に行えます。

# aptitude install awesome

インストール後、ログアウトするとディスプレイマネージャのセッションでawesomeが選択できます。

Gentoo

Gentooでは最新リリースがPortageツリーに入っています。

  • マスクなし: 3.3
  • マスクあり: 3.4

通常は3.3をインストールすることになるでしょう。

# emerge awesome

インストール後、ログアウトするとディスプレイマネージャのセッションでawesomeが選択できます。

awesome 体験編

このチュートリアルを印刷するか、もしくは別のパソコンで開いて、見ながら試してください。 VMwareやVirtualBoxなどの仮想化環境でawesomeを試すのもいいと思います。本チュートリアルでは、awesome 3.4に準じますが、設定ファイルが一部異なるだけで、ほとんどは3.3にも当てはまります。

Mod4 キー

awesomeのキーバインドのprefixはMod4キーです。通常、このキーは左側のWindowsキー、または Command キーです。この設定は変更できますが、awesome側はMod4のままで、 xmodmapを使い、特定のキーをMod4に変更するのが得策です。スペースキーの左隣りが無変換キーの人は

$ xmodmap -e 'keysym Muhenkan = Super_L'

で、無変換キーを左の Windows キーに割当てられます。英字配列のMacBookだと、Commandキーがちょうどいい位置にあります。すばらしいですね。みなさん英字配列にしましょう。

Lesson 1: ターミナルを起動!

まずはターミナルを起動しましょう。ここでは未設定なので、xtermが起動します。

  • Mod4-Return (ターミナルを起動する)

ウインドウが最大サイズで現れたと思います。

$ date | less

dateコマンドを実行して時刻を記録しておきましょう。ウインドウがどのように移動したかを追跡します。 もう1つターミナルを起動しましょう。

  • Mod4-Return (ターミナルを起動する)

初めに開いたウインドウがどうなったかを確認してください。ここで、もう1度date | lessを実行してください。 ウインドウが現れた後、どのウインドウにフォーカスが当たったかを確認してください。新しいウインドウにフォーカスが移動しているはずです。 また、ウインドウは縦に分割されたはずです。古いウインドウがどこに移動したかも確認してください。右へ移動したはずです。

しつこいですがもう1度ターミナルを起動します。

  • Mod4-Return (ターミナルを起動する)

同じく、date | lessを実行し、どのようになったか確認してください。一番古いウインドウは右下へ移動しているはずです。 一番新しいウインドウは常に左側に1つだけ出ることも確認してください。 この左側の領域をmasterと呼び、対して右側をslaveと言います。作業領域が一番広いのがmasterです。通常はこのmaster領域で作業します。

awesomeの設定を編集しながら基本操作を覚えましょう。

Lesson 2: ウインドウサイズの制御

まず、masterのウインドウでqを押し、lessから抜けます。しばらくここで作業を行います。

とにもかくにも、ターミナルにxtermを使っている人は少数派だと思われるので、そこからカスタマイズします。

デフォルトの設定ファイルは/etc/xdg/awesome/rc.luaです。 拡張子からもわかるように、設定ファイルはLuaを使っています。 Lua は軽量でアプリケーションの拡張用言語(アプリケーションそのものに組み込まれる)として広く使われています。 デフォルトの設定を自分のホームディレクトリへコピーします。

$ mkdir -p ~/.config/awesome
$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

ユーザ用の設定ファイルは~/.config/awesome/rc.luaです。

$ vi ~/.config/awesome/rc.lua

masterの領域が少し狭いと感じた人はウインドウを広げてみましょう。

  • Mod4-l (master領域にあるウインドウのサイズを増加させる)

1度押すとウインドウが広がります。広げすぎた場合は

  • Mod4-h (master領域にあるウインドウのサイズを減少させる)

これがウインドウサイズを変える方法です。この操作は頻出なので体に覚えさせましょう。マウスを使う方法もあります。

  • Mod4-右クリック+ドラッグ (フォーカスのあるウインドウのサイズを増減させる)

適当なサイズにできたら、編集に戻ります。

まず12行目の変数terminalを修正しましょう。私は “mlterm –sb=false” にしています。Ubuntu 系の人は “gnome-terminal” などがいいでしょう。

修正したら、awesomeを再起動します。

  • 上部一番左の a マークをクリック→awesome→restart

再起動するとウインドウサイズやフォーカスが元に戻ります。ターミナルも再設定したことなので、一旦すべて閉じましょう。masterのviを終了してください。ターミナルであれば、 exit や C-d で閉じれますが、ここでは awesome 的な閉じ方を学びます。

  • Mod4-Shift-c (フォーカスのあるウインドウを終了する)

アプリケーションは基本的にこのキーバインドで閉じます。3つのウインドウすべてを同様に閉じましょう。

改めてターミナルを起動します。ここからは練習をかねてawesome内でFirefoxを立ち上げ、このページを見ながら操作してみましょう。このページのアドレスは<http://tinyurl.com/awesome-tutorial>になります。

awesome 3.xからはランチャが内蔵されているので、

  • Mod4-r (awesome内蔵のランチャを起動する)

上部のタグ一覧の右にRun:というプロンプトが出ていることを確認してください。ここでfirefoxを入力し、Returnを押します。(ちなみに、tabで補完もできます)

……では、awesome内のFirefoxからこのページを再び開いていただけだと思いますので、再開しましょう :-)。 (ただし、説明の都合上、最後まで紙などを併用してください…)

Lesson 3: タグを使う

上部左に数字が並んでいるのを確認してください。1から9の9つのタグがあらかじめ用意されています。タグは Gnome や KDE で言うワークスペースです。 ワークスペースと異なるのはそれぞれがマージできるという点です。たとえば、タグ1番と3番を表示する、またはタグ1、2、3、4を表示するなどです。

ブラウザは大きく見たい時と、ブラウザを参照しながらmasterで作業をしたい時のどちらにも対応できるように、ブラウザ専用のタグを決めます。ここでは、2番のタグをブラウザ専用とします。

今のタグは1番であることを確認した上で、

  • Mod4-Shift-2 (フォーカスのあるウインドウを2番のタグへ移動する)

Firefoxが消え、ウインドウがなにもなくなったことを確認してください。Firefoxがきちんと2番のタグに移動したかを確認しましょう。

  • Mod4-2 (2番のタグへ移動する)

Firefoxが現われたはずです。ほっとしたところで、もとのタグへ戻りましょう。

  • Mod4-Esc (ひとつ前のタグへ移動する) または
  • Mod4-1 (1番のタグへ移動する)

どちらも結果は同じです。そろそろ、キーバインドを追加したくてうずうずしている人はここで設定してみましょう。ターミナルを起動します。

  • Mod4-Return (ターミナルを起動する)

さて、ここからブラウザを見ながら作業をしたいと思います。この機能はとても重要なので体に覚えさせましょう。

  • Mod4-Ctrl-2 (今のタグと2番のタグを一時的にマージ(合併)する)

ブラウザがあらわれたはずです。フォーカスを移動する手段をまだ伝えていませんでした。フォーカスの移動は

  • Mod4-j (次のウインドウへフォーカスを移動する)
  • Mod4-k (前のウインドウへフォーカスを移動する)

Firefoxとターミナル間のフォーカスがきちんと移動しているか確認してください。

フォーカスをターミナルにして

$ man awesomerc

とすると、設定ファイルに関する man が読めま……と思ったらまだ整備されていないようです。Luaを使っているので直接読めということでしょうか。とりあえず、manを閉じて、再び rc.lua を開きます。

$ vi ~/.config/awesome/rc.lua

設定ファイルについては、Wikiにまとまっています。各用語について定義されているので、一通り目を通してください。

キーバインドはAPI(awesomeの基本APIはawful)のawful.key関数を介して設定します。

見ればなんとなくわかるとようになっています。例えば、これまでに使用したキーバインドは以下のように定義されています。

awful.key({ modkey,           }, "Return", function () awful.util.spawn(terminal) end),
awful.key({ modkey,           }, "l",      function () awful.tag.incmwfact( 0.05) end),
awful.key({ modkey,           }, "h",      function () awful.tag.incmwfact(-0.05) end),
awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                  end),

第1引数が修飾キーで、第2引数がそれに対応するキーです。そして、第3引数が実行する関数です。基本的な操作はawfulというライブラリにまとめられています。

特定のコマンドを起動させたい場合は awful.util.spawn(command) を使います。1つ例を挙げると、

awful.key({ modkey, "Control" }, "m",     function () awful.util.spawn("/home/nabeken/bin/twitter-update.sh") end),

これを設定すると Mod4+Ctrl+m で今amarokで聞いている音楽をtwitterへポストしてくれます。

Lesson 4: ウインドウの移動

ここまでで、たどたどしいですが、なんとか使えるようになったはずです。しかし、あと1つ教えなければならないことがあります。 それはウインドウの入れ替えです。

これにはいくつか方法があります。今、ターミナルがmasterとします。Firefoxをmasterにしたい時は、まずフォーカスをFirefoxへ合せます。

  • Mod4-j (次のウインドウへフォーカスを移動する)
  • Mod4-k (前のウインドウへフォーカスを移動する)

Firefox上で、

  • Mod4-Ctrl-Return (フォーカスのあるウインドウをmasterへ移動する)

これで Firefoxがmasterに移動したはずです。フォーカスもFirefoxにあることを確認してください。

もう1つの方法は手動で入れ替える方法です。わかりやすくするために、もう1つターミナルを起動させます。

  • Mod4-Return (ターミナルを起動する)

ウインドウが3つになり、新たに起動したターミナルがmasterに来たはずです。ここで

  • Mod4-Shift-j (フォーカスのあるウインドウを次のウインドウと入れ替える)

をすると、ターミナルとFirefoxが入れ替わったと思います。そして、フォーカスはターミナルのままのはずです。もう1度するとどうなるでしょうか。

  • Mod4-Shift-j (フォーカスのあるウインドウを次のウインドウと入れ替える)

次はそのとなりのターミナルと入れ替わり、新たに起動したターミナルは右下に移動したはずです。もう1度するとどうなるか考えてみましょう。

最初の位置、つまりmasterへ戻ります。これと逆方向の操作が、

  • Mod4-Shift-k (フォーカスのあるウインドウを前のウインドウと入れ替える)

結果はそれぞれで試してみてください。これでとりあえず使うには問題ないはずです。今日の操作をまとめましょう。

Lesson 5: Tutorial 1 のまとめ

  • Mod4-Return (ターミナルを起動する)
  • Mod4-Shift-c (フォーカスのあるウインドウを終了する)
  • Mod4-j (次のウインドウへフォーカスを移動する)
  • Mod4-k (前のウインドウへフォーカスを移動する)
  • Mod4-Ctrl-Return (フォーカスのあるウインドウをmasterへ移動する)
  • Mod4-h (master領域にあるウインドウのサイズを減少させる)
  • Mod4-l (master領域にあるウインドウのサイズを増加させる)
  • Mod4-1 (1番のタグへ移動する)
  • Mod4-2 (2番のタグへ移動する)
  • ….. (n番のタグへ移動する)
  • Mod4-9 (9番のタグへ移動する)
  • Mod4-Ctrl-2 (今のタグと2番のタグを”‘一時的に”‘マージ(合併)する)
  • Mod4-Esc (ひとつ前のタグへ移動する) または
  • Mod4-Shift-2 (フォーカスのあるウインドウを2番のタグへ移動する)
  • Mod4-Shift-j (フォーカスのあるウインドウを次のウインドウと入れ替える)
  • Mod4-Shift-k (フォーカスのあるウインドウを前のウインドウと入れ替える)
  • Mod4-F1 (awesome 内蔵のランチャを起動する)

他のチュートリアルとしては

が簡単な例とともに画像付きで解説されています。設定ファイルは変わっていますが、キーバインドは変わっていません。こちらも併せてどうぞ。

Tutorial 2 の予定

awesome にはまだまだ機能があります。設定ファイルを読むとまだまだしらない機能があることがわかると思います。

  • Layout - 今回、ウインドウの配置はmasterが左側にくるものでした。実はmasterが右、下、上にくるものもあります。これらの配置方法を定めているのが layout という仕組みです。
  • Floating - Mplayer や gimp などのアプリケーションと awesome は一般的に相性が悪いです。Mplayer はファイルによってウインドウサイズを替えたりするためです。そのため、特定のアプリケーション、または layout としてこれまでの従来のウインドウマネーと同じ動作モードがあります。それが Floating です。
  • Widget - 時計、タスクバー、システムトレイは Widget という仕組みで管理されています。これは自由に組合せることができ、従来のタイル型ウインドウマネージャと awesome が一線を画く仕組みです。
  • Theme - フォーカスのあるウインドウは外枠に線が見えると思います。また、タスクバーなどの色も自由変えることができます。これらの管理を beautiful ライブラリが担っています。外枠の色だけ変えたいという要求に答えることができる仕組みです。

これらを次回のチュートリアルで紹介できればと思います。

なお、本記事は github 上で公開しています。フィードバックがあれば編集、コミット後、pullリクエストをお願いします。(もちろん、指摘のみでも構いません)

更新履歴

  • fix typo (thanks to @matsuu) (Sat, 31 Oct 2009 13:04:17 +0900)
  • cleanup (Sat, 31 Oct 2009 13:04:17 +0900)
  • fix typo (thanks to @hiyuh) (Sat, 31 Oct 2009 13:04:17 +0900)
  • 3.3/3.4に対応 (Sat, 31 Oct 2009 13:04:17 +0900)