Bagaimana cara me-refresh menu ikon aplikasi launcher di ubuntu 12.04?

10

Setelah memodifikasi file desktop /usr/share/applications, saya perlu menyegarkan menu aplikasi ikon peluncur agar modifikasi saya muncul. Demi kejelasan, menu yang harus dimodifikasi adalah yang muncul dengan klik kanan ketika pointer ada di ikon peluncur (bilah besar penuh ikon di sisi kiri layar).

Jawaban terbaik adalah baris perintah sederhana.

Saya tidak menggunakan ubuntu-2d dan saya tidak ingin keluar / masuk.

Saya mengetahui beberapa solusi parsial:

  • unity --replace memuat ulang semuanya (dekorasi jendela, area notifikasi, ...)
  • killall ubuntu-2d-launcher hanya ubuntu-2d, tetapi jika perintah satu baris yang sama ada untuk persatuan, itu akan menjadi solusi yang baik.
  • keluar kemudian masuk kembali bekerja juga, tetapi saya tidak mampu kehilangan semua sesi saya hanya untuk memperbarui menu.
  • di ubuntu 14.04 Saya tidak memiliki masalah ini: perubahan apa pun yang dibuat untuk file "* .desktop" tampaknya langsung diproduksi ulang.

Ada saran? Apakah ada cara berkat ccsm?

vaab
sumber
Halo @ vab, saya punya file dekstop dan saya mengubah ikonnya dengan mengedit path di dalam file .desktop. Apakah Anda menerima solusi yang Anda terima? unity --replacebekerja? Saya tidak keberatan memuat ulang semuanya.
Noitidart
unity --replaceKarya terkonfirmasi di ubuntu 16.04 tetapi tidak akan memuat ulang aplikasi berat seperti Chrome, Thunderbirds ...
PhatHV
@PhatHV: oh maaf, itu tidak memuat ulang aplikasi apa pun, hanya satu yang dimuat ulang, tetapi ia mengelola banyak aspek tampilan yang berbeda sehingga setiap elemen yang ditampilkan akan di-refresh, tidak semua aplikasi akan dimuat ulang sebenarnya.
vaab

Jawaban:

8

Cara paling elegan adalah "memulai kembali" ikon; untuk menghapus ikon dari posisinya di peluncur dan menggantinya pada posisi yang sama. Script di bawah ini berfungsi. Itu di python2, karena 12,04 tidak datang dengan python3 secara default. Namun, ini dapat digunakan di python3 juga, hanya mengubah shebang dalam kasus itu. Skrip juga dapat berguna (pada versi Ubuntu yang lebih baru juga) untuk segera menerapkan ikon yang diubah misalnya.

Anda cukup menggunakannya dengan memanggil skrip, dengan file desktop yang diedit sebagai argumen (lihat lebih lanjut di bawah).

Catatan : dalam 12,04, jika ikon yang di-refresh mewakili aplikasi yang sedang berjalan , aplikasi yang dimaksud akan macet, seperti yang dijelaskan dalam pertanyaan ini , jadi jika Anda menggunakannya, pastikan aplikasi tersebut tidak berjalan. Pada 14,04, ikon tidak akan menyegarkan jika ada aplikasi yang sedang berjalan.

Naskah

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

Bagaimana cara menggunakannya

  • Salin skrip di atas ke dalam file kosong dan simpan sebagai refresh.py
  • Untuk alasan kenyamanan, buatlah itu dapat dieksekusi
  • Segarkan ikon dengan perintah:

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

Jika Anda benar-benar ingin membuatnya halus

  • Buat skrip dapat dieksekusi, hapus .pyekstensi, simpan di ~/bin. Setelah keluar / masuk, Anda dapat menjalankannya dengan perintah:

    refresh firefox.desktop (as an example)
    
Yakub Vlijm
sumber
Untuk kelancaran utama: pythonhosted.org/watchdog
EoghanM