wmii

提供: ArchWiki
移動先: 案内検索

関連記事

wmii (window manager improved 2) は X11 用の動的ウィンドウマネージャです。古典的・動的なウィンドウ管理をサポートしており、キーボードとマウス、ファイルシステムによる遠隔操作ができます。これまでにないタグ付けによってワークスペースのパラダイムを置き換えます。

以下のヒントは初めて wmii を触るユーザーを対象にしています。wmii はあらゆる言語で設定することが可能ですが、この記事ではシンプルなシェルスクリプトである、wmiirc 設定ファイルを主として使用します。Ruby で wmii を設定する方法は ruby-wmii の記事を見て下さい。

wmii は活発に開発されている状態ではなく、バグが多少あるので注意してください。

インストール

wmii パッケージをインストールしてください。また、最新の開発版は wmii-hgAUR[リンク切れ: アーカイブ: aur-mirror] をインストールしてください。

ソースは プロジェクトの Google Code ページ にあり GitHub でミラーされています。

wmii の起動

使用しているディスプレイマネージャのメニューから wmii を選択してください。

もしくは、startx で wmii を起動する場合、~/.xinitrc ファイルを編集して以下を追加してください:

~/.xinitrc
exec wmii

ログオフしたり X セッションを終了しないでも wmii を起動できるようにするには、以下を ~/.xinitrc に追加:

~/.xinitrc
until wmii; do
  true
done

最初のログイン時に、wmii のウェルカムメッセージが表示されます。wmii の簡単なチュートリアルも含まれています。チュートリアルを完了することで wmii の仕組みが理解できるようになるはずです。

ヒント: ウェルカムメッセージが表示されない場合、xorg-xmessage をインストールしてください。そして $MODKEY-a を押して 'welcome' を選択することでウェルカムメッセージを読むことができます。

設定

wmii の設定を始めるのに一番簡単な方法は、デフォルトの wmiirc ファイルをホームディレクトリにコピーして、必要に応じて変更を加えることです。バージョン 3.9 の場合:

$ mkdir ~/.wmii
$ cp /etc/wmii/wmiirc ~/.wmii/

もしくは、フォントや色などの基本的なカスタマイズだけを行う場合 ~/.wmii/wmiirc_local を作成してください。

古いバージョンの場合:

$ mkdir ~/.wmii/wmii-$VERSION
$ cp /etc/wmii/wmiirc ~/.wmii/wmii-$VERSION/

wmiirc ファイルを編集することで、色や背景、modkey などを変更することが可能です。wmiirc はタブによるインデントを使っているので、あなたの使っているエディタが空白を使うようになっている場合は注意してください。タブと空白のインデントを混ぜると予期しない挙動を起こす可能性があります。

設定変数

# Configuration Variables
MODKEY=Mod1
UP=k
DOWN=j
LEFT=h
RIGHT=l

Alt の代わりに Windows キーを使いたい場合 Mod1 を Mod4 に変えてください。h, j, k, l なども自由に変更できます。

ウィンドウの色

# Colors tuples: "<text> <background> <border>"
WMII_NORMCOLORS='#ffffff #000000 #ffffff'
WMII_FOCUSCOLORS='#ffffff #5c0000 #ffffff'
WMII_BACKGROUND='#333333'
WMII_FONT='fixed'

選択されていないウィンドウの色は NORMCOLORS 変数です。選択されたウィンドウの色は FOCUSCOLOR 変数です。(透過ターミナルを使っている場合) WMII_BACKGROUND 変数で背景色を変更できます。

使用方法

タイル型ウィンドウマネージャに慣れていない場合、使い始めるのは簡単ではありません。プログラムを起動したりウィンドウを配置・リサイズする基本的なホットキーを学ぶ必要があります。基本的なホットキーは紙に書きだして脳に叩き込まれるまでモニターに貼っておくと良いでしょう。デフォルトでは、"Mod" キーは Alt になっています。デフォルトのホットキー:

  • Mod+Enter -> ターミナル
  • Mod+p -> wimenu : メニューが表示されるので、開きたいアプリケーションの名前を入力します。
  • Mod+d -> デフォルトレイアウト : 画面上にウィンドウを等分割
  • Mod+s -> スタックレイアウト : 選択されているウィンドウを画面全体に表示。他のウィンドウはタイトルバーだけが表示されます。
  • Mod+j -> 下のウィンドウを選択
  • Mod+k -> 上のウィンドウを選択
  • Shift+Mod+j -> ウィンドウを下に移動
  • Shift+Mod+k -> ウィンドウを上に移動
  • Mod+a -> Actions メニュー : "quit" を選択すると終了

よく使用するプログラムでは history.progs や Mod+p と上下方向キーを使うことで前のエントリを選択できます。

