簡體   English   中英

如何在 X11 (Ubuntu) 中設置圖標名稱

[英]How to set icon name in X11 (Ubuntu)

我使用內部工具包(沒有 Gnome 或 KDE)用 C++ 編寫了一個應用程序。 當我在 Ubuntu (18.04) 上運行它並按 alt-tab 時,我可以看到我為應用程序設置的圖標,但圖標下方沒有圖標名稱。 見附圖:終端有一個終端圖標和下面的“終端”字樣,但我自己的應用程序只有“未知”字樣。

在此處輸入圖片說明

大概我需要設置許多可能的 X11 窗口屬性之一,但我不知道是哪一個。 xprops 與終端窗口一起使用時,不會顯示任何值為“終端”的屬性。 我已經嘗試將屬性 _NET_WM_ICON_NAME (可能的選擇)設置為我選擇的名稱,但它沒有幫助。

如何將“未知”一詞更改為我選擇的內容? 再次 - 此應用程序使用內部工具包,它既不是 Gnome 也不是 KDE。

有一個函數:XSetWMName。 它需要一個 XTextProperty 作為參數:

void VTXWidget::setName (const std::string &name)
{
  XTextProperty tp;
  char *props[1];

  props[0] = strdup (name.c_str ());
  if (0 == props[0])
  {
    return;
  }

  if (!XStringListToTextProperty (props, 1, &tp))
  {
    TR_ERR ("Failed to convert text property");
  }
  else
  {
    XSetWMName (m_display, m_window, &tp);
    XFree (tp.value);
  }

  free (props[0]);
}

我有同樣的問題。 使用 XSetClassHint 解決了這個問題:



    XClassHint *class_hint = XAllocClassHint();
    
    if (class_hint)
    {
        class_hint->res_name = class_hint->res_class = (char *)application_name
        XSetClassHint(display, window, class_hint);
        XFree(class_hint);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM