Làm cách nào để làm mới menu ứng dụng biểu tượng trình khởi chạy trong Ubuntu 12.04?


10

Sau khi sửa đổi tệp máy tính để bàn /usr/share/applications, tôi cần làm mới menu ứng dụng biểu tượng trình khởi chạy để sửa đổi của tôi hiển thị. Để rõ ràng, menu cần được sửa đổi là menu xuất hiện với một cú nhấp chuột phải khi con trỏ ở trên một biểu tượng của trình khởi chạy (thanh lớn chứa đầy biểu tượng ở phía bên trái màn hình).

Câu trả lời tốt nhất sẽ là một dòng lệnh đơn giản.

Tôi không sử dụng ubfox-2d và tôi không muốn đăng xuất / đăng nhập.

Tôi biết một số giải pháp một phần:

  • unity --replace tải lại mọi thứ (trang trí cửa sổ, khu vực thông báo, ...)
  • killall ubuntu-2d-launcher chỉ là ubfox-2d, nhưng nếu một lệnh một dòng tương tự tồn tại để thống nhất, đó sẽ là một giải pháp tốt.
  • đăng xuất rồi đăng nhập lại cũng hoạt động, nhưng tôi không đủ khả năng để mất tất cả phiên chỉ để cập nhật menu.
  • trên Ubuntu 14.04 Tôi không gặp phải vấn đề này: mọi thay đổi được thực hiện đối với các tệp "* .desktop" dường như được xử lý trực tiếp.

Bất kỳ đề xuất ? Có cách nào nhờ ccsm không?


Xin chào @vaab, tôi có tệp dekstop và tôi thay đổi biểu tượng của nó bằng cách chỉnh sửa đường dẫn bên trong tệp .desktop. Là giải pháp được chấp nhận những gì bạn đã đi với? unity --replacelàm? Tôi không ngại tải lại tất cả mọi thứ.
Noitidart 2/2/2015

Đã xác nhận unity --replacehoạt động trong Ubuntu 16.04 nhưng sẽ không tải lại các ứng dụng nặng như Chrome, Thunderbirds ...
PhatHV

@PhatHV: xin lỗi, nó không tải lại bất kỳ ứng dụng nào, chỉ có sự thống nhất được tải lại, nhưng nó quản lý nhiều khía cạnh khác nhau của màn hình để mọi yếu tố hiển thị sẽ được làm mới, không thực sự có ứng dụng nào được tải lại.
vaab

Câu trả lời:


8

Cách thanh lịch nhất là "khởi động lại" biểu tượng; để xóa biểu tượng khỏi vị trí của nó trong trình khởi chạy và thay thế nó trên cùng một vị trí. Kịch bản dưới đây thực hiện công việc. Đó là trong python2, vì 12.04 không đi kèm với python3 theo mặc định. Tuy nhiên, nó cũng có thể được sử dụng trong python3, chỉ thay đổi shebang trong trường hợp đó. Kịch bản cũng có thể hữu ích (trên các phiên bản Ubuntu sau này) để áp dụng ngay một biểu tượng đã thay đổi.

Bạn có thể chỉ cần sử dụng nó bằng cách gọi tập lệnh, với tệp máy tính để bàn đã chỉnh sửa làm đối số (xem thêm bên dưới).

Lưu ý : trong 12.04, nếu biểu tượng được làm mới đại diện cho ứng dụng đang chạy , ứng dụng đang được đề cập sẽ bị sập, như được mô tả trong câu hỏi này , vì vậy nếu bạn sử dụng nó, hãy đảm bảo ứng dụng không chạy. Trong 14.04, biểu tượng đơn giản sẽ không làm mới trong trường hợp ứng dụng đang chạy.

Kịch bản

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

Làm thế nào để sử dụng nó

  • Sao chép tập lệnh ở trên vào một tệp trống và bảo vệ nó dưới dạng refresh.py
  • Vì lý do thuận tiện, làm cho nó thực thi
  • Làm mới biểu tượng bằng lệnh:

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

Nếu bạn thực sự muốn làm cho nó trơn tru

  • Làm cho tập lệnh thực thi, loại bỏ .pyphần mở rộng, lưu nó vào ~/bin. Sau khi đăng xuất / đăng nhập, bạn có thể chạy nó bằng lệnh:

    refresh firefox.desktop (as an example)
    

Để có được sự mượt mà tột cùng: pythonhosted.org/watchdog
EoghanM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.