Mini pamoka: cinamono programėlių kūrimas

Mes sukursime paprastą programėlę Cinamonas. Norėdami pradėti, turime tai žinoti Cinamonas siūlo įvairių tipų programėles:

  • „TextApplet“ (skydelyje rodoma etiketė)
  • „IconApplet“ (skydelyje rodoma piktograma)
  • „TextIconApplet“ (skydelyje nurodant ir piktogramą, ir etiketę)
  • Programėlė (sunkiems kūrėjams, rodantiems tuščią langelį, kurį galite užpildyti patys)

Šioje pamokoje tiesiog norime rodyti piktogramą skydelyje, todėl naudosime „IconApplet“. Norėdami užprogramuoti mūsų programėlę Cinamonas arba Gnome mes turime žinoti ir išmanyti programavimą „Javascript“

Mūsų kodo vieta.

Pirmiausia pažiūrėkime mūsų failo vietą. Mūsų programėlės vieta nurodoma šiais adresais:

/.local/share/cinnamon/applets , /usr/share/cinnamon/applets

Cinamonas_Applet

Failai, kurie sudaro mūsų programėlę.

Cinamonas_Applet2

Mes toliau apibrėžiame applet.js

kodą

applet.js

Dabar pereikime prie kodo applet.js ir paaiškinkite kiekvieną jo sakinį:

„applet.js“ kodo pradžia

programėlės kodas

„javascript“ kodas

Pažiūrėkime kiekvieną iš mūsų ankstesnio kodo sakinių

const Lang = importas.lang; / * Mes iškviečiame Gtk ir Lang bibliotekas, jos yra pagrindinė bet kurios GNOME programos dalis, jos leidžia mums kurti langus, valdiklius ir juos susieti. * / Const Applet = imports.ui.applet; / * Mes pasitelkiame „Applet“ biblioteką, kuri leidžia mums sukurti „Cinnamon“ ir „Gnome“ programėlę ir tuo pačiu suteikia mums jos savybes ir funkcijas. * / Const GLib = imports.gi.GLib; / * GLib yra pagalbinė biblioteka, ji leidžia mums atlikti veiksmus GNOME, pavyzdžiui, pasakyti, kur yra hellognome.html failas, tai yra biblioteka, atsakinga už signalus. * / Const Gettext = imports.gettext.domain ('cinamonas -appletai '); const _ = Gettext.gettext; // „Gettext“ biblioteka, leidžianti importuoti „Cinnamon“ darbalaukio ypatybes. const PopupMenu = importas.ui.popupMenu; / * „PopupMenu“ yra biblioteka, skirta naudoti meniu tvarkyklę, ji leidžia mums iškviesti iššokančio meniu valdiklį, paprastai naudojamą programėlėse. * / Funkcija „MyApplet“ (orientacija) {this._init (orientacija); }

Mūsų programėlės konstruktorius yra apibrėžtas žemiau, pažvelkime į mūsų klasę arba klasę:

gjs klas

