GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Starten Sie Flatpaks von Ihrem Linux-Terminal aus

Das Flatpak-Anwendungsverteilungsmodell hilft Entwicklern, Linux auf eine neue und einfache Weise anzusprechen, und es hilft Linux-Benutzern, mehr Anwendungen zu installieren, ohne sich Gedanken darüber machen zu müssen, welche Linux-Version sie verwenden. Es ist eine aufregende Technologie, und auf meinem Fedora Silverblue-System ist es die Standard-Paketinstallationsmethode. Alle meine Desktop-Anwendungen auf Silverblue und einige meiner Favoriten, die ich auf Slackware verwende, laufen als Flatpaks.

Es gibt jedoch eine Sache, die Flatpak in einigen Fällen etwas umständlich macht, und das ist sein Namensschema. Wenn ich beispielsweise Emacs als Flatpak installiere, wird es auf meinem System als org.gnu.emacs registriert . Dies geschieht anscheinend aus Angst, den Namen einer bestehenden Anwendung auf Systemebene zu überschreiben – wenn ich Emacs bereits installiert habe, was ist dann der Unterschied zwischen /usr/bin/emacs und die Flatpak-Installation von Emacs? Aus diesem Grund wird ein Flatpak wie Emacs in etwa (machen Sie sich darauf gefasst) in diesem Pfad installiert:

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

Es ist nicht von /usr/bin symbolisch verlinkt oder /opt , wird der Speicherort nicht zum Pfad des Benutzers hinzugefügt, und das Starten eines Flatpaks erfordert einen Aufruf wie diesen:

$ flatpak run org.gnu.emacs

Das ist viel Tipparbeit im Vergleich zur einfachen Eingabe von emacs .

Namen sind schwer zu merken

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Das Flatpak-Benennungsschema geht auch davon aus, dass Sie ein Flatpak oft genug verwenden, um sich den Reverse-DNS-Namen des Pakets zu merken. Abgesehen von der Struktur gibt es keinen Standard für die Benennung eines Flatpaks, daher könnte ein Flatpak Camel-Case verwenden, wie z. B. org.libreoffice.LibreOffice , während ein anderer möglicherweise eine Mischung verwendet, z. B. org.gimp.GIMP .

Einige Namen sind auch leichter zu merken als andere. Beispiel:org.glimpse_editor.Glimpse ist nur leicht zu merken wenn Sie sich erinnern, ist die Website http://glimpse-editor.org und nicht blick.org, und ein Unterstrich ersetzt den Bindestrich.

Aus Sicht der Flatpak-Entwickler ist dies kein Problem, da Flatpaks vom Desktop aus gestartet werden sollen. Sie müssen sich org.gnu.emacs nicht merken weil Sie es jederzeit über GNOME-Aktivitäten oder Ihr K-Menü oder einen ähnlichen grafischen Starter starten können.

Das trifft oft genug zu, aber manchmal ist es bequemer, eine Anwendung von einem Terminal aus zu starten, weil Sie das Terminal bereits verwenden. Egal, ob ich ein Bild in Glimpse oder eine Textdatei in Emacs oder eine Musikdatei in VLC haben möchte, ich bin im Terminal sehr häufig zu beschäftigt, um auf den Desktop zu "fallen" (obwohl es nur eine Taste entfernt ist!), Start Klicken Sie sich in der Anwendung durch die Menüs, um eine Datei zu öffnen, und klicken Sie dann durch mein Dateisystem, um die Datei zu finden, die ich öffnen möchte.

Es ist nur schneller, den Befehl gefolgt von der Datei einzugeben, die ich öffnen möchte. Aber wenn ich flatpak run org.something.app eingeben muss , ist es nicht.

Bash-Aliase verwenden, um ein Flatpak zu starten

Die offensichtliche Lösung für all dies ist ein Bash-Alias. Mit einem Bash-Alias ​​können Sie jedem beliebigen Wort jeden beliebigen Befehl zuweisen. Es gibt viele gebräuchliche Bash-Aliase, die fast jeder Linux-Benutzer auf seinem System hat, entweder durch bewusste Wahl oder weil die Distribution sie voreingestellt hat:

$ 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'

Sie können auch Aliase für Flatpaks erstellen:

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

