우분투 12.04에서 런처 아이콘 응용 프로그램 메뉴를 새로 고치는 방법은 무엇입니까?

우분투 12.04에서 런처 아이콘 응용 프로그램 메뉴를 새로 고치는 방법은 무엇입니까?

에서 데스크톱 파일을 수정한 후 /usr/share/applications수정 사항이 표시되도록 실행 프로그램 아이콘 응용 프로그램 메뉴를 새로 고쳐야 합니다. 명확성을 위해 수정해야 할 메뉴는 포인터가 런처 아이콘(화면 왼쪽에 아이콘이 가득 찬 큰 막대) 위에 있을 때 마우스 오른쪽 버튼을 클릭하면 나타나는 메뉴입니다.

가장 좋은 대답은 간단한 명령줄입니다.

나는 ubuntu-2d를 사용하지 않고 있으며 로그아웃/로그인하고 싶지 않습니다.

나는 몇 가지 부분적인 해결책을 알고 있습니다.

  • unity --replace모든 것을 다시 로드합니다(창 장식, 알림 영역 등).
  • killall ubuntu-2d-launcherubuntu-2d 전용이지만 통일을 위해 비슷한 한 줄 명령이 존재한다면 그것은 좋은 해결책이 될 것입니다.
  • 로그아웃했다가 다시 로그인하는 것도 가능하지만 메뉴를 업데이트하기 위해 모든 세션을 잃을 여유가 없습니다.
  • 우분투 14.04에서는 이 문제가 없습니다. "*.desktop" 파일에 대한 모든 변경 사항이 실시간으로 반복되는 것 같습니다.

어떤 제안? ccsm 덕분에 방법이 있나요?

답변1

가장 우아한 방법은 아이콘을 "다시 시작"하는 것입니다. 실행기의 해당 위치에서 아이콘을 제거하고 동일한 위치에 교체합니다. 아래 스크립트가 작업을 수행합니다. 12.04에는 기본적으로 python3이 제공되지 않기 때문에 python2에 있습니다. 그러나 Python3에서도 사용할 수 있습니다. 이 경우 shebang만 변경하세요. 예를 들어 스크립트는 변경된 아이콘을 즉시 적용하는 데 유용할 수도 있습니다(나중 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)
    

관련 정보