/usr/share/applications
のデスクトップファイルを変更した後 、変更が表示されるように、ランチャーアイコンアプリケーションメニューを更新する必要があります。
わかりやすくするために、変更する必要があるメニューは、ポインタがのアイコン上にあるときに右クリックで表示されるメニューです。ランチャー(画面の左側にあるアイコンでいっぱいの大きなバー)。
最良の答えは、単純なコマンドラインです。
私はubuntu-2dを使用しておらず、ログアウト/ログインしたくありません。
私はいくつかの部分的な解決策を知っています:
-
unity --replace
すべてをリロードします(ウィンドウ装飾、通知領域など) -
killall ubuntu-2d-launcher
はubuntu-2dのみですが、統一のために同様の1行のコマンドが存在する場合は、それが適切な解決策になります。 - ログアウトしてから再度ログインすることもできますが、メニューを更新するためだけにすべてのセッションを失うわけにはいきません。
- ubuntu 14.04では、この問題は発生していません。「*。desktop」ファイルに加えられた変更は、ライブで再実行されているようです。
助言がありますか ? ccsmのおかげで方法はありますか?
承認された回答:
最もエレガントな方法は、アイコンを「再起動」することです。ランチャー内の位置からアイコンを削除し、同じ位置に置き換えます。以下のスクリプトがその役割を果たします。 12.04にはデフォルトでpython3が付属していないため、python2にあります。ただし、python3でも使用でき、その場合にのみシバンを変更します。このスクリプトは、たとえば、変更されたアイコンをすぐに適用する場合にも役立ちます(Ubuntu以降のバージョンでも)。
編集したデスクトップファイルを引数として、スクリプトを呼び出すだけで簡単に使用できます(以下を参照)。
注 :12.04で、更新されたアイコンが実行中を表す場合 アプリケーションの場合、この質問で説明されているように、問題のアプリケーションはクラッシュします。したがって、それを使用する場合は、アプリケーションが実行されていないことを確認してください。 14.04では、アプリケーションが実行されている場合、アイコンは更新されません。
スクリプト
#!/usr/bin/env python
import subprocess
import time
import sys
desktopfile = sys.argv[-1]
def read_currentlauncher():
# reads the current launcher contents
get_launcheritems = subprocess.Popen([
"gsettings", "get", "com.canonical.Unity.Launcher", "favorites"
], stdout=subprocess.PIPE)
return get_launcheritems.communicate()[0].decode("utf-8")
def set_launcher(llist):
# sets a defined unity launcher list
current_launcher = str(llist).replace(", ", ",")
subprocess.Popen([
"gsettings", "set", "com.canonical.Unity.Launcher", "favorites",
current_launcher,
])
def refresh_icon(desktopfile):
current_launcher = read_currentlauncher()
current_launcher_temp = eval(current_launcher)
item = [item for item in current_launcher_temp if desktopfile in item][0]
index = current_launcher_temp.index(item)
current_launcher_temp.pop(index)
set_launcher(current_launcher_temp)
time.sleep(2)
set_launcher(current_launcher)
refresh_icon(desktopfile)
使用方法
- 上記のスクリプトを空のファイルにコピーし、
refresh.py
として安全に保管します - 便宜上、実行可能にします
-
次のコマンドでアイコンを更新します:
/path/to/script/refresh.py name_of_edited_desktopfile (e.g. 'firefox.desktop')
本当にスムーズにしたい場合
-
スクリプトを実行可能にし、
.py
を削除します 拡張機能、~/bin
に保存します 。ログアウト/ログイン後、次のコマンドで実行できます:refresh firefox.desktop (as an example)