เอกสารประกอบสำหรับการพัฒนาส่วนขยายของ gnome shell?


22

ฉันต้องการพัฒนาส่วนขยายของ Gnome Shell เพียงเพราะอยู่ในรูปแบบจาวาสคริปต์ แต่ฉันได้ดูแล้วและมีเอกสารที่เป็นศูนย์เกือบทุกที่ที่ฉันมองคนพูดว่าใช้เอกสาร Gnome พื้นฐาน แต่สิ่งนี้ไม่ได้ช่วยฉันได้ ไม่พบเอกสารใด ๆ สำหรับการนำเข้าสำหรับส่วนขยายหรือ api javascript ชนิดใด ๆ สำหรับการพัฒนาส่วนขยายฉันพยายามค้นหาบทเรียนบางส่วน (ส่วนใหญ่ใช้สำหรับ Gnome 3.0 ไม่ใช่ 3.2) แต่ไม่มีอะไรช่วยเหลือ

ไม่มีใครรู้ว่าพวกเขากำลังเขียนเอกสารสำหรับการพัฒนาส่วนขยายหรือไม่? ฉันจะรักเอกสารที่ดีบางอย่าง ...


คุณเห็นหน้านี้แล้ว: live.gnome.org/GnomeShell/ ส่วนขยาย ?
Benjamin

คำถามที่คล้ายกันเกี่ยวกับ SO: stackoverflow.com/questions/13107743/ …
วิลฟ์

คำตอบ:


7

เหตุผลที่ฉันไม่พอใจกับรหัสตัวอย่างและแบบฝึกหัดคือพวกเขาแนะนำการนำเข้าแบบสุ่มจำนวนมากและไม่เคยอธิบายสิ่งที่พวกเขาใช้หรือจะใช้อย่างไร ฉันสร้างคำตอบของตัวเองที่คนอื่นสามารถเพิ่มได้เพื่อที่ผู้คนจะได้รู้ว่าพวกเขาสามารถเรียกฟังก์ชั่นอะไรได้บ้างพวกเขาสามารถนำเข้าอะไรได้ ฯลฯ

มีการสร้างเอกสารสำหรับGnome Shellแต่มันค่อนข้างไม่สมบูรณ์ - ฉันไม่พบสิ่งที่ฉันเห็นในแบบฝึกหัดตัวอย่างและส่วนขยายที่เผยแพร่มากมาย

เอกสารที่น่าเชื่อถือเพียงอย่างเดียวคือแหล่งที่มาของ Gnome Shell ไม่มีวิธีอื่นใดที่ทันสมัยหรือสมบูรณ์ในการรู้ว่ามีอะไรให้บ้าง

จุดเริ่มต้นสองจุดเหล่านี้ดีมาก:

แหล่งที่มาของ C แสดงว่ามีวัตถุสำคัญที่เรียกว่า globalว่าไม่จำเป็นต้องนำเข้าและให้การเข้าถึงสิ่งต่าง ๆ เช่นตัวจัดการหน้าต่าง (รวมถึงการโยงคีย์) ข้อมูลเซสชันหน้าจอที่มีอยู่และสิ่งอื่น ๆ นี่คือแหล่งที่มา:

ฉันต้องการทราบวิธีใช้global.displayวัตถุและตอนนี้เอกสารที่ดีที่สุดคือสิ่งที่ Alan Knowles ให้มามา

สิ่งอื่น ๆ สามารถนำเข้าผ่านการเชื่อมโยงวิปัสสนา GObject ตัวอย่างเช่น:

โดยทั่วไปคุณสามารถดูเอกสารอ้างอิงสำหรับองค์ประกอบ Gnome ต่างๆเพื่อค้นหาการนำเข้าอื่น ๆ

หมายเหตุเกี่ยวกับกระจกมอง:มีข้อผิดพลาดบางอย่างเกี่ยวกับการใช้การนำเข้าเหล่านี้ในกระจกมองแม้ว่า - ฉันเสียเวลามากแค่พยายามทดสอบสิ่งต่าง ๆ ทันที ตัวอย่างเช่น:

const Clutter = imports.gi.Clutter;

... ไม่ทำงานเพราะClutterมีอยู่แล้ว แต่แล้ว:

const MyClutter = imports.gi.Clutter;

... ยังไม่ทำงาน MyClutterไม่ได้กำหนดและไม่สามารถใช้งานได้ คุณต้องทำ:

MyClutter = imports.gi.Clutter;

แน่นอนในกรณีนี้ Clutterมีอยู่แล้วดังนั้นจึงไม่จำเป็นจริงๆ แต่เนื่องจากยังไม่ได้บันทึกสิ่งที่เป็นและยังไม่ได้อยู่ในเนมสเปซของกระจกมองหากคุณพยายามนำเข้าบางสิ่งและมีปัญหาเหล่านี้โปรดจำไว้

คำถามที่เหลืออยู่:

  • คือMainloopอะไร สิ่งนี้นำเข้ามาmain.jsและดูเหมือนว่าจะมีฟังก์ชั่นที่เกี่ยวข้องกับการวนลูปหลักของ GLib มีเอกสารประกอบสำหรับสิ่งนี้หรือไม่?
  • คือimports.miscอะไร ดูเหมือนว่ามีบางสิ่งที่มีประโยชน์จริง ๆ ในนั้นเช่นExtensionUtils- อะไรน่ะ?
  • คุณใช้ DBus อย่างไร แล้ววิปัสสนาล่ะ

4

เอกสารมีความล่าช้าเล็กน้อยแหล่งข้อมูลที่เป็นไปได้หนึ่งแหล่งคือMusings of plumber OSเช่นโพสต์นี้ในการอัปเดตส่วนขยายของ GNOME Shell เพื่อให้ทำงานกับเวอร์ชัน 3.2

คุณอาจลองใช้รายชื่อส่งเมลของ gnome ทั้งนี้ขึ้นอยู่กับข้อมูลที่คุณต้องการ


1
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
hhlp

3

ขั้นตอนการสอนแบบทีละขั้นตอนเพื่อสร้างส่วนขยายสำหรับ gnome 3.4 อาจช่วยได้: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial


1
มันบอกว่า: "[API ที่] เป็นเรื่องยากมากเพราะขาดเอกสาร ..." โอ้ดี
detly

1
ฉันตัดสินคุณโปรดปรานเนื่องจากหน้า Landing Page ที่มีการเชื่อมโยงที่มีประโยชน์มากมาย :)
detly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.