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目录下,未使用自定义图标。
部署操作
我尝试了两种部署方式:
- 将桌面文件复制到
$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时正常显示preferences-color图标,但启动HelloWorld4仅显示默认部件图标,重启系统后问题仍存在。
希望以上信息足够详细,欢迎提供故障排查建议。
内容的提问来源于stack exchange,提问作者CSquared
相关产品推荐
相关产品推荐

