Получение списка установленных приложений (НЕ пакеты)

sleep на Linux принимает секунды также (по крайней мере все версии, которые я когда-либо видел); не можете Вы просто использовать sleep 600 на обоих?

0
15.06.2012, 17:18
2 ответа

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

#!/bin/sh

icon_basedir1=/usr/share/icons/gnome
icon_basedir2=/usr/share/icons/hicolor
icon_basedir3=/usr/share/pixmaps
icon_basedir4=/usr/share/app-install/icons

error() {
    echo $*
    exit 1
}

is_icon() {
    test -f "$1" && icon_path="$1" && return 0
    icon_path=$(find $2 -name $1.png | sort -r | head -n 1)
    test -f "$icon_path" && return 0
}

find_icon() {
    test "$icon_filename" || return
    is_icon $icon_filename $icon_basedir1 && return
    is_icon $icon_filename $icon_basedir2 && return
    is_icon $icon_filename $icon_basedir3 && return
    is_icon $icon_filename $icon_basedir4 && return
}

find_name() {
    test "$fullname" && name=$fullname && return 0
    test "$genericname" && name=$genericname && return 0
}

find /usr/share/applications -type f -name \*.desktop | while read file; do
    icon_filename=$(cat $file | grep ^Icon= | sed -ne 's/^.*=//' -e '1 p')
    find_icon
    executable_name=$(cat $file | grep ^Exec= | sed -ne 's/^.*=//' -e 's/ .*//' -e '1 p')
    fullname=$(cat $file | grep FullName.en_ | sed -ne 's/^.*=//' -e '1 p')
    genericname=$(cat $file | grep GenericName.en_ | sed -ne 's/^.*=//' -e '1 p')
    name=$(cat $file | grep -i Name | sed -ne 's/^.*=//' -e '1 p')
    find_name
    echo app_file=$file
    echo name=$name
    echo executable=$(which $executable_name || echo $executable_name)
    echo icon=$icon_path
    echo
done
1
28.01.2020, 02:53

Насколько я помню /usr/share/applications/ конкретный диспетчер Windows Gnome и не содержит запись для каждого приложения в Вашей системе (BTW, необходимо определить то, что делает Вы подразумеваете под приложением).

В любом случае можно просто перечислить записи в каталоге

0
28.01.2020, 02:53
  • 1
    Он действительно определял то, что приложение для него, программа, которая имеет запись в /usr/share/applications. –  Marco 15.06.2012, 17:58
  • 2
    Не Был бы это быть ls? –  jippie 15.06.2012, 20:44
  • 3
    Точно, следовательно мой комментарий. Кажется странным, что он просто спрашивает, как перечислить файлы в каталоге. –  Matteo 16.06.2012, 10:13
  • 4
    @jipple, не список файлов в каталоге, но название Приложения (как Chrome), соединяет каналом к значку и пути к петлянию (как/opt/google/chrome/google-chrome). Это записано в .desktop файлах в/usr/share/applications/каталоге. –  Ivan Akulov 17.06.2012, 10:30
  • 5
    Вы уверены, что это является определенным для Gnome? Например, у Меня есть kde4 подкаталог в/usr/share/applications/с .desktop файлами для kde приложений. –  Ivan Akulov 17.06.2012, 10:34

Теги

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