O script python abaixo lê os nomes das interfaces (inglês ou internacional *) de todos os arquivos da área de trabalho em /usr/share/applications
, bem como seus Categories
-section. Ele lista todos os aplicativos encontrados, de acordo com suas categorias. Como muitos aplicativos têm várias categorias, os aplicativos podem aparecer em mais de uma categoria.
Se o aplicativo não tiver Categories=
mention, ele será mencionado na seção Uncategorized
abaixo na lista.
* Nota Algumas aplicações (como o Thunderbird) têm uma extensa lista de nomes de interface, para cada idioma. Este script, como é, lê o primeiro nome da interface, que é o internacionalmente usado. O script pode ser alterado para ler o nome em um idioma específico (se presente) ou ler automaticamente o idioma do sistema, mas isso precisaria de uma codificação um pouco mais extensa:)
Para usá-lo:
Copie o script abaixo, cole-o em um arquivo vazio e salve-o como applist.py
. execute-o pelo comando (em uma janela de terminal):
python3 /path/to/script/applist.py
O script:
#!/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)
Para dar uma impressão da saída:
Uma pequena seção da minha saída:
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