Ubuntu下无法使用GTK4获取应用程序图标显示

问题描述 投票:0回答:1

最近有关 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 显示默认小部件图标。重新启动对结果没有影响。

希望我提供了足够的信息,但如果您有任何疑问,请告诉我。任何有关问题所在的建议都会非常有帮助。

icons gtk gnome gtk4
1个回答
0
投票

我的设置与您相同,但我遇到了 gtk4 的链接器错误。您可以发布“pkg-config --libs gtk4”的输出供我比较吗?

我的没有链接“gdk4”包,我不知道如何获取它。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.