फ्लैटपैक एप्लिकेशन वितरण मॉडल डेवलपर्स को नए और आसान तरीके से लिनक्स को लक्षित करने में मदद कर रहा है, और यह लिनक्स उपयोगकर्ताओं को लिनक्स के किस संस्करण के बारे में चिंता किए बिना अधिक एप्लिकेशन इंस्टॉल करने में मदद कर रहा है। यह एक रोमांचक तकनीक है, और मेरे फेडोरा सिल्वरब्लू सिस्टम पर, यह डिफ़ॉल्ट पैकेज स्थापना विधि है। सिल्वरब्लू पर मेरे सभी डेस्कटॉप एप्लिकेशन और स्लैकवेयर पर मेरे द्वारा उपयोग किए जाने वाले मेरे कई पसंदीदा फ़्लैटपैक्स के रूप में चल रहे हैं।
हालाँकि, कुछ मामलों में फ़्लैटपैक को थोड़ा अजीब बनाने वाली एक चीज़ है, और वह है इसकी नामकरण योजना। उदाहरण के लिए, जब मैं Emacs को फ़्लैटपैक के रूप में स्थापित करता हूँ, तो यह मेरे सिस्टम पर org.gnu.emacs
के रूप में पंजीकृत होता है . यह, जाहिरा तौर पर, मौजूदा सिस्टम-स्तरीय एप्लिकेशन के नाम को बंद करने के डर से किया जाता है - यदि मेरे पास पहले से ही Emacs स्थापित है, तो /usr/bin/emacs
के बीच क्या अंतर है? और Emacs का फ़्लैटपैक इंस्टॉलेशन? इस कारण से, Emacs जैसा फ़्लैटपैक कुछ इस तरह (इसके लिए तैयार हो जाओ) इस पथ पर स्थापित हो जाता है:
/var/lib/flatpak/app/org.gnu.emacs/current/active/export/bin/org.gnu.emacs
यह /usr/bin
. से सिम्लिंक नहीं है या /opt
, स्थान को उपयोगकर्ता के पथ में नहीं जोड़ा जाता है, और फ़्लैटपैक लॉन्च करने के लिए इस तरह के आह्वान की आवश्यकता होती है:
$ flatpak run org.gnu.emacs
यह केवल emacs
दर्ज करने की तुलना में बहुत अधिक टाइपिंग है ।
नाम याद रखना मुश्किल है
फ़्लैटपैक नामकरण योजना यह भी मानती है कि आप फ़्लैटपैक का उपयोग अक्सर पैकेज के रिवर्स डीएनएस नाम को याद रखने के लिए करते हैं। संरचना के अलावा, फ़्लैटपैक के नामकरण के लिए कोई मानक नहीं है, इसलिए एक फ़्लैटपैक ऊंट-केस का उपयोग कर सकता है, जैसे कि org.libreoffice.LibreOffice
, जबकि कोई अन्य मिश्रण का उपयोग कर सकता है, जैसे कि org.gimp.GIMP
।
कुछ नाम दूसरों की तुलना में याद रखने में आसान होते हैं। उदाहरण के लिए, org.glimpse_editor.Glimpse
याद रखना आसान है केवल अगर आपको याद है कि इसकी वेबसाइट https://glipse-editor.org है, न कि झलक.org, और एक अंडरस्कोर डैश को बदल देता है।
फ़्लैटपैक डेवलपर्स के दृष्टिकोण से, यह कोई समस्या नहीं है क्योंकि फ़्लैटपैक्स को डेस्कटॉप से लॉन्च करने का इरादा है। आपको org.gnu.emacs
remember याद रखने की ज़रूरत नहीं है क्योंकि आप इसे हमेशा गनोम गतिविधियों या अपने के-मेनू या इसी तरह के ग्राफ़िकल लॉन्चर से लॉन्च कर सकते हैं।
यह अक्सर पर्याप्त होता है, लेकिन कभी-कभी टर्मिनल से एप्लिकेशन लॉन्च करना अधिक सुविधाजनक होता है क्योंकि आप पहले से ही टर्मिनल का उपयोग कर रहे हैं। चाहे मुझे झलक में एक छवि चाहिए या Emacs में एक टेक्स्ट फ़ाइल या VLC में एक संगीत फ़ाइल, मैं बहुत बार टर्मिनल में डेस्कटॉप पर "ड्रॉप" करने के लिए बहुत व्यस्त हूं (भले ही यह सिर्फ एक कुंजी दूर है!), लॉन्च एप्लिकेशन, फ़ाइल खोलने के लिए मेनू के माध्यम से क्लिक करें, और फिर मेरे फाइल सिस्टम के माध्यम से उस फ़ाइल को खोजने के लिए क्लिक करें जिसे मैं खोलना चाहता हूं।
जिस फ़ाइल को मैं खोलना चाहता हूं उसके बाद कमांड टाइप करना तेज़ है। लेकिन अगर मुझे flatpak run org.something.app
टाइप करना है तो , ऐसा नहीं है।
फ्लैटपैक लॉन्च करने के लिए बैश उपनामों का उपयोग करना
इन सबका स्पष्ट समाधान एक बैश उपनाम है। बैश उपनाम के साथ, आप अपने इच्छित किसी भी शब्द को कोई भी मनमाना आदेश दे सकते हैं। कई सामान्य बैश उपनाम हैं जो लगभग हर लिनक्स उपयोगकर्ता के पास अपने सिस्टम पर होते हैं, या तो सचेत पसंद से या क्योंकि वितरण उन्हें पूर्व निर्धारित करता है:
$ 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'
आप फ़्लैटपैक्स के लिए भी उपनाम बना सकते हैं:
alias emacs='flatpak run org.gnu.emacs'
समस्या हल हो गई!
बैश स्क्रिप्टिंग के साथ बेहतर सहभागिता
मेरे लिए बहुत श्रमसाध्य महसूस करने के लिए मैन्युअल रूप से उपनाम जोड़ने की प्रक्रिया में अधिक समय नहीं लगा। और मेरे लिए, यह कार्य नहीं बल्कि प्रक्रिया है। एक संपादक खोलना और एक उपनाम जोड़ना उल्लेखनीय रूप से त्वरित है, लेकिन यह मेरे कार्यप्रवाह में एक विराम है।
जो मैं वास्तव में चाहता हूं वह कुछ ऐसा है जो मैं मानसिक और शारीरिक रूप से प्रारंभिक फ्लैटपैक इंस्टॉल प्रक्रिया में जोड़ सकता हूं आवश्यकतानुसार . मेरे द्वारा इंस्टॉल किए गए सभी फ़्लैटपैक्स को उपनाम की आवश्यकता नहीं है। उदाहरण के लिए, मेरे सिल्वरब्लू सिस्टम पर फ़्लैटपैक्स की आंशिक सूची यहां दी गई है:
$ 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
मैं टर्मिनल से कभी भी मौसम या गनोम कैलकुलेटर लॉन्च नहीं करूंगा। मैं कभी भी टर्मिनल से सिग्नल लॉन्च नहीं करूंगा, क्योंकि यह एक ऐसा एप्लिकेशन है जिसे मैं अपने दिन की शुरुआत में खोलता हूं और कभी बंद नहीं करता।
इसलिए, जिन आवश्यकताओं को मैंने अपने लिए परिभाषित किया है वे हैं:
- आवश्यकतानुसार उपनाम जोड़ना
- टर्मिनल-आधारित नियंत्रण, इसलिए यह मेरी फ़्लैटपैक इंस्टॉल प्रक्रिया के अंत में आराम से फिट बैठता है
- एक काम करता है और अच्छा करता है
- फेडोरा, आरएचईएल, स्लैकवेयर, और किसी भी अन्य डिस्ट्रो में पोर्टेबल जो मैं किसी भी सप्ताह का उपयोग कर रहा हूं
हाल ही में मैंने जो समाधान तय किया है वह एक कस्टम छोटी बैश स्क्रिप्ट है जिसका उपयोग मैं फ़्लैटपैक्स के लिए उपनाम जोड़ने के लिए करता हूं मुझे पता है कि मैं अपने टर्मिनल से जल्दी पहुंचना चाहता हूं। ये रही स्क्रिप्ट:
#!/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
स्क्रिप्ट का उपयोग करना
जब मैं एक फ़्लैटपैक स्थापित करता हूँ जो मैं टर्मिनल से लॉन्च करना चाहता हूँ, तो मैं इस स्क्रिप्ट के साथ प्रक्रिया समाप्त करता हूँ:
$ 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
यदि कोई उपनाम पहले से मौजूद है, तो उसे खोजा जाता है, और कोई नया उपनाम नहीं बनाया जाता है।
मैं एक उपनाम भी हटा सकता हूँ:
$ pakrat remove emacs
यह फ़्लैटपैक को नहीं हटाता है और केवल समर्पित flatpak_aliases
पर काम करता है फ़ाइल।
सभी फ़्लैटपैक उपनाम ~/.bashrc.d/flatpak_aliases
में जोड़े जाते हैं , जिसे आप अपने .bashrc
में कोड के इस तरीके को रखकर आपके शेल के लॉन्च होने पर स्वचालित रूप से प्राप्त कर सकते हैं या .bash_profile
या .profile
फ़ाइल:
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
unset rc
Flatpak लॉन्चिंग मेड इज़ी
फ्लैटपैक डेस्कटॉप लिनक्स के साथ वास्तव में अच्छी तरह से एकीकृत है, और उनके पीछे एक मजबूत, प्रतिलिपि प्रस्तुत करने योग्य बुनियादी ढांचा है। वे बनाने में अपेक्षाकृत आसान हैं और उपयोग में आसान हैं। थोड़े से अतिरिक्त प्रयास के साथ, आप उन्हें टर्मिनल में नीचे ला सकते हैं ताकि आप उनका उपयोग कर सकें जो आपके लिए सबसे अच्छा काम करता है। वहाँ शायद इस तरह की कई अन्य परियोजनाएँ हैं और शायद कुछ विकास में हैं जो एक साधारण बैश स्क्रिप्ट की तुलना में कहीं अधिक उन्नत हैं, लेकिन यह अब तक मेरे लिए अच्छा काम कर रहा है। इसे आज़माएं, या टिप्पणियों में अपना कस्टम समाधान साझा करें!