Как установить заголовок приложения в Gnome Shell? - PullRequest
9 голосов
/ 17 февраля 2012

Я новичок в разработке Gtk + и пытаюсь написать приложение, используя PyGObject и Gtk + 3.0.Однако когда я запускаю свое приложение в Gnome Shell из командной строки, имя приложения, которое отображается в верхнем левом углу (непосредственно справа от горячего угла «Деятельности»), просто задается именем исходного файла Python.что я побежал, чтобы запустить приложение.Есть ли способ установить имя для отображения в Gnome Shell для моего приложения?Я посмотрел на Gtk.Application, и, хотя он, кажется, делает кое-что из того, что я хочу (начиная с Gtk + 3.3, в любом случае), я не могу понять, как исправить имя действия или имя приложения.

1 Ответ

14 голосов
/ 18 февраля 2012

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, чтобы найти имя приложения, вы получите значение по умолчанию * 1012. * 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()
...