Ubuntu 12.04'te başlatıcı simgesi uygulama menüsünü nasıl yenileyebilirim?


10

Bir masaüstü dosyasını değiştirdikten sonra /usr/share/applications, değişiklikimin görünmesi için başlatıcı simgesi uygulama menüsünü yenilemem gerekiyor. Anlaşılır olması için, değiştirilmesi gereken menü, işaretçi başlatıcı simgesine (ekranın sol tarafındaki simgeyle dolu büyük çubuk) sağ tıklandığında görünen menüdür.

En iyi cevap basit bir komut satırı olacaktır.

Ubuntu-2d kullanmıyorum ve oturumu kapatmak / oturum açmak istemiyorum.

Bazı kısmi çözümlerin farkındayım:

  • unity --replace her şeyi yeniden yükler (pencere dekorasyonu, bildirim alanı, ...)
  • killall ubuntu-2d-launcher yalnızca ubuntu-2d'dir, ancak birlik için benzer bir tek satırlık komut varsa, bu iyi bir çözüm olacaktır.
  • oturum kapatıp tekrar oturum açmak da işe yarıyor, ancak sadece menüyü güncellemek için tüm oturumumu kaybetmeyi göze alamıyorum.
  • on ubuntu 14.04 Bu sorun yok: "* .desktop" dosyalarında yapılan herhangi bir değişiklik canlı repercuted gibi görünüyor.

Herhangi bir öneri ? Ccsm sayesinde bir yol var mı?


Merhaba @vaab, bir dekstop dosyam var ve .desktop dosyasının içindeki yolu düzenleyerek onun simgesini değiştiriyorum. Kabul ettiğin çözüm gittiğin şey miydi? unity --replaceİşler? Her şeyin yeniden yüklenmesine aldırmıyorum.
Noitidart

Onaylandı unity --replaceiçinde çalışır ubuntu 16.04 ama Chrome, Thunderbirds ... gibi ağır uygulamalar yeniden olmayacak
PhatHV

@PhatHV: üzgünüm, herhangi bir uygulamayı yeniden yüklemez, sadece birlik yeniden yüklenir, ancak ekranın birçok farklı yönünü yönetir, böylece görüntülenen her öğe yenilenir, herhangi bir uygulama aslında yeniden yüklenmez.
vaab

Yanıtlar:


8

En zarif yol simgeyi "yeniden başlatmak" tır; simgeyi başlatıcıdaki konumundan kaldırmak ve aynı konumda değiştirmek için. Aşağıdaki komut dosyası işi yapar. Python2'de, çünkü 12.04 varsayılan olarak python3 ile birlikte gelmiyor. Bununla birlikte, python3'te de kullanılabilir, sadece bu durumda shebang'ı değiştirin. Komut dosyası, örneğin değiştirilmiş bir simgeyi hemen uygulamak için de (sonraki Ubuntu sürümlerinde de) yararlı olabilir.

Düzenlenmiş masaüstü dosyasını bir argüman olarak komut dosyasını çağırarak kullanabilirsiniz (aşağıya bakınız).

Not : 12.04'te, yenilenen bir simge çalışan bir uygulamayı temsil ediyorsa , söz konusu uygulama bu soruda açıklandığı gibi çökecektir, bu nedenle kullanırsanız uygulamanın çalışmadığından emin olun. 14.04'te, çalışan bir uygulama durumunda simge yenilenmez.

Senaryo

#!/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)

Bu nasıl kullanılır

  • Yukarıdaki komut dosyasını boş bir dosyaya kopyalayın ve refresh.py
  • Kolaylık nedeniyle, çalıştırılabilir yapın
  • Simgeyi komutla yenileyin:

    /path/to/script/refresh.py name_of_edited_desktopfile (e.g. 'firefox.desktop')
    

Gerçekten pürüzsüz hale getirmek istiyorsanız

  • Komut dosyasını yürütülebilir yapın, .pyuzantıyı kaldırın , kaydedin ~/bin. Oturumu kapattıktan / oturum açtıktan sonra, komutla çalıştırabilirsiniz:

    refresh firefox.desktop (as an example)
    

Mükemmel pürüzsüzlük için: pythonhosted.org/watchdog
EoghanM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.