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