Inicie Flatpaks desde su terminal con comandos más fáciles de recordar

Soy compatible con una variedad de aplicaciones multimedia y, a principios de este año, comencé a recomendar a mis clientes que instalaran muchas de ellas como paquetes planos. Je l'ai fait principalement parce que les versions Flatpak de ces applications ont été plus rapides à intégrer la prise en charge des codecs multimédias que les packages disponibles ailleurs, et c'est une fonctionnalité essentielle pour les créateurs de contenu utilisant les derniers équipements sur la bandeja. Los resultados han sido uniformemente exitosos, pero con un inconveniente: lanzar un Flatpak desde la terminal no siempre es lo más fácil de hacer.

El problema está bien documentado, pero en resumen, el nombre formal de una aplicación Flatpak es esencialmente un nombre de dominio inverso. Sin embargo, no existe un estándar para detalles como mayúsculas o esquemas de nombres. Esto puede hacer que sea difícil de recordar, y el comando en sí no es exactamente lacónico:

$ flatpak run io.atom.Atom

un nombre como io.atom.Atom es relativamente fácil de recordar (aunque no tan fácil como atom), pero hay nombres como org.gimp.GIMP (fácil de entender, pero ¿qué se escribe con mayúscula y qué no?) o org.eclipse.Java Donde fr.handbrake.ghb. Hay una variedad infinita por razones muy pragmáticas, pero es difícil memorizarlos como parte de una orden.

guion bash es un poder único que Linux brinda a sus usuarios, y es con este poder que encontré una solución sencilla para ayudar a mis usuarios a iniciar fácilmente un Flatpak desde una terminal.

Índice

    Conoce a Fuzzpak

    Esto es en realidad una solución para una solución. Ya escribí una solución para lanzar Flatpak, a la que llamo pakrat. Está inspirado en el alternative ordena e implementa alias de Bash para instalar Flatpaks. Sin embargo, este es un proceso manual y supuse en ese momento que el administrador del sistema instalaría los Flatpaks, crearía alias de Bash y los usuarios nunca notarían la diferencia.

    Esto fue antes de que apreciara por completo la flexibilidad de Flatpak, especialmente porque los usuarios podían instalar Flatpaks en su propio directorio de inicio. Permitir que los usuarios instalen sus propias aplicaciones está bien, pero parece extraño para un usuario que luego no pueda iniciar la aplicación que instaló desde una terminal. Mi pakrat la solución funcionaría para ellos, pero es un paso adicional que a muchos no parece gustarles dar.

    Así que escribí Fuzzpak, un script que realiza una búsqueda "difusa" de Flatpaks instalados por el usuario y ejecuta el primero que encuentra que contiene la cadena proporcionada. Por ejemplo, para iniciar GIMP:

    $ fuzzpak gimp

    Idealmente, desea darle a Fuzzpak el nombre de la aplicación que desea iniciar. Por ejemplo, para iniciar el editor de video kdenlive, tu utilizas fuzzpak kdenlive en lugar de, digamos, fuzzpak kde porque la cadena kde aparece en todas las aplicaciones de KDE, como org.kde.digikam, org.kde.krita, org.kde.kblocks, etc Lo mismo ocurre con los proyectos de GNOME o los proyectos que hacen referencia a GitLab o GitHub.

    Definir el directorio de Flatpak

    Por defecto, Fuzzpak busca en el directorio de inicio del usuario (~/.var/app) para Flatpaks instalados. Puedes usar el --directory opción (-d para abreviar) para definir otra ubicación:

    $ fuzzpak --directory /var/lib/flatpak/app krita

    Examine el script Fuzzpak

    El escenario es simple:

    #!/usr/bin/env bash
    #GPLv3
    
    DIR=${DIR:-$HOME/.var/app}
    CMD=${CMD:-flatpak run}
    
    launch_app() {
        find "${DIR}" -mindepth 1 -maxdepth 1 
         -type d -iname "*$1*" -printf '%fn' 
        | xargs $CMD
    }
    
    # parse opts
    while [ True ]; do
    if [ "$1" = "--help" -o "$1" = "-h" ]; then
        echo " "
        echo "$0 [OPTIONS]"
        echo "--directory, -d   Location of flatpaks (default: $HOME/.var/app"
        echo " "
        exit
    elif [ "$1" = "--directory" -o "$1" = "-d" ]; then
        DIR=$DIR
        shift 2
    else
        break
    fi
    done
    
    # main
    launch_app "${1}"

    en realidad es solo uno find comando que busca en el directorio de destino un patrón de cadena coincidente y luego inicia el primero que encuentra. El resto del script simplemente define la ubicación de los Flatpaks y opciones de análisis.

    No es elegante, y ciertamente puedo imaginar una solución de Python o Go que encuentre todas las coincidencias potenciales y le dé peso a la posición final en el nombre Flatpak al decidir qué lanzar. Sin embargo, he encontrado que es efectivo y lo he usado felizmente durante unos tres meses sin incidentes.

    Instalar Fuzzpak

    Si desea instalar el script localmente:

    1. Copie y pegue el script en un archivo llamado fuzzpak (o lo que quieras que sea el comando).
    2. Guarde el archivo en ~/.local/bin. (Es un directorio oculto, así que muestre los archivos ocultos en su administrador de archivos o guárdelos usando la terminal).
    3. Haga que el script sea ejecutable:
      $ chmod +x ~/.local/bin/fuzzpak

    De lo contrario, puede simplemente colocar fuzzpak en algún lugar de la ruta de su usuario. Ahora está listo para instalar Flatpaks con Fuzzpak. ¡Disfrutar!

    Artículos de interés

    Subir