บทแนะนำแบบย่อ: การสร้างแอปเพล็ตสำหรับอบเชย

เราจะสร้างแอพเพล็ตง่ายๆสำหรับ อบเชย. ในการเริ่มต้นเราต้องรู้ว่า อบเชย เสนอแอพเพล็ตประเภทต่างๆ:

  • TextApplet (แสดงฉลากบนแผงควบคุม)
  • ไอคอนแอปเพล็ต (แสดงไอคอนบนแผงควบคุม)
  • ข้อความIconApplet (ระบุทั้งไอคอนและป้ายกำกับบนแผงควบคุม)
  • แอพเพล็ต (สำหรับนักพัฒนาที่ไม่ยอมใครง่ายๆซึ่งแสดงช่องว่างที่คุณสามารถกรอกเองได้)

ในบทช่วยสอนนี้เราเพียงแค่ต้องการแสดงไอคอนบนแผงควบคุมดังนั้นเราจะใช้ "IconApplet" เพื่อตั้งโปรแกรมแอพเพล็ตของเราให้ อบเชยหรือ Gnome เราจำเป็นต้องรู้และรู้บางอย่างเกี่ยวกับการเขียนโปรแกรม Javascript

ตำแหน่งของรหัสของเรา

ก่อนอื่นมาดูตำแหน่งของไฟล์ของเรา ตำแหน่งของแอพเพล็ตของเรามีให้ตามที่อยู่ต่อไปนี้:

/.local/share/cinnamon/applets en o /usr/share/cinnamon/applets

อบเชย_Applet

ไฟล์ที่ประกอบเป็นแอพเพล็ตของเรา

อบเชย_Applet2let

เราดำเนินการกำหนด applet.js

รหัส

applet.js

ตอนนี้เรามาดูรหัสของ applet.js และอธิบายแต่ละประโยค:

รหัส applet.js เริ่มต้น

รหัสแอพเพล็ต

รหัสจาวาสคริปต์

มาดูแต่ละประโยคของโค้ดก่อนหน้านี้

const Lang = imports.lang; / * เราเรียกใช้ไลบรารี Gtk และ Lang ซึ่งเป็นส่วนพื้นฐานของแอปพลิเคชัน GNOME ทำให้เราสามารถสร้างหน้าต่างวิดเจ็ตและเชื่อมโยงได้ * / Const Applet = imports.ui.applet; / * เราเรียกใช้ไลบรารี Applet ที่ช่วยให้เราสร้างแอพเพล็ตสำหรับ Cinnamon และ Gnome และในเวลาเดียวกันก็ให้คุณสมบัติและฟังก์ชันแก่เรา * / Const GLib = imports.gi.GLib; / * GLib เป็นไลบรารีวิธีใช้ที่ช่วยให้เราสามารถทำสิ่งต่างๆใน GNOME ได้เช่นบอกว่าไฟล์ hellognome.html อยู่ที่ไหนมันเป็นไลบรารีที่รับผิดชอบสัญญาณ * / Const Gettext = imports.gettext.domain ('cinnamon -applets '); const _ = Gettext.gettext; // ไลบรารี Gettext ที่อนุญาตให้เรานำเข้าลักษณะเฉพาะของเราเองสำหรับเดสก์ท็อป Cinnamon const PopupMenu = imports.ui.popupMenu; / * PopupMenu เป็นไลบรารีสำหรับใช้ตัวจัดการเมนูช่วยให้เราสามารถเรียกใช้วิดเจ็ตเมนูป๊อปอัพที่มักใช้ในแอพเพล็ต * / Function MyApplet (การวางแนว) {this._init (การวางแนว); }

ตัวสร้างแอพเพล็ตของเราถูกกำหนดไว้ด้านล่างลองดูคลาสหรือคลาสของเรา:

คลาส gjs

เรามาดูนิยามของแต่ละประโยคต่อไป

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // เรากำหนด Class หรือ Class _init: function (orientation) ของเรา {Applet.IconApplet.prototype._init.call (นี่คือการวางแนว); / * เรากำหนดทิศทางผ่าน Cinnamon เราตั้งค่าว่าจะให้แผงแอพเพล็ตอยู่ที่ด้านบนหรือด้านล่าง (สิ่งนี้มีผลต่อการวางแนวของเมนูแอพเพล็ต) * / ลอง {// Do something} Catch (e) {// จะเกิดอะไรขึ้นหากเกิดข้อผิดพลาด } / * เราใช้การลอง / จับเพื่อตรวจจับข้อผิดพลาดที่อาจเกิดขึ้นในแอพเพล็ตของเราและเพื่อให้แน่ใจว่ามีการเขียนลงในบันทึกข้อผิดพลาดส่วนกลาง วิธีนี้หากมีข้อผิดพลาดคุณจะเห็นข้อผิดพลาดใน Looking Glass: กด Alt F2 พิมพ์ "lg" แล้วคลิกแท็บ "error" * / This.menuManager = new PopupMenu.PopupMenuManager (this); // สร้างเมนูป๊อปอัพและตั้งค่าตัวจัดการเมนู this.menu = new Applet.AppletPopupMenu (นี่คือการวางแนว); // เราสร้างเมนู this.menuManager.addMenu (this.menu); // เราเพิ่มเมนูลงในเมนูป๊อปอัพ this.makeMenu (); // เมนู makeMenu เราสร้างเมนูที่เรียกว่า makeMenu this.buildContextMenu (); // buildContextMenu เราสร้างเมนูที่เรียกว่า buildContextMenu this.set_applet_icon_name ("โฟลเดอร์"); / * เราสร้างแอพเพล็ตกรณีนี้ไม่ซ้ำกันไอคอนที่เลือกคือโฟลเดอร์หรือโฟลเดอร์เรายังสามารถสร้างแอพเพล็ตข้อความได้หากต้องการ * /

