Come aggiornare il menu dell'applicazione dell'icona di avvio in Ubuntu 12.04?


10

Dopo aver modificato un file desktop /usr/share/applications, devo aggiornare il menu dell'applicazione dell'icona di avvio in modo che venga visualizzata la mia modifica. Per motivi di chiarezza, il menu che dovrebbe essere modificato è quello che appare con un clic destro quando il puntatore si trova su un'icona del programma di avvio (la barra grande piena di icone sul lato sinistro dello schermo).

La migliore risposta sarebbe una semplice riga di comando.

Non sto usando Ubuntu-2d e non voglio disconnettermi / accedere.

Sono a conoscenza di una soluzione parziale:

  • unity --replace ricarica tutto (decorazione della finestra, area di notifica, ...)
  • killall ubuntu-2d-launcher è solo ubuntu-2d, ma se esiste un comando simile a una riga per l'unità, sarebbe una buona soluzione.
  • disconnettersi quindi riconnettersi funziona anche, ma non posso permettermi di perdere tutta la mia sessione solo per aggiornare il menu.
  • su Ubuntu 14.04 non ho questo problema: qualsiasi modifica apportata ai file "* .desktop" sembra essere ripubblicata dal vivo.

Eventuali suggerimenti ? C'è un modo grazie a ccsm?


Ciao @vaab, ho un file dekstop e cambio l'icona modificando il percorso all'interno del file .desktop. La soluzione accettata era quella con cui sei andato? unity --replacelavori? Non mi dispiace per la ricarica di tutto.
Noitidart,

Confermato unity --replacefunziona in Ubuntu 16.04 ma non ricaricherà le applicazioni pesanti come Chrome, Thunderbirds ...
PhatHV

@PhatHV: oh scusa, non ricarica alcuna applicazione, solo l'unità viene ricaricata, ma gestisce molti aspetti diversi del display in modo che ogni elemento visualizzato venga aggiornato, nessuna applicazione viene ricaricata in realtà.
vaab,

Risposte:


8

Il modo più elegante è "riavviare" l'icona; per rimuovere l'icona dalla sua posizione nel programma di avvio e sostituirla nella stessa posizione. Lo script qui sotto fa il lavoro. È in python2, poiché 12.04 non viene fornito con python3 per impostazione predefinita. Tuttavia, può essere utilizzato anche in python3, in questo caso cambia solo lo shebang. Lo script può anche essere utile (anche nelle versioni successive di Ubuntu) per applicare immediatamente un'icona modificata, ad esempio.

Puoi semplicemente usarlo chiamando lo script, con il file desktop modificato come argomento (vedi più avanti).

Nota : in 12.04, se un'icona aggiornata rappresenta un'applicazione in esecuzione , l'applicazione in questione si arresterà in modo anomalo, come descritto in questa domanda , quindi se la si utilizza, assicurarsi che l'applicazione non sia in esecuzione. In 14.04, l'icona semplicemente non si aggiorna in caso di un'applicazione in esecuzione.

Il copione

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

Come usarlo

  • Copia lo script sopra in un file vuoto e salvalo come refresh.py
  • Per motivi di praticità, rendilo eseguibile
  • Aggiorna l'icona con il comando:

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

Se vuoi davvero renderlo liscio

  • Rendi eseguibile lo script, rimuovi l' .pyestensione, salvalo in ~/bin. Dopo il logout / in, è possibile eseguirlo con il comando:

    refresh firefox.desktop (as an example)
    

Per la massima scorrevolezza: pythonhosted.org/watchdog
EoghanM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.