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


10

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

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

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

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

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

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


안녕하세요 @vaab, 나는 dekstop 파일을 가지고 있으며 .desktop 파일 내부의 경로를 편집하여 아이콘을 변경합니다. 받아 들여진 해결책은 당신과 함께 갔습니까? unity --replace공장? 나는 모든 것을 다시로드하는 것을 신경 쓰지 않습니다.
Noitidart 2019

확인 unity --replace우분투 16.04 에서 작동 하지만 Chrome, Thunderbirds와 같은 무거운 응용 프로그램을 다시로드하지 않습니다 ...
PhatHV

@PhatHV : 죄송합니다. 어떤 응용 프로그램도 다시로드하지 않으며, 단합 만 다시로드되지만 디스플레이의 여러 가지 측면을 관리하므로 표시된 모든 요소가 새로 고쳐지고 실제로는 응용 프로그램이 다시로드되지 않습니다.
vaab

답변:


8

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

최고의 부드러움을 위해 : pythonhosted.org/watchdog
EoghanM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.