Vi skal oprette en simpel applet til Kanel. For at begynde skal vi vide det Kanel tilbyder forskellige typer applets:
- TextApplet (viser en etiket på panelet)
- IconApplet (viser et ikon på panelet)
- TextIconApplet (angiver både et ikon og en etiket på panelet)
- applet (for hardcore-udviklere, der viser en tom boks, som du selv kan udfylde)
I denne vejledning vil vi blot vise et ikon på panelet, så vi bruger en "IconApplet". For at programmere vores applet til Kanel eller Gnome vi har brug for at vide og vide noget om Javascript-programmering
Placering af vores kode.
Lad os først se placeringen af vores fil. Placeringen af vores applet findes på følgende adresser:
/.local/share/cinnamon/applets
eller /usr/share/cinnamon/applets
Filer, der udgør vores applet.
Vi fortsætter med at definere applet.js
Lad os nu fortsætte med at se koden til applet.js og forklar hver af sætningerne:
applet.js-kodestart
Lad os se hver af sætningerne i vores tidligere kode
const Lang = import.lang; / * Vi påberåber Gtk- og Lang-bibliotekerne, de er en grundlæggende del af enhver GNOME-applikation, de giver os mulighed for at oprette vinduer, widgets og linke dem. * / Const Applet = import.ui.applet; / * Vi påkalder Applet-biblioteket, der giver os mulighed for at oprette en applet til kanel og gnome og samtidig giver os dens egenskaber og funktioner. * / Const GLib = import.gi.GLib; / * GLib er et hjælperbibliotek, det giver os mulighed for at gøre ting i GNOME, for eksempel at sige, hvor filen hellognome.html er, det er biblioteket, der har ansvaret for signaler. * / Const Gettext = import.gettext.domain ('cinnamon-applets '); const _ = Gettext.gettext; // Gettext-bibliotek, der giver os mulighed for at importere egenskaberne ved Cinnamon-skrivebordet. const PopupMenu = import.ui.popupMenu; / * PopupMenu er et bibliotek, der bruger menuadministratoren, det giver os mulighed for at påkalde pop op-menu-widget, der normalt bruges i applets. * / Funktion MyApplet (orientering) {this._init (orientering); }
Konstruktøren af vores applet er defineret nedenfor, lad os se på vores klasse eller klasse:
Vi fortsætter med definitionen af hver af sætningerne
MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Vi definerer vores klasse eller klasse _init: funktion (orientering) {Applet.IconApplet.prototype._init.call (denne, orientering); / * Vi indstiller retningen gennem kanel. Vi indstiller, om appletpanelet er øverst eller nederst (dette har indflydelse på orienteringen af appletmenuerne). * / Prøv {// Gør noget} Fang (e) {// Hvad sker der hvis der opstår en fejl} / * Vi bruger et forsøg / fangst til at fange eventuelle fejl, der måtte opstå i vores applet, og for at sikre, at de er skrevet til den globale fejllog. På denne måde, hvis noget går galt, kan du se fejlen i Looking Glass: Tryk på Alt F2, skriv "lg" og klik på fanen "fejl". * / This.menuManager = ny PopupMenu.PopupMenuManager (dette) ; // Opret pop-up-menuen, og indstil menuadministratoren this.menu = ny Applet.AppletPopupMenu (dette, retning); // vi opretter en menu. this.menuManager.addMenu (denne.menu); // Vi tilføjer menuen til popup-menuen. this.makeMenu (); // menuitem makeMenu, vi opretter et menuitem kaldet makeMenu. this.buildContextMenu (); // buildContextMenu, vi opretter et menupunkt kaldet buildContextMenu. this.set_applet_icon_name ("folder"); / * Vi opretter appleten, denne sag er unik, det valgte ikon er mappen eller mappen, vi kan også oprette en tekstapplet, hvis vi ønsker det. * /
Som et eksempel skift navnet på "mappe" til "terminal", "docky" for at etablere nye navne se navnet på Gnome- eller kanelikonerne eller ethvert andet ikontema, gå ind i adressen.
/usr/share/icons
this.set_applet_tooltip (_ ("Klik her for at dræbe et vindue")); // Fang for at fange eventuelle fejl, der måtte opstå i vores applet. fange (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Test Message", {reactive: true})); }, / * Vi definerer navnet på menuen makeMenu og dens egenskaber. I dette tilfælde er etiketten Testmeddelelse ". Vi definerer {reaktiv: sand} Vi fastslår, at baggrunden for menupunktet vil ændre sig, når markøren passerer over menupunktet gennem sand, hvis det er falsk, det modsatte sker. * / BuildContextMenu: function () {this.menu .addMenuItem (nyt PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Vi definerer navnet på menuen makeMenu og dens egenskaber. I dette tilfælde er etiketten "show". on_applet_clicked: function (event) {this.menu.toggle ();} // Signal, der udsendes af appleten, for at kalde popup-menufunktionens hoved (metadata, retning) {let myApplet = ny MyApplet (retning); returnere myApplet;} / * Endelig , vi er bare nødt til at tilføje en "hoved" -funktion, som sandsynligvis vil være den samme i hver applet, den opretter en forekomst af vores applet og returnerer den til kanel. * / // Luk loop return myApplet;
Vi fortsætter med at definere metadata.json
"sidst redigeret": "1331990905", // Sidste udgave. "beskrivelse": "Klik på appleten for at få vist en brugerdefineret personligt defineret gtk-menu", // Appletbeskrivelse. "icon": "docky", // Ikoner brugt til appletbeskrivelsen. Skift som eksempel navnet på "docky" til "terminal", "folder". "uuid": "sort" // Mappe, hvor vores metadata.json-fil er inkluderet "name": "Custom gtk menu" // Applet name.
Bemærk: For at indstille nye navne se navnet på Gnome- eller Cinnamon-ikonerne eller ethvert andet ikontema, gå til filsystemets adresse.
/usr/share/icons
Billede af oprettet applet
Qt, Gtk, Vala og andre sprog bruges til at oprette en applet til kanel eller gnome
Lad os se placeringen af vores applet til kanel
Placeringen af vores applet findes på følgende adresser:
/.local/share/cinnamon/applets
eller
/usr/share/cinnamon/applets
Sammensætningen af vores applet
Vi fortsætter med at definere applet.js
Start af applet.js-koden
Slutningen af applet.js
Lad os nu fortsætte med at se applet.js-koden og forklare dens udsagn.
Den skrevne kode er praktisk talt den samme som det foregående eksempel skrevet med Javascript.
Kun signalet er blevet ændret, hvilket kalder vores auto-eksekverbare.
on_applet_clicked: funktion (begivenhed) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Vores auto-eksekverbare kan skrives med Qt, Gtk, Gtkmm, wxWidget, Vala osv. sprog, som selv-eksekverbare filer kan oprettes med. Vores auto-eksekverbare kaldes Menu, og den er i mappen Qtmenu.
Vi kan også bruge andre programmeringssprog, der har bindinger til Gtk, sådan som det er tilfældet med PyGTK, Ruby Gtk, Perl Gtk osv. som kan bruges ved hjælp af et script til at udføre koden skrevet på disse sprog. Princippet er altid det samme for at kalde programmer, oprette popup-menu og popup-vindue efter vores behov.
Lad os se koden for vores auto-eksekverbare skrevet med Qt
Vi fortsætter med at definere metadata.json
Koden skrives på samme måde som det foregående eksempel
Appletbillede oprettet med Qt
Billede af applet oprettet med Gtk 3.10
Her er et lille eksempel på en applet, der bruger en eksekverbar skrivet i Gtk. I dette tilfælde tager vi menuen myGtkMenu, der bruges i OpenBox.
Det er en selvudførende menu.
Download tutorial og eksempler
Interessant artikel ...
Tak skal du have . Min er, at vi lærer lidt hver dag.
Meget godt, jeg elsker det, jeg har altid ønsket at vide, hvordan disse slags applets blev lavet
En lille korrektion. Gettext er ikke noget specifikt for kanel, som det står i artiklen, det er et bibliotek, der muliggør automatiske oversættelser og fra skabeloner.
Meget god tutorial og alt det, men det vigtige du ikke satte det: link til tapetet?
Download Linux Mint 16 Petra-baggrunde.
Pakken kaldes mynte-baggrunde-petra: http://packages.linuxmint.com/list.php?release=Petra
Meget interessant artikel. Sandheden er, at jeg altid havde spekuleret på, hvordan disse applets blev oprettet. Måske opfordres jeg til at oprette en mini-afspiller-applet til MPD eller noget lignende.
Tak for at dele!
Fremragende, jeg er bare ved at finde ud af, hvordan jeg kan ændre nm-applet kanel (netværksadministrator), så den skifter farve, når jeg ikke har internetadgang, (jeg har et wifi-kort), og dette hjælper mig med at orientere mig lidt.
Nå der Marian, jeg vidste ikke, du postede her. Hilsen.
Hvordan har du det, Matute… .. Jeg går altid rundt i disse dele. Skål
God artikel.
fil, der ikke blev fundet, blev deaktiveret på grund af krænkelse af ophavsretten.
Hvad jeg mener er, at hvis du har det der, kan du uploade det igen ???.
tak skal du have.