Qtile (日本語)

From ArchWiki
Revision as of 17:26, 14 February 2013 by Kakakaya (Talk | contribs)

Jump to: navigation, search

From Qtile web site:

Qtile はすべての機能を備え、ハックしやすい、Pythonで書かれたタイル型ウィンドウマネージャです。Qtileはシンプルで、小さく、そして拡張性があります。ユーザ自身のレイアウト、ウィジェット、そしてビルトインコマンドを簡単に書くことができます。Pythonで全ての設定が出来るため、すべての力を柔軟にあなたのために発揮することができます。

インストール

qtile-gitAURArch User Repositoryからインストールします。

デフォルトの設定ファイルはgitリポジトリで提供されています。以下のようにして~/.config/qtile/config.pyにコピーしてください:

$ mkdir -p ~/.config/qtile/
$ wget https://raw.github.com/qtile/qtile/master/libqtile/resources/default_config.py -O - > ~/.config/qtile/config.py

Qtileの開始

Qtileを開始するにはexec qtile~/.xinitrcに追加し、Xorgを起動します。デフォルト設定ではTemplate:Keypress押下でxtermターミナルを起動します。

設定

Note: この章ではQtileの基本的な設定のみ紹介しています。より完全な情報については公式ドキュメントを御覧ください。

設定はすべてPythonにより、~/.config/qtile/config.pyで行われます。極めて簡単なPythonの解説はこのチュートリアルを参照してください。Pythonの変数、関数、モジュール及びQtileの設定をすぐに始めるために必要なことが解説されています。

Qtileを再起動するまえに設定ファイルにエラーが無いか次のコマンドで確認することができます:

$ python2 -m py_compile ~/.config/qtile/config.py

このコマンドが出力を行わない場合、設定ファイルが正しく記述されていることを表します。

Groups

Qtileでは、workspace(あるいはviews)はGroupsと呼称されます。以下のように設定します:

from libqtile.config import Group, Match
...
groups = [
    Group("term"),
    Group("irc"),
    Group("web", match=Match(title=["Firefox"])),
   ]
...

Keys

ショートカットキーをKeyクラスで記述できます。 これはTemplate:Keypressでウィンドウマネージャを終了するための設定例です。

from libqtile.config import Key
from libqtile.command import lazy
...
keys = [
    Key(
        ["mod1", "shift"], "q",
        lazy.shutdow())
   ]
...

You can find out which modX corresponds to which key with the command Xmodmap.

ScreensとBars

接続されているモニタそれぞれに対してScreenクラスを作成してください。QtileのbarはScreenクラスで以下の例のように設定することができます:

from libqtile.config import Screen
from libqtile import bar, widget
...
screens = [
    Screen(
        bottom=bar.Bar([          # add a bar to the bottom of the screen
            widget.GroupBox(),    # display the current Group
            widget.WindowName()   # display the name of the window that currently has focus
            ], 30))
   ]
...

Widgets

公式ドキュメントですべてのビルトインウィジェットを確認することができます。

もしbarにウィジェットを追加したい場合、単にそのウィジェットを以下のようにWindowNameに記述することで出来ます。例えば、バッテリー通知を行いたい場合、Batteryウィジェットを使うことができます:

from libqtile.config import Screen
from libqtile import bar, widget
...
screens = [
    Screen(top=bar.Bar([
        widget.GroupBox(),    # display the current Group
        widget.Battery()      # display the battery state
       ], 30))
   ]
...

Startup

アプリケーションをhooksで起動することで出来ます。具体的にはstartuphookを使います。利用可能なhooksのリストはこちらを御覧ください。

これはアプリケーションを一度だけ実行する例です:

import subprocess, re

def is_running(process):
    s = subprocess.Popen(["ps", "axw"], stdout=subprocess.PIPE)
    for x in s.stdout:
        if re.search(process, x):
            return True
    return False

def execute_once(process):
    if not is_running(process):
        return subprocess.Popen(process.split())

# start the applications at Qtile startup
@hook.subscribe.startup
def startup():
    execute_once("parcellite")
    execute_once("nm-applet")
    execute_once("dropboxd")
    execute_once("feh --bg-scale ~/Pictures/wallpapers.jpg")

Sound

音量と状態を簡単に操作するためのショートカットをaudioグループにユーザを追加してalsamixerのコマンドラインインタフェースを使うことで出来ます。

keys= [
    ...
    # Sound
    Key([], "XF86AudioMute", lazy.spawn("amixer -q set Master toggle")),
    Key([], "XF86AudioLowerVolume", lazy.spawn("amixer -c 0 sset Master 1- unmute")),
    Key([], "XF86AudioRaiseVolume", lazy.spawn("amixer -c 0 sset Master 1+ unmute"))
   ]

Debugging

もしソースの中の問題箇所を発見したい場合、以下の行をターミナルで実行してください:

echo "exec qtile" > /tmp/.start_qtile ; xinit /tmp/.start_qtile -- :2

See Also