O que há de novo para desenvolvedores, administradores de sistemas e distribuidores

O GNOME 3.12 apresenta vários novos recursos e aprimoramentos para aqueles que trabalham com tecnologias do GNOME.

Novos componentes do GTK+

O kit de ferramentas GTK+ tem três novos componentes de interface para 3.12:

  • GtkActionBar: um novo contêiner, que tem um fiilho centralizado como GtkHeaderBar. Esse tem a intenção de ser usado para a parte de baixo dos componentes para apresentação de ações para conteúdo selecionado.

  • GtkPopover: um novo componente que pode ser usado para visões transientes, como uma alternativa a menus e diálogos.

  • GtkFlowBox: um contêiner que exibe seus filhos como uma grade refluidora, que pode ser orientado horizontalmente ou verticalmente.

API de notificações integrada

GNOME 3.12 inclui uma nova API de notificações. Inclusa no GIO e chamada de GNotification, a nova API substitui libnotify, de forma que os desenvolvedores não precisam mais fazer licação com esta. (GNotification pode retornar para a interface do D-Bus org.freedesktop.Notifications.)

A nova API integra de forma organizada ao GTK+ e funciona em conjunto com GApplication e GAction. Ele oferece muitas das capacidades do libnotify além de outras novas, tais como a habilidade de notificações persistirem após um aplicativo sair. Também é possível reiniciar um aplicativo quando uma notificação é ativada pelo usuário.

Mais detalhes sobre como usar a API GNotification podem ser encontrados na página Como que eu.

Nova e poderosa API de lançamento de processos

Uma nova e poderosa API de lançamento de processos foi incluída no 3.12, chamada GSubprocess. A nova API permite usar o utilitário de linha de comando gapplication para lançar aplicativos. Os aplicativos podem ser instruídos a abrir arquivos ou acionar ações quando lançado. Também é possível listar os aplicativos e ações disponíveis e o utilitário de linha de comando vem completo, com o "bash completion".

GApplication agora também suporta tratamento de linha de comando, incluindo a opção --gapplication-service.

Documentação de desenvolvedor melhorada

A versão 3.12 inclui muitas melhorias na documentação de referência da API GTK+. A documentação foi reestruturada para ter uma melhor ordem lógica. A sessão da sinopse foi organizada para facilitar a leitura e as capturas de telas dos componentes foram todas atualizadas.

Marcação de documentação também foi melhorada ao longo de várias de bibliotecas. GTK+, GLib, GDK-Pixbuf e Clutter foram todas convertidas para usarMarkdown. Isso resulta em uma aparência menos confusa e de manutenção mais fácil no fonte.

Finalmente, foram feitas melhorias na formatação de todas documentações, tornando-as mais atrativas e fáceis de ler.

Wayland disponível para testes

Uma grande quantidade de progresso foi feita em direção à completa integração com Wayland para 3.12. Isso inclui a criação de uma nova biblioteca libinput e nova funcionalidade para gerenciamento e início de sessão. Desenvolvedores interessados no Wayland ou pessoas que estejam interessadas em testar seus softwares em um ambiente Wayland, podem tentar a última versão de desenvolvimento.

Para executar o gnome-shell com o Wayland, execute o seguinte comando no terminal:

gnome-session --session=gnome-wayland

Também é possível executar individualmente aplicativos com Wayland especificando o comando GDK_BACKEND. Execute o seguinte comando, substituindo o nome-do-aplicativo pelo nome do executável do aplicativo:

GDK_BACKEND=wayland nome-do-aplicativo

Se a execução de um aplicativo falhar sobre o Wayland, ele tentará retornar ao X11.

Maiores detalhes sobre GNOME com Wayland podem ser encontrados na Página wiki Wayland do GNOME.

Atualizações ao Tracker