ตัวอย่างเช่นเปลี่ยนชื่อ "โฟลเดอร์" เป็น "เทอร์มินัล" "docky" เพื่อสร้างชื่อใหม่ดูชื่อไอคอน Gnome หรือ Cinnamon หรือธีมไอคอนอื่น ๆ

/usr/share/icons

Z7qwถ

this.set_applet_tooltip (_ ("คลิกที่นี่เพื่อฆ่าหน้าต่าง")); // จับเพื่อตรวจจับข้อผิดพลาดที่อาจเกิดขึ้นในแอพเพล็ตของเรา จับ (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (PopupMenu.PopupMenuItem ใหม่ ("ข้อความทดสอบ", {reactive: true})); }, / * เรากำหนดชื่อของเมนู makeMenu และลักษณะของมัน ในกรณีนี้ป้ายกำกับคือ Test Message "เราจะกำหนด {reactive: true} เรากำหนดว่าพื้นหลังของ menuitem จะเปลี่ยนไปเมื่อตัวชี้ผ่าน menuitem ผ่าน true ถ้าเป็นเท็จสิ่งที่ตรงกันข้ามจะเกิดขึ้น * / BuildContextMenu: function () {this.menu .addMenuItem (PopupMenu.PopupMenuItem ใหม่ ("show", {reactive: true}));}, // เรากำหนดชื่อของเมนู makeMenu และลักษณะเฉพาะในกรณีนี้ป้ายกำกับคือ "show ". on_applet_clicked: function (event) {this.menu.toggle ();} // สัญญาณที่ปล่อยออกมาจากแอพเพล็ตเพื่อเรียกใช้ฟังก์ชันเมนูป๊อปอัพ main (metadata, orientation) {ให้ myApplet = new MyApplet (orientation); return myApplet;} / * สุดท้ายเราต้องเพิ่มฟังก์ชัน "main" ซึ่งน่าจะเหมือนกันในแต่ละแอปเพล็ตอินสแตนซ์ของแอพเพล็ตของเราถูกสร้างขึ้นและส่งกลับไปที่ Cinnamon * / // ปิดลูปส่งคืน myApplet ;

เราดำเนินการกำหนด metadata.json

LP0ol8b

สกรีนช็อต - 140314 - 21:11:34

"last-modified": "1331990905", // ฉบับล่าสุด. "description": "คลิกที่แอพเพล็ตเพื่อแสดงเมนู gtk ที่กำหนดเอง", // คำอธิบายแอปเพล็ต "icon": "docky", // ไอคอนที่ใช้สำหรับคำอธิบายแอพเพล็ต ดังตัวอย่างเช่นเปลี่ยนชื่อ "docky" เป็น "terminal", "folder" "uuid": "black" // โฟลเดอร์ที่มีไฟล์ metadata.json ของเรา "name": "Custom gtk menu" // ชื่อแอปเพล็ต

หมายเหตุ: หากต้องการตั้งชื่อใหม่ให้ดูชื่อของไอคอน Gnome หรือ Cinnamon หรือธีมไอคอนอื่น ๆ ให้ไปที่ที่อยู่ระบบไฟล์

/usr/share/icons

ภาพแอพเพล็ตที่สร้างขึ้น

  lKxpdkS

Qt, Gtk, Vala และภาษาอื่น ๆ ที่ใช้สร้างแอพเพล็ตสำหรับ Cinnamon หรือ Gnome

มาดูตำแหน่งของแอพเพล็ตของเราสำหรับ Cinnamon

ตำแหน่งของแอพเพล็ตของเรามีให้ตามที่อยู่ต่อไปนี้:

/.local/share/cinnamon/applets

en o

/usr/share/cinnamon/applets

nerd

องค์ประกอบของแอพเพล็ตของเรา

เบต้า

เราดำเนินการกำหนด applet.js 

รหัส

applet.js

เริ่มต้นรหัส applet.js