Tęsiame kiekvieno sakinio apibrėžimą

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Mes apibrėžiame savo klasę arba Class _init: funkcija (orientacija) {Applet.IconApplet.prototype._init.call (tai, orientacija); / * Mes nustatome orientaciją per cinamoną. Nustatome, ar programėlės skydelis yra viršuje, ar apačioje (tai turi įtakos programėlių meniu orientacijai). * / Pabandykite {// Padaryti ką nors} Sugauti (e) {// Kas atsitiks, jei įvyktų klaida } / * Mes naudojame „try / catch“, kad užfiksuotume bet kokias klaidas, kurios gali atsirasti mūsų programėlėje, ir įsitikintume, kad jos įrašytos į visuotinį klaidų žurnalą. Tokiu būdu, jei kažkas negerai, „Glass“ galite pamatyti klaidą: paspauskite Alt F2, įveskite „lg“ ir spustelėkite skirtuką „klaidos“. * / This.menuManager = new PopupMenu.PopupMenuManager (this); // Sukurkite iššokantįjį meniu ir nustatykite meniu tvarkyklę this.menu = new Applet.AppletPopupMenu (tai, orientacija); // sukuriame meniu. this.menuManager.addMenu (tai.meniu); // Pridedame meniu prie iššokančiojo meniu. this.makeMenu (); // menuitem makeMenu, sukuriame menuitem, vadinamą makeMenu. this.buildContextMenu (); // buildContextMenu, sukuriame menuitemą pavadinimu buildContextMenu. this.set_applet_icon_name ("aplankas"); / * Kuriame programėlę, ši byla yra unikali, pasirinkta piktograma yra aplankas arba aplankas, taip pat galime sukurti teksto programėlę, jei norime. * /

Kaip pavyzdį pakeiskite „aplanko“ pavadinimą į „terminalą“, „doką“, kad nustatytumėte naujus vardus, pamatykite „Gnome“ arba „Cinnamon“ piktogramų pavadinimą ar bet kurią kitą piktogramos temą, eikite į adresą.

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ("Spustelėkite čia, kad užmuštumėte langą")); // Gaudykite, kad užfiksuotumėte klaidų, kurios gali atsirasti mūsų programėlėje. pagauti (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (naujas PopupMenu.PopupMenuItem ("Testo pranešimas", {reaktyvus: true})); }, / * Apibrėžiame „makeMenu“ meniu pavadinimą ir jo ypatybes. Šiuo atveju etiketė yra „Test Message“. Apibrėžsime {reaktyvus: tiesa} Nustatysime, kad menuitemo fonas pasikeis, kai rodyklė pereis per menuitemą per true, jei ji klaidinga, priešingai. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Apibrėžiame meniu makeMenu pavadinimą ir jo charakteristikas. Šiuo atveju etiketė yra "show ". on_applet_clicked: function (event) {this.menu.toggle ();} // Appleto skleidžiamas signalas, norint iškviesti iššokančiojo meniu funkciją main (metaduomenys, orientacija) {let myApplet = new MyApplet (orientation); return myApplet;} / * Galiausiai, mes tiesiog turime pridėti „pagrindinę“ funkciją, kuri tikriausiai bus ta pati kiekvienoje programėlėje, sukuriamas mūsų programėlės egzempliorius ir grąžinamas į cinamoną. * / // Uždarome ciklo grąžinimą myApplet;

Mes pradedame apibrėžti metadata.json

LP0ol8b

Ekrano kopija - 140314 - 21:11:34

"last-edited": "1331990905", // Paskutinis leidimas. "description": "Norėdami pamatyti pasirinktinį asmeniškai apibrėžtą gtk meniu, spustelėkite ant programėlės", // Appleto aprašymas. „icon“: „docky“, // Programos aprašymui naudojamos piktogramos. Kaip pavyzdį pakeiskite „doko“ pavadinimą į „terminalas“, „aplankas“. "uuid": "black" // Aplankas, kuriame yra mūsų metadata.json failas "name": "Custom gtk menu" // Applet name.

dėmesį: Norėdami nustatyti naujus pavadinimus, pamatysite piktogramų „Gnome“ arba „Cinamonas“ pavadinimą ar bet kurią kitą piktogramos temą, eikite į failų sistemų adresą.

/usr/share/icons

Sukurtos programėlės vaizdas

  lKxpdkS

„Qt“, „Gtk“, „Vala“ ir kitos kalbos naudojamos kuriant „Cinnamon“ ar „Gnome“ programėlę

Pažiūrėkime, kur yra mūsų cinamono programėlė

Mūsų programėlės vieta nurodoma šiais adresais:

/.local/share/cinnamon/applets

,

/usr/share/cinnamon/applets

vėpla

Mūsų programėlės sudėtis

beta

Mes toliau apibrėžiame applet.js 

kodą

applet.js

Paleidžiamas „applet.js“ kodas

Ekrano kopija - 140314 - 21:30:48

Applet.js pabaiga

Dabar pažiūrėkime kodą applet.js ir paaiškinkime jo teiginius.

Parašytas kodas yra praktiškai toks pats kaip ankstesnis pavyzdys, parašytas naudojant „Javascript“.
Pakeistas tik signalas, kuris iškvies mūsų automatiškai vykdomąjį failą.

on_applet_clicked: funkcija (įvykis) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }

