如何在Gnome Shell中设置应用程序标题?

Chr*_*ade 9 python gtk gnome-3

我是Gtk +开发的新手,我正在尝试使用PyGObject和Gtk + 3.0编写应用程序.但是,当我从命令行在Gnome Shell中运行我的应用程序时,显示在左上角的应用程序名称(紧接在Activities热门角落的右侧)只是设置为Python源文件的名称我跑去启动应用程序.有没有办法设置名称出现在我的应用程序的Gnome Shell中?我看过Gtk.Application,虽然它似乎做了我想要的一些(从Gtk + 3.3开始,但无论如何),我似乎无法弄清楚如何修复活动名称或应用程序名称.

Rob*_*ord 14

gnome-shell尝试将窗口与应用程序(ShellApp实例)匹配并使用该名称.代码就在这里:http://git.gnome.org/browse/gnome-shell/tree/src/shell-window-tracker.c#n328

但如果找不到ShellApp窗口,那么它会回到使用指定的ICCCM WM_CLASS(规范在http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.5):http://git.gnome.org/browse/gnome-shell/tree/src/shell-app.c#n361

因此,如果您没有安装.desktop文件,以便从中找到应用程序名称,则会WM_CLASS在其中显示默认值.GTK根据可执行文件名自动生成.你可以在实现窗口之前覆盖它(这意味着在调用_show窗口之前)使用gtk_window_set_wmclass()

这是一个简单的例子,将显示为"Hello World".别忘了设置窗口标题!

#!/usr/bin/python
from gi.repository import Gtk

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.set_wmclass ("Hello World", "Hello World")
win.set_title ("Hello World")
win.show_all()
Gtk.main()
Run Code Online (Sandbox Code Playgroud)

  • 对于后代:GNOME Shell在顶部栏中显示`set_wmclass`的最后一个参数. (2认同)
  • 2018在这里。GNOME Shell [仍然回退](https://gitlab.gnome.org/GNOME/gnome-shell/blob/gnome-3-30/src/shell-app.c#L270) 使用 ICCCM 指定的 `WM_CLASS`。它的行为从 GNOME 3.14 到 GNOME 3.30 没有改变,但是对于 GNOME 3.32 有一项倡议 [retire application menus](https://blogs.gnome.org/aday/2018/10/09/farewell-application-menus /) 完全。`gtk_window_set_wmclass` 可能会被弃用,但使用它不会产生弃用通知(至少在 `Python` 中),即使是这样,我仍然建议使用它。 (2认同)