linux - 如何在 linux 系统中为可执行文件设置图标(或 .ico 文件)?

标签 linux macos icons exe ico

我一直在尝试在 linuxma​​cOS 中的可执行文件 (.exe) 上设置图标。

我了解到有 3 个位置的图标集:任务栏、窗口栏和可执行文件缩略图。 我已经在任务栏和窗口栏上设置了,但不是在 exe 文件上。 (顺便说一句,我已经使用 visual studio 在 Windows 中完成了其中的 3 个。)

我可能不知道它的确切术语,所以我将在下面展示示例: enter image description here

我想 .rc 文件应该在 makefile 中。 如果是这样,我也可以在 macOS 中解决它。 如果没有,我也想知道如何在 linux 和 macOS 中设置。 请让我知道如何使用它和设置它。提前致谢。

附注我使用 GLFWimage 在窗口栏和任务栏上设置图标,并在 openGL3 和 C++ 上工作。

glfwSetWindowIcon(window, 1, &icon);

最佳答案

I guess .rc file should be in makefile.

虽然在 Windows .exe 文件中有一种“标准化”的方式来存储图标,但对于“ELF”文件(Linux 下最常见的可执行文件格式)却没有这样的方法。

on taskbar and window bar

窗口管理器使用的图标(例如任务栏)通常存储为“X11 窗口属性”。 “X11 窗口属性”是程序分配给窗口的一些数据。

程序必须提供图标图像作为数组并调用函数 XChangeProperty()(这是函数 glfwSetWindowIcon() 间接执行的操作)。

没有必要以特殊方式存储图标(类似于Windows中的.rc文件);程序可以简单地将图标存储在一些 const 数组中,甚至可以在调用 XChangeProperty() 之前计算图标图像数据。

... but not on exe file.

正如我已经写过的,在 Linux 的可执行文件中没有“标准化”的方式来存储图标。

一些文件管理器“知道”某些程序并显示相应的图标:他们知道“xterm”是一个终端程序,所以他们显示终端图标。但是,这个图标并不存储在可执行文件中,而是存储在文件管理器中:如果将任何可执行文件重命名为“xterm”,将显示终端图标。

有一个名为“elfres”的扩展(几年前它被命名为“elficon”)允许向 ELF 可执行文件添加图标。 The web site of that extension is found here.在链接的网站上,您还可以找到 a screen shot with an example - 所以你可以检查我是否理解正确,这就是你在说什么。

不幸的是,这是一个非标准扩展。因此,“标准”Linux 安装不会检查可执行文件是否包含图标,因此不会显示图标。

如果使用“elfres”方式,必须安装专门的插件;否则不显示可执行文件的图标。

关于linux - 如何在 linux 系统中为可执行文件设置图标(或 .ico 文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64532266/

相关文章:

linux - Haskell:从/proc 读取。严格和懒惰的问题。过程统计

python - Mac OS X El Capitan下如何清理/Library/Python/2.7/site-packages

java - 如何使用 Java 从 SystemTray 中删除 TrayIcon

java - Android - 实现图标包支持

linux - 读取一个文件以搜索另一个文件并打印出缺失的行

c - 从不同进程强制移除 fcntl 锁

c++ - 静态对象未在 Mac OS X 上初始化

java - OS X 无法分离卷,hdiutil 错误

css - Font Awesome Icons 作为列表项或普通背景图像?

c - 从线程调用的函数中退出 pthread_exit