GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak obnovit nabídku aplikace ikony spouštěče v Ubuntu 12.04?

Po úpravě souboru plochy v /usr/share/applications , potřebuji obnovit nabídku aplikace ikony spouštěče, aby se moje úprava zobrazila.
V zájmu srozumitelnosti je třeba upravit nabídku, která se zobrazí po kliknutí pravým tlačítkem, když je ukazatel na ikonu spouštěč (velký pruh plný ikon na levé straně obrazovky).

Nejlepší odpovědí by byl jednoduchý příkazový řádek.

Nepoužívám ubuntu-2d a nechci se odhlašovat/přihlašovat.

Jsem si vědom nějakého částečného řešení:

  • unity --replace znovu načte vše (výzdobu oken, oznamovací oblast, …)
  • killall ubuntu-2d-launcher je pouze ubuntu-2d, ale pokud existuje podobný jednořádkový příkaz pro jednotu, bylo by to dobré řešení.
  • funguje také odhlášení a opětovné přihlášení, ale nemohu si dovolit ztratit celou relaci jen kvůli aktualizaci nabídky.
  • na ubuntu 14.04 tento problém nemám:zdá se, že jakékoli změny provedené v souborech „*.desktop“ budou znovu provedeny.

Nějaké návrhy ? Existuje způsob díky ccsm?

Přijatá odpověď:

Nejelegantnějším způsobem je „restartovat“ ikonu; odstranit ikonu z její pozice ve spouštěči a vrátit ji na stejnou pozici. Skript níže to udělá. Je v python2, protože 12.04 standardně nepřichází s python3. Lze jej však použít i v pythonu3, pouze v takovém případě změňte shebang. Skript může být také užitečný (i v pozdějších verzích Ubuntu) například k okamžitému použití změněné ikony.

Můžete jej jednoduše použít zavoláním skriptu s upraveným souborem plochy jako argumentem (viz dále níže).

Poznámka :ve 12.04, pokud aktualizovaná ikona představuje běh aplikace, dotyčná aplikace spadne, jak je popsáno v této otázce, takže pokud ji používáte, ujistěte se, že aplikace není spuštěna. Ve 14.04 se ikona v případě spuštěné aplikace jednoduše neobnoví.

Skript

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

Jak jej používat

  • Zkopírujte výše uvedený skript do prázdného souboru a uložte jej jako refresh.py
  • Z důvodu pohodlí jej nastavte jako spustitelný
  • Obnovte ikonu příkazem:

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

Pokud opravdu chcete, aby to bylo hladké

  • Udělejte skript spustitelným, odstraňte .py rozšíření, uložte jej do ~/bin . Po odhlášení/přihlášení jej spustíte příkazem:

    refresh firefox.desktop (as an example)
    

Ubuntu
  1. Jak skrýt nabídku Grub v Ubuntu 14.04?

  2. Jak změnit velikost ikony na ploše v Ubuntu 16.10?

  3. Problémy s ikonou spouštěče Ubuntu 16.04 Eclipse?

  1. Přidat nabídku Aplikace na plochu Ubuntu 20.04 GNOME

  2. Jak vytvořit integrovaný spouštěč aplikací pro soubor Appimage v Ubuntu

  3. Jak nainstalovat Django na Ubuntu 18.04 a 16.04 LTS

  1. Jak obnovit plochu v Ubuntu bez restartování počítače

  2. Jak obnovit sítě Wi-Fi v Ubuntu

  3. Jak zrychlit nabídku Aplikace v Ubuntu 18.04