Tracker o mecanismo de pesquisa, ferramenta de pesquisa e sistema de armazenamento de metadados, vem com uma longa lista de novidades para o 3.12:

  • Uma nova biblioteca chamada libmediaart foi criada a a partir do código do Tracker para manipular arte associada com arquivos de multimídia. libmediaart permite que artes armazenadas em arquivos de mídia sejam colocados em cache e fornece uma forma consistente para procurar arte e reduzir tamanhos de cache para itens de artistas, álbuns e mídias. (libmediaart não tem a intenção de gerar miniaturas.)

  • Uma outra nova biblioteca, chamada libtracker-control, foi adicionada para gerenciar a mineração de pesquisa.

  • Novos recursos de extração passiva permitem a extração de metadados especificados (ex.: orientação da imagem) ouvindo os sinais na alteração de recurso. Anteriormente, inserção de informação sobre um recurso era feita em uma fase. Esse recurso significa que dados de arquivos (ex.: nome, tamanho de arquivo, etc.) estão inseridos mesmo se metadados específicos não estejam.

  • Agora é possível priorizar tipos de RDF ao indexar: isso permite que a indexação seja ajustada para situações específicas.

  • Agora há suporte às funções de SPARQL tracker:normalize() e tracker:unaccent().

  • Um novo comando chamado tracker-sparql --tree vai exibir a ontologia do banco de dados. Isso vai ajudar os desenvolvedores a obter uma imagem mais clara da hierarquia de classe.

  • Detecção de codificação agora encontra suporte a metadados com ICU.

  • O atraso de sinal de GraphUpdated do armazenamento do Tracker agora é configuráveis. Esse sinal é usado para fornecer notificações de alterações em recursos no banco de dados (ex.: novo arquivo adicionado). Anteriormente, o atraso era sempre de um segundo.

Extensões do Grilo com Lua

O framework de descoberta de mídia do Grilo agora permite que fontes de mídia on-line seja adicionada usando as habilidades de correspondência de padrão simples porém poderoso do Lua. Mais detalhes, incluindo exemplos, podem ser encontrados no artigo no blog do Bastien Nocera sobre esse assunto.

Decorações maduras do lado do cliente

Decorações do lado do cliente permite que janelas de aplicativos administrem funções do gerenciador de janelas. Essas foram introduzidas no último ciclo, com o novo componente GtkHeaderBar. Desde então, GtkHeaderBar amadureceu muito. O novo componente tem uma altura consistente e janelas podem ser movidas arrastando a barra de cabeçalho em dispositivos de toque (touch). Barras de cabeçalhos também podem incluir menus de aplicativos assim como uma variedade de controles de janela, além do padrão botão de fechar.

Bindings de Python melhoradas

Bindings de Python do GNOME foram melhorados para 3.12:

  • Strings de documentação Python para funções agora mostra assinaturas de chamadas precisas, incluindo informação de tipo de retorno e argumento.

  • Agora há um padrão None implícito para argumentos de funções de ponta.

  • Todas as funções de conexão de chamada de retorno agora aceitam um número de variáveis de argumentos de dados do usuário.

  • Novas demos mostram como usar CSS no GTK+ a partir do Python.

  • Chamar GObject.threads_init não é mais necess[ario para programação em "multi-thread".

Além disso, houve muitas melhoras de memória e performance.

Portabilidade aprimorada

Portabilidade por diferentes sistemas operacionais UNIX foi em muito melhorada para 3.12. Acima de 150 FreeBSD problemas foram relatados e resolvidos, e compilações de teste também estrão funcionando normalmente. Trabalho para outros sistemas operacionais está em curso. Uma nova política de suporte a plataformas foi introduzida para GLib.

Mais detalhes sobre esses esforços também podem ser encontrados no artigo do blog do Ryan Lortie sobre o assunto.

Outras melhorias

Outras melhorias para desenvolvedores e administradores de sistemas no 3.12 incluem:

  • A maioria dos contêiners GTK+ agora desenham plano de fundo.

  • Menus baseados em modelo podem agora ocultar itens baseados em condições específicas.

  • GtkBox agora provê suporte a um filho centralizado, na mesma forma que GtkHeaderBar.

  • Telas de densidade alta de DPI agora têm suporte no Clutter, usando a mesma configuração compartilhada pelo GTK+ e no daemon de configurações do GNOME.