Значки Sort Unity Launcher в алфавитном порядке

Мне нравится сохранять мои заблокированные приложения Средства запуска отсортированными в алфавитном порядке, и я задавался вопросом, будет ли возможно записать сценарий, который сортирует их, таким образом, я не должен делать этого сам каждый раз, когда я добавляю новую программу.

Если существует папка где-нибудь, которая содержит все названия и местоположение значков, я должен смочь изобразить его из там.

3
задан 10 March 2015 в 13:34

2 ответа

Сохраните средство запуска отсортированным в алфавитном порядке

Запущение скрипта ниже в фоновом режиме (см. далее ниже, как сделать это) сохранит Ваше средство запуска отсортированным в алфавитном порядке от до z:

Лучшие три объекта средства запуска прежде, чем запустить скрипт: терминал Gnome, Virtualbox, LibreOffice

enter image description here

Запущение скрипта: dconf-редактор, Файлы, Firefox

enter image description here

Что делает сценарий

(Интерфейс-) названия приложений определяется в .desktop файлы. Эти файлы могут храниться в также /usr/share/applications или ~/.local/share/applications. Последний "отвергает" глобальный, если локальный существует.

Сценарий проверяет на изменения в списке средства запуска, выполняя (в цикле, каждые две секунды) команду:

gsettings get com.canonical.Unity.Launcher favorites

Это возвращает список объектов средства запуска, заказанных как текущий порядок средства запуска.

Если средство запуска изменяется (например, если Вы добавляете новое средство запуска), сценарий ищет относящиеся имена интерфейса в .desktop файлы (сохраняющий приоритет локального .desktop файлы) и виды объекты средства запуска, согласно этим именам интерфейса.

Впоследствии, сценарий устанавливает отсортированное средство запуска командой:

gsettings set com.canonical.Unity.Launcher favorites "<sorted_launcheritems_list>"

Как использовать

  1. Скопируйте сценарий ниже в пустой файл, сохраните его как sort_launcher.py
  2. Тестовый прогон это путем выполнения (в терминале) команды:

    python3 /path/to/sort_launcher.py
    
  3. Если это хорошо работает, добавьте его к своим приложениям запуска: Тире> Приложения Запуска> Добавляет команду:

    /bin/bash -c "sleep 15&&python3 /path/to/sort_launcher.py"
    

Сценарий

#!/usr/bin/env python3
import subprocess
import os
import time

home = os.environ["HOME"]
# define the two directories to search .desktop files, the string to identify application launchers
dir1 = "/usr/share/applications/"; dir2 = home+"/.local/share/applications/"; s = "application://"
# the key to read / write the launcher
lget = "gsettings get "; lset = "gsettings set "; key = "com.canonical.Unity.Launcher favorites"

# read current launcher
def read_current():
    return eval(subprocess.check_output(["/bin/bash", "-c", lget+key]).decode("utf-8").strip())

def sort_launcher(launchers):
    # split up launcher items in applications / others
    apps = []; others = []
    for it in launchers:
        apps.append(it) if it.startswith(s) else others.append(it)
    # create a sorted application (launcher-) list
    sort_list = []
    app_launchers = []
    for item in apps:
        check = get_interfacename(item)
        if check:
            app_launchers.append([check, item])
    app_launchers.sort(key=lambda x: x[0])
    # set the sorted launcher
    launcher_set = [item[1] for item in app_launchers]+others
    subprocess.Popen(["/bin/bash", "-c", lset+key+' "'+str(launcher_set)+'"'])

def get_interfacename(item):
    name = []
    for dr in [dir1, dir2]:
        subject = dr+item.replace(s, "")
        try:
            app = [l.strip() for l in open(subject).readlines() if l.startswith("Name=")][0]
            name.append(app)
        except FileNotFoundError:
            pass
        else:
            name.append(app)
            return name[-1].strip("Name=").lower()

# check every two seconds for changes, update launcher if necessary
current_launcher1 = read_current()
sort_launcher(current_launcher1)
while True:
    time.sleep(2)
    current_launcher2 = read_current()
    if current_launcher1 != current_launcher2:
        sort_launcher(current_launcher2)
    else:
        pass
    current_launcher1 = current_launcher2

Примечания

  • Виды сценария американо-английскими названиями приложений
  • В системном мониторе, шоу сценария cpu 0%, что означает, что сценарий практически ничего не добавляет к загрузке процессора.
0
ответ дан 1 December 2019 в 23:17

Можно получить их использующий

gsettings get com.canonical.Unity.Launcher favorites

и установить их с

gsettings set com.canonical.Unity.Launcher favorites VALUE

, где VALUE имеет тот же формат как, что Вы получили от gsettings get ...

0
ответ дан 1 December 2019 в 23:17

Другие вопросы по тегам:

Похожие вопросы: