Eu tenho um aplicativo escrito em GTK e estava brincando com as mudanças de tema via GTK Inspector. Até explorei outros temas disponíveis no GitHub. É possível dar ao usuário final do meu aplicativo a capacidade de alterar o tema dentro do software? Eu sei que a variável de ambiente GTK_THEME pode ser definida para o aplicativo quando ele é executado e também descobri que o tema pode ser alterado dentro do código (usando as ligações padrão da linguagem C) usando:
setenv("GTK_THEME", "Ambiance", 1);
Mas isso só funciona se esta variável for definida antes da execução. gtk_init().
Tentar fazer isso depois não terá êxito. Existe alguma maneira possível de permitir que o usuário altere o tema e faça com que ele tenha efeito imediato (como é feito através do GTK Inspector)? Qualquer ajuda seria muito apreciada.
Bem, eu respondi minha própria pergunta acessando o código-fonte do GTK Inspector para ver como eles fizeram isso. Estou usando GTK 3.24, então isso parecerá um pouco diferente se você estiver usando GTK4 (obsoletos):
O nome do tema pode ser alocado dinamicamente de algum lugar, só fiz isso para testar se funciona. Observe que isso não funcionará se você tiver a variável de ambiente GTK_THEME definida.