Basit bir uygulama oluşturalım Tarçın. Başlamak için şunu bilmeliyiz Tarçın farklı uygulama türleri sunar:
- MetinApplet (panelde bir etiket gösteriliyor)
- IconApplet (panelde bir simge gösteriliyor)
- TextIconApplet (panelde hem simgeyi hem de etiketi gösterir)
- Applet (kendi başınıza doldurabileceğiniz boş bir kutu gösteren hardcore geliştiriciler için)
Bu eğitimde, panelde sadece bir simge görüntülemek istiyoruz, bu nedenle bir "IconApplet" kullanacağız. Appletımızı programlamak için Tarçın veya Gnome Bazı Javascript programlamalarını bilmemiz ve bilmemiz gerekiyor
Kodumuzun konumu.
Öncelikle dosyamızın konumuna bakalım. Appletımızın konumu aşağıdaki adreslerde verilmiştir:
/.local/share/cinnamon/applets
içinde /usr/share/cinnamon/applets
Applet'ımızı oluşturan dosyalar.
applet.js'yi tanımlamaya devam ediyoruz
Şimdi koda bakalım. applet.js ve cümlelerinin her birini açıklayın:
applet.js kodunu başlatma
Önceki kodumuzdaki ifadelerin her birine bakalım
const Lang = imports.lang; /*Gtk ve Lang kütüphanelerini çağırıyoruz, bunlar herhangi bir GNOME uygulamasının temel parçalarıdır, pencereler, parçacıklar oluşturmamıza ve bunları bağlamamıza olanak tanırlar.*/ const Applet = imports.ui.applet; /*Cinnamon ve Gnome için bir uygulama oluşturmamıza olanak tanıyan ve aynı zamanda bize onun özelliklerini ve işlevlerini veren Applet kütüphanelerini çağırıyoruz.*/ const GLib = imports.gi.GLib; /*GLib bir yardım kütüphanesidir, GNOME'da bazı şeyler yapmamızı sağlar, örneğin hellognome.html dosyasının nerede olduğunu söyler, sinyallerden sorumlu kütüphanedir.*/ const Gettext = imports.gettext.domain('cinnamon -applet'); const _ = Gettext.gettext; //Tarçın masaüstünün özelliklerini içe aktarmamızı sağlayan Gettext kütüphanesi. const PopupMenu = imports.ui.popupMenu; /*PopupMenu menü yöneticisini kullanmak için bir kütüphanedir, genellikle uygulamalarda kullanılan açılır menü widget'ını çağırmamıza olanak tanır.*/ function MyApplet(orientation) { this._init(orientation); }
Appletımızın yapıcısı aşağıda tanımlanmıştır, sınıfımıza bakalım:
Her bir cümlenin tanımıyla devam ediyoruz
MyApplet.prototype = { __proto__: Applet.IconApplet.prototype, // Sınıfımızı veya Sınıfımızı tanımlarız _init: function(orientation) { Applet.IconApplet.prototype._init.call(this, Orientation); /*Tarçın üzerinden yönlendirmeyi oluşturuyoruz. Applet panelinin üstte mi yoksa altta mı olacağını ayarlıyoruz (bunun applet menülerinin yönünü etkiler).*/ try { // Bir şeyler yapın } Yakala (e) { // Bir hata oluşursa ne olur } / *Appletimizde oluşabilecek hataları yakalamak ve global hata günlüğüne yazılmasını sağlamak için try/catch kullanıyoruz. Bu şekilde, eğer bir şeyler ters giderse, Ayna Aynasında hatayı görebilirsiniz: Alt F2 tuşuna basın, "lg" yazın ve "hatalar" sekmesine tıklayın.*/ this.menuManager = new PopupMenu.PopupMenuManager(this) ; //Açılır menüyü oluşturun ve menü yöneticisini ayarlayın this.menu = new Applet.AppletPopupMenu(this, oryantasyon); //bir menü oluşturuyoruz. this.menuManager.addMenu(this.menu); // Menüyü açılır menüye ekliyoruz. this.makeMenu(); // menuitem makeMenu, makeMenu adında bir menuitem oluşturuyoruz. this.buildContextMenu(); // buildContextMenu, buildContextMenu adında bir menü öğesi oluşturuyoruz. this.set_applet_icon_name("klasör"); /*Applet'i oluşturuyoruz, bu durum benzersizdir, seçilen simge klasördür, istersek bir metin uygulaması da oluşturabiliriz.*/
Örnek olarak, yeni adlar oluşturmak için "klasör" adını "terminal", "docky" olarak değiştirin, Gnome veya Tarçın simgelerinin veya başka herhangi bir simge temasının adını görün, adrese gidin.
/usr/share/icons
this.set_applet_tooltip(_("Bir pencereyi kapatmak için buraya tıklayın")); // Uygulamamızda oluşabilecek hataları yakalamak için yakalayın. catch (e) { global.logError(e); } makeMenu: function() { this.menu.addMenuItem(new PopupMenu.PopupMenuItem("Test Mesajı", { reactive: true })); }, /*makeMenu menü öğesinin adını ve özelliklerini tanımlıyoruz. Bu durumda etiket Test Mesajıdır". { reactive: true } tanımlayacağız. İşaretçi menü öğesinin üzerinden geçtiğinde menü öğesinin arka planının değişeceğini true kullanarak belirleriz, eğer yanlışsa tam tersi olur.*/ buildContextMenu: function () { this.menu .addMenuItem(new PopupMenu.PopupMenuItem(" show", { reactive: true })); }, // makeMenu menü öğesinin adını ve özelliklerini tanımlıyoruz. Bu durumda etiket "show" olur ". on_applet_clicked: function(event) { this.menu.toggle(); } // Açılır menüyü çağırmak için uygulama tarafından gönderilen sinyal. function main(meta veriler, yönlendirme) { let myApplet = new MyApplet(orientation); return myApplet; } /*Son olarak her applette aynı olması muhtemel bir "main" fonksiyon eklememiz gerekiyor.Appletimizin bir örneğini oluşturur ve onu Cinnamon'a döndürür.*/ // Kapatıyoruz döngü myApplet'i döndürür;
Metadata.json'u tanımlamaya devam ediyoruz
"son düzenleme": "1331990905", // Son düzenleme. "description": "Kişisel olarak tanımlanmış özel bir gtk menüsünü göstermek için uygulamaya tıklayın", // Uygulamanın açıklaması. "icon": "docky ", // Uygulama açıklaması için kullanılan simgeler. Örnek olarak, adı "docky" yerine "terminal", "klasör" olarak değiştirin. "uuid": "black" // metadata.json dosyamızın bulunduğu klasör "name": "Custom gtk menu" // Applet'in adı.
Not: Gnome veya Tarçın simgelerinin veya başka herhangi bir simge temasının adını görmek üzere yeni adlar ayarlamak için dosya sistemi adresine gidin.
/usr/share/icons
Oluşturulan Applet'in görüntüsü
Tarçın veya Gnome için uygulama oluşturmak için kullanılan Qt, Gtk, Vala ve diğer diller
Tarçın için uygulamamızın konumuna bakalım
Appletımızın konumu aşağıdaki adreslerde verilmiştir:
/.local/share/cinnamon/applets
içinde
/usr/share/cinnamon/applets
Uygulamamızın bileşimi
applet.js'yi tanımlamaya devam ediyoruz
applet.js kodunu başlatma
applet.js'nin sonu
Şimdi applet.js kodunu görelim ve cümlelerini açıklamaya geçelim.
Yazılan kod, Javascript ile yazılan önceki örnekle hemen hemen aynıdır.
Yalnızca otomatik çalıştırılabilir dosyamızı çağıracak olan sinyal değiştirildi.
on_applet_clicked: function(event) { GLib.spawn_command_line_async( GLib.get_home_dir() + '/.local/share/cinnamon/applets/Qt4/Qtmenu/Menu'); }
Otomatik çalıştırılabilir dosyamız Qt, Gtk, Gtkmm, wxWidget, Vala vb. ile yazılabilir. kendi kendine çalıştırılabilir dosyaların oluşturulabileceği diller. Otomatik çalıştırılabilir dosyamızın adı Menü'dür ve Qtmenu klasöründedir.
PyGTK, Ruby Gtk, Perl Gtk vb. gibi Gtk için bağlamaları olan diğer programlama dillerini de kullanabiliriz. söz konusu dillerde yazılan kodu yürütmek için bir komut dosyası kullanılarak kullanılabilir. İhtiyaçlarımıza göre programları çağırmak, açılır menü ve açılır pencere oluşturmak için prensip her zaman aynıdır.
Qt ile yazılan otomatik çalıştırılabilir dosyamızın koduna bakalım
Metadata.json'u tanımlamaya devam ediyoruz
Kod önceki örnekle aynı şekilde yazılmıştır.
Qt ile oluşturulan Applet'in görüntüsü
Gtk 3.10 ile oluşturulan Applet'in görüntüsü
Size Gtk'de yazılmış çalıştırılabilir bir araba kullanan küçük bir uygulama örneği bırakıyorum, bu durumda OpenBox'ta kullanılan myGtkMenu menüsünü alıyoruz.
Kendi kendine çalışan bir menüdür.
Eğiticiyi ve örnekleri indirin
interesenta Articulo…
Gracias . Mi es que aprendamos un poquito cada día .
Muy bueno, me encanta, siempre quise saber como se hacían esta clase de applets
Una pequeña corrección. Gettext no es nada específico de Cinnamon como dice en el artículo, es una librería que hace posibles las traducciones automáticas y a partir de plantillas.
Muy bueno el tutorial y todo eso pero lo importante no lo pusiste: link al wallpaper?
Bajate los wallpapers de Linux Mint 16 Petra .
El paquete se llama mint-backgrounds-petra : http://packages.linuxmint.com/list.php?release=Petra
Muy interesante el artículo. La verdad es que siempre me había preguntado como se creaban estos applets. Quizá me anime a crear un applet mini-reproductor para MPD o algo similar.
Paylaşım için teşekkürler!
Excelente, justo estoy averiguando como modificar el nm-applet (network manager) de cinnamon, para que me cambie de color cuando no tengo salida a internet, (tengo una placa wifi), y esto me sirve para orientarme un poco..
bien ahí Marian, no sabía que posteabas acá. Saludos.
Como andas Matute ….. siempre ando dando vueltas por estos lados . Saludos
İyi makale.
no se encuentra el archivo fue desactivado por violación a derechos de autor.
lo que quiero decir es que si lo tienes por hay ,lo puedes volver a subir???.por favor.
teşekkür ederim.