2012-02-17 13 views
8

मैं जीटीके + विकास के लिए नया हूं, और मैं पीजीओजीजेक्ट और जीटीके + 3.0 का उपयोग करके एक ऐप लिखने की कोशिश कर रहा हूं। जब मैं कमांड लाइन से जीनोम शैल में अपना ऐप चलाता हूं, हालांकि, एप्लिकेशन का नाम ऊपरी-बाएं कोने में दिखाई देता है (तुरंत गतिविधियां हॉट कोने के दाईं ओर) पाइथन स्रोत फ़ाइल के नाम पर सेट होता है कि मैं ऐप शुरू करने के लिए भाग गया। क्या मेरे आवेदन के लिए नाम जीनोम शैल में दिखने का कोई तरीका है? मैंने Gtk.Aplication पर देखा है, और हालांकि ऐसा लगता है कि मैं कुछ चाहता हूं (जीटीके + 3.3 में शुरू होता है), मुझे लगता है कि गतिविधि नाम या एप्लिकेशन नाम को कैसे ठीक किया जाए।जीनोम शैल में एप्लिकेशन शीर्षक कैसे सेट करें?

+3

मुझे लगता है कि नाम '.desktop' एक कार्यक्रम के साथ जुड़े फ़ाइल से दिलवाया जा सकता है। –

+2

सुनिश्चित नहीं है, लेकिन अपने कार्यक्रम की शुरुआत में 'GLib.set_application_name()' कोशिश करें? – ptomato

उत्तर

13

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 दिखाई देगा। जीटीके स्वचालित रूप से निष्पादन योग्य नाम के आधार पर उत्पन्न करता है। आप ओवरराइड कर सकते हैं इससे पहले कि खिड़की महसूस किया है (इस विंडो पर _show कॉल करने से पहले का मतलब है) कि gtk_window_set_wmclass()

यहाँ एक सरल उदाहरण है कि के रूप में "नमस्ते दुनिया" में बदल जाएगी है का उपयोग कर। एक विंडो शीर्षक भी सेट करना न भूलें!

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

वंशावली के लिए: गनोम शैल शीर्ष बार में 'set_wmclass' को अंतिम तर्क दिखाता है। – wjt

+0

विडंबना यह कहता है "इस फ़ंक्शन का उपयोग न करें।" [जीटीके डॉक्स] में (https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass)। हालांकि, मैं इसका उपयोग करने की सिफारिश करता हूं। – JayStrictor

+0

यह फ़ंक्शन Gtk + 3.22 के रूप में प्रतिस्थापन के बिना बहिष्कृत है। – Aeyoun

संबंधित मुद्दे