Contenido

Script: Lanzadores e íconos de aplicaciones AppImage en Linux

Crea accesos directos y accede fácilmente a tus App-Image.

Introducción

Este es un pequeño script escrito en Python que permite crear automáticamente lanzadores con íconos de las aplicaciones tipo “AppImage” desde donde estén descargadas.

Está realizado a partir de un script en Bash creado por Angel de uGeekAngel de uGeek.

Como funciona:

La aplicación funciona buscando archivos con extensión ".AppImage" en la carpeta apps o Applications de ubicada dentro de la carpeta del usuario actual. Es decir, que si tienen los archivos AppImage en otra ubicación, mejor ponerlos en alguna de estas carpetas.

Es buena idea descargar íconos en formato .png de la app en cuestión, y renombrarlo con el mismo nombre de al AppImage en cuentión. Luego copiarlos en una subcarpeta que se llame “icon”.

Ejemplo de directorios:
  • Aplicación: ~/appimage/Zettlr.AppImage
  • Icono de la aplicación: ~/appimage/icon/Zettlr.png
  • Archivo que será creado automáticamente: ~/.local/share/applications/Zettlr.desktop

El script

import os
import sys


# Función que establece las rutas
appfolder = "/media/datos/javier/Applications" # os.path.join(os.path.expanduser('~'), 'Apps/')
launcher = os.path.join(os.path.expanduser('~'),'.local/share/applications/')
if os.path.exists(appfolder) and os.path.isdir(appfolder):
    appfolder = appfolder
elif os.path.exists(os.path.join(os.path.expanduser('~'), '')) and os.path.isdir(os.path.join(os.path.expanduser('~'), 'appimage')):
    appfolder = os.path.join(os.path.expanduser('~'), 'appimage/')
else:
    print(f"Crea una carpera llamada {appfolder} y copia tus AppImages allí.")

# Carpeta de iconos
iconfolder = os.path.join(appfolder, 'icon/')
if os.path.exists(iconfolder) and os.path.isdir(iconfolder):
    iconfolder = iconfolder
elif os.path.exists(appfolder) and os.path.isdir(appfolder):
    os.mkdir(iconfolder)
else:
    print(f"Debes crear una carpeta {iconfolder} y copia tus iconos allí.")
    sys.exit()

# Crea un archivo .desktop que permita ejecutar la app
for app in os.listdir(appfolder):
    if app.endswith(".AppImage"):
        try:
            file = os.path.splitext(app)[0]
            file_launcher = open(f'{launcher}{file}.desktop' , 'w')
            file_launcher.write(f'''[Desktop Entry]
Name={file}
Comment={file}
Exec={appfolder}{file}.AppImage
Icon={iconfolder}{file}.png
Terminal=false
Type=Application
Categories=AppImage''')
            file_launcher.close()
        except:
            print("Los archivos ya existen.")

print(str(appfolder))
print(str(iconfolder))
print(launcher)

Espero que les haya servido. Saludos!