Hướng dẫn nhỏ: Tạo Applet cho Cinnamon

Chúng tôi sẽ tạo một applet đơn giản cho Quế. Để bắt đầu, chúng ta phải biết rằng Quế cung cấp các loại applet khác nhau:

  • Văn bảnApplet (hiển thị một nhãn trên bảng điều khiển)
  • Biểu tượngApplet (hiển thị một biểu tượng trên bảng điều khiển)
  • Văn BảnBiểu TượngApplet (cho biết cả biểu tượng và nhãn trên bảng điều khiển)
  • applet (dành cho các nhà phát triển khó tính, hiển thị một ô trống mà bạn có thể tự điền vào)

Trong hướng dẫn này, chúng tôi chỉ muốn hiển thị một biểu tượng trên bảng điều khiển, vì vậy chúng tôi sẽ sử dụng một "IconApplet". Để lập trình applet của chúng tôi Cinnamon hoặc Gnome chúng ta cần biết và biết điều gì đó về lập trình Javascript

Vị trí của mã của chúng tôi.

Đầu tiên, hãy xem vị trí của tệp của chúng tôi. Vị trí của applet của chúng tôi được cung cấp tại các địa chỉ sau:

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

Quế_Applet

Các tệp tạo nên Applet của chúng tôi.

Quế_Applet2

Chúng tôi tiến hành định nghĩa applet.js

mã

applet.js

Bây giờ chúng ta hãy tiếp tục xem mã của applet.js và giải thích từng câu của nó:

bắt đầu mã applet.js

mã applet

mã javascript

Hãy xem từng câu của mã trước của chúng ta

const Lang = import.lang; / * Chúng tôi gọi thư viện Gtk và Lang, chúng là một phần cơ bản của bất kỳ ứng dụng GNOME nào, chúng cho phép chúng tôi tạo các cửa sổ, widget và liên kết chúng. * / Const Applet = import.ui.applet; / * Chúng tôi gọi thư viện Applet cho phép chúng tôi tạo một applet cho Cinnamon và Gnome, đồng thời cung cấp cho chúng tôi các thuộc tính và chức năng của nó. * / Const GLib = import.gi.GLib; / * GLib là một thư viện trợ giúp, nó cho phép chúng ta thực hiện mọi việc trong GNOME, chẳng hạn như nói tệp hellognome.html nằm ở đâu, nó là thư viện phụ trách các tín hiệu. * / Const Gettext = import.gettext.domain ('quế -applets '); const _ = Gettext.gettext; // Thư viện Gettext cho phép chúng ta nhập các đặc điểm của màn hình Cinnamon. const PopupMenu = import.ui.popupMenu; / * PopupMenu là một thư viện để sử dụng trình quản lý menu, nó cho phép chúng ta gọi tiện ích menu bật lên thường được sử dụng trong các applet. * / Function MyApplet (định hướng) {this._init (định hướng); }

Phương thức khởi tạo của applet của chúng ta được định nghĩa bên dưới, hãy xem Class hoặc Class của chúng ta:

lớp gjs

