BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

LinuxターミナルからFlatpaksを起動します

Flatpakアプリケーション配布モデルは、開発者がLinuxを新しく簡単な方法でターゲットにするのに役立ち、Linuxユーザーが実行しているLinuxのバージョンを気にせずにさらに多くのアプリケーションをインストールできるようにします。これはエキサイティングなテクノロジーであり、私のFedora Silverblueシステムでは、これがデフォルトのパッケージインストール方法です。 Silverblue上のすべてのデスクトップアプリケーションとSlackwareで使用するお気に入りのいくつかは、Flatpaksとして実行されています。

ただし、Flatpakを少し厄介にする場合が1つあります。それが、その命名スキームです。たとえば、EmacsをFlatpakとしてインストールすると、システムにorg.gnu.emacsとして登録されます。 。これは、明らかに、既存のシステムレベルのアプリケーションの名前を壊すのを恐れて行われます。すでにEmacsをインストールしている場合、/usr/bin/emacsの違いは何ですか。 とEmacsのFlatpakインストール?このため、EmacsのようなFlatpakは、次のパスのようなものにインストールされます(準備をしてください):

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

/usr/binからはシンボリックリンクされていません または/opt 、場所はユーザーのパスに追加されません。Flatpakを起動するには、次のような呼び出しが必要です。

$ flatpak run org.gnu.emacs

emacsを入力するだけの場合と比べると、多くの入力が必要です。 。

名前を覚えるのは難しい

Flatpakの命名スキームでは、パッケージの逆引きDNS名を覚えるのに十分な頻度でFlatpakを使用することも前提としています。構造を除けば、Flatpakに名前を付けるための標準がないため、1つのFlatpakでorg.libreoffice.LibreOfficeなどのキャメルケースを使用できます。 、一方、org.gimp.GIMPなどのミックスを使用する場合もあります 。

一部の名前も他の名前より覚えやすいです。たとえば、org.glimpse_editor.Glimpse 覚えやすいのみ そのWebサイトがglimpse.orgではなくhttps://glimpse-editor.orgであり、ダッシュの代わりにアンダースコアが使用されていることを覚えている場合。

Flatpak開発者の観点からは、Flatpaksはデスクトップから起動することを目的としているため、これは問題ではありません。 org.gnu.emacsを覚えておく必要はありません GNOMEアクティビティ、K-Menu、または同様のグラフィカルランチャーからいつでも起動できるためです。

これは十分な頻度で当てはまりますが、すでに端末を使用しているため、端末からアプリケーションを起動する方が便利な場合もあります。 Glimpseの画像、Emacsのテキストファイル、VLCの音楽ファイルのいずれが必要な場合でも、ターミナルで忙しくてデスクトップに「ドロップ」できません(キーが1つだけ離れていても)。起動します。アプリケーションで、メニューをクリックしてファイルを開き、ファイルシステムをクリックして開きたいファイルを見つけます。

コマンドの後に開きたいファイルを入力する方が速いです。ただし、flatpak run org.something.appと入力する必要がある場合 、そうではありません。

Bashエイリアスを使用してFlatpakを起動する

これらすべてに対する明らかな解決策は、Bashエイリアスです。 Bashエイリアスを使用すると、任意のコマンドをほぼすべての単語に割り当てることができます。意識的な選択によって、またはディストリビューションがそれらを事前設定するために、ほぼすべてのLinuxユーザーがシステム上に持っている多くの一般的なBashエイリアスがあります:

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

Flatpaksのエイリアスを作成することもできます:

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

問題は解決しました!

Bashスクリプトとのより良い相互作用

エイリアスを手動で追加するプロセスが私にとってあまりにも面倒だと感じるのにそれほど時間はかかりませんでした。そして私にとって、それはタスクではなくプロセスです。エディターを開いてエイリアスを追加するのは非常に高速ですが、ワークフローが中断されます。

私が本当に望んでいるのは、精神的および肉体的に、最初のFlatpakインストールプロセスに必要に応じて追加できるものです。 。インストールするすべてのFlatpakにエイリアスが必要なわけではありません。たとえば、SilverblueシステムのFlatpaksのリストの一部を次に示します。

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

ターミナルからWeatherまたはGNOMECalculatorを起動することはありません。一日の始めに開いて閉じないアプリケーションなので、ターミナルからSignalを起動することもありません。

したがって、私が自分で定義した要件は次のとおりです。

  • 必要に応じてエイリアスを追加
  • 端末ベースの制御なので、Flatpakのインストールプロセスの最後に快適にフィットします
  • 1つのことを実行し、それをうまく実行します
  • Fedora、RHEL、Slackware、および特定の週に使用しているその他のディストリビューション間で移植可能

私が最近決めた解決策は、ターミナルからすばやくアクセスしたいことがわかっているFlatpaksのエイリアスを追加するために使用するカスタムの小さなBashスクリプトです。スクリプトは次のとおりです。

#!/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
スクリプトの使用

LinuxターミナルからFlatpaksを起動します

ターミナルから起動したいFlatpakをインストールしたら、次のスクリプトでプロセスを終了します。

$ 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を削除せず、専用のflatpak_aliasesでのみ動作します ファイル。

すべてのFlatpakエイリアスが~/.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の起動が簡単になりました

FlatpaksはデスクトップLinuxと非常によく統合されており、その背後には強力で再現性のあるインフラストラクチャがあります。それらは比較的簡単に作成でき、簡単に使用できます。少しの追加作業で、それらをターミナルに移動して、自分に最適な方法で使用できるようにすることができます。おそらく、このようなプロジェクトは他にもいくつかあり、開発中のプロジェクトの中には、単純なBashスクリプトよりもはるかに高度なものがいくつかありますが、これは今のところうまく機能しています。試してみるか、コメントでカスタムソリューションを共有してください!


  1. Androidデバイスのサイドバーからアプリを起動する方法

    Androidデバイスでのアプリの起動は、さまざまな方法で実行できます。ホーム画面で利用できるアプリのショートカットを使用してアプリを起動することも、アプリドロワーを開いてアプリを起動することもできます。どちらもあなたのために仕事を成し遂げます。 これらの方法を使用してデバイス上のアプリを起動している場合でも、アプリにアクセスするための新しい方法があります。この新しい方法により、サイドバーからアプリを起動できます。 サイドバーからのアプリの起動 アプリのサイドバーをデバイスに追加するには、GooglePlayストアで無料で入手できるGloveboxというアプリを使用します。 1. Goo

  2. ターミナルを使用して Mac から Anaconda をアンインストールする方法

    強力なマネージャーである Anaconda をインストールしていて、アンインストールしたい場合は、こちらをご覧ください。この投稿では、Anaconda を削除し、他の重要なファイルのためにスペースを解放する方法について説明します。 Anaconda のクリーン アンインストールを行うには、いくつかの方法を使用します。 それでは、これ以上遅れることなく始めましょう。 アナコンダとは? 巨大なヘビであるアナコンダについて聞いたことがあるでしょう。ここで話している Anaconda は、機械学習、データ サイエンス、科学計算、人工知能で構成されています。これらの予測分析はすべて、スクリプト言語