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?
risposta
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()
Per i posteri: GNOME Shell mostra l'argomento finale di 'set_wmclass' nella barra in alto. – wjt
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
Questa funzione è obsoleta senza sostituzione a partire da Gtk + 3.22. – Aeyoun
Penso che il nome possa essere recuperato dal file '.desktop' associato a un programma. –
Non sono sicuro, ma prova 'GLib.set_application_name()' all'inizio del tuo programma? – ptomato