Fluxboxのstyleをランダムに選ぶスクリプト

バージョン1.0.0からFluxboxにはfluxbox-remoteというユーティリティが付属し、ターミナルやスクリプトからFluxboxにキーコマンドを送ることが出きるようになった。これによりターミナルからログアウトしたりstyleを変更したり、かなりのことが出きるようになった。キーコマンドについては日本語ではFluxbox Informationが詳しい。

デスクトップの壁紙は「fbsetbg -r directory」でランダムに選ぶことができるが、styleに関してはそのような仕組みは用意されていない。そこでfluxbox-remoteとPythonを使ってstyleを「/usr/share/fluxbox/styles」と「/home/tks/.fluxbox/styles」からランダムに一つ選び出し適用するスクリプト「randomstyle.py」を書いてみた。
randomstyle.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, glob, random
styledir = "/usr/share/fluxbox/styles/*/theme.cfg"
styledir2 = "/home/tks/.fluxbox/styles/*/theme.cfg"

# get random style directory.
style = random.choice([os.path.dirname(x) for x in glob.glob(styledir) + glob.glob(styledir2)])

# then change style
os.system("fluxbox-remote 'setstyle " + style + "'")

このスクリプトは「/usr/share/fluxbox/styles/*/theme.cfg」と「/home/tks/.fluxbox/styles/*/theme.cfg」のパターンに一致するディレクトリからランダムにひとつ選び出して「style」に格納し、サブシェルで「fluxbox-remote 'setstyle 【styleの内容】'」を実行している。*1
「~/.fluxbox/init」で「session.screen0.allowRemoteActions」を「true」に設定し上記のスクリプトを実行すると、ランダムにstyleが変化する。

*1:ちなみにキーコマンドは大文字小文字を区別しないので「SETSTYLE」や「SetStyle」でもかまわない。