10

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

4

1 回答 1

16

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()
于 2012-02-18T16:53:23.423 回答