สกรีนช็อต - 140314 - 21:30:48

ท้าย applet.js

ตอนนี้เรามาดูโค้ด applet.js และอธิบายคำสั่ง

โค้ดที่เขียนจะเหมือนกับตัวอย่างก่อนหน้านี้ที่เขียนด้วย Javascript
เฉพาะสัญญาณเท่านั้นที่มีการเปลี่ยนแปลงซึ่งจะเรียกใช้งานอัตโนมัติของเรา

on_applet_clicked: function (เหตุการณ์) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }

ระบบปฏิบัติการอัตโนมัติของเราสามารถเขียนด้วย Qt, Gtk, Gtkmm, wxWidget, Vala และอื่น ๆ ภาษาที่สามารถสร้างไฟล์ปฏิบัติการได้เอง เรียกใช้งานอัตโนมัติของเราเรียกว่า Menu และอยู่ในโฟลเดอร์ Qtmenu

เบต้า

นอกจากนี้เรายังสามารถใช้ภาษาโปรแกรมอื่น ๆ ที่มีการผูกสำหรับ Gtk เช่นในกรณีของ PyGTK, Ruby Gtk, Perl Gtk เป็นต้น ซึ่งสามารถใช้โดยใช้สคริปต์เพื่อรันโค้ดที่เขียนด้วยภาษาเหล่านั้น หลักการเหมือนกันเสมอในการเรียกโปรแกรมสร้างเมนูป๊อปอัพและหน้าต่างป๊อปอัพตามความต้องการของเรา

มาดูโค้ดของระบบปฏิบัติการอัตโนมัติของเราที่เขียนด้วย Qt

qt

เราดำเนินการกำหนด metadata.json

LP0ol8b

Mongo

โค้ดเขียนในลักษณะเดียวกับตัวอย่างก่อนหน้านี้

รูปภาพของแอพเพล็ตที่สร้างด้วย Qt

อะไร

รูปภาพของแอพเพล็ตที่สร้างด้วย Gtk 3.10

ฉันฝากตัวอย่างเล็ก ๆ ของแอพเพล็ตที่ใช้ไฟล์ปฏิบัติการที่เขียนด้วย Gtk ในกรณีนี้เราใช้เมนู myGtkMenu ที่ใช้ใน OpenBox

เป็นเมนูที่ดำเนินการเอง

เมกะไบต์

ดาวน์โหลดบทแนะนำและตัวอย่าง


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ไอโอเรีย dijo

    บทความน่ารู้ ...

    1.    mariogaudix dijo

      ขอขอบคุณ . ของฉันคือเราเรียนรู้วันละนิดทุกวัน

  2.   ของขวัญ dijo

    ดีมากฉันชอบมากฉันอยากรู้มาตลอดว่าแอปเพล็ตประเภทนี้เกิดขึ้นได้อย่างไร

  3.   นางฟ้าอารยา dijo

    การแก้ไขเล็กน้อย Gettext ไม่มีอะไรเฉพาะเจาะจงสำหรับ Cinnamon ตามที่กล่าวไว้ในบทความมันเป็นไลบรารีที่ทำให้การแปลอัตโนมัติเป็นไปได้และจากเทมเพลต

  4.   MSX dijo

    บทช่วยสอนดีมากและทั้งหมดนั้น แต่สิ่งสำคัญที่คุณไม่ได้ใส่: ลิงก์ไปยังวอลเปเปอร์?

    1.    mariogaudix dijo

      ดาวน์โหลดวอลเปเปอร์ Linux Mint 16 Petra
      แพคเกจนี้เรียกว่า mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   เทสลา dijo

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

    ขอบคุณสำหรับการแบ่งปัน!

  6.   Matias dijo

    ยอดเยี่ยมฉันแค่หาวิธีแก้ไขแอพเพล็ต cinnamon nm-applet (ตัวจัดการเครือข่าย) เพื่อให้มันเปลี่ยนสีเมื่อฉันไม่มีอินเทอร์เน็ต (ฉันมีการ์ด wifi) และสิ่งนี้ช่วยให้ฉันปรับทิศทางตัวเองได้เล็กน้อย

  7.   matiasbatero 17 dijo

    มาเรียนที่นั่นฉันไม่รู้ว่าคุณโพสต์ที่นี่ ความนับถือ.

    1.    mariogaudix dijo

      ขณะที่คุณเดิน Matute … .. ฉันมักจะเดินไปรอบ ๆ ส่วนเหล่านี้ ไชโย

  8.   ฮ่า ๆ dijo

    บทความที่ดี

  9.   โฮโนแวน dijo

    ไม่พบไฟล์ถูกปิดใช้งานเนื่องจากละเมิดลิขสิทธิ์

    สิ่งที่ฉันหมายถึงคือถ้าคุณมีคุณสามารถอัปโหลดอีกครั้งได้หรือไม่ได้โปรด

    ขอขอบคุณ.