- 1. 概要
- 2. MenuMaker/CLI.py
- 3. MenuMaker/JWM.py
- 4. MenuMaker/Openbox.py
1. 概要
モジュール構成は、変わっていません。
jmenumaker
┣ CLI.py
┣ jmmaker.py
┣ update_jwm.sh
┣ update_openbox.sh
┗ MenuMaker
┣ __init__.py
┣ CLI.py
┣ Env.py
┣ Fluxbox.py
┣ IceWM.py
┣ JWM.py
┗ Openbox.py
以下、変更の発生したソースのみ記述します。
2. MenuMaker/CLI.py
カテゴリ名「Exit」を「終了」としていましたが、「ログアウト」となるケースが多く、「ログアウト」に変更しました。
例外があれば、個別に対応します。
# カテゴリ名 英語→日本語 辞書
label_dict = {
"Configure" : "設定",
"Development" : "開発",
"Editors" : "エディタ",
"Exit" : "ログアウト",
"Files" : "ファイル",
"Games" : "ゲーム",
"GNOME" : "GNOME",
"Graphics" : "グラフィックス",
"Multimedia" : "マルチメディア",
"Network" : "ネットワーク",
"Office" : "オフィス",
"OpenBox" : "OpenBox",
"Other" : "その他",
"Reconfig" : "再設定",
"Reconfigure" : "再設定",
"Restart" : "再起動",
"Settings" : "設定",
"Shells" : "シェル",
"Styles" : "スタイル",
"System" : "システム",
"Utilities" : "ユーティリティ",
"Workspaces" : "ワークスペース",
}
21行です。
3. MenuMaker/JWM.py
ひとつは「終了」を「ログアウト」へ変更した対応です。
もうひとつは、自動起動の定義とトレイの定義をファイルとして外だしして、中に取り込むものです。
「JWM」で自動起動の定義は
~/.jwmrc
内に
<StartupCommand>コマンド</StartupCommand>
として記述すれば、このコマンドをログイン時に自動起動します。
この文字列を別途ファイルとして
~/.config/startup.xml
に記述しておけば、取り込んで「~/.jwmrc」へ記述するようにしました。
トレイの定義は
~/.config/tray.xml
に記述しておけば、「MenuMaker」で自動生成した、トレイの定義を置き換えるものです。
########## カスタムアイコンディレクトリ
self.icon_directory = os.environ.get('HOME') + '/.config/icons'
if (not os.path.exists(self.icon_directory)): ## ないディレクトリは作成する
os.makedirs(self.icon_directory)
## スタートアップファイル
self.startup = os.environ.get('HOME') + '/.config/startup.xml'
## トレイ定義
self.tray = os.environ.get('HOME') + '/.config/tray.xml'
46行で、自動起動設定ファイルの定義をしています。
50行で、トレイ定義ファイルを定義しています。
#####
# 終了メニュー設定
# @param env 環境変数クラス(本メソッドでは未使用)
# @param dic_exec_icon exec → icon 辞書
# @param lines メニューファイル全行
def set_end_menu(self, env, dic_exec_icon, lines):
for i in range(0, len(lines)-1):
lines[i] = lines[i].replace('Sans-9', 'MigMix 1M-8')
line_key = '<Restart label="再起動" icon="restart.png"/>' + "\n"
if line_key in lines:
i = lines.index(line_key)
lines[i] = lines[i].replace(line_key, '<Restart label="JWM 再起動" icon="'+dic_exec_icon['reboot']+'"/>'+"\n")
line_key = '<Exit label="ログアウト" confirm="true" icon="quit.png"/>' + "\n"
if line_key in lines:
i = lines.index(line_key)
lines[i] = lines[i].replace(line_key, '<Exit label="ログアウト" confirm="false" icon="'+dic_exec_icon['logout']+'"/>'+"\n")
line_key = '</RootMenu>' + "\n"
if line_key in lines:
point = len(lines) - lines.index(line_key)
lines.insert(-point-2, '<Program label="メニュー更新" icon="'+dic_exec_icon['update']+'">~/jmenumaker/update_jwm.sh</Program>'+"\n")
lines.insert(-point, '<Program label="再起動" icon="'+dic_exec_icon['reboot']+'">sudo /sbin/reboot</Program>'+"\n")
lines.insert(-point, '<Program label="シャットダウン" icon="'+dic_exec_icon['shutdown']+'">sudo /sbin/poweroff</Program>'+"\n")
## Tray を書き換えてみる
if (os.path.exists(self.tray)):
print('tray ari')
start_key = ' <Tray x="0" y="-1" autohide="off">' + "\n"
end_key = ' </Tray>' + "\n"
start = 0
end = 0
if start_key in lines:
start = lines.index(start_key)
if end_key in lines:
end = lines.index(end_key)
print(start, end)
if (start < end):
del lines[start:end+1]
with open(self.tray) as file:
list = file.readlines()
i = start
for data in list:
lines.insert(i, data)
i = i+1
## startup ファイルが存在すれば 組み込み
if (os.path.exists(self.startup)):
with open(self.startup) as file:
list = file.readlines()
for data in list:
lines.insert(-1, data)
113~117、「終了」の文字列を「ログアウト」へ書き換えています。
また、「confirm="true"」を「confirm="false"」へ書き換えています。
前のままだと、ログアウト時に、毎回、下記のダイアログが表示されて、面倒だからです。

130~158行で、「~/.config/tray.xml」が、存在すれば、「<Tray>~</Tray>」の記述をファイルの内容で置き換えるようにしました。
160~167行で、以前は、固定で、自動起動するプログラムを記述していましたが、冒頭に記したように、「~/.config/startup.xml」に記述しておけば取り込むようにしました。
4. MenuMaker/Openbox.py
#####
# 終了メニュー設定
# @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['reboot']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>openbox --exit</execute>'+"\n")
lines.insert(-2, ' </action> </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(-2, ' <item label="ログアウト" icon="'+dic_exec_icon['logout']+'"> <action name="Exit"/> </item>'+"\n")
91行を下記へ変更しました。
lines.insert(-2, ' <item label="ログアウト" icon="'+dic_exec_icon['reboot']+'"> <action name="Execute">'+"\n")
lines.insert(-2, ' <execute>openbox --exit</execute>'+"\n")
lines.insert(-2, ' </action> </item>'+"\n")
実は、「action name="Exit"」だと、ログアウト時に。
毎回、このダイアログが表示されるので

「action name="Execute"」「<execute>openbox --exit</execute>」にして、ダイアログを表示しないようにしました。
元々からある、ログアウトのメニューの動作は、あえて、ダイアログを表示させる形式にしています。
|