Problem gelöst!

Bessere Interaktion mit Bash-Scripting

Es dauerte nicht lange, bis mir das manuelle Hinzufügen von Aliasnamen zu mühsam erschien. Und für mich ist es nicht die Aufgabe, sondern der Prozess. Das Öffnen eines Editors und das Hinzufügen eines Alias ​​geht bemerkenswert schnell, aber es unterbricht meinen Arbeitsablauf.

Was ich wirklich will, ist etwas, das ich mental und physisch an den anfänglichen Flatpak-Installationsprozess nach Bedarf anhängen kann . Nicht alle Flatpaks, die ich installiere, benötigen einen Alias. Hier ist zum Beispiel eine unvollständige Liste von Flatpaks auf meinem Silverblue-System:

$ 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

Ich werde Weather oder GNOME Calculator niemals vom Terminal aus starten. Ich werde Signal auch nie vom Terminal aus starten, da es eine Anwendung ist, die ich zu Beginn meines Tages öffne und nie schließe.

Daher habe ich für mich folgende Anforderungen definiert:

  • Hinzufügen eines Alias ​​nach Bedarf
  • Terminalbasierte Steuerung, passt also bequem am Ende meines Flatpak-Installationsprozesses
  • Macht eine Sache und macht es gut
  • Portabel über Fedora, RHEL, Slackware und jede andere Distribution, die ich zufällig jede Woche verwende

Die Lösung, für die ich mich in letzter Zeit entschieden habe, ist ein benutzerdefiniertes kleines Bash-Skript, das ich verwende, um Aliase für Flatpaks hinzuzufügen, auf die ich von meinem Terminal aus schnell zugreifen möchte. Hier ist das Skript:

#!/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

Das Skript verwenden

Wenn ich ein Flatpak installiere, das ich voraussichtlich vom Terminal starten möchte, beende ich den Vorgang mit diesem Skript:

$ 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

Wenn ein Alias ​​bereits vorhanden ist, wird er erkannt und kein neuer Alias ​​erstellt.

Ich kann auch einen Alias ​​entfernen:

$ pakrat remove emacs

Dies entfernt das Flatpak nicht und arbeitet nur mit den dedizierten flatpak_aliases Datei.

Alle Flatpak-Aliase werden zu ~/.bashrc.d/flatpak_aliases hinzugefügt , die Sie automatisch beziehen können, wenn Ihre Shell gestartet wird, indem Sie diese Art von Code in Ihre .bashrc einfügen oder .bash_profile oder .profile Datei:

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

unset rc

Flatpak-Einführung leicht gemacht

Flatpaks lassen sich sehr gut in Desktop-Linux integrieren und haben eine starke, reproduzierbare Infrastruktur hinter sich. Sie sind relativ einfach zu bauen und kinderleicht zu bedienen. Mit nur wenig zusätzlichem Aufwand können Sie sie in das Terminal bringen, damit Sie sie so verwenden können, wie es für Sie am besten geeignet ist. Es gibt wahrscheinlich mehrere andere Projekte wie dieses da draußen und wahrscheinlich ein paar in der Entwicklung, die weit fortgeschrittener sind als ein einfaches Bash-Skript, aber dieses hier hat bisher gut für mich funktioniert. Probieren Sie es aus oder teilen Sie Ihre benutzerdefinierte Lösung in den Kommentaren!


Linux
  1. Überwachen Sie Ihr Linux-System in Ihrem Terminal mit procps-ng

  2. Was ist Ihr Lieblings-Linux-Terminal-Trick?

  3. So ändern Sie die Farbe Ihres Linux-Terminals

  4. Was ist Ihr Lieblings-Linux-Terminal-Emulator?

  5. Fahren Sie den Windows-Rechner vom Linux-Terminal herunter

5 Möglichkeiten, Ihr Linux-Terminal aufzuteilen

Entspannen Sie am Feuer an Ihrem Linux-Terminal

Schlängeln Sie sich durch Ihr Linux-Terminal

Spielen Sie Tetris auf Ihrem Linux-Terminal

Fahren Sie eine Lokomotive durch Ihr Linux-Terminal

So zeichnen Sie Ihre Terminalsitzung unter Linux auf