GNU/Linux >> Znalost Linux >  >> Linux

Spusťte Flatpaks z terminálu Linux

Model distribuce aplikací Flatpak pomáhá vývojářům zaměřit se na Linux novým a snadným způsobem a uživatelům Linuxu pomáhá instalovat více aplikací, aniž by se museli starat o to, jakou verzi Linuxu používají. Je to vzrušující technologie a na mém systému Fedora Silverblue je to výchozí metoda instalace balíčků. Všechny mé desktopové aplikace na Silverblue a několik mých oblíbených, které používám na Slackware, běží jako Flatpaks.

Jedna věc však dělá Flatpak v některých případech trochu nešikovným, a to je jeho schéma pojmenování. Když například nainstaluji Emacs jako Flatpak, zaregistruje se v mém systému jako org.gnu.emacs . Děje se tak zřejmě ze strachu, aby nedošlo k zablokování názvu existující aplikace na systémové úrovni – pokud již mám nainstalovaný Emacs, jaký je pak rozdíl mezi /usr/bin/emacs a instalace Flatpak Emacsu? Z tohoto důvodu se Flatpak jako Emacs nainstaluje do něčeho podobného (připravte se na to) této cesty:

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

Není to symbolicky odkazováno z /usr/bin nebo /opt , umístění není přidáno do cesty uživatele a spuštění Flatpak vyžaduje vyvolání, jako je toto:

$ flatpak run org.gnu.emacs

To je hodně psaní ve srovnání s pouhým zadáním emacs .

Jména se těžko pamatují

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Schéma pojmenování Flatpak také předpokládá, že používáte Flatpak dostatečně často, abyste si zapamatovali reverzní název DNS balíčku. Kromě struktury neexistuje žádný standard pro pojmenování Flatpak, takže jeden Flatpak by mohl používat camel-case, jako je org.libreoffice.LibreOffice , zatímco jiný může používat mix, například org.gimp.GIMP .

Některá jména se pamatují snadněji než jiná. Například org.glimpse_editor.Glimpse je snadno zapamatovatelné pouze pokud si pamatujete, jeho webová stránka je http://glimpse-editor.org, nikoli glimpse.org, a podtržítko nahrazuje pomlčku.

Z pohledu vývojářů Flatpak to není problém, protože Flatpaks jsou určeny ke spouštění z plochy. Nemusíte si pamatovat org.gnu.emacs protože jej můžete vždy spustit z Aktivity GNOME nebo z K-Menu nebo podobného grafického spouštěče.

To platí dost často, ale někdy je pohodlnější spustit aplikaci z terminálu, protože terminál již používáte. Ať už chci obrázek v Glimpse nebo textový soubor v Emacs nebo hudební soubor ve VLC, jsem velmi často příliš zaneprázdněn v terminálu, abych „vypadl“ na plochu (i když je to jen jeden klíč!), spusťte aplikaci, kliknutím přes nabídky otevřete soubor a poté kliknutím na můj souborový systém najděte soubor, který chci otevřít.

Jen je rychlejší napsat příkaz následovaný souborem, který chci otevřít. Ale pokud musím napsat flatpak run org.something.app , není.

Použití aliasů Bash ke spuštění Flatpak

Zřejmým řešením toho všeho je alias Bash. S aliasem Bash můžete přiřadit libovolný libovolný příkaz téměř jakémukoli slovu, které chcete. Existuje mnoho běžných aliasů Bash, které má na svém systému téměř každý uživatel Linuxu, buď vědomě, nebo protože je distribuce přednastavuje:

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

Můžete také vytvořit aliasy pro Flatpaks:

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

Problém vyřešen!

Lepší interakce se skriptováním Bash

Netrvalo dlouho a proces ručního přidávání aliasů mi připadal příliš pracný. A pro mě to není úkol, ale proces. Otevření editoru a přidání aliasu je pozoruhodně rychlé, ale je to přerušení mého pracovního postupu.

To, co opravdu chci, je něco, co mohu duševně i fyzicky přidat k počátečnímu instalačnímu procesu Flatpak podle potřeby . Ne všechny Flatpaky, které instaluji, vyžadují alias. Například zde je částečný seznam Flatpaků v mém systému 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

Nikdy nespustím Weather ani GNOME Calculator z terminálu. Nikdy také nespustím Signal z terminálu, protože je to aplikace, kterou otevřu na začátku dne a nikdy ji nezavřu.

Proto požadavky, které jsem si pro sebe definoval, jsou:

  • Přidání aliasu podle potřeby
  • Ovládání založené na terminálu, takže se pohodlně vejde na konec instalačního procesu Flatpak
  • Dělá jednu věc a dělá ji dobře
  • Přenosné přes Fedoru, RHEL, Slackware a jakoukoli jinou distribuci, kterou náhodou používám každý daný týden

Řešením, na které jsem se v poslední době rozhodl, je vlastní malý skript Bash, který používám k přidávání aliasů pro Flatpaky, ke kterým chci mít rychlý přístup ze svého terminálu. Zde je skript:

Zde se objevuje
#!/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

Použití skriptu

Když nainstaluji Flatpak, u kterého očekávám, že se bude chtít spustit z terminálu, dokončím proces tímto skriptem:

$ 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

Pokud alias již existuje, bude objeven a žádný nový alias se nevytvoří.

Mohu také odstranit alias:

$ pakrat remove emacs

Toto neodstraní Flatpak a funguje pouze na vyhrazených flatpak_aliases soubor.

Všechny aliasy Flatpak jsou přidány do ~/.bashrc.d/flatpak_aliases , který můžete automaticky získat při spuštění vašeho shellu umístěním tohoto způsobu kódu do vašeho .bashrc nebo .bash_profile nebo .profile soubor:

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

unset rc

Snadné spuštění Flatpak

Flatpaks se opravdu dobře integrují s desktopovým Linuxem a mají za sebou silnou, reprodukovatelnou infrastrukturu. Jsou relativně snadné na stavbu a jejich použití je hračka. S trochou většího úsilí je můžete přenést do terminálu, abyste je mohli použít způsobem, který vám nejlépe vyhovuje. Pravděpodobně existuje několik dalších podobných projektů a pravděpodobně i několik ve vývoji, které jsou mnohem pokročilejší než jednoduchý Bash skript, ale tento mi zatím funguje dobře. Vyzkoušejte to nebo se o své vlastní řešení podělte v komentářích!


Linux
  1. Jak změnit barvu vašeho terminálu Linux

  2. Jaký je váš oblíbený emulátor terminálu Linux?

  3. Vydejte se na dobrodružství ve svém linuxovém terminálu

  1. Monitorujte svůj systém Linux ve svém terminálu pomocí procps-ng

  2. Jaký je váš oblíbený linuxový terminálový trik?

  3. Vypněte počítač se systémem Windows z linuxového terminálu

  1. Spravujte svůj kalendář z terminálu Linux pomocí příkazu konsolekalendar

  2. Změňte velikost obrázku z terminálu Linux

  3. Jaký je váš oblíbený trik s linuxovým terminálem?