Mini-tutorial: Oprettelse af applets til kanel

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

Kanel_Applet

Filer, der udgør vores applet.

Kanel_Applet2

Vi fortsætter med at definere applet.js

kode

applet.js

Lad os nu fortsætte med at se koden til applet.js og forklar hver af sætningerne:

applet.js-kodestart

appletkode

javascript-kode

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:

gjs 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

Z7qwRdp

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

LP0ol8b

Skærmbillede - 140314 - 21:11:34

"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

  lKxpdkS

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

nørd

Sammensætningen af ​​vores applet

beta

Vi fortsætter med at definere applet.js 

kode

applet.js

Start af applet.js-koden

Skærmbillede - 140314 - 21:30:48

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.

beta

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

qt

Vi fortsætter med at definere metadata.json

LP0ol8b

mongo

Koden skrives på samme måde som det foregående eksempel

Appletbillede oprettet med Qt

hvad

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.

megtk

Download tutorial og eksempler


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   aiolia sagde han

    Interessant artikel ...

    1.    marianogaudix sagde han

      Tak skal du have . Min er, at vi lærer lidt hver dag.

  2.   gave sagde han

    Meget godt, jeg elsker det, jeg har altid ønsket at vide, hvordan disse slags applets blev lavet

  3.   Angel Araya sagde han

    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.

  4.   MSX sagde han

    Meget god tutorial og alt det, men det vigtige du ikke satte det: link til tapetet?

    1.    marianogaudix sagde han

      Download Linux Mint 16 Petra-baggrunde.
      Pakken kaldes mynte-baggrunde-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla sagde han

    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!

  6.   Matias sagde han

    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.

  7.   matiasbatero17 sagde han

    Nå der Marian, jeg vidste ikke, du postede her. Hilsen.

    1.    marianogaudix sagde han

      Hvordan har du det, Matute… .. Jeg går altid rundt i disse dele. Skål

  8.   lolbimbo sagde han

    God artikel.

  9.   honovan sagde han

    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.