デフォルトでは、デスクトップで使用されるカラムは一つだけ (画面全体) になっています。h と l で複数のカラムを使うことができます:

  • Mod+Shift+h : 選択したウィンドウを左に移動
  • Mod+Shift+l : 選択したウィンドウを右に移動
  • Mod+h : 左のカラムを選択
  • Mod+l : 右のカラムを選択

カラムはウィンドウを配置すると自動的に作成されます。カラムの隙間をクリックすることで、カラムは大きくしたり小さくできます。

レイアウト

始めは "default" レイアウトになっています: 全てのウィンドウが等分の領域を占めます。ウィンドウのタイトルバーにある小さい四角をクリックすることで大きくしたり小さくできます。

  • "default" レイアウト (Mod+d) : 全てのウィンドウのサイズが同じ。
  • "stacked" レイアウト (Mod+s) : 選択されたウィンドウがカラム全体を覆います。ただし他のウィンドウもタイトルバーだけは表示されます。
  • "maximum" レイアウト (Mod+m) : 選択されたウィンドウがカラム全体を覆います。他のウィンドウは表示されません。
  • "fullscreen" レイアウト (Mod+f) : 選択されたウィンドウがフルスクリーンで表示されます。

フローティングレイアウト

古典的なウィンドウマネージャと同じようにウィンドウを配置することもできます。フローティングレイアウトと呼ばれます。Gimp や mplayer、vlc などのアプリケーションで有用です。

  • Mod+Shift+Space : 選択したウィンドウをフローティングレイアウトに移動。
  • Mod+Space : フローティングレイアウトと通常レイアウトを切り替える。

フローティングレイアウトでは、Mod+j と Mod+k でウィンドウを選択できます。他のウィンドウマネージャと同じように、ウィンドウをドラッグすることで変形できます。また、ホットキーを使うこともできます:

  • Mod+左クリック : ウィンドウを移動
  • Mod+右クリック : ウィンドウを変形 (他のレイアウトでも使えます)

ビューとタグ

wmii におけるタグ付けは、他のウィンドウマネージャにおける仮想デスクトップの概念とよく似ています。ただし、同時に複数の方法でウィンドウを簡単にグループ化できるという点で、タグの方が少しだけ強力です。WMII では各ウィンドウに複数のタグを簡単に付けられます。特定のユースケースにあわせてアプリケーションをまとめて簡単に切り替えることが可能で、他の"デスクトップ"にアプリケーションを送るために前の環境を破壊する必要はありません。

デフォルトで、wmii を初めて起動したとき、左下部に 'nil' という単語が確認できるはずです。これは 'nil' ビューにいることを意味しています。最初に起動したアプリケーション (ターミナルなど: Mod+Enter) は自動的に "1" のタグが付けられて、ビュー "1" に自動的に切り替わります。ビューはキーバインドを使うことで変更できます:

  • Mod+Shift+2 : 選択したウィンドウをビュー "2" にタグ付け
  • Mod+2 : ビュー "2" に切り替える。"2" のタグが付けられたウィンドウが全て表示されます

0 から 9 までの全ての数字で同じ操作ができます。また、名前を使うことも可能です:

  • Mod+t : メニュー表示 : 左右キーでタグを選択したり、タグの名前を入力することができます (もしくはタグを既に作成している場合、名前の一部)。
  • Mod+Shift+t : メニューに入力したタグを現在選択されているウィンドウに付加します。
  • plan9port を使用している場合、history.tags ファイルが .wmii-*/ に生成されます。上下方向キーを使って前のエントリを再実行してタグを付加したりウィンドウを表示することができます。

タグの名前に '+' を挟むことでウィンドウを複数のビューにタグ付けできます:

  • Mod+Shift+t foo+bar+2 : 現在選択されているウィンドウを "foo", "bar", "2" ビューにタグ付けします。

ウィンドウに複数のタグが付いている場合、削除したいタグを選択して Mod+Shift+t と -タグの名前/数字でタグを削除することができます。例えば Urxvt にビュー 1, 2, 3, 4 の複数のタグが付けられている場合 3 に移動してから exit と入力すると urxvt の全てのインスタンスが終了します。Mod+Shift+t と -3 を使うと 3 のビューだけが削除されます。

wmiirc 設定ファイルで特定のアプリケーションのタグを設定することができます:

# Tagging Rules
wmiir write /tagrules <<!
/Firefox.*/ -> ~+2
/Gimp.*/ -> ~+3
/.*/ -> sel
/.*/ -> 1
!

上記のタグルールの場合、Firefox ではビュー "2" でフローティングモード (~) で起動します。Gimp はビュー "3" でフローティングモードで起動します。

