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.
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:
- Copie y pegue el script en un archivo llamado
fuzzpak
(o lo que quieras que sea el comando). - 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). - 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