GNU/Linux >> Tutoriels Linux >  >> Linux

Lancez Flatpaks depuis votre terminal Linux

Le modèle de distribution d'applications Flatpak aide les développeurs à cibler Linux d'une manière nouvelle et simple, et il aide les utilisateurs de Linux à installer plus d'applications sans se soucier de la version de Linux qu'ils utilisent. C'est une technologie passionnante, et sur mon système Fedora Silverblue, c'est la méthode d'installation de paquet par défaut. Toutes mes applications de bureau sur Silverblue et plusieurs de mes applications préférées que j'utilise sur Slackware s'exécutent en tant que Flatpaks.

Cependant, il y a une chose qui rend Flatpak un peu gênant dans certains cas, et c'est son schéma de nommage. Par exemple, lorsque j'installe Emacs en tant que Flatpak, il est enregistré sur mon système sous le nom org.gnu.emacs . Ceci est fait, apparemment, de peur d'écraser le nom d'une application existante au niveau du système - si j'ai déjà installé Emacs, alors quelle est la différence entre /usr/bin/emacs et l'installation Flatpak d'Emacs ? Pour cette raison, un Flatpak comme Emacs est installé sur quelque chose comme (préparez-vous) ce chemin :

/var/lib/flatpak/app/org.gnu.emacs/current/active/export/bin/org.gnu.emacs

Ce n'est pas un lien symbolique depuis /usr/bin ou /opt , l'emplacement n'est pas ajouté au chemin de l'utilisateur et le lancement d'un Flatpak nécessite une invocation comme celle-ci :

$ flatpak run org.gnu.emacs

C'est beaucoup de frappe par rapport à la simple saisie de emacs .

Les noms sont difficiles à retenir

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Le schéma de nommage Flatpak suppose également que vous utilisez un Flatpak assez souvent pour mémoriser le nom DNS inverse du package. Mis à part la structure, il n'y a pas de norme pour nommer un Flatpak, donc un Flatpak peut utiliser la casse camel, comme org.libreoffice.LibreOffice , tandis qu'un autre pourrait utiliser un mélange, tel que org.gimp.GIMP .

Certains noms sont également plus faciles à retenir que d'autres. Par exemple, org.glimpse_editor.Glimpse est facile à retenir seulement si vous vous souvenez que son site Web est http://glimpse-editor.org, plutôt qu'aperçu.org, et un trait de soulignement remplace le tiret.

Du point de vue des développeurs de Flatpak, ce n'est pas un problème car les Flatpaks sont destinés à être lancés depuis le bureau. Vous n'avez pas à vous souvenir de org.gnu.emacs car vous pouvez toujours le lancer depuis GNOME Activities ou votre K-Menu ou un lanceur graphique similaire.

Cela est assez souvent vrai, mais il est parfois plus pratique de lancer une application à partir d'un terminal car vous utilisez déjà le terminal. Que je veuille une image dans Glimpse ou un fichier texte dans Emacs ou un fichier musical dans VLC, je suis très souvent trop occupé dans le terminal pour "lâcher" sur le bureau (même s'il n'y a qu'une touche !), lancez l'application, cliquez sur les menus pour ouvrir un fichier, puis cliquez sur mon système de fichiers pour trouver le fichier que je veux ouvrir.

C'est juste plus rapide de taper la commande suivie du fichier que je veux ouvrir. Mais si je dois taper flatpak run org.something.app , ce n'est pas le cas.

Utiliser des alias Bash pour lancer un Flatpak

La solution évidente à tout cela est un alias Bash. Avec un alias Bash, vous pouvez attribuer n'importe quelle commande arbitraire à presque n'importe quel mot de votre choix. Il existe de nombreux alias Bash courants que presque tous les utilisateurs de Linux ont sur leur système, soit par choix conscient, soit parce que la distribution les a prédéfinis :

$ grep alias ~/.bashrc
alias cp='cp -v'
alias rm='/usr/bin/local/trashy'
alias mv='mv -v'
alias ls='ls --color'
alias ll='ls -l --color'
alias lh='ll -h'

