मैं जीटीके + विकास के लिए नया हूं, और मैं पीजीओजीजेक्ट और जीटीके + 3.0 का उपयोग करके एक ऐप लिखने की कोशिश कर रहा हूं। जब मैं कमांड लाइन से जीनोम शैल में अपना ऐप चलाता हूं, हालांकि, एप्लिकेशन का नाम ऊपरी-बाएं कोने में दिखाई देता है (तुरंत गतिविधियां हॉट कोने के दाईं ओर) पाइथन स्रोत फ़ाइल के नाम पर सेट होता है कि मैं ऐप शुरू करने के लिए भाग गया। क्या मेरे आवेदन के लिए नाम जीनोम शैल में दिखने का कोई तरीका है? मैंने Gtk.Aplication पर देखा है, और हालांकि ऐसा लगता है कि मैं कुछ चाहता हूं (जीटीके + 3.3 में शुरू होता है), मुझे लगता है कि गतिविधि नाम या एप्लिकेशन नाम को कैसे ठीक किया जाए।जीनोम शैल में एप्लिकेशन शीर्षक कैसे सेट करें?
उत्तर
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()
वंशावली के लिए: गनोम शैल शीर्ष बार में 'set_wmclass' को अंतिम तर्क दिखाता है। – wjt
विडंबना यह कहता है "इस फ़ंक्शन का उपयोग न करें।" [जीटीके डॉक्स] में (https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-set-wmclass)। हालांकि, मैं इसका उपयोग करने की सिफारिश करता हूं। – JayStrictor
यह फ़ंक्शन Gtk + 3.22 के रूप में प्रतिस्थापन के बिना बहिष्कृत है। – Aeyoun
मुझे लगता है कि नाम '.desktop' एक कार्यक्रम के साथ जुड़े फ़ाइल से दिलवाया जा सकता है। –
सुनिश्चित नहीं है, लेकिन अपने कार्यक्रम की शुरुआत में 'GLib.set_application_name()' कोशिश करें? – ptomato