Ошибка при открытии GParted

Не знаю, почему большинство ответов было связано с извлечением имени файла .desktop ярлыков. Имя файла .desktop shortcut filename может быть чем угодно, но имеет значение поле Name внутри файла ярлыка. Если вы хотите создать список имен установленных приложений, отображаемых в Dash, просто «grep» это поле в [Desktop Entry]

Код Rudential, с bash

#!/bin/bash

for file in /usr/share/applications/*.desktop;
do
    while IFS== read -r key val
    do
        if [[ -z $key ]]; then
            continue
        else
            if [[ $key =~ ^\[Desktop\ Entry ]]; then
                interesting_field=1
            elif [[ $key =~ ^\[ ]]; then
                interesting_field=0
            fi
        fi
        [[ $interesting_field -eq 1 ]] && [[ $key == "Name" ]] && echo $val
    done < $file
done

Но это делает не учитывайте ярлыки, которые скрыты от показа в Dash. Кто-то, кто лучше понимает спецификацию .desktop, может захотеть продолжить расширение этого кода, чтобы исключить те виды ярлыков

Edit: еще одна попытка с Python

#!/usr/bin/python

from os import listdir
from os.path import isfile, join
import ConfigParser

SHORTCUTDIR = "/usr/share/applications/"

shortcuts = [ file for file in listdir(SHORTCUTDIR) if isfile(join(SHORTCUTDIR, file)) and file.endswith(".desktop") ]
dash_shortcuts = []

for f in shortcuts:
    c = ConfigParser.SafeConfigParser()
    c.read(SHORTCUTDIR + f)

    try:
        if c.getboolean('Desktop Entry', 'NoDisplay') is True:
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" in c.get('Desktop Entry', 'NotShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" not in c.get('Desktop Entry', 'OnlyShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    dash_shortcuts += [ c.get("Desktop Entry", "Name") ]

for s in sorted(dash_shortcuts, key=str.lower):
    print s
1
задан 18 September 2016 в 02:48

0 ответов

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

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