このブログはURLが変更になりました

新しいブログはこちら→ https://matsuu.hatenablog.com/

ウィンドウマネージャawesomeが最強である○つの理由

先日xmonad最強とか叫んでましたが、もう別のウィンドウマネージャに乗り換えました。
その名もawesome(おーさむ)。

今これ最強です。もう乗り換えたのかとmatsuyamaさんに怒られそうですが。

さて、最強の理由ですが。

dwmの良さを踏襲

dwmのforkなので当たり前といえば当たり前。キーバインドの一部がdwm標準と異なるので注意。
xmonadやwmiiのswapnext,swapprevの機能は取り込んでもらった(1.2以降)。

dwmにあってxmonadにない、ウィンドウタイトルの表示機能も良い。xmonadでもすぐに実装できると思うけど。

Xinerama, XRandRサポート

dwmにはなかったXineramaやXRandRのサポートがawesomeには実装済(1.3以降)。xmonadほど洗練された実装ではないが、これがあるとないでは(マルチディスプレイ環境では)大違い。

XRandRのフルサポートは2.1以降の予定。

設定ファイルのサポート

xmonadやdwmなどとは異なり、設定ファイル(${HOME}/.awesomerc)でキーバインド等各種設定ができる。xmonadやdwmのように、設定を変更する度に再コンパイルといった手間がかからない。

Xftサポート

ウィンドウのタイトルやタグ番号のフォント指定がXftに対応(1.3以降)。アンチエイリアシングが効いていい感じ。
ただ、日本語フォントでたまに正しく表示されない場合がある模様。原因はよくわかってません。

例えばIPA P明朝に変更するなら.awesomercを以下のように。

@@ -18,7 +18,7 @@
         # Allow floating windows to be below others
         allow_lower_floats = false
         # Status bar font (Xft)
-        font = "fixed-12"
+        font = "IPAPMincho-10"
     }
     colors
     {

私はsans-10に設定してます。

Compositeによる透過処理をサポート

xmonadにも拡張機能として実装されてますが。

例えばFloating layoutのウィンドウを透過処理したり、Tiled layoutのウィンドウを透過してバックグラウンドを表示したり。
これが案外便利。実例はオフィシャルのscreenshotsを参照。
ビデオカードの性能が良いのであれば是非利用したいところ。

今はXcompmgr経由での利用だが、将来はネイティブに。XComposite対応は2.2以降の予定。

uim-toolbar-*がまともに使える

xmonadではuim-toolbar-gtk(uim-toolbar-qt)がウィンドウの後ろに隠れてしまい、入力ステータスが見えないという日本語環境にとっては致命的な問題があった*1awesomeならウィンドウの上に表示される。ただし、Floating layoutのウィンドウの下には隠れてしまう*2
uimならツールバーを使わず、設定で「全体設定」-「視覚設定」-「カーソルの側に入力モードを表示」にチェックをつけた方が便利です。

Cで書かれているのでHaskell(GHC)不要。

xmonadHaskellで書かれてたのでGHCが必要だった。これはでかい。GHCコンパイルって結構時間がかかるから。Gentooだけの問題か。
GHCはバージョンがあがると各Haskellライブラリもアップデートが必要なので、最新版をおっかけるのが至極面倒。特にどんどんバージョンを上げていくポリシーのGentooでは辛い。

xmonad最強の時はHaskellで書かれてるのがメリットと言ってたな俺。

だめなところ、惜しいところ

良いところだけではなく、ダメなところも上げておきましょう。

ドキュメント整備中

manやREADMEにはあまり情報がかかれてない。web上で整備されてるのでこちらを参照すると良い
まずは簡単なガイドツアーから始めて、uicb(キーバインド)の解説を見ながら実際に試して指に覚えこませるのがいいだろう。

コマンド実行が標準のキーバインドには存在しない

dmenuのようなコマンド実行のためのキーバインドが現状存在しないので、.awesomercに以下のように追加。オススメはgmrun。

     }
