Mini Tutorial: Criando miniaplicativos para Canela

Vamos criar um miniaplicativo simples para Canela. Para começar, devemos saber que Canela oferece diferentes tipos de miniaplicativos:

  • TextAppletName (mostrando uma etiqueta no painel)
  • IconApplet (mostrando um ícone no painel)
  • TextIconApplet (indicando um ícone e um rótulo no painel)
  • Applet (para desenvolvedores hardcore, que mostram uma caixa vazia que você mesmo pode preencher)

Neste tutorial, queremos simplesmente exibir um ícone no painel, então usaremos um "IconApplet". A fim de programar nosso miniaplicativo para Canela ou gnomo precisamos saber e saber algo sobre programação Javascript

Localização do nosso código.

Primeiro, vamos ver a localização do nosso arquivo. A localização do nosso miniaplicativo é fornecida nos seguintes endereços:

/.local/share/cinnamon/applets o em /usr/share/cinnamon/applets

Canela_Applet

Arquivos que compõem nosso Applet.

Canela_Applet2

Prosseguimos para definir applet.js

código

miniaplicativo.js

Agora vamos prosseguir para ver o código de miniaplicativo.js e explique cada uma de suas sentenças:

início do código applet.js

código de miniaplicativo

código javascript

Vamos ver cada uma das sentenças de nosso código anterior

const Lang = imports.lang; / * Invocamos as bibliotecas Gtk e Lang, elas são uma parte básica de qualquer aplicativo GNOME, nos permitem criar janelas, widgets e vinculá-los. * / Const Applet = imports.ui.applet; / * Invocamos a biblioteca Applet que nos permite criar um applet para Cinnamon e Gnome e ao mesmo tempo nos dá suas propriedades e funções. * / Const GLib = imports.gi.GLib; / * GLib é uma biblioteca auxiliar, ela nos permite fazer coisas no GNOME, por exemplo, dizer onde está o arquivo hellognome.html, é a biblioteca responsável pelos sinais. * / Const Gettext = imports.gettext.domain ('cinnamon -applets '); const _ = Gettext.gettext; // Biblioteca Gettext que nos permite importar nossas próprias características para o desktop Cinnamon. const PopupMenu = imports.ui.popupMenu; / * PopupMenu é uma biblioteca para usar o gerenciador de menu, que nos permite invocar o widget de menu pop-up normalmente usado em miniaplicativos. * / Function MyApplet (orientação) {this._init (orientação); }

O construtor do nosso miniaplicativo é definido abaixo, vamos dar uma olhada em nossa classe ou classe:

classe gjs

Continuamos com a definição de cada uma das frases

