awesome (日本語) - ArchWiki

# awesome (日本語)

awesome ウェブサイトより:

"awesome は高度に設定可能な、次世代の X フレームワークウィンドウマネージャです。高速に動作し、拡張しやすく、GNU GPLv2 ライセンスを使っています。

パワーユーザーや開発者など、日常的に PC を使い、きめ細かいグラフィカル環境を求めている全ての人をターゲットにしています。"

## インストール

awesome は 公式リポジトリからインストールします。

プレリリース版を使うには、AUR の awesome-git を使って下さい。安定していないと考えられるバージョンで、設定構文が異なっているかもしれません。

## awesome を起動

### ログインマネージャを使わずに起動

ログインマネージャを使わずに awesome を起動するには、シンプルにスタートアップスクリプト (例: ~/.xinitrc) に `exec awesome` を追加してください。

logind (または consolekit) セッションを維持する方法などについては xinitrc (日本語) を見て下さい。

ログインさえせずに awesome を起動させることも可能です。Start X at Login (日本語) を見て下さい。

### ログインマネージャで起動

ログインマネージャから awesome を起動するには、この記事を見て下さい。

#### KDM

root で作成:

    /usr/share/apps/kdm/sessions/awesome.desktop

    [Desktop Entry]
    Name=Awesome
    Comment=Tiling Window Manager
    Type=Application
    Exec=/usr/bin/awesome
    TryExec=/usr/bin/awesome

## 設定

Awesome にはすぐに使えるデフォルト設定がありますが、遅かれ早かれあなたは設定を変更したくなるでしょう。lua ベースの設定ファイルが `~/.config/awesome/rc.lua` にあります。

### 設定ファイルを作成

まず、以下を実行して次のステップで必要なディレクトリを作成します:

    $ mkdir -p ~/.config/awesome/

コンパイルした時はいつでも、awesome は ~/.config/awesome/rc.lua に含まれている全てのカスタム設定を使おうとします。デフォルトではこのファイルは作られないので、最初にテンプレートファイルからコピーしてくる必要があります:

    $ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/

awesome がアップデートされると設定ファイルのシンタックスはしばしば変更されます。よって、awesome に問題が起こったり、設定を変更しようとする時は、上のコマンドを繰り返すことを覚えておいて下さい。

awesome の設定について詳しくは、awesome wiki のコンフィグレーションページを見て下さい。

### 設定のサンプル

Note: awesome の設定構文は定期的に変わるので、ダウンロードしたファイルに修正を入れる必要があるかもしれません。

rc.lua のサンプルが以下にあります:

- http://git.sysphere.org/awesome-configs/tree/ - Adrian C の Awesome 3.4 設定集 (anrxc)
- http://pastebin.com/f6e4b064e - Darthlukan の awesome 3.4 設定
- http://www.ugolnik.info/downloads/awesome/rc.lua (screen) - 小さなタイトルバーとステータスバーが付いた Awesome 3
- https://github.com/setkeh/Awesome - Setkeh の 3.4 の設定
- https://github.com/setkeh/Awesome-Laptop-3.5 - Setkeh の 3.5 の設定
- ユーザによる設定ファイル http://awesome.naquadah.org/wiki/User_Configuration_Files

### Xephyr を使って rc.lua をデバッグする

デスクトップを壊さずに rc.lua をデバッグする好ましい方法です。まず rc.lua をコピーして新しいファイル、rc.lua.new を作り、そのファイルに必要な修正を加えます。それから awesome の新しいインスタンスを rc.lua.new を設定ファイルとして Xephyr 内で実行します (X の中で他の X クライアントウィンドウを動かす):

    $ Xephyr :1 -ac -br -noreset -screen 1152x720 &
    $ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

このアプローチの有利な点は、もし rc.lua.new を破壊したときでも、現在の awesome デスクトップを破壊しないということです（全ての X アプリがクラッシュし保存していないファイルが失われることがない）。設定に満足したら、rc.lua.new を rc.lua に変えて awesome を再起動します。

