Documentação para desenvolvimento de extensão de shell gnome?

22

Eu estava querendo desenvolver algumas extensões do Gnome Shell, uma vez que elas são apenas em javascript, no entanto, eu tenho procurado e existe praticamente zero documentação, em todos os lugares em que olho, as pessoas dizem apenas para usar a documentação básica do Gnome, mas isso NÃO ajuda, eu posso Como não encontrei nenhuma documentação para a importação de extensões ou qualquer tipo de API javascript para o desenvolvimento de extensões, tentei examinar alguns dos tutoriais (a maioria deles para o Gnome 3.0, não o 3.2), mas nada está ajudando.

Alguém sabe se eles estão escrevendo documentação para o desenvolvimento de extensões? Eu realmente adoraria uma boa documentação ...

KoRnKloWn
fonte
Você já viu esta página: live.gnome.org/GnomeShell/Extensions ?
Benjamin
Pergunta semelhante no SO: stackoverflow.com/questions/13107743/...
Wilf

Respostas:

7

O motivo pelo qual não estou satisfeito com o código de demonstração e os tutoriais é que eles introduzem várias importações aleatórias e nunca explicam o que são ou como usá-las. Estou construindo minha própria resposta à qual outras pessoas podem adicionar, para que as pessoas possam realmente saber quais funções podem chamar, o que podem importar etc.

Existe uma documentação gerada para o Gnome Shell , mas é um pouco incompleta - não consegui encontrar a maioria das coisas que vi em vários tutoriais, exemplos e extensões publicadas.

A única documentação realmente confiável é a própria fonte do Gnome Shell. Simplesmente não há outra maneira atualizada ou completa de saber o que está disponível.

Estes dois pontos de partida são particularmente bons:

A fonte C mostra que existe um objeto importante chamado globalque não precisa ser importado e fornece acesso a coisas como o gerenciador de janelas (incluindo combinações de teclas), as informações da sessão, as telas disponíveis e outras coisas. Aqui está a fonte:

Eu queria saber como usar o global.displayobjeto e, por enquanto, a melhor documentação é a fornecida por Alan Knowles .

Outras coisas podem ser importadas por meio das ligações de introspecção GObject, por exemplo:

Em geral, você pode procurar na documentação de referência os vários componentes do Gnome para encontrar outras importações.

Uma observação no espelho: existem algumas peculiaridades sobre o uso dessas importações no espelho - perdi muito tempo apenas tentando testar as coisas rapidamente. Por exemplo:

const Clutter = imports.gi.Clutter;

... não funcionará, porque Clutterjá existe. Mas então:

const MyClutter = imports.gi.Clutter;

... também não vai funcionar; MyClutteré indefinido e não pode ser usado. Você tem que fazer:

MyClutter = imports.gi.Clutter;

É claro que, neste caso, Clutterjá existe, então não é realmente necessário. Mas como não está documentado o que está e o que não está no espaço para nome do espelho, se você tentar importar algo e tiver esses problemas, lembre-se disso.

Perguntas restantes:

  • O que é Mainloop? Isso é importado main.jse parece ter funções relacionadas ao loop principal do GLib. Existe documentação para isso?
  • O que é imports.misc? Parece ter algumas coisas realmente úteis, como ExtensionUtils- o que é isso?
  • Como você usa o DBus? E a introspecção?
detly
fonte
4

A documentação está um pouco atrasada, uma fonte potencial de informação é a reflexão de um encanador de sistema operacional , por exemplo, este post sobre a atualização de extensões do GNOME Shell para funcionar com a versão 3.2

Dependendo das informações que você deseja, você pode tentar a lista de discussão do gnome.

Pantera
fonte
1
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
hhlp
3

Este tutorial passo a passo para criar extensões para o gnome 3.4 pode ajudar: https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial

agustibr
fonte
1
Diz: "[A API] é muito difícil, devido à falta de documentação ..." . Ah bem.
detly
1
Eu estou concedendo-lhe a recompensa, porque essa página de destino tem muitos links úteis :)
detly