We gaan een eenvoudige applet maken voor Kaneel. Om te beginnen moeten we dat weten Kaneel biedt verschillende soorten applets aan:
- TekstApplet (met een label op het paneel)
- IcoonApplet (toont een pictogram op het paneel)
- TekstIconApplet (geeft zowel een pictogram als een label op het paneel aan)
- applet (voor hardcore ontwikkelaars, die een leeg vak laten zien dat je zelf kunt invullen)
In deze tutorial willen we gewoon een pictogram op het paneel weergeven, dus we zullen een "IconApplet" gebruiken. Om onze applet te programmeren op Kaneel of kabouter we moeten iets weten over Javascript-programmering
Locatie van onze code.
Laten we eerst eens kijken naar de locatie van ons bestand. De locatie van onze applet wordt gegeven op de volgende adressen:
/.local/share/cinnamon/applets
of /usr/share/cinnamon/applets
Bestanden waaruit onze applet bestaat.
We gaan verder met het definiëren van applet.js
Laten we nu doorgaan met het bekijken van de code van applet.js en leg elk van zijn zinnen uit:
applet.js code start
Laten we eens kijken naar elk van de zinnen van onze vorige code
const Lang = imports.lang; / * We roepen de Gtk- en Lang-bibliotheken aan, ze vormen een basisonderdeel van elke GNOME-toepassing, ze stellen ons in staat om vensters en widgets te maken en deze te koppelen. * / Const Applet = imports.ui.applet; / * We roepen de Applet-bibliotheek aan die ons in staat stelt een applet voor Cinnamon en Gnome te maken en tegelijkertijd de eigenschappen en functies ervan geeft. * / Const GLib = imports.gi.GLib; / * GLib is een helpbibliotheek, het stelt ons in staat dingen te doen in GNOME, bijvoorbeeld zeggen waar het hellognome.html-bestand is, het is de bibliotheek die verantwoordelijk is voor signalen. * / Const Gettext = imports.gettext.domain ('cinnamon-applets '); const _ = Gettext.gettext; // Gettext-bibliotheek waarmee we onze eigen kenmerken voor de Cinnamon-desktop kunnen importeren. const PopupMenu = imports.ui.popupMenu; / * PopupMenu is een bibliotheek om de menubeheerder te gebruiken, het stelt ons in staat om de popup-menu-widget op te roepen die gewoonlijk in applets wordt gebruikt. * / Functie MyApplet (oriëntatie) {this._init (oriëntatie); }
De constructor van onze applet wordt hieronder gedefinieerd, laten we eens kijken naar onze klasse of klasse:
We gaan verder met de definitie van elk van de zinnen
MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // We definiëren onze Klasse of Klasse _init: functie (oriëntatie) {Applet.IconApplet.prototype._init.call (dit, oriëntatie); / * We stellen de oriëntatie in via Cinnamon. We stellen in of het appletpaneel bovenaan of onderaan staat (dit heeft invloed op de oriëntatie van de appletmenu's). * / Probeer {// Doe iets} Vang (e) {// Wat gebeurt er als er een fout optreedt} / * We gebruiken een try / catch om eventuele fouten op te vangen die in onze applet kunnen optreden en om ervoor te zorgen dat deze naar het algemene foutenlogboek wordt geschreven. Op deze manier kun je, als er iets misgaat, de fout in Looking Glass zien: Druk op Alt F2, typ "lg" en klik op het tabblad "fouten". * / This.menuManager = new PopupMenu.PopupMenuManager (this) ; // Maak het pop-upmenu en stel de menubeheerder in this.menu = new Applet.AppletPopupMenu (this, oriëntatie); // we maken een menu. this.menuManager.addMenu (this.menu); // We voegen het menu toe aan het popup-menu. this.makeMenu (); // menuitem makeMenu, we maken een menuitem genaamd makeMenu. this.buildContextMenu (); // buildContextMenu, we maken een menuitem genaamd buildContextMenu. this.set_applet_icon_name ("map"); / * We maken de applet, dit geval is uniek, het gekozen pictogram is de map of map, we kunnen ook een tekstapplet maken als we dat willen. * /
Verander bijvoorbeeld de naam van "map" in "terminal", "docky" om nieuwe namen te maken. Zie de naam van de Gnome- of Cinnamon-pictogrammen of een ander pictogramthema, ga naar het adres.
/usr/share/icons
this.set_applet_tooltip (_ ("Klik hier om een venster te doden")); // Vang eventuele fouten op die in onze applet kunnen optreden. catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (nieuw PopupMenu.PopupMenuItem ("Testbericht", {reactive: true})); }, / * We definiëren de naam van het makeMenu menuitem en zijn kenmerken. In dit geval is het label Testbericht ". We zullen {reactive: true} definiëren. We stellen vast dat de achtergrond van het menuitem verandert wanneer de aanwijzer over het menuitem gaat door true als het onwaar is, het tegenovergestelde gebeurt. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // We definiëren de naam van het makeMenu menuitem en zijn kenmerken. In dit geval is het label "show". on_applet_clicked: function (event) {this.menu.toggle ();} // Signaal uitgezonden door de applet, om de pop-up-menu-functie hoofd (metadata, oriëntatie) op te roepen {let myApplet = new MyApplet (oriëntatie); return myApplet;} / * Eindelijk , we hoeven alleen maar een "hoofd" -functie toe te voegen, die waarschijnlijk in elke applet hetzelfde is, een instantie van onze applet wordt gemaakt en teruggestuurd naar Cinnamon. * / // We sluiten de lus return myApplet;
We gaan verder met het definiëren van metadata.json
"last-edit": "1331990905", // Laatste editie. "description": "Klik op de applet om een persoonlijk gedefinieerd gtk-menu te tonen", // Appletbeschrijving. "icon": "docky", // Pictogrammen die worden gebruikt voor de beschrijving van de applet. Verander bijvoorbeeld de naam van "docky" in "terminal", "map". "uuid": "zwart" // Map waarin ons metadata.json-bestand is opgenomen "naam": "Aangepast gtk-menu" // Appletnaam.
Opmerking: Om nieuwe namen in te stellen, zie de naam van de Gnome- of Cinnamon-pictogrammen of een ander pictogramthema, ga naar het adres van het bestandssysteem.
/usr/share/icons
Afbeelding van de gemaakte applet
Qt, Gtk, Vala en andere talen die worden gebruikt om een applet voor Cinnamon of Gnome te maken
Laten we eens kijken naar de locatie van onze applet voor kaneel
De locatie van onze applet wordt gegeven op de volgende adressen:
/.local/share/cinnamon/applets
of
/usr/share/cinnamon/applets
Samenstelling van onze applet
We gaan verder met het definiëren van applet.js
De applet.js-code starten
Einde van applet.js
Laten we nu verder gaan met het bekijken van de applet.js-code en de verklaringen ervan uitleggen.
De geschreven code is praktisch hetzelfde als het vorige voorbeeld geschreven met Javascript.
Alleen het signaal is gewijzigd, wat ons automatisch uitvoerbare bestand zal oproepen.
on_applet_clicked: function (event) {GLib.spawn_command_line_async (GLib.get_home_dir () + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Ons automatisch uitvoerbare bestand kan worden geschreven met Qt, Gtk, Gtkmm, wxWidget, Vala, etc. talen waarmee zelfuitvoerbare bestanden kunnen worden gemaakt. Ons automatisch uitvoerbare bestand heet Menu en staat in de map Qtmenu.
We kunnen ook andere programmeertalen gebruiken die bindingen voor Gtk hebben, zoals PyGTK, Ruby Gtk, Perl Gtk, etc. die kan worden gebruikt met behulp van een script om de code uit te voeren die in die talen is geschreven. Het principe is altijd hetzelfde om programma's op te roepen, een pop-upmenu en een pop-upvenster te maken volgens onze behoeften.
Laten we eens kijken naar de code van ons auto-executable geschreven met Qt
We gaan verder met het definiëren van metadata.json
De code is op dezelfde manier geschreven als in het vorige voorbeeld
Afbeelding van de applet gemaakt met Qt
Afbeelding van de applet gemaakt met Gtk 3.10
Ik laat je een klein voorbeeld achter van een applet die een uitvoerbaar bestand gebruikt dat is geschreven in Gtk, in dit geval nemen we het myGtkMenu-menu dat wordt gebruikt in OpenBox.
Het is een zelfuitvoerend menu.
Download de tutorial en voorbeelden
Interessant artikel ...
Dank je . Mijn is dat we elke dag een klein beetje leren.
Heel goed, ik vind het geweldig, ik wilde altijd al weten hoe dit soort applets werd gemaakt
Een kleine correctie. Gettext is niets specifieks voor Cinnamon zoals het in het artikel zegt, het is een bibliotheek die automatische vertalingen mogelijk maakt en van sjablonen.
Zeer goede tutorial en zo, maar het belangrijkste dat je niet hebt gezegd: link naar wallpaper?
Download de Linux Mint 16 Petra-achtergronden.
Het pakket heet mint-achtergronden-petra: http://packages.linuxmint.com/list.php?release=Petra
Heel interessant artikel. De waarheid is dat ik me altijd heb afgevraagd hoe deze applets zijn gemaakt. Misschien word ik aangemoedigd om een minispeler-applet voor MPD of iets dergelijks te maken.
Bedankt voor het delen!
Uitstekend, ik ben net aan het uitzoeken hoe ik de cinnamon nm-applet (netwerkbeheerder) kan aanpassen, zodat deze van kleur verandert als ik geen internettoegang heb (ik heb een wifi-kaart), en dit helpt me om mezelf een beetje te oriënteren.
Nou daar Marian, ik wist niet dat je hier iets postte. Vriendelijke groeten.
Terwijl je loopt, Matute… .. Ik loop altijd rond deze delen. Proost
Goed artikel.
het bestand kan niet worden gevonden is gedeactiveerd wegens inbreuk op het auteursrecht.
Wat ik bedoel is dat als je het daar hebt, je het dan opnieuw kunt uploaden ???.
dank je wel.