Как установить имя иконки в X11 (Ubuntu) - PullRequest
0 голосов
/ 01 мая 2018

Я написал приложение на C ++, используя собственный инструментарий (без Gnome или KDE). Когда я запускаю его в Ubuntu (18.04) и нажимаю alt-tab, я вижу значок, который я установил для приложения, но под значком нет имени значка. Смотрите прикрепленное изображение: на терминале есть значок терминала и слово «Терминал» внизу, но в моем собственном приложении есть только слово «Неизвестно».

enter image description here

Предположительно, мне нужно установить одно из многих возможных свойств окна X11, но я не знаю, какое именно. xprops, при использовании с окном терминала, не показывает никаких свойств, имеющих значение «Терминал». Я попытался установить для свойства _NET_WM_ICON_NAME (вероятный выбор) имя по своему выбору, но это не помогает.

Как я могу изменить слово «Неизвестно» на что-то по моему выбору? Опять же - это приложение использует внутренний инструментарий, который не является ни Gnome, ни KDE.

1 Ответ

0 голосов
/ 02 мая 2018

Для этого есть функция: 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]);
}
...