Linux 上で実行中の GUI アプリケーションの名前とパスを調べるにはどうすればよいでしょうか?

Linux 上で実行中の GUI アプリケーションの名前とパスを調べるにはどうすればよいでしょうか?

自分のシステムについてもっと知りたいと思っています。たとえば、GUI アプリケーション「印刷」を起動しました。タイトルに素敵な名前が付いています。

/usr/bin に「printing」ファイルはありません。

「printing」の代わりに、たとえば「printgui」のように、ファイルシステム内のアプリケーションの実際の名前を表示するトリックはありますか?

答え1

通常、GUIアプリケーションは「ランチャー」を通じて起動されます。つまり、。デスクトップファイル。メニューに「印刷」と表示されていますが、これはアプリケーションの「一般名」であるためです (詳細は投稿したリンクを参照)。使用している DE によっては、メニュー エントリを右クリックして または を選択すると、実行可能パスと、場合によってはそのアプリケーションの実行可能パスが表示されることがありますEditPropertiesこれは Gnome 3 などの DE では不可能なので、DE に関係なく機能するソリューションを次に示します。

.desktopファイルは/usr/share/applications、単にgrep-ingで配置されていますGenericName=印刷その文字列を含むランチャーを少なくとも 1 つリストする必要があります。

たとえば、私のシステムには「印刷」はありませんが、「テキスト エディター」はあります。アプリケーション/実行可能ファイルの実際の名前を知りたいので、次のコマンドを実行します。

grep "GenericName=Text Editor" /usr/share/applications/*

出力は次のようになります:

/usr/share/applications/gedit.desktop:GenericName=Text Editor

したがって、「テキスト エディター」の「ランチャー」は です/usr/share/applications/gedit.desktop。ここで、「テキスト エディター」の実際の名前と実行可能ファイルを知るには、Nameと の2 つのキーの値を grep する必要がありますExec

grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop 

出力は次のようになります:

Name=gedit
Exec=gedit %U

実行可能ファイルの完全なパスについては、以下を実行するだけです。

which gedit

そして次の結果が返されます:

/usr/bin/gedit

答え2

上記の回答をスクリプトに転記しました実行CmdGnome3.sh以下に示します。このユーティリティを使用して、gnome シェル名がわかっているアプリケーションをターミナルから呼び出す方法を調べます。

#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer" 
# Output: Found Launcher: "evince.desktop"
#         Name=Document Viewer
#         Exec=evince %U

launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"

関連情報