2012-02-17 12 views
8

Soy nuevo en el desarrollo de Gtk +, y estoy tratando de escribir una aplicación usando PyGObject y Gtk + 3.0. Sin embargo, cuando ejecuto mi aplicación en Gnome Shell desde la línea de comandos, el nombre de la aplicación tal como aparece en la esquina superior izquierda (inmediatamente a la derecha de la esquina activa de Actividades) se configura con el nombre del archivo fuente de Python que corrí para iniciar la aplicación. ¿Hay alguna forma de configurar el nombre para que aparezca en Gnome Shell para mi aplicación? Miré Gtk.Application, y aunque parece hacer algo de lo que quiero (comenzando en Gtk + 3.3, de todos modos), parece que no puedo encontrar la manera de arreglar el nombre de la actividad o el nombre de la aplicación.Cómo establecer el título de la aplicación en Gnome Shell?

+3

Creo que el nombre puede ser obtenido del archivo '.desktop' asociado a un programa. –

+2

No estoy seguro, pero intente 'GLib.set_application_name()' al comienzo de su programa? – ptomato

Respuesta

13

gnome-shell intenta hacer coincidir la ventana con una aplicación (una instancia de ShellApp) y usa ese nombre. El código de hacerlo es aquí: http://git.gnome.org/browse/gnome-shell/tree/src/shell-window-tracker.c#n328

Pero si no logra encontrar ShellApp de la ventana entonces se vuelve a utilizar el ICCCM especifica WM_CLASS (especificación está en http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.5) aquí: http://git.gnome.org/browse/gnome-shell/tree/src/shell-app.c#n361

Así que si estás no instalando un archivo .desktop para que encuentre el nombre de la aplicación, aparecerá el WM_CLASS predeterminado allí. GTK genera automáticamente en función del nombre del ejecutable. Puede anular eso antes de que se realice la ventana (esto significa antes de llamar al _show en la ventana) usando gtk_window_set_wmclass()

Aquí hay un ejemplo simple que aparecerá como "Hola mundo". ¡No olvides establecer un título para la ventana también!

#!/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() 
+1

Para la posteridad: GNOME Shell muestra el argumento final para 'set_wmclass' en la barra superior. – wjt

+0

Irónicamente dice "No use esta función". en los [documentos GTK] (https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass). Sin embargo, recomendaría usarlo. – JayStrictor

+0

Esta función está obsoleta sin reemplazo a partir de Gtk + 3.22. – Aeyoun

Cuestiones relacionadas