Mini Tutorial: Δημιουργία μικροεφαρμογών για κανέλα

Θα δημιουργήσουμε ένα απλό applet για Κανέλα. Για να ξεκινήσουμε, πρέπει να το ξέρουμε αυτό Κανέλα προσφέρει διαφορετικούς τύπους μικροεφαρμογών:

  • TextApplet (δείχνει μια ετικέτα στον πίνακα)
  • Εικονίδιο (δείχνει ένα εικονίδιο στον πίνακα)
  • TextIconApplet (που δείχνει ένα εικονίδιο και μια ετικέτα στον πίνακα)
  • μικροεφαρμογή (για σκληροπυρηνικούς προγραμματιστές, που εμφανίζουν ένα κενό πλαίσιο που μπορείτε να γεμίσετε μόνοι σας)

Σε αυτό το σεμινάριο, θέλουμε απλώς να εμφανίσουμε ένα εικονίδιο στον πίνακα, επομένως θα χρησιμοποιήσουμε ένα IconApplet. Για να προγραμματίσουμε το applet μας σε Κανέλα ή Gnome πρέπει να γνωρίζουμε και να γνωρίζουμε κάποιο προγραμματισμό Javascript

Τοποθεσία του κωδικού μας.

Αρχικά, ας δούμε τη θέση του αρχείου μας. Η τοποθεσία της μικροεφαρμογής μας δίνεται στις ακόλουθες διευθύνσεις:

/.local/share/cinnamon/applets ή /usr/share/cinnamon/applets

Cinnamon_Applet

Αρχεία που αποτελούν τη Applet μας.

Κανέλα_Εφαρμογή2

Προχωράμε στον ορισμό του applet.js

κώδικα

applet.js

Τώρα ας προχωρήσουμε για να δούμε τον κωδικό applet.js και εξηγήστε κάθε μία από τις προτάσεις του:

έναρξη κώδικα applet.js

κωδικός applet

κώδικας javascript

Ας δούμε καθεμία από τις δηλώσεις στον προηγούμενο κώδικα μας

const Lang = imports.lang; / * Επικαλούμεμε τις βιβλιοθήκες Gtk και Lang, αποτελούν βασικό μέρος οποιασδήποτε εφαρμογής GNOME, μας επιτρέπουν να δημιουργούμε παράθυρα, widget και να τα συνδέουμε. * / Const Applet = imports.ui.applet; / * Επικαλείται τη βιβλιοθήκη Applet που μας επιτρέπει να δημιουργήσουμε μια applet για Cinnamon και Gnome και ταυτόχρονα μας δίνει τις ιδιότητες και τις λειτουργίες της. * / Const GLib = imports.gi.GLib; / * Το GLib είναι μια βοηθητική βιβλιοθήκη, μας επιτρέπει να κάνουμε πράγματα στο GNOME, για παράδειγμα να πούμε πού βρίσκεται το αρχείο hellognome.html, είναι η βιβλιοθήκη που είναι υπεύθυνη για τα σήματα. * / Const Gettext = imports.gettext.domain ('cinnamon -εφαρμογές '); const _ = Gettext.gettext; // Βιβλιοθήκη Gettext που μας επιτρέπει να εισάγουμε τα δικά μας χαρακτηριστικά για την επιφάνεια εργασίας Cinnamon. const PopupMenu = imports.ui.popupMenu; / * Το PopupMenu είναι μια βιβλιοθήκη για τη χρήση του διαχειριστή μενού, μας επιτρέπει να καλέσουμε το widget αναδυόμενου μενού που χρησιμοποιείται συνήθως σε μικροεφαρμογές. * / Λειτουργία MyApplet (προσανατολισμός) {this._init (orientation); }

Ο κατασκευαστής της μικροεφαρμογής μας ορίζεται παρακάτω, ας δούμε την Τάξη ή την Κλάση μας:

τάξη gjs

