2012-02-17 6 views
8

Sono nuovo nello sviluppo di Gtk + e sto provando a scrivere un'app utilizzando PyGObject e Gtk + 3.0. Quando eseguo la mia app in Gnome Shell dalla riga di comando, tuttavia, il nome dell'applicazione visualizzato nell'angolo in alto a sinistra (immediatamente a destra dell'angolo attivo delle attività) è impostato sul nome del file di origine Python che ho corso per avviare l'app. C'è un modo per impostare il nome in Gnome Shell per la mia applicazione? Ho esaminato Gtk.Application, e anche se sembra che faccia un po 'di quello che voglio (a partire da Gtk + 3.3, comunque), non riesco a capire come risolvere il nome dell'attività o il nome dell'applicazione.Come impostare il titolo dell'applicazione in Gnome Shell?

+3

Penso che il nome possa essere recuperato dal file '.desktop' associato a un programma. –

+2

Non sono sicuro, ma prova 'GLib.set_application_name()' all'inizio del tuo programma? – ptomato

risposta

13

gnome-shell tenta di far corrispondere la finestra a un'app (un'istanza ShellApp) e utilizzare tale nome. Il codice di fare che è qui: http://git.gnome.org/browse/gnome-shell/tree/src/shell-window-tracker.c#n328

Ma se non riesce a trovare ShellApp per la finestra poi torna a utilizzare l'ICCCM specificato WM_CLASS (spec è a http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.2.5) qui: http://git.gnome.org/browse/gnome-shell/tree/src/shell-app.c#n361

Quindi, se siete non installando un file .desktop per trovare il nome dell'applicazione, verrà visualizzato automaticamente il valore WM_CLASS predefinito. GTK genera automaticamente in base al nome del file eseguibile. È possibile sovrascrivere quello prima che la finestra venga realizzata (questo significa prima di chiamare _show sulla finestra) utilizzando gtk_window_set_wmclass()

Ecco un semplice esempio che verrà visualizzato come "Hello World". Non dimenticare di impostare anche il titolo di una finestra!

#!/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

Per i posteri: GNOME Shell mostra l'argomento finale di 'set_wmclass' nella barra in alto. – wjt

+0

Ironia della sorte dice "Non usare questa funzione". nei [documenti GTK] (https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass). Tuttavia, consiglierei di usarlo. – JayStrictor

+0

Questa funzione è obsoleta senza sostituzione a partire da Gtk + 3.22. – Aeyoun

Problemi correlati