- 1. 概要
- 2. 定義ファイル
- 3. キー定義
- 4. ウィンドウ動作
- 5. フローティングウィンドウ
- 6. 自動起動
- 7. 備考
1. 概要
プラットフォームによって、定義ファイルの置き方、内容に違いがあります。
2. 定義ファイル
プラットフォーム | システムオリジナル | ユーザ用 | 備考 |
ArcoLinux | /etc/skel/.config/qtile/config.py | ~/.config/qtile/config.py | |
Garuda Linux | ※1 |
FreeBSD | /usr/local/lib/python3.7/site-packages/libqtile/resources/default_config.py | ~/.config/qtile/config.py | |
「FreeBSD」のシステムオリジナルは、「python」のバージョンが異なれば、当然、「python3.7」の部分が変わってきます。
また、ユーザ用は、インストールでは展開されませんので、ログインユーザで下記のコマンドを使ってコピーする必要があります。
cp /usr/local/lib/python3.7/site-packages/libqtile/resources/default_config.py ~/.config/qtile/config.py
「ArcoLinux」の「/etc/skel/.config/qtile」には、他にもファイルが存在し
/etc/skel/.config/qtile/
|-- arcobattery.py
|-- config-old.py
|-- config.py
|-- icons
| `-- battery_icons_horiz
| |-- battery-10-charge.png
| |
| | アイコンファイル
| |
| `-- battery-missing.png
|-- scripts
| |-- autostart.sh
| |-- picom-toggle.sh
| |-- picom.conf
| |-- set-pywal.sh
| |-- set-screen-resolution-in-virtualbox.sh
| `-- system-overview
|-- sxhkd
| `-- sxhkdrc
`-- wall.jpg
という構成になっています。
ユーザ用もインストール直後の時点で、まったく同じ構成で作成されています。
※1
「Garuda Linux」は、「230305」までと「231029」以降とで、定義ファイルの構成が異なっています。
「230305」までは、基本的には、「config.py」のみの構成でした。
「231029」は、下記のような構成になっています。
$ tree --charset x ~/.config/qtile/
/home/hogehoge/.config/qtile/
|-- __pycache__
| |-- bars.cpython-311.pyc
| |-- colorschemes.cpython-311.pyc
| |-- config.cpython-311.pyc
| |-- defaults.cpython-311.pyc
| |-- groups.cpython-311.pyc
| |-- keys.cpython-311.pyc
| |-- layouts.cpython-311.pyc
| |-- scratchpads.cpython-311.pyc
| `-- screens.cpython-311.pyc
|-- bars.py
|-- colorschemes.py
|-- config.py
|-- defaults.py
|-- groups.py
|-- icons
| |-- battery_icons_horiz
| | |-- battery-10-charge.png
| | |-- battery-10.png
| | |-- battery-20-charge.png
| | |-- battery-20.png
| | |-- battery-30-charge.png
| | |-- battery-30.png
| | |-- battery-40-charge.png
| | |-- battery-40.png
| | |-- battery-50-charge.png
| | |-- battery-50.png
| | |-- battery-60-charge.png
| | |-- battery-60.png
| | |-- battery-70-charge.png
| | |-- battery-70.png
| | |-- battery-80-charge.png
| | |-- battery-80.png
| | |-- battery-90-charge.png
| | |-- battery-90.png
| | |-- battery-empty-charge.png
| | |-- battery-empty.png
| | |-- battery-full-charge.png
| | |-- battery-full-charged.png
| | |-- battery-full.png
| | |-- battery-missing-black.png
| | `-- battery-missing.png
| |-- dnanordsmall.png
| |-- garuda-purple.png
| |-- garuda-red.png
| |-- garuda-white.png
| |-- garuda-yellow.svg
| |-- layout-bsp.png
| |-- layout-floating.png
| |-- layout-max.png
| |-- layout-monadtall.png
| |-- layout-stack.png
| |-- layout-tile.png
| |-- layout-treetab.png
| |-- layout-zoomy.png
| |-- python.png
| `-- qtilelogo.png
|-- keys.py
|-- layouts.py
|-- scratchpads.py
|-- screens.py
`-- scripts
|-- autostart.sh
|-- brightness.sh
|-- dmenu.sh
`-- picom-toggle.sh
3. キー定義
「config.py」という拡張子でわかるように、定義は、「Python」のソースとして記述してあります。
各プラットフォームの、デフォルトのキー定義と、わたしのカスタマイズについて記述しておきます。
プラット フォーム | キー定義 | 備考 |
---|
mod | 端末を開く | ウィンドウを 閉じる | フローティング 切替 | qtile 再起動 | ログアウト |
---|
ArcoLinux | Win | mod+Enter | mod+q | mod+Shift+Space | mod+Shift+r | mod+x | | FreeBSD | Win | mod+Enter | mod+w | - | mod+Ctrl+r | mod+Ctrl+q | | Garuda Linux | Win | mod+Enter | mod+q | mod+Shift+Space | mod+Shift+r | mod+Shift+x | | カスタマイズ | Win | mod+Enter | mod+q | mod+Space | mod+Shift+r | mod+Shift+q | |
キー定義の記述方法は、以下になります。
mod キー
mod = "mod4"
「mod4」が Win になります。
Alt は特に定義がないようで、「ArcoLinux」の定義を読むと逆に
mod1 = "alt"
mod2 = "control"
というように定義してあります。
通常のキーは、ダブルクォーテーション「"」で小文字のアルファベットを囲んで記述します。
特殊キーは、以下のように記述するようです。
(これは、いまのところ(2020年9月17日)、プラットフォームによらず共通)
キー | 記述 | 備考 |
mod | mod | |
Ctrl | "control" | |
Space | "space" | |
Shift | "shift" | |
Print | "Print" | |
← | "Left" | |
↑ | "Up" | |
↓ | "Down" | |
→ | "Right" | |
F1 ~ F12 | "F1" ~ "F12" | |
キーの定義は下記の
keys = [
# Switch between windows in current stack pane
Key([mod], "k", lazy.layout.down()),
Key([mod], "j", lazy.layout.up()),
・・・略・・・
Key([mod], "r", lazy.spawncmd()),
]
「keys = [」からはじまって「]」で終わる中に、カンマで区切って、1キー定義につき1行ずつ、同じカラムから記述します(「Python」なので文法が厳しいのだ)。
プログラムとプログラムに対応するショートカットキーは、以下のように記述します。
mod+Enter を、「xterm」に割り当てる場合
Key([mod], "Return", lazy.spawn("xterm")),
と記述します。
4. ウィンドウ動作
「qtile」のウィンドウ動作は
from libqtile.command import lazy
でインポートされるモジュール内で定義されているようです。
動作は
動作 | メソッド | 備考 |
プログラム起動 | lazy.spawn("プログラム") | コマンドラインに記述するように オプションをつけられます |
フローティングウィンドウ 切替 | lazy.window.toggle_floating() | |
ウィンドウを閉じる | lazy.window.kill() | |
qtile 再起動 | lazy.restart() | |
ログアウト | lazy.shutdown() | |
前項でのカスタマイズと合わせて
ウィンドウを閉じる | | mod+q | |
フローティングウィンドウ切替 | | mod+Space | |
qtile 再起動 | | mod+Shift+r | |
ログアウト | | mod+Shift+q | |
として記述するならば、下記のように記述します。
Key([mod], "q", lazy.window.kill()),
Key([mod], "space", lazy.window.toggle_floating()),
Key([mod, "shift"], "r", lazy.restart()),
Key([mod, "shift"], "q", lazy.shutdown()),
5. フローティングウィンドウ
フローティングウィンドウで起動する方法に関しては、「qtile - 共通事項 - フローティングウィンドウ」をご参照ください。
フローティングウィンドウを移動・リサイズするには mod キーを押したまま、マウスを左クリックしたままで移動、右クリックしたままでリサイズできます。
6. 自動起動
自動起動する方法は、デフォルトでは、ないようです。
ログインマネージャに合わせて「.xinitrc」「.xprofile」「.xsession」のいずれかに記述します。
「ArcoLinux」では、他のデスクトップと同様に「autostart.sh」というシェルスクリプトを使用します。
すなわち「~/.qtile/config.py」に
main = None
@hook.subscribe.startup_once
def start_once():
home = os.path.expanduser('~')
subprocess.call([home + '/.config/qtile/scripts/autostart.sh'])
の記述があり、自動起動したいスクリプトを記述しているようです。
「Garuda Linux」も同様の方式になっています。
他のプラットフォームでの、作成方法に関しては、別のページに記載してありますので、そちらをご参照ください。
7. 備考
「Garuda Linux」では、システムオリジナルとユーザ用は、ほぼ同じ定義なのですが、端末の定義、ワークスペースの番号(オリジナルは、ギリシャ語?ヒンズー語?)と若干、色味が違うようです。
「Garuda Linux 211129 qtile」で、「diff」をとってみたら、以下のようになっていました。
$ diff /etc/skel/.config/qtile/config.py ~/.config/qtile/config.py
72c72
< Key([mod], "Return", lazy.spawn(myTerm)),
---
> Key([mod], "Return", lazy.spawn('alacritty')),
115,116c115,116
< Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl s +5%")),
< Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl s 5%- ")),
---
> Key([], "XF86MonBrightnessUp", lazy.spawn("xbacklight -inc 5")),
> Key([], "XF86MonBrightnessDown", lazy.spawn("xbacklight -dec 5")),
239,240c239,240
< # group_labels = ["1 ", "2 ", "3 ", "4 ", "5 ", "6 ", "7 ", "8 ", "9 ", "0",]
< group_labels = ["α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",]
---
> group_labels = ["1 ", "2 ", "3 ", "4 ", "5 ", "6 ", "7 ", "8 ", "9 ", "0",]
> #group_labels = ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?",]
283,284c283,284
< layout.MonadTall(margin=8, border_width=2, border_focus="#ff00ff", border_normal="#f4c2c2"),
< layout.MonadWide(margin=8, border_width=2, border_focus="#ff00ff", border_normal="#f4c2c2"),
---
> layout.MonadTall(margin=16, border_width=2, border_focus="#ff00ff", border_normal="#f4c2c2"),
> layout.MonadWide(margin=16, border_width=2, border_focus="#ff00ff", border_normal="#f4c2c2"),
312c312
< ["#ff5050", "#ff5050"], # color 3
---
> ["#e75480", "#e75480"], # color 3
315c315
< ["#ffd47e", "#ffd47e"], # color 6
---
> ["#ff0000", "#ff0000"], # color 6
324,325c324,325
< ["#e75480", "#e75480"], #15
< ["#2aa899", "#2aa899"], #16
---
> ["#98c379", "#98c379"], #15
> ["#b48ead", "#b48ead"], #16
329c329
< ["#b48ead", "#b48ead"], #20
---
> ["#c678dd", "#c678dd"], #20
371c371
< fontsize = 15,
---
> fontsize = 11,
|