システムにインストールされているアプリケーションのリストが必要ですが、スタートメニューに従ってリストされているものだけが必要です。
パッケージ/依存関係などのリストに興味がないので、以下はあまり役に立ちません:
dpkg --get-selections | grep -v deinstall
これ は少し近いです。
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
ただし、名前はメニューにあるものと完全には一致せず、それらをグループ化する他の基準を満たしていません。
例えば見たい
Graphics
GIMP Image Editor
じゃない
gimp
要約すると、私が探しているのは、Alacarteが表示するものをテキストファイルに保存する方法です。
以下のpythonスクリプト)は、/usr/share/applications
のすべてのデスクトップファイルと(Categories
-section)セクションから(英語または国際*)インターフェイス名を読み取ります。多くのアプリケーションには複数のカテゴリがあるため、アプリケーションは複数のカテゴリに表示される可能性があります。
アプリケーションにCategories=
の言及がない場合、リストのUncategorized
セクションに記載されています。
*注一部のアプリケーション(Thunderbirdなど)には、すべての言語のインターフェイス名の広範なリストがあります。このスクリプトは、そのままで、国際的に使用されている最初のインターフェイス名を読み取ります。スクリプトは、特定の言語(存在する場合)で名前を読み取るように変更するか、システムの言語を自動的に読み取ることができますが、それにはより広範なコーディングが必要になります:)
使用するには:
以下のスクリプトをコピーして空のファイルに貼り付け、applist.py
として保存します。コマンド(ターミナルウィンドウ)で実行します。
python3 /path/to/script/applist.py
スクリプト:
#!/usr/bin/env python3
import os
uncategorized = []
categories = []
data = []
for item in os.listdir("/usr/share/applications"):
if item.endswith(".desktop"):
with open("/usr/share/applications/"+item) as data_source:
lines = data_source.readlines()
interface_name = [l.replace("\n", "").replace("Name=", "") \
for l in lines if l.startswith("Name=")][0]
if len([l for l in lines if l.startswith("Categories")]) == 0:
uncategorized.append(interface_name)
else:
subcats = [item for item in [l.replace("\n", "").replace(
"Categories=", "") for l in lines if l.startswith(
"Categories=")][0].split(";") if item != ""]
data.append([interface_name, subcats])
categories = categories + subcats
categories = sorted([item for item in set(categories)])
for item in categories:
applications = [subdata[0] for subdata in data if item in subdata[1]]
print(item)
for app in applications:
print(" "+app)
print("Uncategorized")
for item in uncategorized:
print(" "+item)
出力の印象を与えるには:
私の出力の小さなセクション:
Audio
Audacity
MuseScore
PulseAudio Volume Control
Rhythmbox
AudioVideo
Cheese
VLC media player
Audacity
Rhythmbox
MuseScore
Videos
OpenShot Video Editor
Brasero
PulseAudio Volume Control
Rhythmbox
AudioVideoEditing
Audacity
MuseScore
OpenShot Video Editor
BoardGame
Mahjongg
Calculator
Calculator
次のスクリプトは、必要な出力に非常に類似した出力を提供します。
var=$(echo $(for f in /usr/share/applications/*.desktop;do cat $f|grep -i categories|sed -e 's/Categories=//g;s/\;/\n/g';done|sort|uniq))
for n in $var
do
echo $n
for f in /usr/share/applications/*.desktop
do
echo -e -n "\t" $f|sed -e 's!/usr/share/applications/!!g;s/.desktop/::/g'
echo $(cat $f |grep -i categories|sed -e 's/Categories=//g;s/\;/:/g')
done |grep -i :$n: |sed s/'::.*'//
done
として出力を与えます
...
Development
bluefish
boa-constructor
Eclipse
gambas3
GNUSim8085
python2.7
python3.2
qtcreator
ubuntusdk
DiscBurning
brasero
furiusisomount
Documentation
Yelp
...
説明
var
:考えられるすべてのカテゴリのリストを保存します。また、パッケージ名(gimp)ではなく本名(GIMP Image Editor)を出力する別のスクリプトを試しましたが、一部のデスクトップファイルに改行が含まれていないため、奇妙な結果が得られます
これを実行する場合:
dpkg-query -W --showformat='${Package} ${Version} ${Section}\n' > filesystem.manifest
次に、filesystem.manifestは次のようになります。
abiword-common 2.9.2+svn20120213-1 editors
accountsservice 0.6.15-2ubuntu9.7 admin
acl 2.2.51-5ubuntu1 utils
acpi-support 0.140.1 admin
acpid 1:2.0.10-1ubuntu3 admin
activity-log-manager-common 0.9.4-0ubuntu3.2 utils
activity-log-manager-control-center 0.9.4-0ubuntu3.2 utils
adduser 3.113ubuntu2 admin
adium-theme-ubuntu 0.3.2-0ubuntu1 gnome
これにより、アプリケーションのすべての詳細が表示されます。
apt-cache show zim