没有存储这些图标的默认位置。任何应用程序(-developer)都可以将它们存储在认为合适的地方。
然而,好消息是指标通常不会安装无休止的文件和图像列表。我们可以通过(除了查看代码之外)查看命令的输出来限制我们的搜索:
dpkg-query -L <packagename>
Run Code Online (Sandbox Code Playgroud)
在我的例子中
dpkg-query -L placesfiles
Run Code Online (Sandbox Code Playgroud)
这将输出以下图像:
/opt/placesfiles/images/dir_icon.png
/opt/placesfiles/images/placesfiles64.png
/usr/share/pixmaps/placesfiles.png
Run Code Online (Sandbox Code Playgroud)
...这会使搜索非常有限。
从人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”:
Run Code Online (Sandbox Code Playgroud)
在Radiotray的情况下,我找到了以下.png文件(正在运行dpkg-query -L radiotray | grep png):
/usr/share/radiotray/images/radiotray_connecting.png
/usr/share/radiotray/images/radiotray_on.png
/usr/share/radiotray/images/radiotray_off.png
/usr/share/radiotray/images/radiotray.png
/usr/share/pixmaps/radiotray.png
Run Code Online (Sandbox Code Playgroud)
...我们可以查看(内部)已安装的文件以查找字符串“icon”的匹配项。许多指标是用一种脚本语言(如python)编写的,这意味着它们非常易于搜索。
再次使用radiotray示例
dpkg-query -L radiotray | xargs grep icon
Run Code Online (Sandbox Code Playgroud)
在输出中我们发现 ao:
/usr/lib/python2.7/dist-packages/radiotray/SysTrayGui.py
self.icon.set_from_file(APP_ICON_CONNECT)
Run Code Online (Sandbox Code Playgroud)
查看文件SysTrayGui.py,我们可以看到:
dpkg-query -L <packagename>
Run Code Online (Sandbox Code Playgroud)
由此,我们可以得出结论,所提到的图标是在common(子)目录内的模块中定义的lib。(见这里python 如何找到它的模块,部分子目录)
在本模块中,我们可以阅读以下部分:
dpkg-query -L placesfiles
Run Code Online (Sandbox Code Playgroud)
......我们在这里......
使用我所有的指标,我设法使用上述方法找到了相应的图标。
然而,事实证明,将图像与代码一起编译成单个可执行文件是可能的。无需解释,在这种情况下,您将找不到单独的图像,也无法在不编辑代码和重新编译的情况下替换它们。
owncloud的情况似乎就是这样。使用上述方法显示一组图标已安装在/usr/share/icons/hicolor/<size>/apps. 然而,这些图标都没有在 ubuntu 上的指示器中使用。
在他问这个问题之前(和之后),OP 做了很多工作。其中之一是运行:
gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications
Run Code Online (Sandbox Code Playgroud)
...这给了我们一些有用的信息。输出包括一个部分:
('146028888067', 2, 'org.kde.StatusNotifierItem-22055-1', '/StatusNotifierItem/menu', '/tmp/iconcache-50ePXx', '', '', '', 'owncloud', 'ownCloud')
Run Code Online (Sandbox Code Playgroud)
查看目录/tmp/iconcache-50ePXx,我找到了指标使用的确切图标:
...这似乎证明这些图标是即时生成的;关闭 owncloud 会使目录及其图标消失。
事实证明,可以通过替换这些图标来更改指标的图标:
这证明这些确实是我们正在寻找的图标。
然而,要自动执行我手动执行的操作,需要一个脚本/包装器,因为每次启动 owncloud 时都会更改创建的目录名称。最方便的选择当然是更改 owncloud-client 的代码。
另请参阅我们在此处的讨论。
未完待续...
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |