qtile - 共通事項 - 自動起動

 クラウディア
1. 概要
2. 作成
3. 設定 qtile-0.14.2 以前
4. 設定 qtile-0.18.1 以降

1. 概要

 自動起動する方法は、デフォルトでは、ないようです。  ログインマネージャに合わせて「.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'])
 の記述があり、自動起動したいスクリプトを記述しているようです。  2022年2月28日、「Garuda Linux 211129 qtile」を確認しました。  「ArcoLinux」とまったく同様の方法を採用しています。  しかしまぁ、「qtile」起動後に動かしたいものが、ある場合は「.xinitrc」「.xprofile」「.xsession」では、用にたりない。  「ArcoLinux」のやり方を真似てみますか・・・。

2. 作成

 仕組みがない場合は、作成します。  ログインユーザで。

mkdir -pv ~/.config/qtile/scripts

sh
cat << 'EOF' >> ~/.config/qtile/scripts/autostart.sh
#!/bin/sh

run()
{
  if ! pgrep $1 ;
  then
    $@&
  fi
}
EOF
exit

chmod +x ~/.config/qtile/scripts/autostart.sh
 あとは、作成したスクリプトの末尾に

run "プログラム"
 の形式で記述していきます。

3. 設定 qtile-0.14.2 以前

 「qtile」の起動時に動作するようにします。  ログインユーザで。

vi ~/.config/qtile/config.py

from libqtile.config import Key, Screen, Group, Drag, Click
from libqtile.command import lazy
from libqtile import layout, bar, widget
 の個所を下記へ書き換えます。

import os
import re
import socket
import subprocess
from libqtile.config import Drag, Key, Screen, Group, Drag, Click, Rule
from libqtile.command import lazy
from libqtile import layout, bar, widget, hook
from libqtile.widget import Spacer
 末尾に下記の行を加えます。

@hook.subscribe.startup_once
def start_once():
    home = os.path.expanduser('~')
    subprocess.call([home + '/.config/qtile/scripts/autostart.sh'])
 これで、自動起動が有効になります。

4. 設定 qtile-0.18.1 以降

 フローティングウィンドウへで起動する方法も、「qtile-0.14.2」以前と「qtile-0.18.1」以降とで、記述する方法が大きく変わりました。  この自動起動の設定も、この間で、大きく変わりました。  以下は、「FreeBSD 12.3 RELEASE」「qtile-0.18.1」で設定した方法です。  ログインユーザで。

vi ~/.config/qtile/config.py

from typing import List  # noqa: F401

from libqtile import bar, layout, widget
from libqtile.config import Click, Drag, Group, Key, Match, Screen
from libqtile.lazy import lazy
from libqtile.utils import guess_terminal
 を下記へ書き換えます。

import os
import re
import socket
import subprocess

from typing import List  # noqa: F401

from libqtile import bar, layout, widget, hook
from libqtile.config import Click, Drag, Group, Key, Match, Screen, Rule
from libqtile.lazy import lazy
from libqtile.utils import guess_terminal
 末尾へ書き加える内容は、前項と同様です。

@hook.subscribe.startup_once
def start_once():
    home = os.path.expanduser('~')
    subprocess.call([home + '/.config/qtile/scripts/autostart.sh'])
 これで、「qtile」起動時に

~/.config/qtile/scripts/autostart.sh
 に記述した内容が反映されます。  「VirtualBox」上で動作させている場合、「VBoxClient-all」の記述は、上記のファイルへ、下記を加えます。

if [ -e /usr/local/bin/VBoxClient-all ]; then
    /usr/local/bin/VBoxClient-all
fi
earthcar(アースカー)
ハイスピードプラン