Să creăm un applet simplu Scorţişoară. Pentru început, trebuie să știm asta Scorţişoară oferă diferite tipuri de applet-uri:
- TextApplet (afișând o etichetă pe panou)
- IconApplet (afișând o pictogramă pe panou)
- TextIconApplet (indicând atât o pictogramă, cât și o etichetă pe panou)
- Applet (pentru dezvoltatorii hardcore, care arată o casetă goală pe care o puteți completa singur)
În acest tutorial, dorim pur și simplu să afișăm o pictogramă pe panou, așa că vom folosi un „IconApplet”. Pentru a programa appletul nostru Scorțișoară sau Gnome Trebuie să cunoaștem și să cunoaștem ceva programare Javascript
Locația codului nostru.
Mai întâi, să ne uităm la locația fișierului nostru. Locația applet-ului nostru este dată la următoarele adrese:
/.local/share/cinnamon/applets
o o /usr/share/cinnamon/applets
Fișierele care compun Appletul nostru.
Continuăm să definim applet.js
Acum să ne uităm la cod. applet.js și explicați fiecare dintre propozițiile sale:
pornind codul applet.js
Să ne uităm la fiecare dintre afirmațiile din codul nostru anterior
const Lang = imports.lang; /*Invocăm bibliotecile Gtk și Lang, acestea sunt o parte de bază a oricărei aplicații GNOME, ne permit să creăm ferestre, widget-uri și să le legăm.*/ const Applet = imports.ui.applet; /*Invocăm bibliotecile Applet care ne permit să creăm un applet pentru Cinnamon și Gnome și, în același timp, ne oferă proprietățile și funcțiile acestuia.*/ const GLib = imports.gi.GLib; /*GLib este o bibliotecă de ajutor, ne permite să facem lucruri în GNOME, de exemplu să spunem unde este fișierul hellognome.html, este biblioteca responsabilă de semnale.*/ const Gettext = imports.gettext.domain('cinnamon -applet-uri '); const _ = Gettext.gettext; //Biblioteca Gettext care ne permite să importăm caracteristicile pentru desktopul Cinnamon. const PopupMenu = imports.ui.popupMenu; /*PopupMenu este o bibliotecă pentru a folosi managerul de meniu, ne permite să invocăm widget-ul popup-meniu folosit de obicei în applet-uri.*/ function MyApplet(orientation) { this._init(orientation); }
Constructorul applet-ului nostru este definit mai jos, să ne uităm la clasa noastră:
Continuăm cu definirea fiecăreia dintre propoziții
MyApplet.prototype = { __proto__: Applet.IconApplet.prototype, // Ne definim Clasa sau Clasa _init: function(orientation) { Applet.IconApplet.prototype._init.call(this, orientation); /*Stabilim orientarea prin Scortisoara. Setăm dacă panoul applet-ului este în partea de sus sau de jos (acest lucru are un impact asupra orientării meniurilor applet-ului).*/ încercați { // Faceți ceva } Catch (e) { // Ce se întâmplă dacă apare o eroare } / *Folosim un try/catch pentru a detecta orice erori care pot apărea în applet-ul nostru și pentru a ne asigura că sunt scrise în jurnalul global de erori. În acest fel, dacă ceva nu merge bine, puteți vedea eroarea în Looking Glass: apăsați Alt F2, tastați „lg” și faceți clic pe fila „errors”.*/ this.menuManager = new PopupMenu.PopupMenuManager(this) ; //Creează meniul pop-up și setează managerul de meniu this.menu = new Applet.AppletPopupMenu(this, orientation); //creează un meniu. this.menuManager.addMenu(this.menu); // Adăugăm meniul în meniul pop-up. this.makeMenu(); // meniu item makeMenu, creăm un element de meniu numit makeMenu. this.buildContextMenu(); // buildContextMenu, creăm un element de meniu numit buildContextMenu. this.set_applet_icon_name("dosar"); /*Creăm applet-ul, acest caz este unic, pictograma aleasă este folderul, putem stabili și un applet text dacă dorim.*/
De exemplu, schimbați numele „dosarului” în „terminal”, „docky” pentru a stabili nume noi, vedeți numele pictogramelor Gnome sau Cinnamon sau orice altă temă de pictograme, mergeți la adresa.
/usr/share/icons
this.set_applet_tooltip(_("Faceți clic aici pentru a închide o fereastră")); // Catch pentru a detecta orice erori care pot apărea în applet-ul nostru. catch (e) { global.logError(e); } makeMenu: function() { this.menu.addMenuItem(new PopupMenu.PopupMenuItem("Mesaj de testare", { reactiv: true })); }, /*Definim numele elementului de meniu makeMenu și caracteristicile acestuia. În acest caz, eticheta este Test Message". Vom defini { reactive: true } Stabilim că fundalul elementului de meniu se va schimba atunci când indicatorul trece peste elementul de meniu folosind true dacă este fals, se întâmplă invers.*/ buildContextMenu: function () { this.menu .addMenuItem(new PopupMenu.PopupMenuItem(" show", { reactive: true })); }, // Definim numele elementului de meniu makeMenu și caracteristicile acestuia. În acest caz, eticheta este „show ". on_applet_clicked: function(event) { this.menu.toggle(); } // Semnal emis de applet, pentru a apela meniul pop-up. function main(metadata, orientation) { let myApplet = new MyApplet(orientation); return myApplet; } /*În sfârșit , trebuie doar să adăugăm o funcție „principală”, care este probabil să fie aceeași în fiecare applet. Creează o instanță a applet-ului nostru și o returnează la Cinnamon.*/ // Închidem bucla return myApplet;
Continuăm să definim metadata.json
"last-edited": "1331990905", // Ultima modificare. „description”: „Faceți clic pe applet pentru a afișa un meniu gtk personalizat, definit personal”, // Descrierea applet-ului. "icon": "docky ", // Pictograme utilizate pentru descrierea applet-ului. De exemplu, schimbați numele din „docky” în „terminal”, „folder”. „uuid”: „negru” // Dosar în care este inclus fișierul metadata.json „nume”: „Meniu gtk personalizat” // Numele applet-ului.
Nota: Pentru a seta nume noi pentru a vedea numele pictogramelor Gnome sau Cinnamon sau orice altă temă de pictograme, accesați adresa sistemului de fișiere.
/usr/share/icons
Imaginea Applet-ului creat
Qt, Gtk, Vala și alte limbi utilizate pentru a crea un applet pentru Cinnamon sau Gnome
Să vedem locația aplicației noastre pentru scorțișoară
Locația applet-ului nostru este dată la următoarele adrese:
/.local/share/cinnamon/applets
o o
/usr/share/cinnamon/applets
Compoziția applet-ului nostru
Continuăm să definim applet.js
Se pornește codul applet.js
Sfârșitul applet.js
Acum să continuăm să vedem codul applet.js și să explicăm propozițiile acestuia.
Codul scris este practic același cu exemplul anterior scris cu Javascript.
Doar semnalul a fost schimbat, ceea ce va apela auto-executabilul nostru.
on_applet_clicked: function(event) { GLib.spawn_command_line_async( GLib.get_home_dir() + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Auto-executablele noastre pot fi scrise cu Qt, Gtk, Gtkmm, wxWidget, Vala etc. limbi cu care pot fi create autoexecutabile. Auto-executabilul nostru se numește Meniu și se află în folderul Qtmenu.
Putem folosi și alte limbaje de programare care au legături pentru Gtk, cum ar fi PyGTK, Ruby Gtk, Perl Gtk etc. care poate fi folosit folosind un script pentru a executa codul scris în limbajele menționate. Principiul este întotdeauna același de a apela programe, de a crea popup-meniu și popup-window în funcție de nevoile noastre.
Să ne uităm la codul auto-executabilului nostru scris cu Qt
Continuăm să definim metadata.json
Codul este scris în același mod ca exemplul anterior
Imagine a applet-ului creat cu Qt
Imagine a applet-ului creat cu Gtk 3.10
Vă las un mic exemplu de applet care folosește o mașină executabilă scrisă în Gtk, în acest caz luăm meniul myGtkMenu folosit în OpenBox.
Este un meniu care se execută automat.
Descărcați tutorial și exemple
interesant articol…
Mulțumesc . Scopul meu este să învățăm puțin în fiecare zi.
Foarte bine, îmi place, mereu mi-am dorit să știu cum sunt făcute aceste tipuri de applet-uri
O mica corectie. Gettext nu este ceva specific Cinnamon așa cum se spune în articol, este o bibliotecă care face posibile traduceri automate și din șabloane.
Foarte bun tutorial și toate astea, dar lucrul important pe care nu l-ai inclus: link către tapet?
Descărcați imaginile de fundal Linux Mint 16 Petra.
Pachetul se numește mint-backgrounds-petra : http://packages.linuxmint.com/list.php?release=Petra
Foarte interesant articol. Adevărul este că întotdeauna m-am întrebat cum au fost create aceste applet-uri. Poate voi încerca să creez un mini-player applet pentru MPD sau ceva similar.
Multumesc pentru partajarea!
Excelent, doar îmi dau seama cum să modific nm-applet (managerul de rețea) al scorțișoară, astfel încât să-și schimbe culoarea atunci când nu am acces la Internet (am un card Wi-Fi) și asta ma ajuta sa ma orientez putin.
Ei bine, Marian, nu știam că ai postat aici. Salutari.
Ce mai faci, Matute... Rătăcesc mereu prin aceste părți. Salutari
Bun articol.
Fișierul nu a fost găsit, a fost dezactivat din cauza încălcării drepturilor de autor.
Ce vreau sa spun este ca daca il ai, il poti incarca din nou???.te rog.
mulțumesc.