Qtile (日本語) - ArchWiki

# Qtile (日本語)

関連記事

- タイル型ウィンドウマネージャの比較
- ウィンドウマネージャ

Qtile のウェブサイト より:

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

## インストール

qtile, qtile-git, qtile-git のどれかを Arch User Repository からインストールします。

## Qtile の開始

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

## 設定

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

Configuration Lookup で説明されているように、Qtile ではユーザーが定義した設定ファイルがないときに使われるデフォルトの設定ファイルがあります。Qtile のカスタマイズを始めるときは、デフォルトの設定ファイルを `~/.config/qtile/config.py` にコピーしてください:

    $ mkdir -p ~/.config/qtile/
    $ cp /usr/share/doc/qtile_dir/default_config.py ~/.config/qtile/config.py

`qtile_dir` はインストールした　AUR パッケージの名前に置き換えてください。

もしくは、最新のデフォルト設定ファイルを git リポジトリの libqtile/resources/default_config.py からダウンロードすることもできます。

設定はすべて 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 クラスで記述できます。 これは `Alt+Shift+q` でウィンドウマネージャを終了するための設定例です。

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

Xmodmap コマンドを使うことで `modX` がどのキーと対応しているか調べることができます。

### 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 で起動することで出来ます。具体的には `startup` hook を使います。利用可能な 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"))
       ]

## デバッグ

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

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

## 参照

- Qtile ウェブサイト
- 公式ドキュメント

Category:

- Tiling WMs (日本語)