ノート: 自動的にタグを割り当てるにはアプリケーションが X ウィンドウを生成する必要があります。そのため、ターミナルベースのプログラムを起動する時にこの機能を使いたいときは urxvt -e <program> などとしなければなりません。

WMII ファイルシステム

WMII のファイルシステムは 9P プロトコル が元になっています。全てのエレメント (ウィンドウ, ステータスバー, ...) をファイルとして扱うことができます。これによって素晴らしいことがいくつか可能です。例えば、(MPD や MPC などで) 現在聞いている曲をステータスバーに表示することができます。

ノート: ファイルシステムは永続しないため、再起動したら全て設定し直す必要があります。変更を"永続化"させたいときは適当なコマンドを wmiirc に書き出して下さい。

wmiir コマンドでファイルシステムにアクセスすることができます。例えば、wmiir ls / でルートディレクトリを確認できます:

client/
colrules
ctl
event
keys
lbar/
rbar/
tag/
tagrules

wmiir read でファイルの中身を確認できます: wmiir read /tag/sel/index

# ~ 1280 785
~ 0x160000d 731 394 486 332 xterm:XTerm:~
# 1 0 1280
1 0x800003 0 785 opera:Opera:Editing Wmii - Preview - ArchWiki - Opera

上記は選択されている (selected) タグの情報です。フローティングしている xterm と Opera がこのタグで動作しているのが確認できます。出力の最初の数字はウィンドウのカラムを示しています。~ はフローティングカラムで 1 は (当然) 最初のカラムです。2番目の値はクライアントの XServer-ID です。次の値はウィンドウの座標とサイズです。そして最後にウィンドウのタイトルバーが出力されます。

wmiir create で新しいファイルを作成できます:

echo Arch is best | wmiir create /rbar/arch

上記のコマンドを実行することでステータスバーに "Arch is best" が表示されます。

"wmiir create" は標準入力から読み込みを行います。ステータスバーに流したいあらゆる情報をパイプできます。"wmiir write" も同じように機能しますが新しいファイルは作成しません。

ノート: /rbar と /lbar について: ステータスバーのエレメントはアルファベット順です。

rm や remove でファイルを削除できます。

あるプログラムに複数のタグを指定したい場合:

$ echo "3+5+8" | wmiir write /client/0x800003/tags

上記を実行することで Opera ウィンドウに 3, 5, 8 のタグが付けられます。

ただし、もっと簡単な方法もあります。クライアントを選択してから MOD+shift+t を押して "3+5+8" と入力しても同じ結果が得られます。

ノート: WMII のファイルシステムをマウントするということも可能です。公式ドキュメント を見て下さい。

ヒントとテクニック

ノートパソコンのステータスバー

ノートパソコンで wmii を使用する場合、無線の品質やバッテリー残量、ロードアベレージなどのアイテムをステータスバーに表示すると便利です。以下のスクリプトを使うには acpigawkインストールする必要があります。

# Status Bar Info
status() {
    echo -n ' Wlan0:' $(iwconfig wlan0 | awk '/Quality/{print $2}' | sed 's/.*=//' | awk -F"/" '{printf("%.0f%%", $1/$2*100)}') '| Bat:' $(acpi -b | sed -n 's/.*\([0-9][0-9]:[0-9][0-9]\):[0-9][0-9].*/\1/p') '|' $(uptime | sed 's/.*: //; s/,//g') '|' $(date '+%c')
}

デフォルトでは、ステータスバーは日付と稼働時間のページャしか表示しません (1, 5, 15分間のシステムのロードアベレージを表示)。

Conky を置き換えるステータスバー

上記の status() 関数と同じようにして、システムモニタの conky を wmii のステータスバーを使って置き換えることも不可能ではありません。以下は CPU と GPU の温度、CPU の速度、/home/ パーティションの容量、RAM の使用量、システムのロードアベレージと日付・時間などを表示する例です:

# Status Bar Info
status() {
    echo -n 'CPUTemp:' `expr $(sensors | grep temp1 | awk '{print $2}' | cut -c2-3) + 15` '|' 'GPUTemp:' $(nvidia-settings -q=GPUCoreTemp | grep eagle | awk '{print $4}' | cut -c1-2 ) '|' 'CPUMHz:' $(cat /proc/cpuinfo | grep MHz | awk '{printf "%.0f\n", $4}') '|' '/home:' $(df -h | grep sda5 | awk '{print $3}') '|' '/:' $(df -h | grep sda1 | awk '{print $3}') '|' 'RAM:' $(free -m | grep -i /cache | awk '{print $3}') 'MB |' $(uptime | sed 's/.*://; s/,//g') '|' $(date +"%a %b %d %H:%M")
}

