最近有关 GTK4 的文章详细介绍了显示应用程序图标所需的更改。 这篇文章对于解释如何部署桌面文件和图标特别有帮助。
我发现应用程序图标在 GTK3 应用程序中正确显示,但在 GTK4 应用程序中显示默认小部件图标。需要提前提到的一件事是,我在 Windows 10 下托管的 VirtualBox VM 中运行 Ubuntu 22.04 LTS 并进行了最新更新。
为了测试此行为,我创建了一个名为 HelloWorld.c 的文件,其中包含以下代码,该代码源自 GTK 项目的 入门 页面,并在 GTK3 和 GTK4 下成功编译:
#include <gtk/gtk.h>
static void
activate (GtkApplication* app,
gpointer user_data)
{
GtkWidget *window;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
gtk_window_present (GTK_WINDOW (window));
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
该文件位于名为“$HOME/Projects/HelloWorld3,4”的文件夹中,并被编译为生成名为 HelloWorld3 和 HelloWorld4 的可执行文件,如下所示:
gcc `pkg-config --cflags gtk+-3.0` HelloWorld.c -o HelloWorld3 `pkg-config --libs gtk+-3.0`
gcc `pkg-config --cflags gtk4` HelloWorld.c -o HelloWorld4 `pkg-config --libs gtk4`
HelloWorld3.desktop如下。为了简化此示例的问题,我没有安装任何自定义图标。 /usr/share/icons/hicolor/(图标大小)/apps 下已经有一个名为“preferences-color.png”的图标。当然,“(我的主文件夹)”只是此示例的占位符;我系统上的实际文件包含可执行文件的正确完整路径。
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Hello World GTK 3
Exec=/(my home folder)/Projects/HelloWorld3,4/HelloWorld3
Comment=Hello World with Application-Specific Icon
Icon=preferences-color
Terminal=false
Categories=Utility;GTK;
X-Desktop-File-Install-Version=0.26
HelloWorld4.desktop 如下(同样,“(我的主文件夹)”只是此示例的占位符):
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Hello World GTK 4
Exec=/(my home folder)/Projects/HelloWorld3,4/HelloWorld4
Comment=Hello World with Application-Specific Icon
Icon=preferences-color
Terminal=false
Categories=Utility;GTK;
X-Desktop-File-Install-Version=0.26
根据我在本文顶部引用的文章,桌面文件可以复制到 $HOME/.local/share/applications 或使用 desktop-file-install 安装在 /usr/share/applications 下。两种方法均已尝试,结果相同。为了完整起见,使用后一种方法如下:
sudo desktop-file-install --dir=/usr/share/applications ./HelloWorld3.desktop
sudo desktop-file-install --dir=/usr/share/applications ./HelloWorld4.desktop
总而言之,启动 HelloWorld3 显示首选项颜色图标,但启动 HelloWorld4 显示默认小部件图标。重新启动对结果没有影响。
希望我提供了足够的信息,但如果您有任何疑问,请告诉我。任何有关问题所在的建议都会非常有帮助。
我的设置与您相同,但我遇到了 gtk4 的链接器错误。您可以发布“pkg-config --libs gtk4”的输出供我比较吗?
我的没有链接“gdk4”包,我不知道如何获取它。
谢谢