特定のメニュー項目(アクセサリー/ユーティリティや教育など)にあるすべてのデスクトップファイルを取得してから、それらのいずれかを実行するbashスクリプトを実行する必要があります。これを行うには、どのターミナルコマンドを使用できますか?
.desktop
ファイルは、/usr/share/applications/
(システム全体)または~/.local/share/applications
(ユーザーごと)の下にあります。分類は、ファイルの「Categories」プロパティを設定することによって行われます。これは、メニューに表示されるものと正確に同じではない場合があるため、最初に正しいカテゴリ名を見つける必要があります。私のメニューには「ビュロ」というカテゴリがあります。これはドイツ語で「オフィス」を意味し、qpdfview
のランチャーが含まれています。 .desktop
ファイルの「Categories」行を確認するには、次のコマンドを実行します:
$ grep Categories /usr/share/applications/qpdfview.desktop
Categories=Viewer;Office;
これはプログラムの2つのカテゴリを示しているため、.desktop
ファイルでは「Office」と呼ばれています。 「Office」で分類されたすべての.desktop
ファイルのリストを取得するには、-l
フラグを使用してgrep
を再度使用し、一致しないファイル名のみを表示します。
$ grep -l Categories.*Office /usr/share/applications/*
/usr/share/applications/evince.desktop
/usr/share/applications/evince-previewer.desktop
/usr/share/applications/gnucash.desktop
/usr/share/applications/libreoffice-base.desktop
/usr/share/applications/libreoffice-calc.desktop
/usr/share/applications/libreoffice-draw.desktop
/usr/share/applications/libreoffice-impress.desktop
/usr/share/applications/libreoffice-math.desktop
/usr/share/applications/libreoffice-startcenter.desktop
/usr/share/applications/libreoffice-writer.desktop
/usr/share/applications/qpdfview.desktop
これがオフィスプログラムのリストです。今すぐそれらを実行するには、単にxdg-open
を使用します。例:
xdg-open /usr/share/applications/qpdfview.desktop
xdg-open
がシステムで機能しない場合は、ファイルから開始コマンドを抽出して直接実行することもできます。例:
exec $(grep -Po 'Exec=\K[^ ]*' /usr/share/applications/qpdfview.desktop)
あなたまたはスクリプトのユーザーが実行するプログラムをどのように選択するべきかについての情報を提供しなかったので、そのためのリンクをいくつか紹介します。
スクリプトで簡単に処理できるようにファイル名を配列に保存するのは、次のように簡単です。
options=("$(grep -l Categories.*Office /usr/share/applications/*)")