LINUX.ORG.RU

Как правильно установить значение WM_CLASS в приложении GNOME (GTK)?

 , , ,


0

1

Добрый день! Подскажите, какую функцию лучше использовать:

GLib.set_prgname (prgname)  
GLib.set_application_name (application_name)  
Gtk.Window.set_wmclass (wmclass_name, wmclass_class)  
(в документации - поддержка прекращена с 3.22)  

или использовать python-xlib?



Последнее исправление: r1a1 (всего исправлений: 2)

Вот объяснение. Но вот не ясно, в какое все же значение GTK ставит WM_CLASS. Проверь xprop WM_CLASS и тыкни в свое окно. Что там показывает?

https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass:

Don’t use this function. It sets the X Window System “class” and “name” hints for a window. According to the ICCCM, you should always set these to the same value for all windows in an application, and GTK+ sets them to that value by default, so calling this function is sort of pointless. However, you may want to call gtk_window_set_role() on each window in your application, for the benefit of the session manager. Setting the role allows the window manager to restore window positions when loading a saved session.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от ananas

А в эти не может? Они же могут отличаться от имени бинаря, в общем-то.

GLib.set_prgname (prgname)  
GLib.set_application_name (application_name)  
Zubok ★★★★★
()
Ответ на: комментарий от ananas

А, да, еще есть Instance. Тогда интересно, как он это свойство устанавливает. Ведь если сделать опцию -name у программы, то можно подмахнуть instance. Тогда надо знать, какое свойство он при этом использует.

(Хотя на эти соглашения все забили, но старые программы еще соблюдают):

A string that names the particular instance of the application to which the client that owns this window belongs. Resources that are specified by instance name override any resources that are specified by class name. Instance names can be specified by the user in an operating-system specific manner. On POSIX-conformant systems, the following conventions are used:

* If -name NAME is given on the command line, NAME is used as the instance name.

* Otherwise, if the environment variable RESOURCE_NAME is set, its value will be used as the instance name.

* Otherwise, the trailing part of the name used to invoke the program (argv[0] stripped of any directory names) is used as the instance name.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.