2011年7月現在、以上のことは awmtt でも可能です。

## テーマ

Beautiful という lua ライブラリを使うことで awesome にテーマを適用するのに外部ファイルを使うことができるようになります。`rc.lua` を修正せずに動的に awesome のカラーや壁紙を変更できるためとても便利です。

デフォルトのテーマは `/usr/share/awesome/themes/default` です。これを `~/.config/awesome/themes/default` にコピーして `rc.lua` の `theme_path` を変更してください。

    beautiful.init(awful.util.getdir("config") .. "/themes/default/theme.lua")

詳しい説明はこちら。

サンプルテーマ。

### 壁紙を設定する

This article or section is out of date.

Reason: バージョン 3.5 の Awesome では awsetbg コマンドは提供されていません、かわりに gears モジュールを使います。使い方はデフォルトの設定に書かれています。 (Discuss)

Beautiful が壁紙を管理できるので、`.xinitrc` や `.xsession` などのファイルで壁紙を設定する必要はありません。またテーマごとに特定の壁紙を使うようにすることもできます。デフォルトのテーマファイルには wallpaper_cmd キーがあり、`beautiful.init`("path_to_theme_file") が起動したときに与えられたコマンドが実行されます。Beautiful に壁紙について関わって欲しくない場合はコマンドを変えたりキーを削除してください。

例えば、`awsetbg` を使って壁紙を設定するには、`theme.lua` に選択したものを書きます:

    theme.wallpaper_cmd = { "awsetbg -f .config/awesome/themes/awesome-wallpaper.png" }

Note: awsetbg を動かすにはデスクトップの壁紙を管理するプログラムをインストールする必要があります。Feh など。

#### ランダム壁紙画像

ランダムに壁紙をローテーションするには、`wallpaper_cmd` を消去して、`.xinitrc` に以下のスクリプトを追加してください:

    while true;
    do
      awsetbg -r <path/to/the/directory/of/your/wallpapers>
      sleep 15m
    done &

## Tips & Tricks

他の awesome ユーザーに役に立つと思われるものを自由に追加してください。

### awesome を GNOME のウィンドウマネージャとして使う

GNOME には"すぐに使える"というアドバンテージがあります。awesome をビジュアルインターフェースとして使うために GNOME をセットアップすることもできますが、GNOME がバックグラウンドで動いているということはあなたのプレッシャーになるかもしれません。GNOME 3 を使っているならば、シンプルに awesome-gnome をインストールして、GDM でログインするときに "Awesome GNOME" セッションを選ぶということもできます。詳しくは awesome wiki を見て下さい。

### compiz のようなエフェクトを使う

Revelation でクライアントの見た目を変えることができます; クライアントを左クリックすれば、表示されているクライアントの最初のタグが表示されクライアントが浮かび上がりフォーカスします。さらに Enter キーで現在フォーカスされているクライアントが表示され、Escape でアボートします。

http://awesome.naquadah.org/wiki/Revelation

### awesome 3 で wibox を表示・隠す

Modkey-b でデフォルトステータスバーの表示を切り替えるようマップするには (awesome 2.3 でのデフォルト)、rc.lua の globalkeys に以下を追加してください:

    awful.key({ modkey }, "b", function ()
        mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
    end),

### printscreen を有効にする

awesome で PrtScr ボタンを有効にするにはスクリーンキャプチャプログラムが必要です。Arch リポジトリから簡単に使える Scrot がいいでしょう。

次を実行してください:

    # pacman -S scrot

必要な依存ライブラリもインストールしてください。

次に PrtScr のキーの名前を調べます、ほとんど場合 "Print" ですが確認するに越したことはありません。

次を実行してください:

    # xev

PrtScr ボタンを押すと、次のように出力されるはずです:

     KeyPress event ....
         root 0x25c, subw 0x0, ...
         state 0x0, keycode 107 (keysym 0xff61, Print), same_screen YES,
         ....

