カメノドットコム
Debian大好きでメインで節操ない感じ。
GMOもわりと好き。
RSS feedly

LXDEカスタマイズを詳しく

Squeezeではベタ書きを紹介しただけだったが、ちょっと事情が変わったので改めて記述。
正式にデスクトップ環境になったせいか、素のLXDEがなんか適当な扱いになってしまった。
基本的な操作は同じなんだが、というかより使いやすくなった印象なんだが、カスタマイズに致命的なポカをやってくれてる。
/usr/share/lxde/openbox/menu.xml というファイルが消滅している。
これに気付かずカスタマイズして「右クリックでランチャだー♥」と喜んでたら、エラー出まくりで使い物にならず。
以下、エラーとの戦いの記録である。

エラー回避方法

どうでもいい人が多いだろうけど一応なんでエラーになるのか書いとく。
右クリックでメニューを呼び出すときは「root-menu」というラベルのついたブロックを読み込むことになってるらしい。
でもシステム側の menu.xml が無いから呼び出せない→エラー。
カスタムメニューファイルを作成するとき、そのファイル内に「root-menu」ブロックを作成すれば解決できる。
つーことで「root-menu」は下記のとおり。

<menu id="root-menu" label="LXDE">
    <separator label="LXDE" />
    <menu id="app-menu" />
    <separator />
    <menu id="client-list-menu" />
    <separator />
    <item label="Desktop Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled></startupnotify>
            <command>pcmanfm --desktop-pref</command>
        </action>
    </item>
    <item label="Window Management Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled><icon>openbox</icon></startupnotify>
            <command>obconf</command>
        </action>
    </item>
    <item label="Reload Config Files">
        <action name="Reconfigure" />
    </item>
    <separator />
    <item label="Exit">
        <action name="Execute"><command>lxde-logout</command></action>
    </item>
</menu>

メニューカスタマイズ方法

メニューファイルは XML なので、仕組みがわかってしまえば意外と簡単だった。
メニューの書き方は以下な感じ。

<!-- ブロックを定義する -->
<menu id="ブロック名" label="見出し"> 〜 </menu>

<!-- ブロックを呼び出す -->
<menu id="ブロック名" />

<!-- セパレータ(横線のみ) -->
<separator />

<!-- セパレータに名前をつける(見出しになる) -->
<separator label="見出し" />

<!-- アイテムを追加する -->
<item label="表示名">
    <action name="Execute"><command>コマンド</command></action>
</item>

これだけわかれば充分だと思った。でも甘かった。
XMLだからなのかLXDEの癖なのかわからないが、ブロック定義にも順番があるのです……
試行錯誤した結果、「root-menu」は一番下に記述、ブロックを複数定義するときは、メニュー表示の上から順に、定義の記述は下から積み上げていく形にしないといけないらしい。
項目が少ないうちはベタ書きでいいけど、増えてきたらスライドで出るようにしたほうが便利だよなー。とか。
つーことで、「menu.xml」2種類、載せちゃう。

ベタ書きタイプの例

<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu xmlns="http://openbox.org/3.4/menu">

<menu id="app-menu" label="Applications">
    <separator label="System Tools" />
    <item label="PCManFM">
        <action name="Execute"><command>pcmanfm</command></action>
    </item>
    <item label="LXTerminal">
        <action name="Execute"><command>lxterminal</command></action>
    </item>

    <separator label="Internet Tools" />
    <item label="Google Chrome">
        <action name="Execute"><command>/opt/google/chrome/google-chrome</command></action>
    </item>
    <item label="gFTP">
        <action name="Execute"><command>gftp-gtk</command></action>
    </item>
    <item label="Sylpheed">
        <action name="Execute"><command>sylpheed</command></action>
    </item>

    <separator label="Office & Tools" />
    <item label="Geany">
        <action name="Execute"><command>geany</command></action>
    </item>
    <item label="Gnumeric">
        <action name="Execute"><command>gnumeric</command></action>
    </item>

    <separator label="Graphic Tools" />
    <item label="GIMP2.8">
        <action name="Execute"><command>gimp-2.8</command></action>
    </item>
    <item label="FontForge">
        <action name="Execute"><command>fontforge</command></action>
    </item>
