qtile - 共通事項 - 定義

 クラウディア
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 再起動  ログアウト 
ArcoLinuxWinmod+Entermod+qmod+Shift+Spacemod+Shift+rmod+x
FreeBSDWinmod+Entermod+wmod+Ctrl+rmod+Ctrl+q
Garuda LinuxWinmod+Entermod+qmod+Shift+Spacemod+Shift+rmod+Shift+x
カスタマイズWinmod+Entermod+qmod+Spacemod+Shift+rmod+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"
F1F12 "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,
earthcar(アースカー)
ネットオークションの相場、統計、価格比較といえばオークファン
それがだいじWi-Fi