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.
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
importosimportsys# Función que establece las rutasappfolder="/media/datos/javier/Applications"# os.path.join(os.path.expanduser('~'), 'Apps/')launcher=os.path.join(os.path.expanduser('~'),'.local/share/applications/')ifos.path.exists(appfolder)andos.path.isdir(appfolder):appfolder=appfolderelifos.path.exists(os.path.join(os.path.expanduser('~'),''))andos.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 iconosiconfolder=os.path.join(appfolder,'icon/')ifos.path.exists(iconfolder)andos.path.isdir(iconfolder):iconfolder=iconfolderelifos.path.exists(appfolder)andos.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 appforappinos.listdir(appfolder):ifapp.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)