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!