如何在 Linux 系统上设置可执行文件的图标(或 .ico 文件)?

3

我一直在尝试在LinuxmacOS上为可执行文件(.exe)设置图标。

我的了解是有三个位置可以设置图标:任务栏、窗口栏和可执行文件的缩略图。我已经在任务栏和窗口栏上设置了图标,但没有在exe文件上设置。(顺便说一下,在Windows上使用Visual Studio已经完成了这个过程。)

可能我不知道它的确切术语,因此我将在下面展示一个例子:这里输入图片描述

我猜.rc文件应该在makefile中。如果是这样,我也可以在macOS上解决它。如果不是,请告诉我如何在Linux和macOS上设置图标。请让我知道如何使用它并设置它。谢谢。

p.s. 我使用GLFWimage在窗口栏和任务栏上设置图标,并且正在使用OpenGL3和C++。

glfwSetWindowIcon(window, 1, &icon);
1个回答

1
我想应该在makefile中放置.rc文件。
虽然在Windows的.exe文件中存储图标有一种“标准化”的方法,但是对于Linux下最常见的可执行文件格式“ELF”文件,没有这样的方法。
任务栏和窗口栏上使用的图标通常被窗口管理器(例如任务栏)作为“X11窗口属性”存储。 “X11窗口属性”是由程序分配给窗口的一些数据。
程序必须提供图标图像作为数组,并调用函数XChangeProperty()(这就是函数glfwSetWindowIcon()间接执行的操作)。
并不需要将图标存储在特殊方式(类似于Windows中的.rc文件);程序可以简单地将图标存储在某个const数组中,甚至可以在调用XChangeProperty()之前计算图标图像数据。
正如我已经写过的,对于Linux的可执行文件来说,没有一种“标准化”的存储图标的方式。
一些文件管理器“知道”某些程序并显示相应的图标:它们知道“xterm”是一个终端程序,因此显示终端图标。但是,这个图标并不存储在可执行文件中,而是在文件管理器中:如果你将任何可执行文件重命名为“xterm”,终端图标将被显示。
有一个名为“elfres”的扩展(几年前它被称为“elficon”),允许向ELF可执行文件添加图标。该扩展的网站在这里。在链接的网站上,你还可以找到一个带有示例的屏幕截图,这样你就可以检查我是否理解了你的意思。
不幸的是,这是一个非标准的扩展。因此,“标准”的Linux安装不会检查可执行文件是否包含图标,因此不会显示图标。
如果你使用“elfres”方法,你必须安装一个特殊的插件;否则,可执行文件的图标将不会显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接