Ще създадем прост аплет за Канела. За начало трябва да знаем това Канела предлага различни видове аплети:
- Текстов аплет (показва етикет на панела)
- Икономика (показва икона на панела)
- TextIconApplet (посочва и икона, и етикет на панела)
- Аплет (за хардкор разработчици, които показват празно поле, можете да попълните сами)
В този урок ние просто искаме да покажем икона на панела, така че ще използваме "IconApplet". За да програмираме нашия аплет на Канела или Гном трябва да знаем и знаем нещо за програмирането на Javascript
Местоположение на нашия код.
Първо, нека видим местоположението на нашия файл. Местоположението на нашия аплет е дадено на следните адреси:
/.local/share/cinnamon/applets
о EN /usr/share/cinnamon/applets
Файлове, които съставляват нашия аплет.
Продължаваме да дефинираме applet.js
Сега да продължим да виждаме кода на applet.js и обяснете всяко негово изречение:
applet.js код старт
Нека да видим всяко от изреченията на предишния ни код
const Lang = import.lang; / * Извикваме библиотеките Gtk и Lang, те са основна част от всяко приложение на GNOME, позволяват ни да създаваме прозорци, приспособления и да ги свързваме. * / Const Applet = import.ui.applet; / * Извикваме библиотеката на аплетите, която ни позволява да създадем аплет за канела и Gnome и в същото време ни дава неговите свойства и функции. * / Const GLib = import.gi.GLib; / * GLib е помощна библиотека, позволява ни да правим неща в GNOME, например да кажем къде е файлът hellognome.html, това е библиотеката, която отговаря за сигналите. * / Const Gettext = import.gettext.domain ('cinnamon-applets '); const _ = Gettext.gettext; // Библиотека Gettext, която ни позволява да импортираме характеристиките на работния плот на Cinnamon. const PopupMenu = import.ui.popupMenu; / * PopupMenu е библиотека за използване на мениджъра на менюто, позволява ни да извикаме приспособлението за изскачащо меню, обикновено използвано в аплети. * / Функция MyApplet (ориентация) {this._init (ориентация); }
След това дефинираме конструктора на нашия аплет, нека разгледаме нашия клас или клас:
Продължаваме с дефиницията на всяко от изреченията
MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Определяме нашия клас или клас _init: функция (ориентация) {Applet.IconApplet.prototype._init.call (това, ориентация); / * Определяме ориентацията чрез Канела. Задаваме дали панелът на аплета е отгоре или отдолу (това оказва влияние върху ориентацията на менютата на аплета). * / Опитайте {// Направете нещо} Уловете (д) {// Какво се случва ако възникне грешка} / * Използваме try / catch, за да уловим всички грешки, които могат да възникнат в нашия аплет и да се уверим, че са записани в глобалния дневник за грешки. По този начин, ако нещо се обърка, можете да видите грешката в огледалото: Натиснете Alt F2, напишете "lg" и кликнете върху раздела "грешки". * / This.menuManager = нов PopupMenu.PopupMenuManager (това) ; // Създайте изскачащото меню и задайте мениджъра на менюто this.menu = new Applet.AppletPopupMenu (това, ориентация); // създаваме меню. this.menuManager.addMenu (this.menu); // Добавяме менюто към изскачащото меню. this.makeMenu (); // menuitem makeMenu, ние създаваме menuitem, наречен makeMenu. this.buildContextMenu (); // buildContextMenu, ние създаваме елемент от меню, наречен buildContextMenu. this.set_applet_icon_name ("папка"); / * Създаваме аплета, този случай е уникален, избраната икона е папката или папката, можем да създадем и текстов аплет, ако искаме. * /
Като пример променете името на "папка" на "терминал", "доки", за да установите нови имена, вижте името на иконите Gnome или Cinnamon или друга тема на иконата, отидете на адреса.
/usr/share/icons
this.set_applet_tooltip (_ ("Щракнете тук, за да убиете прозорец")); // Улов, за да уловим грешките, които могат да възникнат в нашия аплет. catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Тестово съобщение", {reactive: true})); }, / * Определяме името на елемента на менюто makeMenu и неговите характеристики. В този случай етикетът е Тестово съобщение ". Ще дефинираме {reactive: true} Установяваме, че фонът на менюто ще се промени, когато указателят премине през менюто чрез true, ако е невярно, се случва обратното. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Определяме името на менюто makeMenu и неговите характеристики. В този случай етикетът е "show". on_applet_clicked: function (event) {this.menu.toggle ();} // Сигнал, излъчен от аплета, за извикване на основната функция на изскачащото меню (метаданни, ориентация) {let myApplet = new MyApplet (ориентация); return myApplet;} / * Накрая , просто трябва да добавим функция "main", която е вероятно да бъде еднаква във всеки аплет, тя създава екземпляр на нашия аплет и го връща в Cinnamon. * / // Затворете цикъла return myApplet;
Продължаваме да дефинираме metadata.json
"последна редакция": "1331990905", // Последно издание. "description": "Щракнете върху аплета, за да покажете персонално дефинирано gtk меню", // Описание на аплета. "icon": "docky", // Икони, използвани за описанието на аплета. Като пример променете името на "docky" на "терминал", "папка". "uuid": "black" // Папка, в която е включен нашият файл metadata.json "name": "Custom gtk menu" // Име на аплета.
Забележка: За да зададете нови имена, вижте името на иконите Gnome или Cinnamon или друга тема на иконата, отидете на адреса на файловите системи.
/usr/share/icons
Изображение на създадения аплет
Qt, Gtk, Vala и други езици, използвани за създаване на аплет за канела или Gnome
Нека видим местоположението на нашия аплет за канела
Местоположението на нашия аплет е дадено на следните адреси:
/.local/share/cinnamon/applets
о EN
/usr/share/cinnamon/applets
Състав на нашия аплет
Продължаваме да дефинираме applet.js
Стартиране на кода на applet.js
Край на applet.js
Сега нека продължим да виждаме кода на applet.js и да обясняваме неговите твърдения.
Написаният код е практически същият като предишния пример, написан с Javascript.
Променен е само сигналът, който ще извика нашата автоматично изпълнима.
on_applet_clicked: функция (събитие) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Нашият автоматично изпълним може да бъде написан с Qt, Gtk, Gtkmm, wxWidget, Vala и др. езици, с които могат да се създават самоизпълними. Нашият автоматично изпълним се нарича Меню и е в папката Qtmenu.
Можем да използваме и други езици за програмиране, които имат обвързвания за Gtk, такъв е случаят с PyGTK, Ruby Gtk, Perl Gtk и т.н. което може да се използва с помощта на скрипт за изпълнение на кода, написан на тези езици. Принципът винаги е един и същ за извикване на програми, създаване на изскачащо меню и изскачащ прозорец според нашите нужди.
Нека видим кода на нашия автоматично изпълним файл, написан с Qt
Продължаваме да дефинираме metadata.json
Кодът е написан по същия начин като предишния пример
Изображение на аплет, създадено с Qt
Изображение на аплета, създадено с Gtk 3.10
Оставям ви малък пример за аплет, който използва изпълним файл, написан в Gtk, в този случай вземаме менюто myGtkMenu, използвано в OpenBox.
Това е самоизпълняващо се меню.
Интересен член ...
Благодаря ти . Моето е, че всеки ден се учим по малко.
Много добре, обичам го, винаги съм искал да знам как се правят тези видове аплети
Малка корекция. Gettext не е нищо специфично за Cinnamon, както се казва в статията, това е библиотека, която прави възможни автоматични преводи и от шаблони.
Много добър урок и всичко това, но важното, което не сте го поставили: връзка към тапет?
Изтеглете тапетите на Linux Mint 16 Petra.
Пакетът се нарича mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra
Много интересна статия. Истината е, че винаги съм се чудил как са създадени тези аплети. Може би съм насърчен да създам аплет за миниплейър за MPD или нещо подобно.
Благодаря за споделянето!
Отлично, просто измислям как да модифицирам nm-аплета на канела (мрежов мениджър), така че да променя цвета си, когато нямам достъп до интернет (имам wifi карта), и това ми помага да се ориентирам малко
Ами там Мариан, не знаех, че публикувате тук. За разбирането.
Докато вървиш, Матуте ... .. Винаги обикалям тези части. Наздраве
Добра статия.
файлът не е намерен е деактивиран поради нарушаване на авторски права
Имам предвид, че ако го имате там, можете ли да го качите отново ???. Моля.
Благодаря ти.