GNU/Linux >> Linux の 問題 >  >> Ubuntu

デフォルト以外のステータスメニュー(別名インジケーター)で使用されるアイコンファイルを見つける方法は?

デフォルト以外のステータスメニュー(アプリケーションインジケーターまたはインジケーターアプレットとも呼ばれます)で使用されているアイコンの場所を確認したいのですが。

これらのアイコンの画像ファイルはどこにありますか?

私のスクリーンショットにはownCloudとRadiotrayがありますが、これらの特定のアイコンに固有ではない一般的な回答をお願いします。ファイル名やファイルの種類がわからないので検索が難しいです。

承認された回答:

デフォルト以外のインジケーターアイコンのデフォルトの場所は?

これらのアイコンが保存されるデフォルトの場所はありません。すべてのアプリケーション(-developer)は、適切と思われる場所にそれらを保存できます。

ただし 、良いニュースは、インジケーターは通常、ファイルや画像の無限のリストをインストールしないということです。コマンドの出力を調べることで(コードを調べることは別として)検索を制限できます:

dpkg-query -L <packagename>

私の例では

dpkg-query -L placesfiles

これは、とりわけ、次の画像を出力します:

//eadn-wc01-5196795.nxedge.io/opt/placesfiles/images/dir_icon.png
//eadn-wc01-5196795.nxedge.io/opt/placesfiles/images/placesfiles64.png
//eadn-wc01-5196795.nxedge.io/usr/share/pixmaps/placesfiles.png

…これにより、検索が非常に制限されます。

男からdpkg-query

   -l, --list [package-name-pattern...]
          List packages matching given pattern. If no package-name-pattern
          is  given,  list all packages in /var/lib/dpkg/status, excluding
          the ones marked as not-installed (i.e.  those  which  have  been
          previously purged). Normal shell wildcard characters are allowed
          in package-name-pattern. Please note you will probably  have  to
          quote  package-name-pattern to prevent the shell from performing
          filename expansion. For example this will list all package names
          starting with “libc6”:

ラジオトレイの場合 、次の.pngが見つかりました ファイル(dpkg-query -L radiotray | grep pngを実行 ):

//eadn-wc01-5196795.nxedge.io/usr/share/radiotray/images/radiotray_connecting.png
//eadn-wc01-5196795.nxedge.io/usr/share/radiotray/images/radiotray_on.png
//eadn-wc01-5196795.nxedge.io/usr/share/radiotray/images/radiotray_off.png
//eadn-wc01-5196795.nxedge.io/usr/share/radiotray/images/radiotray.png
//eadn-wc01-5196795.nxedge.io/usr/share/pixmaps/radiotray.png

本当に コードを検索して見つける必要があります

…インストールされたファイルを調べて、文字列「icon」に一致するものを探すことができます。インジケーターの多くは、スクリプト言語の1つ(pythonなど)で記述されています。 )、つまり、非常によく検索可能です。

再びradiotrayを使用します 例

dpkg-query -L radiotray | xargs grep icon

出力にはa.o.:

があります
/usr/lib/python2.7/dist-packages/radiotray/SysTrayGui.py 
                 self.icon.set_from_file(APP_ICON_CONNECT)

ファイルSysTrayGui.pyを調べます 、私たちは見ることができます:

from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF

このことから、言及されたアイコンはモジュールcommonで定義されていると結論付けることができます。 (サブ)ディレクトリ内lib 。 (Pythonがモジュールを見つける方法については、サブディレクトリのセクションをご覧ください。 )

このモジュールでは、次のセクションを読むことができます:

# Media path
if os.path.exists(os.path.abspath('../data/images/')):
    IMAGE_PATH = os.path.abspath('../data/images/')
else:
    IMAGE_PATH = '%s/%s/images' % (datadir, APPDIRNAME)

# Images
APP_ICON = os.path.join(IMAGE_PATH, 'radiotray.png')
APP_ICON_ON = os.path.join(IMAGE_PATH, 'radiotray_on.png')
APP_ICON_OFF = os.path.join(IMAGE_PATH, 'radiotray_off.png')
APP_ICON_CONNECT = os.path.join(IMAGE_PATH, 'radiotray_connecting.gif')
APP_INDICATOR_ICON_ON = "radiotray_on"
APP_INDICATOR_ICON_OFF = "radiotray_off"
APP_INDICATOR_ICON_CONNECT = "radiotray_connecting"

…そしてここにいます…

例外的な状況

実用的なすべてのインジケーターを使用して、上記の方法を使用して対応するアイコンを見つけることができました。

関連:フォルダ内の重複に近いファイルを見つけますか?

ただし、画像をコードと一緒に1つの実行可能ファイルにコンパイルすることは可能であることがわかりました。このような場合、別の画像が見つからないことや、コードを編集して再コンパイルせずに画像を置き換えることはできないことを説明する必要はありません。

owncloudの場合はそういうことのようです。上記の方法を使用すると、一連のアイコンが/usr/share/icons/hicolor/<size>/apps内にインストールされていることがわかりました。 。ただし、これらのアイコンはいずれも、ubuntuのインジケーター では使用されていません。 。

OPは、この質問をする前(および後)にかなりの作業を行いました。それらの1つは実行することでした:

gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications

…これは私たちにかなりの有用な情報を与えてくれます。出力にはセクションが含まれていました:

('146028888067', 2, 'org.kde.StatusNotifierItem-22055-1', '/StatusNotifierItem/menu', '/tmp/iconcache-50ePXx', '', '', '', 'owncloud', 'ownCloud')

ディレクトリ/tmp/iconcache-50ePXxを調べます 、インジケーターで使用されている正確なアイコンを見つけました:

…これは、これらのアイコンがその場で生成されることを証明しているようです。 owncloudを閉じると、ディレクトリとそのアイコンが消えます。

これらのアイコンを置き換えることで、インジケーターのアイコンを変更できることが判明しました:

これは、これらが確かに私たちが探していたアイコンであることを証明しています。

ただし、手動で行ったことを自動化するには、owncloudが起動されるたびに作成されたディレクトリの名前が変更されるため、スクリプト/ラッパーが必要になります。もちろん、最も便利なオプションは、owncloud-clientのコードを変更することです。

続く…


Ubuntu
  1. コンソールで大きなファイルをチェックする方法

  2. 特定のセクターでファイルを見つける方法は?

  3. デスクトップランチャーで使用されているPngファイルの名前を見つける方法は?

  1. コマンドラインでのファイルの検索(ハウツー)

  2. Linux ですべてのスパース ファイルを見つける方法

  3. 最大のディレクトリまたは最大のファイルを見つける方法は?

  1. コマンドラインでCentOS8でファイルを検索する方法

  2. Linux:デバイスに使用されているデバイスドライバーを見つける方法は?

  3. パスワードのハッシュに使用されるハッシュアルゴリズムを見つける方法は?