上の場合、キーの名前は Print です。

さあ awesome の設定をしましょう!

globalkeys がある場所に次の Lua コードを加えて下さい:

     awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),

また、上のコードでは ~/screenshots/ にスクリーンショットを保存します、あなたが保存したい場所に編集してください。

### 動的タグ

Eminent は小さな lua ライブラリで、wmii-スタイルの動的タグを簡単に使えるようにするためのモンキーパッチです。shifty とは違い、eminent は完全なタグシステムを提供することは目指しておらず、動的タグをできるだけシンプルに実装しています。実際、eminent ライブラリを使うのに、rc.lua を修正する必要は全くありません。eminent は自立して働きます。

Shifty は動的タグ機能の Awesome 3 拡張です。また、２つのシンプルな設定変数とキーバインドを設定するだけで、あなたをデスクトップのマスターたらしめる、設定に匹敵する素晴らしいクライアントを実装しています。

### スペースインベーダー

Space Invaders は Awesome Lua API の可能性を示すためのデモです。

3.4-rc1 リリースからの Awesome パッケージには含まれていません。

### Naughty ポップアップ通知

naughty についての awesome wiki ページを見て下さい。

### ポップアップメニュー

awesome3 ではデフォルトでシンプルなメニューがありますが、メニューをカスタマイズすることも簡単にできます。ただし、あなたが 2.x の awesome を使っている場合は、awful.menu を見て下さい。

freedesktop.org メニューが作りたいのなら、awesome-freedesktop を見て下さい。

