site top fluxbox tips contact blog

Okumatsu_Hiroshi Website

last update 2010/2/10

fluxbox メニューのシステム




ルートメニュー設定のしくみ

 

Debian系のディストリビューションでは Debian Menu System と呼ばれるシステムがあって、Fluxbox だけではなく他のウィンドゥマネージャーのメニューも管理しています。
新しくパッケージをインストールしたりメニューファイルを更新したりすると、Debian Menu System が自動的にそれぞれの ウィンドゥマネージャーに合わせてメニューを生成します。けれども、わたしはそれほどこのシステムについて勉強したわけではないので、 はっきりと断定できるようなことは言えないということをお許しください。ドキュメントもほとんど英語なので、わたしの英語力では理解が 浅いところが多々あると思いますので。
英語がわかる方は /usr/share/doc/menu/html/index.html を読んで見てください。詳しく書いてあります。
または、Debian.orgの以下のページが同じ内容になっています。
Debian Menu System


以下にわたしのわかる範囲で簡単に解説します。
Debian Menu System では新しいパッケージがインストールされると、/usr/share/menu にメニュー設定ファイルが作られます。 これを元にしてメニューシステムがウィンドゥマネージャーのメニューを作ります。

$ update-menus

端末から上の様にすると、update-menus が/etc/menu/, /usr/lib/menu, /usr/share/menuを読みにいき、 新しいパッケージの設定ファイルがあれば読み込み、/etc/menu-methods内にあるウィンドゥマネージャーごとのスクリプトが、 メニューを生成します。Fluxboxでは、/etc/menu-methods/fluxboxというスクリプトです。


自分用のメニュー設定ファイルを書きたければ、ホームディレクトリに .menu というディレクトリを作り、 その中に設定ファイルを入れておきます。 update-menus が ~/.menu 以下を読み込み、設定が上書きされます。
例えば gedit の設定ファイルは、以下のようになっています。

?package(gedit):\
    needs="x11"\
    section="Applications/Editors"\
    title="Gedit"\
    longtitle="Light-weight GNOME text editor"\
    icon="/usr/share/pixmaps/gedit-icon.xpm"\
    command="/usr/bin/gedit"

ちなみに、/usr/share/menu にあるものと同じ名前で、~/.menu に空の(何も書いていない) ファイルを置いておくと、そのメニューは非表示になります。

一方 /etc/menu-methods/fluxbox は以下の様になっています。

#!/usr/bin/install-menu
#
# Generates fluxbox menus for all registered applications.
# (taken from Blackbox)
compat="menu-1"
outputencoding="LOCALE"

!include menu.h

genmenu="menudefs.hook"
examplercfile="system.fluxbox-menu"
rcfile="fluxbox-menu"
rootprefix="/etc/X11/fluxbox/"
userprefix=".fluxbox/"
treewalk=M)

(以下省略)

このファイルをコピーして ~/.menu-methods に入れて少々変更すると、update-menus コマンド が雛形にするファイルを指定することができます。

outputencoding="LOCALE"  <=  この行を
outputencoding="en_US"   <=  こうするとメニューが英語表記になる

rootprefix="/etc/X11/fluxbox/"       <=  ここを
rootprefix="/home/${USER}/.fluxbox"  <=  こうすると
      ~/.fluxbox内の examplercfile を雛形にしてメニューを生成するようになる

ということは、examplercfile に指定されている system.fluxbox-menu を/etc/X11/fluxbox からコピーして ~/.fluxbox に置き、編集すれば自分用の雛形になるんです。
こんな説明でおおまかなところは合っていると思いますが、自信はありませんので、もっと知りたい方は「英語」に挑戦 してみては?

しかし、menuファイルをエディタで編集してしまう方が手っ取り早いので、こんな面倒なことをする必要 はないかもしれません。

Ubuntuで、実際にRootMenuをカスタマイズする方法についてブログの方で少しだけ具体的に書いてます。 参考にしてみてください。

Fluxbox RootMenuのカスタマイズ - OKUMATSU WEB