- 1. Openbox
- 2. ソース
1. Openbox
これは、「Openbox」の処理を行うモジュールです。
おさらい。
「Openbox」のメニューの構造は
<menu id="2" label="カテゴリ名" icon="アイコンファイル名">
<item label="アイテム名" icon="アイコンファイル名"> <action name="Execute">
<execute>ロードモジュール</execute>
</action> </item>
<item label="アイテム名" icon="アイコンファイル名"> <action name="Execute">
<execute>ロードモジュール</execute>
</action> </item>
</menu>
という形式になっています。
サブカテゴリを分ける場合は、「menu」タグをネストさせます。
「アイコンファイル名」は、オリジナルの「MenuMaker」では、「menu」「item」どちらの行も「icon=""」自体が存在しません。
「.png」も「.svg」も表示できるので、変換がないため、短いソースになります。
2. ソース
前回との変更点のみ。
以下は、まるまる追加。
「LibreOffice」の個別起動とアイコン設定です。
#######
# メニューの LibreOffice 行にアイコンを追加して、個別の実行文にする
# @param line 対象行
# @param nextline 対象行の次の行
# @param label 項目名
# @param exe_sentence 実行文
# @param directory_icon アプリケーションアイコンのディレクトリ
# @param icon アイコンファイル(拡張子なし)
def update_libreoffice(self, line, nextline, label, exe_sentence, icon):
line = line.replace('label="'+label+'">', 'label="'+label+'" icon="'+icon+'">')
nextline = nextline.replace('<execute>libreoffice</execute>', '<execute>'+exe_sentence+'</execute>')
return [line, nextline]
#######
# メニューの LibreOffice 行にアイコンを追加して、個別の実行文にする
# @param line 対象行
# @param nextline 対象行の次の行
# @param label 項目名
# @param exe_sentence 実行文
# @param directory_icon アプリケーションアイコンのディレクトリ
# @param icon アイコンファイル(拡張子なし)
def update_libreoffice(self, line, nextline, label, exe_sentence, icon):
line = line.replace('label="'+label+'">', 'label="'+label+'" icon="'+icon+'">')
nextline = nextline.replace('<execute>libreoffice</execute>', '<execute>'+exe_sentence+'</execute>')
return [line, nextline]
#####
# 終了メニュー設定
# @param env 環境変数クラス(本メソッドでは未使用)
# @param dic_exec_icon exec → icon 辞書
# @param lines メニューファイル全行
def set_end_menu(self, env, dic_exec_icon, lines):
## メニュー更新
#
「メニュー更新」をメニューに追加。
アイコンの変数名を変更しています。
#####
# 終了メニュー設定
# @param env 環境変数クラス(本メソッドでは未使用)
# @param dic_exec_icon exec → icon 辞書
# @param lines メニューファイル全行
def set_end_menu(self, env, dic_exec_icon, lines):
## メニュー更新
#
lines.insert(-6, ' <item label="メニュー更新" icon="'+dic_exec_icon['update']+'"> <action name="Execute">'+"\n")
lines.insert(-6, ' <execute>~/jmenumaker/update_openbox.sh</execute>'+"\n")
lines.insert(-6, ' </action> </item>'+"\n")
## 終了メニュー
#
lines.insert(-2, ' <separator/>'+"\n")
lines.insert(-2, ' <menu id="50" label="終了" icon="'+dic_exec_icon['logout']+'">'+"\n")
lines.insert(-2, ' <item label="ログアウト" icon="'+dic_exec_icon['logout']+'"> <action name="Exit"/> </item>'+"\n")
lines.insert(-2, ' <item label="再起動" icon="'+dic_exec_icon['reboot']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>sudo /sbin/reboot</execute>'+"\n")
lines.insert(-2, ' </action> </item>'+"\n")
lines.insert(-2, ' <item label="シャットダウン" icon="'+dic_exec_icon['shutdown']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>sudo /sbin/poweroff</execute>'+"\n")
lines.insert(-2, ' </action> </item>'+"\n")
lines.insert(-2, ' </menu>'+"\n")
lines.insert(-6, ' <execute>~/jmenumaker/update_openbox.sh</execute>'+"\n")
lines.insert(-6, ' </action> </item>'+"\n")
## 終了メニュー
#
lines.insert(-2, ' <separator/>'+"\n")
lines.insert(-2, ' <menu id="50" label="終了" icon="'+dic_exec_icon['logout']+'">'+"\n")
lines.insert(-2, ' <item label="ログアウト" icon="'+dic_exec_icon['logout']+'"> <action name="Exit"/> </item>'+"\n")
lines.insert(-2, ' <item label="再起動" icon="'+dic_exec_icon['reboot']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>sudo /sbin/reboot</execute>'+"\n")
lines.insert(-2, ' </action> </item>'+"\n")
lines.insert(-2, ' <item label="シャットダウン" icon="'+dic_exec_icon['shutdown']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>sudo /sbin/poweroff</execute>'+"\n")
lines.insert(-2, ' </action> </item>'+"\n")
「更新」「ログアウト」「再起動」「シャットダウン」のアイコン検索を追加しています。
#####
# @brief applications/*.desktop を検索して
# プログラム名 → アイコンファイル名の辞書を返す
# Fluxbox と違って png で良い
# @param env 環境変数クラス
# @param dic_exec_icon .desktop より取得した編集前の exec → icon 辞書
# @return exec → icon ファイル名フルパス の辞書
def get_dic_exec_icon(self, env, dic_exec_icon):
## 有効な拡張子、ディレクトリ(どちらも優先順位順)
effect_extend = [ '.xpm', '.png', '.svg' ]
effect_directory = [ env.directory_xpm, env.directory_png, env.directory_icon_apps ]
dic_exec_icon['update'] = 'system-software-update'
dic_exec_icon['logout'] = 'computer-log-out'
dic_exec_icon['reboot'] = 'system-reboot'
dic_exec_icon['shutdown'] = 'system-shutdown'
|