</menu>

<menu id="root-menu" label="LXDE">
    <separator label="LXDE" />
    <menu id="app-menu" />
    <separator />
    <menu id="client-list-menu" />
    <separator />
    <item label="Desktop Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled></startupnotify>
            <command>pcmanfm --desktop-pref</command>
        </action>
    </item>
    <item label="Window Management Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled><icon>openbox</icon></startupnotify>
            <command>obconf</command>
        </action>
    </item>
    <item label="Reload Config Files">
        <action name="Reconfigure" />
    </item>
    <separator />
    <item label="Exit">
        <action name="Execute"><command>lxde-logout</command></action>
    </item>
</menu>

</openbox_menu>

表示件数が少ない場合はこれで充分かと。
増えてきてモニタからはみ出すようなら下記を参考にどうぞ。

スライドタイプの例

<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu xmlns="http://openbox.org/3.4/menu">

<menu id="graphic-menu" label="Graphics">
    <separator label="Graphics" />
    <item label="GIMP2.8">
        <action name="Execute"><command>gimp-2.8</command></action>
    </item>
    <item label="FontForge">
        <action name="Execute"><command>fontforge</command></action>
    </item>
</menu>

<menu id="office-menu" label="Office & Tools">
    <separator label="Office & Tools" />
    <item label="Geany">
        <action name="Execute"><command>geany</command></action>
    </item>
    <item label="Gnumeric">
        <action name="Execute"><command>gnumeric</command></action>
    </item>
</menu>

<menu id="internet-menu" label="Internet Tools">
    <separator label="Internet Tools" />
    <item label="Google Chrome">
        <action name="Execute"><command>/opt/google/chrome/google-chrome</command></action>
    </item>
    <item label="gFTP">
        <action name="Execute"><command>gftp-gtk</command></action>
    </item>
    <item label="Sylpheed">
        <action name="Execute"><command>sylpheed</command></action>
    </item>
</menu>

<menu id="system-menu" label="System Tools">
    <separator label="System Tools" />
    <item label="PCManFM">
        <action name="Execute"><command>pcmanfm</command></action>
    </item>
    <item label="LXTerminal">
        <action name="Execute"><command>lxterminal</command></action>
    </item>
</menu>

<menu id="root-menu" label="LXDE">
    <separator label="LXDE" />
    <menu id="system-menu" />
    <menu id="internet-menu" />
    <menu id="office-menu" />
    <menu id="graphic-menu" />
    <separator />
    <menu id="client-list-menu" />
    <separator />
    <item label="Desktop Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled></startupnotify>
            <command>pcmanfm --desktop-pref</command>
        </action>
    </item>
    <item label="Window Management Settings">
        <action name="Execute">
            <startupnotify><enabled>yes</enabled><icon>openbox</icon></startupnotify>
            <command>obconf</command>
        </action>
    </item>
    <item label="Reload Config Files">
        <action name="Reconfigure" />
    </item>
    <separator />
    <item label="Exit">
        <action name="Execute"><command>lxde-logout</command></action>
    </item>
</menu>

</openbox_menu>

ブロックは入れ子にできるので、やろうと思えばいくらでも複雑に。やらんがな。
XMLの記述をミスった場合、エラーメッセージをメモってそれにしたがってファイルを修正して、一旦ログアウトすると反映される。再起動は必要ない。
また、Squeezeまでは「$HOME/.config/openbox/lxde-rc.xml」を編集しないとカスタムできなかったが、Wheezyからは「$HOME/.config/openbox/」に「menu.xml」を置くとそれが優先的に呼び出されるようになった。
……それでも「root-menu」ブロックは必須だがな! 改悪してどーするんだー!

Sponsored Link