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 global
que 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.display
objeto 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 Clutter
já 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, Clutter
já 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.js
e 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?