MyApplet.prototype = {__proto__: Applet.IconApplet.prototype, // Definimos nossa classe ou classe _init: function (orientação) {Applet.IconApplet.prototype._init.call (this, orientação); / * Definimos a orientação através do Cinnamon. Definimos se o painel do miniaplicativo está na parte superior ou na parte inferior (isso tem um impacto na orientação dos menus do miniaplicativo). * / Try {// Do something} Catch (e) {// O que acontece se ocorrer um erro } / * Usamos um try / catch para detectar quaisquer erros que possam ocorrer em nosso miniaplicativo e para garantir que sejam gravados no log de erros global. Desta forma, se algo der errado, você poderá ver o erro no Looking Glass: Pressione Alt F2, digite "lg" e clique na aba "erros". * / This.menuManager = new PopupMenu.PopupMenuManager (this); // Cria o menu pop-up e define o gerenciador de menu this.menu = new Applet.AppletPopupMenu (this, orientação); // criamos um menu. this.menuManager.addMenu (this.menu); // Adicionamos o menu ao menu pop-up. this.makeMenu (); // menuitem makeMenu, criamos um menuitem chamado makeMenu. this.buildContextMenu (); // buildContextMenu, criamos um item de menu chamado buildContextMenu. this.set_applet_icon_name ("pasta"); / * Criamos o miniaplicativo, neste caso é único, o ícone escolhido é a pasta ou pasta, podemos também estabelecer um miniaplicativo de texto se quisermos. * /

Como exemplo, altere o nome da "pasta" para "terminal", "docky" para estabelecer novos nomes veja o nome dos ícones Gnome ou Canela ou qualquer outro tema de ícone, entre no endereço.

/usr/share/icons

Z7qwRdp

this.set_applet_tooltip (_ ("Clique aqui para encerrar uma janela")); // Capture para detectar quaisquer erros que possam ocorrer em nosso miniaplicativo. catch (e) {global.logError (e); } makeMenu: function () {this.menu.addMenuItem (new PopupMenu.PopupMenuItem ("Test Message", {reactive: true})); }, / * Definimos o nome do item de menu makeMenu e suas características. Neste caso, o rótulo é Mensagem de teste ". Definiremos {reativo: verdadeiro} Estabelecemos que o fundo do item de menu mudará quando o ponteiro passar sobre o item de menu para verdadeiro. Se for falso, o oposto acontece. * / BuildContextMenu: function () {this.menu .addMenuItem (new PopupMenu.PopupMenuItem ("show", {reactive: true}));}, // Definimos o nome do item de menu makeMenu e suas características. Neste caso, o rótulo é "show ". on_applet_clicked: function (event) {this.menu.toggle ();} // Sinal emitido pelo miniaplicativo, para chamar a função do menu pop-up main (metadados, orientação) {let myApplet = new MyApplet (orientação); retornar myApplet;} / * Finalmente, só temos que adicionar uma função "principal", que provavelmente será a mesma em cada miniaplicativo, uma instância de nosso miniaplicativo é criada e retornada ao Cinnamon. * / // Fechamos o loop return myApplet;

Prosseguimos para definir metadata.json

LP0ol8b

Captura de tela - 140314 - 21:11:34

"última edição": "1331990905", // Última edição. "descrição": "Clique no miniaplicativo para mostrar um menu gtk personalizado definido pessoalmente", // Descrição do miniaplicativo. "icon": "docky", // Ícones usados ​​para a descrição do miniaplicativo. Como exemplo, altere o nome de "docky" para "terminal", "pasta". "uuid": "black" // Pasta onde nosso arquivo metadata.json está incluído "nome": "Menu gtk personalizado" // Nome do miniaplicativo.

Nota: Para definir novos nomes, veja o nome dos ícones Gnome ou Cinnamon ou qualquer outro tema de ícone, vá para o endereço do sistema de arquivos.

/usr/share/icons

Imagem do miniaplicativo criado

  lKxpdkS

Qt, Gtk, Vala e outras linguagens usadas para criar um miniaplicativo para Cinnamon ou Gnome

Vamos ver a localização do nosso miniaplicativo para Canela

A localização do nosso miniaplicativo é fornecida nos seguintes endereços:

/.local/share/cinnamon/applets

o em

/usr/share/cinnamon/applets

CDF

Composição do nosso applet

beta

Prosseguimos para definir applet.js 

código

miniaplicativo.js

Iniciando o código applet.js

Captura de tela - 140314 - 21:30:48

Fim de applet.js

Agora vamos prosseguir para ver o código applet.js e explicar suas instruções.

O código escrito é praticamente igual ao exemplo anterior escrito em Javascript.
Apenas o sinal foi alterado, o que chamará nosso auto-executável.

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

Nosso auto-executável pode ser escrito com Qt, Gtk, Gtkmm, wxWidget, Vala, etc. linguagens com as quais auto-executáveis ​​podem ser criados. Nosso auto-executável é chamado Menu e está na pasta Qtmenu.

beta

Também podemos usar outras linguagens de programação que possuem vínculos para Gtk, como é o caso de PyGTK, Ruby Gtk, Perl Gtk, etc. que pode ser usado por meio de um script para executar o código escrito nessas linguagens. O princípio é sempre o mesmo para chamar programas, criar menu popup e janela popup de acordo com nossas necessidades.

Vamos ver o código do nosso auto-executável escrito com Qt

qt

Prosseguimos para definir metadata.json

LP0ol8b

mongo

O código é escrito da mesma forma que o exemplo anterior

Imagem do miniaplicativo criada com Qt

que

Imagem do Applet criado com Gtk 3.10

Aqui está um pequeno exemplo de um miniaplicativo que usa um executável escrito em Gtk, neste caso, pegamos o menu myGtkMenu usado no OpenBox.

É um menu autoexecutável.

megtk

Baixe o tutorial e exemplos


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   aiolia dito

    Artigo interessante ...

    1.    marianogaudice dito

      Obrigado . Minha é que aprendemos um pouco a cada dia.

  2.   Danie dito

    Muito bom adorei, sempre quis saber como são feitos esses tipos de applets

  3.   Angel Araya dito

    Uma pequena correção. Gettext não é nada específico do Cinnamon como diz no artigo, é uma biblioteca que possibilita traduções automáticas e a partir de templates.

  4.   msx dito

    Tutorial muito bom e tudo mais, mas o importante que você não colocou: link para papel de parede?

    1.    marianogaudice dito

      Baixe os papéis de parede do Linux Mint 16 Petra.
      O pacote é denominado mint-backgrounds-petra: http://packages.linuxmint.com/list.php?release=Petra

  5.   Tesla dito

    Artigo muito interessante. A verdade é que sempre me perguntei como esses applets foram criados. Talvez eu seja encorajado a criar um mini-player para MPD ou algo semelhante.

    Obrigado por compartilhar!

  6.   Matias dito

    Excelente, estou apenas descobrindo como modificar o cinnamon nm-applet (gerenciador de rede), para que mude de cor quando eu não tiver acesso à internet (tenho placa wi-fi), e isso me ajuda a me orientar um pouco.

  7.   matiasbatero17 dito

    Bem aí Marian, eu não sabia que você estava postando aqui. Saudações.

    1.    marianogaudice dito

      Enquanto você anda, Matute ... Eu sempre ando por aqui. Felicidades

  8.   lolbimbo dito

    Bom artigo.

  9.   Honovan dito

    arquivo não encontrado foi desativado por violação de direitos autorais.

    O que quero dizer é que, se você o tiver lá, pode carregá-lo novamente ??. Por favor.

    obrigado.