Chúng ta tiếp tục với định nghĩa của từng câu

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Chúng tôi xác định Lớp hoặc Lớp _init: function (định hướng) {Applet.IconApplet.prototype._init.call (this, định hướng); / * Chúng tôi thiết lập định hướng thông qua Cinnamon. Chúng tôi đặt bảng điều khiển của applet ở trên cùng hay ở dưới cùng (điều này ảnh hưởng đến hướng của các menu applet). * / Hãy thử {// Làm gì đó} Catch (e) {// Điều gì sẽ xảy ra nếu xảy ra lỗi } / * Chúng tôi sử dụng try / catch để bắt bất kỳ lỗi nào có thể xảy ra trong applet của chúng tôi và để đảm bảo chúng được ghi vào nhật ký lỗi chung. Bằng cách này, nếu có sự cố, bạn có thể thấy lỗi trong Kính nhìn: Nhấn Alt F2, gõ "lg" và nhấp vào tab "lỗi". * / This.menuManager = new PopupMenu.PopupMenuManager (this); // Tạo menu bật lên và đặt trình quản lý menu this.menu = new Applet.AppletPopupMenu (this, direction); // chúng ta tạo một menu. this.menuManager.addMenu (this.menu); // Chúng tôi thêm menu vào menu bật lên. this.makeMenu (); // menuitem makeMenu, chúng ta tạo một menuitem có tên là makeMenu. this.buildContextMenu (); // buildContextMenu, chúng ta tạo một menuitem có tên là buildContextMenu. this.set_applet_icon_name ("thư mục"); / * Chúng tôi tạo applet, trường hợp này là duy nhất, biểu tượng được chọn là thư mục hoặc thư mục, chúng tôi cũng có thể thiết lập một applet văn bản nếu muốn. * /

Ví dụ như thay đổi tên của "thư mục" thành "thiết bị đầu cuối", "docky" để thiết lập tên mới, hãy xem tên của biểu tượng Gnome hoặc Cinnamon hoặc bất kỳ chủ đề biểu tượng nào khác, hãy truy cập vào địa chỉ.

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ("Nhấp vào đây để hủy cửa sổ")); // Bắt để bắt bất kỳ lỗi nào có thể xảy ra trong applet của chúng tôi. catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Test Message", {react: true})); }, / * Chúng tôi xác định tên của menuitem makeMenu và các đặc điểm của nó. Trong trường hợp này, nhãn là Thông báo thử nghiệm ". Chúng tôi sẽ xác định {react: true}. Chúng tôi thiết lập rằng nền của menuitem sẽ thay đổi khi con trỏ đi qua menuitem qua true nếu nó là false, điều ngược lại sẽ xảy ra. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {react: true}));}, // Chúng tôi xác định tên của menuitem makeMenu và đặc điểm của nó. Trong trường hợp này, nhãn là "show ". on_applet_clicked: function (event) {this.menu.toggle ();} // Tín hiệu do applet phát ra, để gọi hàm menu popup main (siêu dữ liệu, định hướng) {let myApplet = new MyApplet (định hướng); return myApplet;} / * Cuối cùng, chúng ta chỉ cần thêm một hàm "main", có thể giống nhau trong mỗi applet, một thể hiện của applet của chúng ta được tạo và trả về Cinnamon. * / // Chúng ta đóng vòng lặp trả về myApplet;

Chúng tôi tiến hành xác định metadata.json

LP0ol8b

Ảnh chụp màn hình - 140314 - 21:11:34

"last-edit": "1331990905", // Phiên bản cuối cùng. "description": "Nhấp vào applet để hiển thị menu gtk tùy chỉnh do cá nhân xác định", // Mô tả applet. "icon": "docky", // Các biểu tượng được sử dụng cho phần mô tả applet. Ví dụ, thay đổi tên của "docky" thành "terminal", "folder". "uuid": "black" // Thư mục chứa tệp metadata.json của chúng tôi "name": "Custom gtk menu" // Applet name.

Lưu ý: Để đặt tên mới, hãy xem tên của biểu tượng Gnome hoặc Cinnamon hoặc bất kỳ chủ đề biểu tượng nào khác, hãy chuyển đến địa chỉ hệ thống tệp.

/usr/share/icons

Hình ảnh của Applet đã tạo

  lKxpdkS

Qt, Gtk, Vala và các ngôn ngữ khác được sử dụng để tạo một applet cho Cinnamon hoặc Gnome

Hãy xem vị trí của applet cho Cinnamon

Vị trí của applet của chúng tôi được cung cấp tại các địa chỉ sau:

/.local/share/cinnamon/applets

o en

/usr/share/cinnamon/applets

mọt sách

Thành phần của applet của chúng tôi

beta

Chúng tôi tiến hành định nghĩa applet.js 

mã

applet.js

Bắt đầu mã applet.js

Ảnh chụp màn hình - 140314 - 21:30:48

Kết thúc applet.js

Bây giờ chúng ta hãy tiếp tục xem mã applet.js và giải thích các câu lệnh của nó.

Mã được viết thực tế giống như ví dụ trước được viết bằng Javascript.
Chỉ có tín hiệu đã được thay đổi, tín hiệu này sẽ gọi tự động thực thi của chúng tôi.

on_applet_clicked: function (event) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }

