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
Các tệp tạo nên Applet của chúng tôi.
Chúng tôi tiến hành định nghĩa 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
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:
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
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
"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
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
Thành phần của applet của chúng tôi
Chúng tôi tiến hành định nghĩa applet.js
Bắt đầu mã applet.js
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.
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
Chúng tôi tiến hành xác định metadata.json
Mã được viết theo cách giống như ví dụ trước
Hình ảnh Applet được tạo bằng Qt
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.
Bài báo thú vị ...
Cảm ơn bạn . Của tôi là chúng ta học một chút mỗi ngày.
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
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.
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?
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
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ẻ!
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.
Vâng, Marian, tôi không biết bạn đã đăng ở đây. Trân trọng.
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
Bài báo hay.
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.