ubuntu 12.04でランチャーアイコンアプリケーションメニューを更新する方法


10

でデスクトップファイルを変更した後/usr/share/applications、ランチャーアイコンのアプリケーションメニューを更新して、変更内容を表示する必要があります。わかりやすくするために、変更する必要のあるメニューは、ポインターがランチャーのアイコン(画面左側のアイコンでいっぱいの大きなバー)にあるときに右クリックで表示されるメニューです。

最良の答えは、単純なコマンドラインです。

私はubuntu-2dを使用しておらず、ログアウト/ログインしたくありません。

私はいくつかの部分的な解決策を知っています:

  • unity --replace すべてを再ロードします(ウィンドウの装飾、通知領域など)。
  • killall ubuntu-2d-launcher ubuntu-2dのみですが、同様の単一行コマンドが単一性のために存在する場合、それは良い解決策です。
  • ログアウトしてから再度ログインすることもできますが、メニューを更新するだけでセッションをすべて失うわけにはいきません。
  • ubuntu 14.04ではこの問題はありません。「*。desktop」ファイルに加えられた変更はライブで再実行されるようです。

助言がありますか ?ccsmに感謝する方法はありますか?


こんにちは@vaab、私はdekstopファイルを持っており、.desktopファイル内のパスを編集することでそのアイコンを変更します。受け入れられた解決策はあなたが行ったものでしたか?unity --replace動作しますか?すべてのリロードを気にしません。
Noitidart、2015

確認さunity --replaceれたubuntu 16.04で動作しますが、Chrome、Thunderbirdsなどの重いアプリケーションをリロードしません...
PhatHV

@PhatHV:申し訳ありませんが、アプリケーションはリロードされません。ユニティのみがリロードされますが、表示のさまざまな側面を管理するため、表示されているすべての要素が更新され、実際にアプリケーションがリロードされることはありません。
vaab 2016年

回答:


8

最もエレガントな方法は、アイコンを「再起動」することです。アイコンをランチャーの位置から削除し、同じ位置に置き換えます。以下のスクリプトがその仕事をします。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)
    

究極の滑らかさ:pythonhosted.org/watchdog
EoghanM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.