Συνεχίζουμε με τον ορισμό καθεμιάς από τις προτάσεις

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Ορίζουμε την κλάση ή την κλάση _init: function (προσανατολισμός) {Applet.IconApplet.prototype._init.call (αυτό, προσανατολισμός); / * Ρυθμίζουμε τον προσανατολισμό μέσω της Κανέλας. Ρυθμίζουμε αν το πλαίσιο του applet βρίσκεται στο επάνω μέρος ή στο κάτω μέρος (αυτό επηρεάζει τον προσανατολισμό των μενού applet). * / Δοκιμάστε {// Κάντε κάτι} Catch (e) {// Τι συμβαίνει εάν παρουσιαστεί σφάλμα } / * Χρησιμοποιούμε μια δοκιμή / catch για να εντοπίσουμε τυχόν σφάλματα που ενδέχεται να προκύψουν στο applet μας και για να βεβαιωθούμε ότι είναι γραμμένο στο καθολικό αρχείο καταγραφής σφαλμάτων. Με αυτόν τον τρόπο, εάν κάτι πάει στραβά, μπορείτε να δείτε το σφάλμα στο Κοίτα γυαλί: Πατήστε Alt F2, πληκτρολογήστε "lg" και κάντε κλικ στην καρτέλα "σφάλματα". * / This.menuManager = νέο PopupMenu.PopupMenuManager (αυτό); // Δημιουργήστε το αναδυόμενο μενού και ορίστε τον διαχειριστή μενού this.menu = new Applet.AppletPopupMenu (this, orientation); // δημιουργούμε ένα μενού. this.menuManager.addMenu (this.menu); // Προσθέτουμε το μενού στο αναδυόμενο μενού. αυτό.makeMenu (); // menuitem makeMenu, δημιουργούμε ένα μενού που ονομάζεται makeMenu. this.buildContextMenu (); // buildContextMenu, δημιουργούμε ένα μενού που ονομάζεται buildContextMenu. this.set_applet_icon_name ("φάκελος"); / * Δημιουργούμε τη μικροεφαρμογή, αυτή η περίπτωση είναι μοναδική, το επιλεγμένο εικονίδιο είναι ο φάκελος ή ο φάκελος, μπορούμε επίσης να δημιουργήσουμε μια μικροεφαρμογή κειμένου αν θέλουμε. * /

Για παράδειγμα, αλλάξτε το όνομα του "φάκελου" σε "terminal", "docky" για να ορίσετε νέα ονόματα, δείτε το όνομα των εικονιδίων Gnome ή Cinnamon ή οποιοδήποτε άλλο θέμα εικονιδίων, μεταβείτε στη διεύθυνση .

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ("Κάντε κλικ εδώ για να σκοτώσετε ένα παράθυρο")); // Πιάσε για να πιάσεις τυχόν λάθη που μπορεί να προκύψουν στο applet μας catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (νέο PopupMenu.PopupMenuItem ("Δοκιμή μηνύματος", {reactive: true})); }, / * Ορίζουμε το όνομα του μενού και τα χαρακτηριστικά του. Σε αυτήν την περίπτωση, η ετικέτα είναι Test Message ". Θα ορίσουμε το {reactive: true} Καθορίζουμε ότι το φόντο του μενού θα αλλάξει όταν ο δείκτης περνά πάνω από το μενού μέσω true εάν είναι ψευδές, συμβαίνει το αντίθετο. * / BuildContextMenu: function () {this.menu .addMenuItem (νέο PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Ορίζουμε το όνομα του μενού και τα χαρακτηριστικά του. ". on_applet_clicked: function (event) {this.menu.toggle ();} // Σήμα που εκπέμπεται από τη μικροεφαρμογή, για να καλέσετε τη βασική λειτουργία αναδυόμενου μενού (μεταδεδομένα, προσανατολισμός) {let myApplet = new MyApplet (προσανατολισμός); επιστροφή myApplet;} / * Τέλος, απλώς πρέπει να προσθέσουμε μια "κύρια" συνάρτηση, η οποία είναι πιθανό να είναι η ίδια σε κάθε applet, δημιουργείται μια παρουσία της applet μας και επιστρέφεται στην Cinnamon. * / // Κλείνουμε την επιστροφή βρόχου myApplet;

Προχωράμε στον ορισμό του metadata.json

LP0ol8b

Στιγμιότυπο οθόνης - 140314 - 21:11:34

"τελευταία επεξεργασία": "1331990905", // Τελευταία έκδοση. "περιγραφή": "Κάντε κλικ στο applet για να εμφανιστεί ένα προσαρμοσμένο προσωπικά καθορισμένο μενού gtk", // Περιγραφή Applet. "icon": "docky", // Εικονίδια που χρησιμοποιούνται για την περιγραφή της μικροεφαρμογής. Για παράδειγμα, αλλάξτε το όνομα "docky" σε "terminal", "folder". "uuid": "black" // Φάκελος όπου περιλαμβάνεται το αρχείο metadata.json "name": "Custom gtk menu" // Όνομα Applet.

Σημείωση: Για να ορίσετε νέα ονόματα, δείτε το όνομα των εικονιδίων Gnome ή Cinnamon ή οποιοδήποτε άλλο θέμα εικονιδίων, μεταβείτε στη διεύθυνση του συστήματος αρχείων.

/usr/share/icons

Εικόνα του δημιουργημένου Applet

  lKxpdkS

Qt, Gtk, Vala και άλλες γλώσσες που χρησιμοποιούνται για τη δημιουργία μιας μικροεφαρμογής για το Cinnamon ή το Gnome

Ας δούμε τη θέση της μικροεφαρμογής μας για κανέλα

Η τοποθεσία της μικροεφαρμογής μας δίνεται στις ακόλουθες διευθύνσεις:

/.local/share/cinnamon/applets

ή

/usr/share/cinnamon/applets

σπασίκλα

Σύνθεση της μικροεφαρμογής μας

βήτα

Προχωράμε στον ορισμό του applet.js 

κώδικα

applet.js

Εκκίνηση του κωδικού applet.js

Στιγμιότυπο οθόνης - 140314 - 21:30:48

Τέλος του applet.js

Τώρα ας προχωρήσουμε στην εξέταση του κώδικα applet.js και ας εξηγήσουμε τις δηλώσεις του.

Ο γραπτός κώδικας είναι πρακτικά ο ίδιος με το προηγούμενο παράδειγμα που γράφτηκε με Javascript.
Μόνο το σήμα έχει αλλάξει, το οποίο θα καλέσει το αυτόματο εκτελέσιμο.

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

Το αυτοεκτελέσιμό μας μπορεί να γραφτεί με Qt, Gtk, Gtkmm, wxWidget, Vala κ.λπ. γλώσσες με τις οποίες μπορούν να δημιουργηθούν αυτόματα εκτελέσιμα. Το αυτόματο εκτελέσιμό μας ονομάζεται Μενού και βρίσκεται στο φάκελο Qtmenu.

βήτα

Μπορούμε επίσης να χρησιμοποιήσουμε άλλες γλώσσες προγραμματισμού που έχουν δεσμεύσεις για το Gtk, όπως στην περίπτωση των PyGTK, Ruby Gtk, Perl Gtk κ.λπ. το οποίο μπορεί να χρησιμοποιηθεί χρησιμοποιώντας ένα σενάριο για την εκτέλεση του κώδικα που είναι γραμμένο σε αυτές τις γλώσσες. Η αρχή είναι πάντα η ίδια για να καλέσετε προγράμματα, να δημιουργήσετε αναδυόμενο μενού και αναδυόμενο παράθυρο σύμφωνα με τις ανάγκες μας.

Ας δούμε τον κώδικα του αυτο-εκτελέσματός μας γραμμένο με Qt

qt

Προχωράμε στον ορισμό του metadata.json

LP0ol8b

Mongo

Ο κώδικας είναι γραμμένος με τον ίδιο τρόπο όπως στο προηγούμενο παράδειγμα

Η εικόνα της μικροεφαρμογής δημιουργήθηκε με Qt

τι

Εικόνα του Applet που δημιουργήθηκε με Gtk 3.10

Σας αφήνω ένα μικρό παράδειγμα μικροεφαρμογής που χρησιμοποιεί ένα εκτελέσιμο αυτοκίνητο γραμμένο σε Gtk, σε αυτήν την περίπτωση παίρνουμε το μενού myGtkMenu που χρησιμοποιείται στο OpenBox.

Είναι ένα μενού αυτο-εκτέλεσης.

megtk

Κατεβάστε το σεμινάριο και τα παραδείγματα


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Αγία dijo

    Ενδιαφέρον άρθρο ...

    1.    marianogaudix dijo

      Ευχαριστώ . Μου είναι ότι μαθαίνουμε λίγο κάθε μέρα.

  2.   Danie dijo

    Πολύ καλό, το λατρεύω, πάντα ήθελα να μάθω πώς κατασκευάστηκαν αυτά τα είδη μικροεφαρμογών

  3.   Άγγελος Αράγια dijo

    Μια μικρή διόρθωση. Το Gettext δεν είναι τίποτα συγκεκριμένο για την Κανέλα, όπως λέει στο άρθρο, είναι μια βιβλιοθήκη που επιτρέπει τις αυτόματες μεταφράσεις και από πρότυπα.

  4.   MSX dijo

    Πολύ καλό σεμινάριο και όλα αυτά, αλλά το σημαντικό πράγμα που δεν το βάλατε: σύνδεσμος στην ταπετσαρία;

    1.    marianogaudix dijo

      Κατεβάστε τις ταπετσαρίες Linux Mint 16 Petra.
      Το πακέτο ονομάζεται μέντα-φόντο-πέτρα: http://packages.linuxmint.com/list.php?release=Petra

  5.   Τέσλα dijo

    Πολύ ενδιαφέρον άρθρο. Η αλήθεια είναι ότι πάντα αναρωτιόμουν πώς δημιουργήθηκαν αυτές οι μικροεφαρμογές. Ίσως ενθαρρύνομαι να δημιουργήσω μια μικροεφαρμογή μικροεφαρμογών για MPD ή κάτι παρόμοιο.

    Ευχαριστίες για τη διανομή!

  6.   Matias dijo

    Εξαιρετικά, απλά καταλαβαίνω πώς να τροποποιήσω το nm-applet της κανέλας (διαχειριστής δικτύου), έτσι ώστε να αλλάζει χρώμα όταν δεν έχω πρόσβαση στο Διαδίκτυο (έχω κάρτα wifi) και αυτό με βοηθά να προσανατολιστώ κομμάτι

  7.   matiasbatero17 dijo

    Λοιπόν, Marian, δεν ήξερα ότι δημοσιεύατε εδώ. Χαιρετισμοί.

    1.    marianogaudix dijo

      Καθώς περπατάτε, Matute… .. Πάντα περπατώ γύρω από αυτά τα μέρη. Στην υγειά σας

  8.   lolbimbo dijo

    Καλό άρθρο.

  9.   Χονοβάν dijo

    το αρχείο που δεν βρέθηκε απενεργοποιήθηκε για παραβίαση πνευματικών δικαιωμάτων.

    Αυτό που εννοώ είναι ότι αν το έχετε εκεί, μπορείτε να το ανεβάσετε ξανά ???. Παρακαλώ.

    σας ευχαριστώ.