Vous pouvez également créer des alias pour les Flatpaks :

alias emacs='flatpak run org.gnu.emacs'

Problème résolu !

Meilleure interaction avec les scripts Bash

Il n'a pas fallu longtemps pour que le processus d'ajout manuel d'alias me paraisse trop laborieux. Et pour moi, ce n'est pas la tâche mais le processus. Ouvrir un éditeur et ajouter un alias est remarquablement rapide, mais c'est une pause dans mon flux de travail.

Ce que je veux vraiment, c'est quelque chose que je peux, mentalement et physiquement, ajouter au processus d'installation initial de Flatpak si nécessaire . Tous les Flatpaks que j'installe ne nécessitent pas d'alias. Par exemple, voici une liste partielle des Flatpaks sur mon système Silverblue :

$ find /var/lib/flatpak/app/* -maxdepth 0 -type d | tail -n5
/var/lib/flatpak/app/org.gnome.baobab
/var/lib/flatpak/app/org.gnome.Calculator
/var/lib/flatpak/app/org.gnome.Calendar
/var/lib/flatpak/app/org.gnome.Characters
/var/lib/flatpak/app/org.gnome.clocks
/var/lib/flatpak/app/org.gnome.Contacts
/var/lib/flatpak/app/org.gnome.eog
/var/lib/flatpak/app/org.gnome.Evince
/var/lib/flatpak/app/org.gnome.FileRoller
/var/lib/flatpak/app/org.gnome.font-viewer
/var/lib/flatpak/app/org.gnome.gedit
/var/lib/flatpak/app/org.gnome.Logs
/var/lib/flatpak/app/org.gnome.Maps
/var/lib/flatpak/app/org.gnome.NautilusPreviewer
/var/lib/flatpak/app/org.gnome.Rhythmbox3
/var/lib/flatpak/app/org.gnome.Screenshot
/var/lib/flatpak/app/org.gnome.Weather
/var/lib/flatpak/app/org.gnu.emacs
/var/lib/flatpak/app/org.signal.Signal

Je ne lancerai jamais Weather ou GNOME Calculator depuis le terminal. Je ne lancerai jamais Signal depuis le terminal non plus, car c'est une application que j'ouvre au début de ma journée et que je ne ferme jamais.

Par conséquent, les exigences que je me suis définies sont :

  • Ajout d'un alias selon les besoins
  • Contrôle basé sur le terminal, donc il s'adapte confortablement à la fin de mon processus d'installation Flatpak
  • Fait une chose et la fait bien
  • Portable sur Fedora, RHEL, Slackware et toute autre distribution que j'utilise chaque semaine

La solution que j'ai choisie récemment est un petit script Bash personnalisé que j'utilise pour ajouter des alias pour les Flatpaks auxquels je sais que je veux accéder rapidement depuis mon terminal. Voici le script :

#!/bin/sh
# GPLv3 appears here
# gnu.org/licenses/gpl-3.0.md

# vars
SYMRC=.bashrc.d
SYMDIR=$HOME/$SYMRC
SYMFILE=flatpak_aliases

# exit on errors
set -e

# this is where the aliases lives
if [ ! -d $SYMDIR ]; then
    mkdir "${SYMDIR}"
    touch "${SYMDIR}"/"${SYMFILE}"
fi

sourcer() {
    echo 'Run this command to update your shell:'
    echo ". ${SYMDIR}/${SYMFILE}"
}

lister() {
    cat "${SYMDIR}"/"${SYMFILE}"
}

adder() {
    grep "alias ${ARG}\=" "${SYMDIR}"/"${SYMFILE}" && i=1
    [[ $VERBOSE ]] && echo "$i"

    if [ $i > 0 ]; then
        echo "Alias for ${ARG} already exists:"
        grep "alias ${ARG}=" "${SYMDIR}"/"${SYMFILE}"
        exit
    else
        echo "alias ${ARG}='${COMMAND}'" >> "${SYMDIR}"/"${SYMFILE}"
        [[ $VERBOSE ]] && echo "Alias for ${ARG} added"
        sourcer
    fi

    unset i
}

remover() {
    echo "Removing stuff."
    sed -i "/alias ${ARG}\=/d" "${SYMDIR}"/"${SYMFILE}"
    sourcer
}

# arg parse
while [ True ]; do
    if [ "$1" = "--help" -o "$1" = "-h" ]; then
        echo " "
        echo "$0 add --command 'flatpak run org.gnu.emacs' emacs \# create symlink for emacs"
        echo "$0 add --command 'flatpak run org.gnu.emacs -fs' emacs-fs \# create symlink for emacs in fullscreen"
        echo "$0 remove emacs \# remove emacs symlink"
        echo "$0 list         \# list all active flatpak symlinks"
        echo " "
        exit
    elif [ "$1" = "--verbose" -o "$1" = "-v" ]; then
        VERBOSE=1
        shift 1
    elif [ "$1" = "list" ]; then
        MODE="list"
        shift 1
    elif [ "$1" = "add" ]; then
        MODE="add"
        shift 1
    elif [ "$1" = "remove" ]; then
        MODE="remove"
        shift 1
    elif [ "$1" = "--command" -o "$1" = "-c" ]; then
        COMMAND="${2}"
        shift 2
    else
        break
    fi
done

#create array, retain spaces
ARG=( "${@}" )

case $MODE in
    add)
        adder
        ;;
    list)
        lister
        ;;
    remove)
        remover
        ;;
    *)
        echo "You must specify an action <list|add|remove>"
        exit 1
esac

Utiliser le script

Lorsque j'installe un Flatpak que je m'attends à vouloir lancer depuis le terminal, je termine le processus avec ce script :

$ flatpak install org.gnu.emacs
$ pakrat add -c 'flatpak run org.gnu.emacs' emacs
Alias for emacs added.
Run this command to update your shell:
. ~/.bashrc.d/flatpak_aliases

$ . ~/.bashrc.d/flatpak_aliases

Si un alias existe déjà, il est découvert et aucun nouvel alias n'est créé.

Je peux également supprimer un alias :

$ pakrat remove emacs

Cela ne supprime pas le Flatpak et ne fonctionne que sur les flatpak_aliases dédiés fichier.

Tous les alias Flatpak sont ajoutés à ~/.bashrc.d/flatpak_aliases , que vous pouvez sourcer automatiquement lorsque votre shell est lancé en plaçant ce type de code dans votre .bashrc ou .bash_profile ou .profile fichier :

if [ -d ~/.bashrc.d ]; then
  for rc in ~/.bashrc.d/*; do
    if [ -f "$rc" ]; then
      . "$rc"
    fi
  done
fi

unset rc

Le lancement de Flatpak simplifié

Les flatpaks s'intègrent très bien avec Linux de bureau et reposent sur une infrastructure solide et reproductible. Ils sont relativement faciles à construire et faciles à utiliser. Avec juste un petit effort supplémentaire, vous pouvez les faire descendre dans le terminal afin de pouvoir les utiliser de la manière qui vous convient le mieux. Il existe probablement plusieurs autres projets comme celui-ci et probablement quelques-uns en développement qui sont beaucoup plus avancés qu'un simple script Bash, mais celui-ci a bien fonctionné pour moi jusqu'à présent. Essayez-le ou partagez votre solution personnalisée dans les commentaires !


Linux
  1. Surveillez votre système Linux dans votre terminal avec procps-ng

  2. Quelle est votre astuce de terminal Linux préférée ?

  3. Comment changer la couleur de votre terminal Linux

  4. Quel est votre émulateur de terminal Linux préféré ?

  5. Arrêter la machine Windows à partir du terminal Linux

5 façons de diviser votre terminal Linux

Détendez-vous au coin du feu sur votre terminal Linux

Frayez-vous un chemin à travers votre terminal Linux

Jouez à Tetris sur votre terminal Linux

Conduisez une locomotive via votre terminal Linux

Comment enregistrer votre session de terminal sous Linux