Un petit script qui va faire un
pamac list
ou pacman -Q
, donc un petit ls
sans prétention, qui a plus un intérêt pédagogique que pratique.Pour faire mumuse (corser le facile), il va prendre deux paramètres optionnels :
- le premier l'ordre de tri (size par défaut) (name,desc,repo,size,version)
- deuxième, afficher en plus le détail d'un paquet (pour test sans intérêt ici)
chmod +x pacls
) , on peut donc l'utiliser avec
./pacls size gcc
#!/usr/bin/python
# fichier pacls excécutable
import gi, sys
gi.require_version('Pamac', '1.0')
from gi.repository import Pamac # import /usr/share/gir-1.0/Pamac-1.0.gir
class bcolors: # un terminal coloré est un plus
HEADER = '\033[95m'
BLUE = '\033[94m'
GREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
DISABLE = '\033[02m'
WHITE = '\033[97m'
fr = { # je ne parle pas angliche
'app_name':'Application',
'desc':'Description',
'download_size':'Taille du paquet',
'icon':'Icône',
'installed_version':'Version',
'name':'Nom',
'origin':'Installé',
'repo':'Dépôt',
'size':'Taille installée',
'version':'Version'
}
def list_installed_pkgs(order: str, detail: str):
pkgs = db.get_installed_pkgs()
if not order in dir(pkgs[0]):
print(f'not found order:{order}')
order = 'size'
pkgs.sort(key=lambda x: getattr(x, order), reverse=False)
total = 0
for pkg in pkgs:
total += pkg.size
size = round(pkg.size/1000/1000, 2)
if size > 30:
size = str(size) + "Mo"
else:
size = ""
CORIGIN = bcolors.WHITE
if pkg.repo == "": # un méchant paquet non officiels !
CORIGIN = bcolors.FAIL
pkg.repo = '-'
line = (
f"{bcolors.GREEN}{pkg.name:{26}}{bcolors.ENDC}"
f"{bcolors.BOLD}{pkg.installed_version:{19}}{bcolors.ENDC}"
f"{CORIGIN}{pkg.repo:{10}}{bcolors.ENDC}"
f"{bcolors.DISABLE}{pkg.desc[:35]:{37}}{bcolors.ENDC}"
f"{size:{8}}"
)
print(line)
# juste pour voir ce que nous retourne cette fonction comme infos
if detail == pkg.name:
attributs = dir(pkg)
for a in attributs:
if a[0] == '_':
continue
print(f'{fr[a]} ({a}): {getattr(pkg,a)}')
i += 1
total = round(total/1000/1000/1000, 2)
print(f"\n{len(pkgs)} packages {total}Go")
if __name__ == "__main__":
config = Pamac.Config(conf_path="/etc/pamac.conf")
db = Pamac.Database(config=config)
order = 'size'
detail = ''
if len(sys.argv) > 1:
order = sys.argv[1]
if len(sys.argv) > 2:
detail = sys.argv[2]
list_installed_pkgs(order, detail)
fpc-src community 3.0.4-1 Sources for the FreePascal compiler 252.14Mo
komodo-edit - 11.1.0_18196-1 Free & Open-Source counterpart of A 267.46Mo
papirus-icon-theme-kde - 20161113-1 Papirus icon theme for KDE 309.75Mo
linux-firmware core 20180815.f1b95fe-1 Firmware files for Linux 311.05Mo
go extra 2:1.10.3-1 Core compiler tools for the Go prog 352.97Mo
libreoffice-fresh extra 6.1.0-2 LibreOffice branch which contains n 394.22Mo
lazarus community 1.8.4-3 Delphi-like IDE for FreePascal comm 734.37Mo
1349 packages 12.06Go