sleep
на Linux принимает секунды также (по крайней мере все версии, которые я когда-либо видел); не можете Вы просто использовать sleep 600
на обоих?
Вот быстрый-и-грязный сценарий оболочки, который мог бы помочь Вам. Скорректируйте выходной формат к чему-то, что это легко проанализировать для Вас. Нахождение правильного значка могло использовать некоторое улучшение для выбирания изображения с самым высоким разрешением. Возможно, существует лучший способ получить оптимальное использование значка 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
Насколько я помню /usr/share/applications/
конкретный диспетчер Windows Gnome и не содержит запись для каждого приложения в Вашей системе (BTW, необходимо определить то, что делает Вы подразумеваете под приложением).
В любом случае можно просто перечислить записи в каталоге
/usr/share/applications
.
– Marco
15.06.2012, 17:58