태그 보관물: .desktop

.desktop

우분투 12.04에서 실행기 아이콘 응용 프로그램 메뉴를 새로 고치는 방법? 찬 큰

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

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

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

일부 부분 해결책을 알고 있습니다.

  • unity --replace 모든 것을 다시로드합니다 (창 장식, 알림 영역, …)
  • killall ubuntu-2d-launcher 우분투-2d 전용이지만, 비슷한 단일 행 명령이 단일성을 위해 존재한다면 좋은 해결책이 될 것입니다.
  • 로그 아웃했다가 다시 로그인해도 작동하지만 메뉴를 업데이트하기 위해 모든 세션을 잃어 버릴 수는 없습니다.
  • 우분투 14.04 에서이 문제가 없습니다 : “* .desktop”파일에 대한 변경 사항은 실시간으로 다시 계산되는 것 같습니다.

어떤 제안? ccsm 덕분에 방법이 있습니까?



답변

가장 우아한 방법은 아이콘을 “다시 시작”하는 것입니다. 실행기의 해당 위치에서 아이콘을 제거하고 동일한 위치에서 아이콘을 교체하십시오. 아래 스크립트는 작업을 수행합니다. 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)
    

답변