Mini-zelfstudie: applets voor kaneel maken

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

Kaneel_Applet

Bestanden waaruit onze applet bestaat.

Kaneel_Applet2

We gaan verder met het definiëren van applet.js

code

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

applet-code

javascript-code

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:

gjs 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

Z7qwRdp

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

LP0ol8b

Screenshot - 140314 - 21:11:34

"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

  lKxpdkS

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

nerd

Samenstelling van onze applet

beta

We gaan verder met het definiëren van applet.js 

code

applet.js

De applet.js-code starten

Screenshot - 140314 - 21:30:48

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.

beta

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

qt

We gaan verder met het definiëren van metadata.json

LP0ol8b

mongo

De code is op dezelfde manier geschreven als in het vorige voorbeeld

Afbeelding van de applet gemaakt met Qt

Minogue

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.

megtk

Download de tutorial en voorbeelden


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   aiolia zei

    Interessant artikel ...

    1.    marianogaudix zei

      Dank je . Mijn is dat we elke dag een klein beetje leren.

  2.   Danie zei

    Heel goed, ik vind het geweldig, ik wilde altijd al weten hoe dit soort applets werd gemaakt

  3.   Angel Araya zei

    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.

  4.   msx zei

    Zeer goede tutorial en zo, maar het belangrijkste dat je niet hebt gezegd: link naar wallpaper?

    1.    marianogaudix zei

      Download de Linux Mint 16 Petra-achtergronden.
      Het pakket heet mint-achtergronden-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla zei

    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!

  6.   Matias zei

    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.

  7.   matiasbatero 17 zei

    Nou daar Marian, ik wist niet dat je hier iets postte. Vriendelijke groeten.

    1.    marianogaudix zei

      Terwijl je loopt, Matute… .. Ik loop altijd rond deze delen. Proost

  8.   lolbimbo zei

    Goed artikel.

  9.   Honovan zei

    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.