サンプル:

    myawesomemenu = {
       { "lock", "xscreensaver-command -activate" },
       { "manual", terminal .. " -e man awesome" },
       { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
       { "restart", awesome.restart },
       { "quit", awesome.quit }
    }

    mycommons = {
       { "pidgin", "pidgin" },
       { "OpenOffice", "soffice-dev" },
       { "Graphic", "gimp" }
    }

    mymainmenu = awful.menu.new({ items = {
                                            { "terminal", terminal },
                                            { "icecat", "icecat" },
                                            { "Editor", "gvim" },
                                            { "File Manager", "pcmanfm" },
                                            { "VirtualBox", "VirtualBox" },
                                            { "Common App", mycommons, beautiful.awesome_icon },
                                            { "awesome", myawesomemenu, beautiful.awesome_icon }
                                           }
                                 })

### awesome のウィジェット

awesome において、ウィジェットとはウィジェットボックス (ステータスバーやタイトルバー) に追加することができるオブジェクトのことであり、システムに関する様々な情報を表示できます。ウィンドウマネージャから情報を読むのに便利です。ウィジェットは簡単に使うことが可能でありながら柔軟性があります。 -- ソース Awesome Wiki: Widgets.

Wicked と呼ばれる広く使われているウィジェットライブラリがあり、MPD ウィジェット、CPU 使用量、メモリ使用量などの多くのウィジェットを提供します。詳しくは Wicked page を見て下さい。

awesome v3.4 で Wicked の代わりになるものとしては Vicious, Obvious, Bashets などがあります。vicious を使うのなら、vicious documentation も見るといいでしょう。

### 透過

Awesome は xcompmgr (xcompmgr-git) や　compton(compton-git)、cairo-compmgr-git などのコンポジットマネージャを通して完全透過をサポートしています。git 版の xcompmgr を使いたいのなら、AUR にあります。

xcompmgr を使うには、次の一行を ~/.xinitrc に追加してください:

    xcompmgr &

オプションについては man xcompmgr や xcompmgr を見て下さい。

This article or section is out of date.

Reason: Awesome 3.5 は add_signal API を connect_signal に変更しています。 (Discuss)

awesome 3.4 では、ウィンドウ透過はシグナルを使って動的に設定することもできます。例えば、あなたの rc.lua に以下を加えることができます:

    client.add_signal("focus", function(c)
                                  c.border_color = beautiful.border_focus
                                  c.opacity = 1
                               end)
    client.add_signal("unfocus", function(c)
                                    c.border_color = beautiful.border_normal
                                    c.opacity = 0.7
                                 end)

add_signal のエラーが出た場合は、代わりに connect_signal を使って下さい。

conky を使っていて、デスクトップの代わりに conky にウィンドウを持たせたい場合、~/.conkyrc を次のように編集してください:

    own_window yes
    own_window_transparent yes
    own_window_type desktop

Otherwise strange behavior may be observed, such as all windows becoming fully transparent. Note also that since conky will be creating a transparent window on your desktop, any actions defined in awesome's rc.lua for the desktop will not work where conky is.

Awesome 3.1 現在、wiboxes 用に擬似透過がビルドインされています。これを有効にするには、テーマファイルに (~/.config/awesome/themes/default, /usr/share/awesome/themes/default のコピー) 次のように色の部分に16進数の値を2つ加えて下さい:

    bg_normal = #000000AA

"AA" が透明度になります。

Modkey + PageUp/PageDown によって選択されたウィンドウの透明度を変更するために、community パッケージリポジトリにある tansset-df を使って、以下のように rc.lua を修正することもできます:

    globalkeys = awful.util.table.join(
        -- your keybindings
        [...]
        awful.key({ modkey }, "Next", function (c)
            awful.util.spawn("transset-df --actual --inc 0.1")
        end),
        awful.key({ modkey }, "Prior", function (c)
            awful.util.spawn("transset-df --actual --dec 0.1")
        end),
        -- Your other key bindings
        [...]
    )

#### ImageMagick

imagemagick の display コマンドで壁紙を設定すると問題が起こるかもしれません、xcompmgr との互換性に問題があるためです。awsetbg に display を使うのは他のオプションを設定していないときだけにしましょう。habak, feh, hsetroot などの代わりのプログラムをインストールしてください (grep -A 1 wpsetters /usr/bin/awsetbg で他のオプションが見れます)。

### Autorun プログラム

Awesome wiki の Autostart ページも見て下さい。

GNOME や KDE とは異なり、awesome は Freedesktop の仕様による autostart にセットされたプログラムを起動しません。しかし、awesome にはプログラムを起動するための機能が (Lua の標準ライブラリの関数である `os.execute` に加えて) 少しばかりあります。GNOME や KDE のようにスタートアップで同じプログラムを起動するには、AUR から dex をインストールして rc.lua から dex を実行してください:

    os.execute"dex -a -e Awesome"

スタートアップ時に awesome が起動するアプリケーションのリストをセットアップすることもできます。全てのコマンドの表を作成して、spawn をループで回します:

    do
      local cmds =
      {
        "swiftfox",
        "mutt",
        "consonance",
        "linux-fetion",
        "weechat-curses",
        --and so on...
      }

      for _,i in pairs(cmds) do
        awful.util.spawn(i)
      end
    end

(`os.execute` コマンドに '`&`' を付けて実行呼び出しをすることもできますが、ちゃんとした spawn 関数を使ったほうがおそらくベターでしょう。)

実行していないプログラムだけを走らせるには、`pgrep` で実行中のプロセスに同じ名前がない見つからないときだけプログラムを走らせるシェルコマンドと spawn を使いましょう:

    function run_once(prg)
      awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")
    end

例えば、`parcellite` プロセスが実行中でないときだけ `parcellite` を実行するには:

    run_once("parcellite")

### テキストを awesome-client を使ってウィジェットに渡す

簡単に awesome ウィジェットにテキストを送ることができます。次のように新しいウィジェットを作ります:

     mywidget = widget({ type = "textbox", name = "mywidget" })
     mywidget.text = "initial text"

外部ソースからテキストをアップデートするには、awesome-client を使います:

     echo -e 'mywidget.text = "new text"' | awesome-client

ウィジェットを wibox に追加するのを忘れないで下さい。

### awesome のデフォルトと違うパネルを使う

あなたが awesome の軽量性と機能性を買ってはいるがそのデフォルトのパネルの見た目が気に入らないときは、異なるパネルをインストールできます。xfce4-panel をインストールするには:

    sudo pacman -S xfce4-panel

勿論、他のパネルも同じようにインストールできます。そして rc.lua の autorun セクションに追加してください（方法は割愛）。画面ごとに wibox を作成しているセクション ("mywibox[s] = awful.wibox({ position = "top", screen = s })" から始まっているところ) をコメントアウトすることもできますが、特にその必要はありません。ただし次を実行して rc.lua にエラーがないかチェックすることは忘れずに:

    awesome -k rc.lua

また、ビルトインでないアプリケーションランチャー、Xfrun4 や bashrun などを起動するために、"modkey+R" キーバインドを変えておくべきでしょう。Openbox のページのアプリケーションランチャーのところに例が載っています。rc.lua に以下を追加するのを忘れないで下さい:

          properties = { floating = true } },
        { rule = { instance = "$yourapplicationlauncher" },

### Java の修正 (GUI がグレーになる)

[1] からの手順。

1. community から wmname をインストール
2. 以下のコマンドを実行、もしくは `.xinitrc` に追加する:

       wmname LG3D

Note:

If you use a non-reparenting window manager and Java 6, you should uncomment the corresponding line in `/etc/profile.d/openjdk6.sh`

If you use a non-reparenting window manager and Java 7, you should uncomment the corresponding line in `/etc/profile.d/jre.sh`

### Nautilus をデスクトップに表示しないようにする (Gnome3)

dconf-editor を起動してください。org->gnome->desktop->background と辿り "draw-background" と "show-desktop-icons" のチェックを外して下さい。以上です！

他にも /usr/bin/nautilus を新しいロケーションに移動して 'nautilus --no-desktop' を実行するスクリプトで置き換えるという方法もあります。

    #!/bin/sh
    /usr/bin/nautilus-real --no-desktop $@

### Gnome3 からの移行

'gnome-session-properties' を起動しプログラム (例: Bluetooth Manager, Login Sounds, etc) を削除する以外に必要なことはありません。

If you'd like to get rid of GDM, make sure that your rc.conf DAEMONS list includes "dbus" (and "cupsd" if you have a printer). It's advisable to get a different login manager (like SLiM), but you can do things manually if you wish. That entails setting up your .xinitrc properly and installing something like devmon (AUR).

便利なシステムトレイアップレットや GTK テーマを残しておきたいのなら、rc.lua に以下を追加してください:

    function start_daemon(dae)
    	daeCheck = os.execute("ps -eF | grep -v grep | grep -w " .. dae)
    	if (daeCheck ~= 0) then
    		os.execute(dae .. " &")
    	end
    end

    procs = {"gnome-settings-daemon", "nm-applet", "kupfer", "gnome-sound-applet", "gnome-power-manager"}
    for k = 1, #procs do
    	start_daemon(procs[k])
    end

### マウススクロールがタグを変えるのを防ぐ

rc.lua の Mouse Bindings セクションを次のように変更してください:

    -- {{{ Mouse bindings
    root.buttons(awful.util.table.join(
        awful.button({ }, 3, function () mymainmenu:toggle() end)))
    -- }}}

## トラブルシューティング

### LibreOffice

libreoffice の UI に問題がでる場合は libreoffice-gnome をインストールしてください。

### Mod4 キー

デフォルトで Mod4 は Win キー です。何らかの理由でデフォルトでマップされていない場合、Mod4 キーのキーコードをチェックするには:

    $ xev

左の Win キーは 115 のはずです。以下を ~/.xinitrc に追加してください

    xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
    exec awesome

ここでの問題は xorg インストールによってキーコード 115 が、間違って 'Select' キーとして認識されていることです。上記のコマンドはキーコード 115 を正しい 'Super_L' キーにマップし直します。

#### Mod4 キー vs. IBM ThinkPad

IBM ThinkPad には Windows キーがありません (Lenovo は ThinkPad のこの伝統を変えたみたいですが)。これを書いている時点で、デフォルトの rc.lua では Alt キーはコマンドのコンビネーションとしては使われていません、したがって Alt キーを Super/Mod4/Win キーの代わりとして使うことができます。これをするには、rc.lua を編集して:

    modkey = "Mod4"

を次のように変えて下さい:

    modkey = "Mod1"

Note: Awesome には Mod4 とシングルレターを使うコマンドが少しだけあります。Mod4 を Mod1/Alt に変えるとキーコンビネーションが重複してしまうかもしれません。そうならないように rc.lua ファイルを修正する必要があるかもしれません。

awesome の標準を変えたくないならば、キーをリマップをするという方法もあります。例えば、caps lock キーをあまり使わないなら、以下を ~/.Xmodmap に加えます

    clear lock
    add mod4 = Caps_Lock

そしてこのファイルを (リ)ロードしてください。 これで caps lock キーが mod4 キーになり、標準の awesome 設定でもうまく動くでしょう。さらに、他の X プログラムでも同じように mod4 キーが使えるはずです。

未確認ですが、最近の xorg のパッケージのアップデートで二行目のマッピングが破壊されるときは以下のように置き換えることができます (レフト Super キーのない DasKeyboard で検証):

    keysym Caps_Lock = Super_L Caps_Lock

### Eclipse: メインウィンドウをリサイズ・移動できない

(mod4 + 右・左クリックを使って)メインウィンドウが移動・リサイズできない場合、workbench.xml を編集して fullscreen/maximized を false に設定し、幅と高さの数字をデスクトップ画面の大きさよりも小さくしてください。

Note: workbench.xml は <eclipse_workspace>/.metadata/.plugins/org.eclipse.ui.workbench/ にあり、編集する行は <window height="xx" maximized="true" width="xx" x="xx" y="xx"> です。

### YouTube: フルスクリーンが裏に表示される

[2] フルスクリーンモードにするとビデオがウェブブラウザの下に表示される場合、rc.lua に以下を追加してください

       { rule = { instance = "plugin-container" },
         properties = { floating = true } },

Chromium には

       { rule = { instance = "exe" },
         properties = { floating = true } },

### コンソールクライアントを起動する

GTK ターミナル (例: LXTerminal) から呼び出されたコンソールアプリケーションは動作しません。URxvt は動作します。

### コンソール出力をファイルに書き出す

端末から GUI アプリケーションを起動すると、アプリケーションによっては端末に大変多くのデータを表示することがあります。結果として、Awesome から起動すると、全てを Awesome が起動している TTY に出力することになり、端末が汚くなることが多々あります。こういったゴミ・アウトプットを削除するには、リダイレクトさせなくてはなりません。しかし、公式 FAQ で書かれているように `awful.util.spawn` はパイプとリダイレクトをあまりうまく扱えません。

例として、Luakit の出力をテンポラリファイルにリダイレクトしてみましょう:

    awful.key({ modkey, }, "w", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end),

## 外部リンク

- http://awesome.naquadah.org/wiki/FAQ - FAQ
- http://www.lua.org/pil/ - Programming in Lua (first edition)
- http://awesome.naquadah.org/ - The official awesome website
- http://awesome.naquadah.org/wiki/Main_Page - the awesome wiki
- http://www.penguinsightings.org/desktop/awesome/ - A review
- http://compsoc.tardis.ed.ac.uk/wiki/AwesomeWM_guide - Awesome guide
- https://bbs.archlinux.org/viewtopic.php?id=88926 - share your awesome!

Categories:

- Dynamic WMs (日本語)
- Tiling WMs (日本語)