Chystáme se vytvořit jednoduchý applet pro Cinnamon. Nejprve to musíme vědět Cinnamon nabízí různé typy appletů:
- Textová aplikace (zobrazující štítek na panelu)
- IconApplet (na panelu se zobrazí ikona)
- TextIconApplet (s uvedením ikony a štítku na panelu)
- Applet (pro hardcore vývojáře, kteří zobrazují prázdné pole, které můžete vyplnit sami)
V tomto výukovém programu chceme jednoduše zobrazit ikonu na panelu, takže použijeme „IconApplet“. Abychom mohli náš applet naprogramovat na Skořice nebo Gnome potřebujeme vědět a vědět něco o programování Javascriptů
Umístění našeho kódu.
Nejprve se podívejme na umístění našeho souboru. Umístění našeho appletu je uvedeno na následujících adresách:
/.local/share/cinnamon/applets
nebo v /usr/share/cinnamon/applets
Soubory, které tvoří náš applet.
Pokračujeme k definování applet.js
Nyní se podívejme na kód applet.js a vysvětlete každou z jeho vět:
applet.js spuštění kódu
Podívejme se na každou z vět našeho předchozího kódu
const Lang = imports.lang; / * Vyvoláváme knihovny Gtk a Lang, jsou základní součástí jakékoli aplikace GNOME, umožňují nám vytvářet okna, widgety a propojovat je. * / Const Applet = imports.ui.applet; / * Vyvoláme knihovnu appletů, která nám umožňuje vytvořit applet pro Cinnamon a Gnome a zároveň nám dává jeho vlastnosti a funkce. * / Const GLib = imports.gi.GLib; / * GLib je knihovna nápovědy, umožňuje nám dělat věci v GNOME, například říkat, kde je soubor hellognome.html, je to knihovna zodpovědná za signály. * / Const Gettext = imports.gettext.domain ('cinnamon -apletky); const _ = Gettext.gettext; // Knihovna Gettext, která nám umožňuje importovat naše vlastní charakteristiky pro pracovní plochu Cinnamon. const PopupMenu = imports.ui.popupMenu; / * PopupMenu je knihovna pro použití správce nabídek, umožňuje nám vyvolat widget rozbalovací nabídky obvykle používaný v appletech. * / Funkce MyApplet (orientace) {this._init (orientace); }
Konstruktor našeho appletu je definován níže, pojďme se podívat na naši třídu nebo třídu:
Pokračujeme definicí každé z vět
MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Definujeme naši třídu nebo třídu _init: funkce (orientace) {Applet.IconApplet.prototype._init.call (toto, orientace); / * Orientaci jsme nastavili pomocí skořice. Nastavíme, zda je panel appletu nahoře nebo dole (to má vliv na orientaci nabídek appletu). * / Zkuste {// Udělat něco} Catch (e) {// Co se stane, když dojde k chybě } / * Používáme try / catch k zachycení chyb, které se mohou v našem appletu vyskytnout, a k zajištění toho, aby byly zapsány do globálního protokolu chyb. Tímto způsobem, pokud se něco pokazí, můžete vidět chybu v aplikaci Looking Glass: Stiskněte Alt F2, napište „lg“ a klikněte na záložku „errors“. * / This.menuManager = new PopupMenu.PopupMenuManager (this); // Vytvořte rozbalovací nabídku a nastavte správce nabídek this.menu = nový Applet.AppletPopupMenu (toto, orientace); // vytvoříme nabídku. this.menuManager.addMenu (this.menu); // Přidáme nabídku do rozbalovací nabídky. this.makeMenu (); // menuitem makeMenu, vytvoříme menuitem s názvem makeMenu. this.buildContextMenu (); // buildContextMenu, vytvoříme položku nabídky nazvanou buildContextMenu. this.set_applet_icon_name ("složka"); / * Vytvoříme applet, tento případ je jedinečný, zvolenou ikonou je složka nebo složka, můžeme také vytvořit textový applet, pokud chceme. * /
Jako příklad změňte název „složky“ na „terminál“, „docky“, abyste vytvořili nová jména, viz název ikon Gnome nebo Cinnamon nebo jakéhokoli jiného motivu ikony, přejděte na adresu.
/usr/share/icons
this.set_applet_tooltip (_ ("Kliknutím sem zabijete okno")); // Chyťte, abyste zachytili chyby, které se mohou v našem appletu vyskytnout. catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Testovací zpráva", {reaktivní: true}))); }, / * Definujeme název položky nabídky makeMenu a její vlastnosti. V tomto případě je popisek Testovací zpráva ". Budeme definovat {reactive: true} Zjistíme, že pozadí položky nabídky se změní, když ukazatel projde položkou nabídky přes true, pokud je nepravda, stane se pravý opak. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {reactive: true})));}, // Definujeme název položky nabídky makeMenu a její vlastnosti. V tomto případě je štítek "show" ". on_applet_clicked: function (event) {this.menu.toggle ();} // Signál vydávaný appletem pro volání funkce rozbalovací nabídky hlavní (metadata, orientace) {let myApplet = new MyApplet (orientace); návrat myApplet;} / * Nakonec musíme přidat pouze „hlavní“ funkci, která bude pravděpodobně stejná v každém appletu, vytvoří se instance našeho appletu a vrátí se do Cinnamonu. * / // Zavřeme návrat smyčky myApplet;
Pokračujeme k definování metadata.json
"last-edited": "1331990905", // Poslední vydání. "description": "Kliknutím na applet zobrazíte vlastní osobně definovanou nabídku gtk", // Popis appletu. "icon": "docky", // Ikony použité pro popis appletu. Jako příklad změňte název „docky“ na „terminal“, „folder“. "uuid": "black" // Složka, do které je zahrnut náš soubor metadata.json "name": "Vlastní nabídka gtk" // Název appletu.
Nota: Chcete-li nastavit nová jména, podívejte se na název ikon Gnome nebo Cinnamon nebo jakéhokoli jiného motivu ikon, přejděte na adresu systémů souborů.
/usr/share/icons
Obrázek vytvořeného appletu
Qt, Gtk, Vala a další jazyky používané k vytvoření appletu pro skořici nebo Gnome
Podívejme se na umístění našeho appletu pro Cinnamon
Umístění našeho appletu je uvedeno na následujících adresách:
/.local/share/cinnamon/applets
nebo v
/usr/share/cinnamon/applets
Složení našeho appletu
Pokračujeme k definování applet.js
Spuštění kódu applet.js
Konec applet.js
Nyní se podívejme na kód applet.js a vysvětlíme jeho tvrzení.
Napsaný kód je prakticky stejný jako předchozí příklad napsaný pomocí Javascript.
Změněn byl pouze signál, který vyvolá náš automaticky spustitelný soubor.
on_applet_clicked: function (event) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Náš automaticky spustitelný soubor lze zapsat pomocí Qt, Gtk, Gtkmm, wxWidget, Vala atd. jazyky, se kterými lze vytvářet spustitelné soubory. Náš automaticky spustitelný soubor se nazývá Menu a je ve složce Qtmenu.
Můžeme také použít jiné programovací jazyky, které mají vazby pro Gtk, jako je například PyGTK, Ruby Gtk, Perl Gtk atd. který lze použít pomocí skriptu k provedení kódu napsaného v těchto jazycích. Princip je vždy stejný pro volání programů, vytváření rozbalovací nabídky a vyskakovacího okna podle našich potřeb.
Podívejme se na kód našeho automatického spustitelného souboru napsaného pomocí Qt
Pokračujeme k definování metadata.json
Kód je napsán stejným způsobem jako v předchozím příkladu
Obrázek appletu vytvořený pomocí Qt
Obrázek appletu vytvořeného pomocí Gtk 3.10
Zde je malý příklad appletu, který používá spustitelný soubor napsaný v Gtk, v tomto případě použijeme nabídku myGtkMenu používanou v OpenBoxu.
Jedná se o samo-spouštěcí nabídku.
Stáhněte si tutoriál a příklady
Zajímavý článek ...
Děkuji . Můj je, že se každý den trochu učíme.
Velmi dobře, líbí se mi to, vždy jsem chtěl vědět, jak se tyto druhy appletů vyráběly
Malá oprava. Gettext není pro Cinnamon nic konkrétního, jak se uvádí v článku, je to knihovna, která umožňuje automatické překlady a ze šablon.
Velmi dobrý výukový program a to všechno kromě důležité věci, kterou jste nedal: odkaz na tapetu?
Stáhněte si tapety Linux Mint 16 Petra.
Balíček se jmenuje mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra
Velmi zajímavý článek. Pravda je, že mě vždycky zajímalo, jak byly tyto applety vytvořeny. Možná jsem vyzván k vytvoření mini-přehrávače pro MPD nebo něco podobného.
Díky za sdílení!
Výborně, právě zjišťuji, jak upravit applet skořice nm (správce sítě) tak, aby měnil barvu, když nemám přístup k internetu (mám wifi kartu), a to mi pomáhá se trochu zorientovat.
No, Marian, nevěděl jsem, že sem posíláš příspěvky. Pozdravy.
Jak chodíš, Matute ... Vždycky jsem chodil kolem těchto částí. Na zdraví
Dobrý článek.
soubor nebyl nalezen byl deaktivován kvůli porušení autorských práv.
Myslím tím to, že pokud to tam máte, můžete je nahrát znovu ???. Prosím.
děkuji.