このページでは、Xfdesktop 4.6以降 および libxfce4menu を使用したメニューをカスタマイズする方法について説明しています。
Xfdesktop はメニューファイルと、(プログラムの実行、ターミナル、ファイルマネージャなどの) ルートメニューのデスクトップエントリファイルをインストールします。メニューをカスタマイズするには、これらを編集する必要があります。
${XDG_CONFIG_HOME:-~/.config}/menus ディレクトリがなければ作成します:
mkdir ${XDG_CONFIG_HOME:-~/.config}/menus/
インストールされたメニューを、${XDG_CONFIG_HOME:-~/.config}/menus にコピーします:
cp $prefix/etc/xdg/menus/xfce-applications.menu ${XDG_CONFIG_HOME:-~/.config}/menus
ルートメニューから任意のメニューアイテムを除去したい場合は、当該アイテムのデスクトップエントリファイルをホームフォルダにコピーし、その中の NoDisplay
エントリキーを追加/変更します。認められているデスクトップキーについてのより詳しい情報については ここ を参照してください。
Xfdesktop は以下のデスクトップエントリファイルをインストールします:
$prefix/share/applications/xfce4-about-xfce.desktop
$prefix/share/applications/xfce4-file-manager.desktop
$prefix/share/applications/xfce4-help.desktop
$prefix/share/applications/xfce4-logout.desktop
$prefix/share/applications/xfce4-run-program.desktop
$prefix/share/applications/xfce4-terminal.desktop
$prefix/share/applications/xfce4-web-browser.desktop
表示させたくないデスクトップエントリファイルを以下のようにホームフォルダ配下にコピーします。:
cp $prefix/share/applications/xfce4-web-browser.desktop ${XDG_DATA_HOME:-~/.local/share}/applications
次にデスクトップエントリキー NoDisplay を修正または追加します:
NoDisplay=true
デスクトップエントリファイルの仕様を確認していれば、あなたはすでにこれら 2 つのキーの違いに気がついているかもしれません。NoDisplay はメニューからアプリケーションを隠しますが、その mime タイプは、Thunar の内部などでは割り当てられたままになっています。対して Hidden エントリキーは、アプリケーションが存在しないかのように振る舞います。
追加したいメニューエントリごとに標準デスクトップファイルを作成し、${XDG_DATA_HOME:-~/.local/share}/applications
配下に置きます。例えば Eclipse を起動するメニューアイテムの場合は、以下のような内容のファイルを eclipse.desktop
という名前で作成します。
[Desktop Entry] Version=1.0 Type=Application Encoding=UTF-8 Exec=eclipse Icon=eclipse StartupNotify=false Categories=X-XFCE;X-Xfce-Toplevel; OnlyShowIn=XFCE; Name=Eclipse Comment=Eclipse Java IDE
これを表示させるために、${XDG_CONFIG_HOME:-~/.config}/menus/xfce-applications.menu
を編集します。以下に例を示します:
<Menu> <Name>Xfce</Name> <DefaultAppDirs/> <DefaultDirectoryDirs/> <Include> <Category>X-Xfce-Toplevel</Category> </Include> <Layout> <Filename>xfce4-terminal.desktop</Filename> <Separator/> <Filename>eclipse.desktop</Filename> [...]
Xfce バージョン 4.5 の当初から、libxfce4menu はメニュー設定の “マージ” をサポートしていません。これは、ナイスなメニューエディタを作成できないことを意味します。メニューエントリの追加/除去、または編集を行うには、ファイルを手動でコピーしなければなりません。
例えば “gvim” をインストールしたのであれば、そのデスクトップエントリファイル /usr/share/applications/gvim.desktop
があるばずです。そのファイルを ${XDG_DATA_HOME:-~/.local/share}/applications
にコピーし、それを修正できます。
新しいメニューを作成する時は、新しいデスクトップエントリファイルを上記ディレクトリ内に作成します。exo-desktop-item-edit
コマンドを使うと、そのようなファイルを簡単に作成できます。例えば、exo-desktop-item-edit --create-new ~/.local/share/applications/
というふうに実行します。
新しくサブメニューを作成するには、${XDG_CONFIG_HOME:-~/.config}/menus/xfce-applications.menu 内の、他の Xfce サブメニュー (“Graphics” や “Multimedia” など) と同じレベルに “Menu” 要素を追加します。任意の名前を定義した “Menu” 要素には、他に 2 つの要素を設定する必要があります。一つめは “Directory” 要素で、用意したサブメニューに関する、アイコンその他の情報を定義したデスクトップエントリファイルとの関連付けを行います。二つめは “Category” 要素で、このサブメニューに表示するメニューアイテムの .desktop ファイルと関連付けるためのカテゴリを指定します。カスタムカテゴリの名前は、慣例により、非標準カテゴリのプレフィックスとされている “X-” で始めることが推奨されています。例えば、ファイルマネージャで任意のフォルダを表示するメニューアイテムを登録するサブメニューを作成する場合は以下のようになります:
<Menu> <Name>Folders</Name> <Directory>folders.directory</Directory> <Include> <Category>X-Folders</Category> </Include> </Menu>
次に、${XDG_DATA_HOME:-~/.local/share}/desktop-directories/folders.directory を以下のような内容で作成します:
[Desktop Entry] Version=1.0 Type=Directory Icon=file-manager Name=Folders Comment=Folders viewed in a file manager
ここではサブメニューの表示名およびアイコンなどを指定します。
最後に、メニューアイテムを上で作成したサブメニューで表示するための .desktop ファイルを ${XDG_DATA_HOME:-~/.local/share}/applications フォルダに作成します。サブメニュー配下に表示させるためには、“Categories” に上記で指定したカスタムカテゴリ名を設定します。thunar-home.desktop と名づけ、ホームフォルダを開くメニューアイテムのファイルの例を以下に示します:
[Desktop Entry] Version=1.0 Type=Application Exec=/usr/local/bin/thunar /usr/home/yourname Icon=file-manager StartupNotify=false Categories=X-Folders; OnlyShowIn=XFCE Name=home Comment=home displayed in Thunar
必要なファイルをすべて配置し、必要であればメニューを更新 (後述) したら、“Folders” という名前のサブメニューがファイルマネージャのアイコンを使用して Xfce メニューに表示され、サブメニュー配下には、Thunar でホームフォルダを開くメニューが表示されているはずです。この他にも /cdrom や / など任意のフォルダへのショートカットのメニューを追加できます。
ファイルモニタリングサポートを使用していない場合は、xfdesktop --reload
と実行するとメニューを更新します。Xfce メニューの更新は xfce4-panel -r
を実行してください。
もし動作しない場合、代わりに killall -HUP xfdesktop
を実行してみてください。
がんばって!