Olá pessoal! Venho em busca de ajuda com um projetinho que idealizei em desenvolver mas que acabou se tornando muito mais complexo do que eu imaginava…
Tenho pouca experiência com desenvolvimento de apps nativos pra desktop (meu foco sempre foi web) mas me interessei muito pelo ecossistema do GNOME!
A ideia é criar uma ferramenta para auxiliar na instalação de módulos de kernel os quais oferecem suporte ao hardware do Xbox no Linux. Hoje em dia isso precisa ser feito buscando pelos repositórios certos no Github (xpadneo + xone), clonando pra sua máquina, executando scripts no terminal e, quando as coisas dão errado, manipulando os módulos diretamente pelo dkms.
Eu gostaria de tornar essa experiência mais simples pois quando fiz minha transição do Windows 10 para o Fedora 37 isso foi algo que eu levei um bom tempo até conseguir fazer funcionar. Ter um app que torne isso “uma experiência de dois cliques” seria uma mão na roda naquela época e é isso que eu gostaria de tirar do papel.
Eu já tenho um projeto de aplicativo GNOME sendo desenvolvido para esse fim, se chama XPDA - Xbox Peripherals Driver Assistant. No entanto, por hora ele é só uma casca com um protótipo de interface de usuário escrito em Typescript sem funcionalidade alguma, pois foi justamente aí que encontrei minha dificuldade: como executar comandos com privilégios administrativos no sistema a partir do contexto de um app “conteinerizado” como um Flatpak?
Isso me levou a buscar por soluções na internet, documentação, fóruns, até mesmo LLMs… Não consegui encontrar nenhum exemplo do que preciso fazer, mas até que aprendi alguma coisa sobre como executar subprocessos, DBus e Polkit (os últimos são coisas das quais eu nunca nem tinha ouvido falar).
Enfim: alguém poderia me ajudar, ou me apontar para algum recurso que esclareça como desenvolver um serviço de sistema que rode como um usuário privilegiado lado a lado com o meu aplicativo, fale com o DKMS (essa parte eu consigo implementar, acho), exponha uma API no DBus e use o polkit para possibilitar a escalação dos privilégios pelo aplicativo Flatpak?
TLDR: preciso de ajuda para desenvolver um serviço de sistema que rode como um usuário privilegiado lado a lado com o meu aplicativo, fale com o DKMS (essa parte eu consigo implementar, acho), exponha uma API no DBus e use o polkit para possibilitar a escalação dos privilégios pelo aplicativo Flatpak. Alguém poderia me auxiliar com isso?
Pois então, preciso focar o desenvolvimento apenas em um serviço de sistema que converse com o
dkms
e exponha uma API no DBus, dessa forma funcionaria com o Flatpak (e também com outros formatos), pensando em manutenção disso no futuro…Em conversa com o pessoal do GNOME Brasil no Matrix, me apontaram para essa biblioteca que parece facilitar bastante o desenvolvimento do serviço, só agora eu tenho que saber quais métodos implementar e como usar essa biblioteca kkkkkkkk
EDIT: mas sim, se eu tivesse acesso ao
pkexec
seria muito mais simples executar os comandos como subprocessos…