You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下GTK4应用图标无法正常显示的问题求助

关于GTK4应用图标无法正常显示的问题

近期有文章详细介绍了GTK4显示应用图标所需的修改,其中一篇对桌面文件和图标部署方式的讲解尤为有用。

环境与问题

我在Windows10宿主系统的VirtualBox虚拟机中运行最新版Ubuntu 22.04 LTS,遇到的问题是:GTK3应用的图标能正常显示,但GTK4应用仅显示默认部件图标。

测试代码

为复现现象,我基于GTK官方入门指南创建了HelloWorld.c文件,可同时编译为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目录下,编译生成两个可执行文件的命令如下:

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`

桌面文件配置

我创建了两个.desktop文件,示例中/(my home folder)/为占位符,实际使用可执行文件的完整路径:

HelloWorld3.desktop

#!/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

注:preferences-color.png图标已存在于/usr/share/icons/hicolor/*/apps目录下,未使用自定义图标。

部署操作

我尝试了两种部署方式:

  1. 将桌面文件复制到$HOME/.local/share/applications目录
  2. 使用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时正常显示preferences-color图标,但启动HelloWorld4仅显示默认部件图标,重启系统后问题仍存在。

希望以上信息足够详细,欢迎提供故障排查建议。

内容的提问来源于stack exchange,提问作者CSquared

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:09:19