+    key
+    {
+        modkey = {"Mod4", "Shift"}
+         key = "Return"
+         command = "spawn"
+         arg = "exec gmrun"
+    }
     key
     {   
         modkey = {"Mod4"}

csh環境だとこれでは動きませんな。まぁそこらへんは適宜変更で。

マルチディスプレイ環境での実装が洗練されてない

まだxmonadの素晴らしい物理タグと論理タグの実装には遠く及ばない。2.0以降で実装予定。

ウィンドウ制御がたまに変

マルチディスプレイ環境でFloating layoutのウィンドウをディスプレイ跨ぎで動かすとたまに挙動がおかしくなる。2.0で修正されました。

タグの編集ができない

各仮想デスクトップ(タグ)の名称を動的に変更できない。まぁ私的には変更したいと思わないのであまり問題はない。2.0で編集できるようになりました

awesomeは形容詞

[1]恐ろしい, すさまじい.
[2]おそれかしこんだ〔態度など〕.
[3]【米話】 とてもよい, すばらしい.

出典:Yahoo! Japan 新グローバル英和辞典

と、形容詞なのでGoogleで検索してもなかなか該当の情報が見つからなかったりする。
まぁそのうちメジャーになって上位に来るだろう。

その他

1.3がリリースされてない今の状況ではgitのmasterおっかけを推奨。1.3がリリースされれば1.3でも良いんじゃないかと。1.3がリリースされました。2.0がリリースされました。

git最新版をおっかけるebuildは以下のとおり。x11-wm/awesome-9999.ebuildとかでどうぞ。

# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

WANT_AUTOCONF=latest
WANT_AUTOMAKE=latest

inherit git autotools toolchain-funcs eutils

DESCRIPTION="awesome is a window manager initialy based on a dwm code rewriting"
HOMEPAGE="http://awesome.naquadah.org/"
#SRC_URI="http://awesome.naquadah.org/download/${P}.tar.gz"
EGIT_REPO_URI="git://git.naquadah.org/awesome.git"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
IUSE=""

RDEPEND=">=dev-libs/confuse-2.6
        x11-libs/cairo
        x11-libs/libX11
        x11-libs/libXext
        x11-libs/libXft
        x11-libs/libXrandr
        x11-libs/libXinerama"

DEPEND="${RDEPEND}
        app-text/asciidoc
        app-text/xmlto
        app-doc/doxygen
        dev-util/pkgconfig
        x11-proto/xineramaproto"

src_unpack() {
        git_src_unpack
        cd "${S}"
        ./autogen.sh || die
}

src_install() {
        emake DESTDIR="${D}" install || die "emake install failed"

        exeinto /etc/X11/Sessions
        newexe "${FILESDIR}"/${PN}-session ${PN}

        insinto /usr/share/xsessions
        doins "${FILESDIR}"/${PN}.desktop

        insinto /usr/share/awesome/icons/layouts
        doins icons/layouts/*

        dodoc AUTHORS README STYLE awesomerc
}

gentooでは私がパッケージメンテナになりました。x11-wm/awesomeで本家ツリーに取り込んでます。

# emerge awesome

で一発ポン。
FreeBSDOpenBSDArchLinuxSUSEのパッケージもそれぞれ取り込まれてます。awesomeの作者はdebian developerなのでlibconfigの問題(bug#441200)が解消されればdebian/ubuntuにも取り込まれることでしょう。libconfigはlibconfuseに置き換えられました。

OTPの記事にもあるとおり、今タイル型ウィンドウマネージャが非常に熱い。日本タイル型ウィンドウマネージャユーザー会(JTWMUG; Japan Tiling Window Manager Users Group)でも作っとく?

*1:SCIMならxmonadでも最前面に表示されるので問題ない。この違いはなんだろう

*2:SCIMも同じくウィンドウの下に隠れてしまう