grep, awk, sed, cut などの GNU ツールと Linux の一般的なシステムコマンドや /proc ファイルシステムから得られる情報を使うことで情報満載の wmii ステータスバーを作成することが可能です。上記のコードは筆者のコンピュータにあわせており、使用する場合は適当に編集する必要があります。

ターミナルのタイトル

ターミナルエミュレータのタイトルバーにカレントディレクトリを表示したい場合、.bashrc に以下を追加:

WMII_IS_RUNNING=`ps a | grep wmii | awk '/[^"grep"] wmii$/'`
if [ -n "$WMII_IS_RUNNING" ]; then
  PROMPT_COMMAND='dirs | wmiir write /client/sel/label'
fi

上記を設定することでシェルのプロンプトを短くして、入力するのための領域を増やすことができます。コンソールを生成したときに "WMII_ADRESS not set" エラーを得ることはできなくなります。

Weechat のハイライト通知

weechat を使用する際に、weechat のウィンドウをずっと見なくてもいいように、メッセージが来た時にそれを通知して欲しい場合、launcher.pl スクリプトを使うことでバーに通知を送信できます。このスクリプトを動作させるには、通知を送信するスクリプトを作成する必要があります。シンプルなスクリプトの例:

#!/bin/bash
echo :: NEW MESSAGE :: | wmiir create /lbar/alert
sleep 8
wmiir remove /lbar/alert

それから weechat を起動してスクリプトをロード:

/perl load launcher.pl

そして weechat に以下のコマンドを入力:

/set plugins.var.perl.launcher.signal.weechat_pv = "/path/to/yourscript"

weechat バッファに "/rbar/alert File not Found" エラーが表示されてレイアウトが崩れてしまう場合、以下で修正することができます:

/set plugins.var.perl.launcher.signal.weechat_pv = "/path/to/yourscript >/dev/null 2>&"

これで、ハイライトされたメッセージが来た場合、バーの左側に :: NEW MESSAGE :: が表示されます。launcher.pl は perl/autoload ディレクトリに配置して weechat が起動したときに実行されるようにしてください。

旧式の Thinkpad の Mod4

Wmii ではデフォルトで Mod1 を使うようになっていますが、Mod4 を使うことでターミナルアプリケーションとのキーバインドの衝突を減らすことができます。しかしながら旧式の Thinkpad には Mod4 キーがありません。xmodmap を使って他のキーを割り当てる必要があります。ホームディレクトリに .Xmodmap ファイルを作成して以下を追加してください:

keycode 64 = Super_L
add Mod4 = Super_L
remove Mod1 = Super_L

64 は xev で確認できる (置き換えたい) キーのキーコードに置き換えて下さい。上記の例では、左 Alt を置き換えています (そして右 alt をアプリケーションで使用)。

フォントの改善

Wmii は Xft をサポートしているため、フォントの名前に 'xft' を付けて下さい。例:

export WMII_FONT='xft:Sans-9'

キーボードレイアウト

ウィンドウごとにキーボードレイアウトを変えたいという場合もあるかもしれません。しかしながら、そのようなアプリケーションでは基本的にシステムトレイが必要で、今のところ wmii-hgAUR[リンク切れ: アーカイブ: aur-mirror] で witray が使えるだけです。xxkb パッケージで問題を解決できます。xxkb に UI はないため、xorg.conf でレイアウトを設定するしかありません。/etc/X11/xorg.conf.d/20-keyboard.conf を作成して以下のように記述してください:

Section "InputClass"
    Identifier      "Keyboard Defaults"
    MatchIsKeyboard "yes"
    Option          "XkbModel"      "pc101"
    Option          "XkbLayout"     "us,ru"
    Option          "XkbOptions"    "grp:ctrl_shift_toggle,compose:prsc"
EndSection

layout, options, model は適当に置き換えて下さい。wmiirc に以下を追加すれば動作します:

xxkb &

xkblayout-stateAUR を使うことでステータス行にレイアウトのインジケータを表示することができます:

status() {
    echo -n label $(xkblayout-state print "%s") '|' $(date +"%a %b %d %H:%M")
}

参照

  • wmii Website -- wmii の公式ウェブサイト
  • dmenu -- dwm や wmii で上手く動作するシンプルなアプリケーションランチャー
  • user guide -- 最新の wmii ガイド (pdf)
  • wmii のスレッド
  • wmii カラーテーマ
  • ruby-wmii -- wmii 3.1 の Ruby 設定とスクリプト
  • sunaku's wmiirc -- wmii 3.9+ と wmii-hg の Ruby 設定とスクリプト
  • Ben's wmiirc -- ガジェット (vol, mpd, mail, clock) など修正を施したシンプルな wmiirc
  • メーリングリストは dev@suckless.org です。公式ウェブサイトを参照。
  • IRC チャンネルは OFTC IRC ネットワークの #wmii です。