Mūsų automatiškai vykdomąjį failą galima parašyti naudojant Qt, Gtk, Gtkmm, wxWidget, Vala ir kt. kalbos, kuriomis galima kurti savarankiškai vykdomus failus. Mūsų automatinis vykdomasis failas vadinamas „Menu“ ir yra aplanke „Qtmenu“.

beta

Taip pat galime naudoti kitas programavimo kalbas, kurios turi Gtk susiejimą, pvz., PyGTK, Ruby Gtk, Perl Gtk ir kt. kurį galima naudoti naudojant scenarijų tomis kalbomis parašytam kodui vykdyti. Principas visada yra tas pats, kai reikia skambinti programoms, sukurti iššokantįjį meniu ir iššokantįjį langą pagal mūsų poreikius.

Pažiūrėkime, koks yra mūsų automatiškai vykdomo failo kodas, parašytas naudojant Qt

qt

Mes pradedame apibrėžti metadata.json

LP0ol8b

Mongo

Kodas rašomas taip pat, kaip ir ankstesnis pavyzdys

Programėlės vaizdas sukurtas naudojant „Qt“

ką

Programėlės, sukurtos naudojant „Gtk 3.10“, vaizdas

Aš palieku jums nedidelį programėlės pavyzdį, kuriame naudojamas vykdomasis failas, parašytas Gtk, šiuo atveju mes pasirenkame „myGtkMenu“ meniu, naudojamą „OpenBox“.

Tai yra savarankiškai vykdomas meniu.

megtk

Atsisiųskite mokymo programą ir pavyzdžius


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   aiolia sakė

    Įdomus straipsnis ...

    1.    marianogaudix sakė

      Ačiū . Mano, kad mes po truputį mokomės kiekvieną dieną.

  2.   dovana sakė

    Labai gerai, man tai patinka, aš visada norėjau sužinoti, kaip buvo gaminami tokio tipo apletai

  3.   Angelas Araya sakė

    Maža korekcija. Kaip sakoma straipsnyje, „Gettext“ nėra specifinis cinamonui, tai yra biblioteka, leidžianti atlikti automatinius vertimus iš šablonų.

  4.   MSX sakė

    Labai gera pamoka ir visa kita, bet svarbiausia to nepadarė: nuoroda į tapetą?

    1.    marianogaudix sakė

      Atsisiųskite „Linux Mint 16 Petra“ fono paveikslėlius.
      Pakuotė vadinama mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla sakė

    Labai įdomus straipsnis. Tiesa ta, kad visada galvojau, kaip buvo sukurtos šios programėlės. Galbūt mane skatina sukurti mini grotuvo programėlę MPD ar pan.

    Dėkojame už dalijimąsi!

  6.   Matias sakė

    Puiku, aš tik suprantu, kaip modifikuoti cinamono nm programėlę (tinklo tvarkyklę), kad ji pakeistų spalvą, kai neturiu interneto prieigos (turiu „wifi“ kortelę), ir tai man padeda orientuotis truputi.

  7.   matiasbatero17 sakė

    Na ten Marianai, aš nežinojau, kad tu čia skelbi. Pagarbiai.

    1.    marianogaudix sakė

      Eidama Matute ... .. Aš visada vaikštau po šias dalis. linkėjimais

  8.   lolbimbo sakė

    Geras straipsnis.

  9.   Honovan sakė

    failas nerastas buvo išaktyvintas dėl autorių teisių pažeidimo.

    Aš turiu omenyje tai, kad jei turite jį ten, ar galite jį įkelti dar kartą ???. Prašau.

    Ačiū.