GNU/Linux >> Belajar Linux >  >> Linux

Luncurkan Flatpaks dari terminal Linux Anda

Model distribusi aplikasi Flatpak membantu pengembang menargetkan Linux dengan cara baru dan mudah, dan membantu pengguna Linux menginstal lebih banyak aplikasi tanpa khawatir tentang versi Linux yang mereka jalankan. Ini adalah teknologi yang menarik, dan pada sistem Fedora Silverblue saya, ini adalah metode instalasi paket default. Semua aplikasi desktop saya di Silverblue dan beberapa favorit saya yang saya gunakan di Slackware berjalan sebagai Flatpaks.

Ada satu hal yang membuat Flatpak sedikit canggung dalam beberapa kasus, dan itulah skema penamaannya. Misalnya, ketika saya menginstal Emacs sebagai Flatpak, itu terdaftar di sistem saya sebagai org.gnu.emacs . Ini dilakukan, tampaknya, karena takut merusak nama aplikasi tingkat sistem yang ada—jika saya sudah menginstal Emacs, lalu apa perbedaan antara /usr/bin/emacs dan pemasangan Flatpak untuk Emacs? Untuk alasan ini, Flatpak seperti Emacs diinstal ke sesuatu seperti (bersiaplah untuk itu) jalur ini:

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

Itu tidak disinkronkan dari /usr/bin atau /opt , lokasi tidak ditambahkan ke jalur pengguna, dan meluncurkan Flatpak memerlukan permintaan seperti ini:

$ flatpak run org.gnu.emacs

Itu banyak mengetik dibandingkan dengan hanya memasukkan emacs .

Nama sulit diingat

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Skema penamaan Flatpak juga mengasumsikan Anda menggunakan Flatpak cukup sering untuk mengingat nama DNS balik paket. Selain struktur, tidak ada standar untuk penamaan Flatpak, jadi Flatpak bisa menggunakan camel-case, seperti org.libreoffice.LibreOffice , sementara yang lain mungkin menggunakan campuran, seperti org.gimp.GIMP .

Beberapa nama juga lebih mudah diingat daripada yang lain. Misalnya, org.glimpse_editor.Glimpse mudah diingat hanya jika Anda ingat situs webnya adalah http://glimpse-editor.org, bukan sekilas.org, dan garis bawah menggantikan tanda hubung.

Dari sudut pandang pengembang Flatpak, ini bukan masalah karena Flatpaks dimaksudkan untuk diluncurkan dari desktop. Anda tidak perlu mengingat org.gnu.emacs karena Anda selalu dapat meluncurkannya dari Aktivitas GNOME atau K-Menu Anda atau peluncur grafis serupa.

Hal ini cukup sering terjadi, tetapi terkadang lebih mudah untuk meluncurkan aplikasi dari terminal karena Anda sudah menggunakan terminal. Apakah saya ingin gambar di Glimpse atau file teks di Emacs atau file musik di VLC, saya sangat sering terlalu sibuk di terminal untuk "keluar" ke desktop (meskipun hanya satu kunci!), luncurkan aplikasi, klik menu untuk membuka file, lalu klik sistem file saya untuk menemukan file yang ingin saya buka.

Hanya saja lebih cepat mengetikkan perintah diikuti dengan file yang ingin saya buka. Tetapi jika saya harus mengetik flatpak run org.something.app , bukan.

Menggunakan alias Bash untuk meluncurkan Flatpak

Solusi yang jelas untuk semua ini adalah alias Bash. Dengan alias Bash, Anda dapat menetapkan perintah sewenang-wenang ke hampir semua kata yang Anda inginkan. Ada banyak alias Bash umum yang dimiliki hampir setiap pengguna Linux di sistem mereka, baik karena pilihan sadar atau karena distribusi telah mengaturnya:

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

Anda juga dapat membuat alias untuk Flatpaks:

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

Masalah terpecahkan!

Interaksi yang lebih baik dengan skrip Bash

Tidak butuh waktu lama untuk proses penambahan alias secara manual terasa terlalu melelahkan bagi saya. Dan bagi saya, itu bukan tugas tapi proses. Membuka editor dan menambahkan alias sangat cepat, tetapi ini mengganggu alur kerja saya.

Apa yang benar-benar saya inginkan adalah sesuatu yang saya dapat, secara mental dan fisik, tambahkan ke proses instalasi Flatpak awal sesuai kebutuhan . Tidak semua Flatpaks yang saya instal memerlukan alias. Misalnya, inilah sebagian daftar Flatpak di sistem Silverblue saya:

$ 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

Saya tidak akan pernah meluncurkan Kalkulator Cuaca atau GNOME dari terminal. Saya juga tidak akan pernah meluncurkan Signal dari terminal, karena ini adalah aplikasi yang saya buka di awal hari saya dan tidak pernah ditutup.

Oleh karena itu, persyaratan yang saya tentukan sendiri adalah:

  • Penambahan alias sesuai kebutuhan
  • Kontrol berbasis terminal, sehingga pas dengan nyaman di akhir proses penginstalan Flatpak saya
  • Melakukan satu hal dan melakukannya dengan baik
  • Portable di Fedora, RHEL, Slackware, dan distro lain yang kebetulan saya gunakan pada minggu tertentu

Solusi yang saya selesaikan akhir-akhir ini adalah skrip Bash kecil khusus yang saya gunakan untuk menambahkan alias untuk Flatpaks yang saya tahu ingin saya akses dengan cepat dari terminal saya. Berikut scriptnya:

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

Menggunakan skrip

Ketika saya menginstal Flatpak yang saya harapkan ingin diluncurkan dari terminal, saya menyelesaikan prosesnya dengan skrip ini:

$ 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

Jika alias sudah ada, itu akan ditemukan, dan tidak ada alias baru yang dibuat.

Saya juga bisa menghapus alias:

$ pakrat remove emacs

Ini tidak menghapus Flatpak dan hanya beroperasi pada flatpak_aliases khusus berkas.

Semua alias Flatpak ditambahkan ke ~/.bashrc.d/flatpak_aliases , yang dapat Anda sumber secara otomatis saat shell Anda diluncurkan dengan menempatkan kode seperti ini ke dalam .bashrc Anda atau .bash_profile atau .profile berkas:

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

unset rc

Peluncuran Flatpak menjadi mudah

Flatpaks terintegrasi dengan sangat baik dengan Linux desktop, dan mereka memiliki infrastruktur yang kuat dan dapat direproduksi di belakangnya. Mereka relatif mudah dibuat dan mudah digunakan. Dengan sedikit usaha tambahan, Anda dapat menurunkannya ke terminal sehingga Anda dapat menggunakannya dengan cara mana pun yang paling sesuai untuk Anda. Mungkin ada beberapa proyek lain seperti ini di luar sana dan mungkin beberapa dalam pengembangan yang jauh lebih maju daripada skrip Bash sederhana, tetapi yang ini telah bekerja dengan baik untuk saya sejauh ini. Cobalah, atau bagikan solusi khusus Anda di komentar!


Linux
  1. Apa trik terminal Linux favorit Anda?

  2. Apa trik terminal Linux favorit Anda?

  3. Matikan mesin Windows dari terminal linux

  1. Cara mengubah warna terminal Linux Anda

  2. Apa emulator terminal Linux favorit Anda?

  3. Lakukan petualangan di terminal Linux Anda

  1. Kelola kalender Anda dari terminal Linux dengan perintah konsolekalendar

  2. Ubah ukuran gambar dari terminal Linux

  3. Pantau sistem Linux Anda di terminal Anda dengan procps-ng