Tập tin thực thi tự động của chúng tôi có thể được viết bằng Qt, Gtk, Gtkmm, wxWidget, Vala, v.v. ngôn ngữ có thể tạo các tệp tự thực thi. Thực thi tự động của chúng tôi được gọi là Menu và nó nằm trong thư mục Qtmenu.

beta

Chúng ta cũng có thể sử dụng các ngôn ngữ lập trình khác có ràng buộc cho Gtk, chẳng hạn như trường hợp của PyGTK, Ruby Gtk, Perl Gtk, v.v. có thể được sử dụng bằng cách sử dụng tập lệnh để thực thi mã được viết bằng các ngôn ngữ đó. Nguyên tắc luôn giống nhau để gọi các chương trình, tạo popup-menu và popup-window theo nhu cầu của chúng ta.

Hãy xem mã của tệp thực thi tự động của chúng tôi được viết bằng Qt

qt

Chúng tôi tiến hành xác định metadata.json

LP0ol8b

mongo

Mã được viết theo cách giống như ví dụ trước

Hình ảnh Applet được tạo bằng Qt

gì

Hình ảnh của Applet được tạo bằng Gtk 3.10

Đây là một ví dụ về applet nhỏ sử dụng tệp thực thi được viết bằng Gtk, trong trường hợp này chúng ta lấy menu myGtkMenu được sử dụng trong OpenBox.

Nó là một menu tự thực thi.

megtk

Tải xuống hướng dẫn và ví dụ


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   aiolia dijo

    Bài báo thú vị ...

    1.    marianogaudix dijo

      Cảm ơn bạn . Của tôi là chúng ta học một chút mỗi ngày.

  2.   món quà dijo

    Rất tốt, tôi thích nó, tôi luôn muốn biết những loại applet này được tạo ra như thế nào

  3.   Thiên thần Araya dijo

    Một điều chỉnh nhỏ. Gettext không có gì cụ thể đối với Cinnamon như nó đã nói trong bài viết, nó là một thư viện có thể thực hiện các bản dịch tự động và từ các mẫu.

  4.   msx dijo

    Hướng dẫn rất tốt và tất cả những điều đó nhưng điều quan trọng mà bạn không đặt nó: liên kết đến hình nền?

    1.    marianogaudix dijo

      Tải xuống hình nền Linux Mint 16 Petra.
      Gói này có tên là mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla dijo

    Bài viết rất thú vị. Sự thật là tôi đã luôn tự hỏi làm thế nào những applet này được tạo ra. Có lẽ tôi sẽ được khuyến khích tạo một applet mini-player cho MPD hoặc thứ gì đó tương tự.

    Cảm ơn bạn đã chia sẻ!

  6.   Matias dijo

    Tuyệt vời, tôi chỉ đang tìm cách sửa đổi ứng dụng quế nm-applet (trình quản lý mạng), để nó thay đổi màu khi tôi không truy cập internet, (tôi có thẻ wifi) và điều này giúp tôi định hướng một chút.

  7.   matiasbatero17 dijo

    Vâng, Marian, tôi không biết bạn đã đăng ở đây. Trân trọng.

    1.    marianogaudix dijo

      Khi bạn bước đi, Matute… .. Tôi luôn đi bộ xung quanh những phần này. Chúc mừng

  8.   lolbimbo dijo

    Bài báo hay.

  9.   Honorvan dijo

    không tìm thấy tệp đã bị vô hiệu hóa do vi phạm bản quyền.

    Ý tôi là nếu bạn có nó ở đó, bạn có thể tải lên lại được không ???. Làm ơn.

    cảm ơn bạn.