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