Para os aplicativos GTK2, a maneira de fazer isso foi relativamente simples. Você pode iniciar um aplicativo gtk2 com um tema personalizado como este:
GTK2_RC_FILES=(path-to-theme) (command)
Então, por exemplo, isso funcionou:
GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc catfish
(Catfish é um aplicativo que eu sei ser gtk2 - você pode não ter instalado).
Infelizmente, esse recurso quebrou completamente no GTK3. Não posso garantir que isso funcionará perfeitamente, mas você pode tentar criar scripts de shell simples que configuram um tema, iniciam o aplicativo e, em seguida, desconfiguram o tema. Se você ativar dois aplicativos ao mesmo tempo, isso resultará em uma condição de corrida com resultados imprevisíveis.
Então, por exemplo, você poderia lançar o gedit assim:
#!/bin/sh
if [ -h ~/.config/gtk-3.0 ]
then
rm ~/.config/gtk-3.0
fi
ln -s /usr/share/themes/HighContrast/gtk-3.0 ~/.config
gedit "$@" &
sleep 1
if [ -h ~/.config/gtk-3.0 ]
then
rm ~/.config/gtk-3.0
fi
Além da condição de corrida, isso tem alguns outros efeitos colaterais indesejáveis. Por um lado, você vai usar mais memória para cada aplicativo que tenha seu próprio tema. Por outro lado, você terá que escrever scripts de shell personalizados e lançadores para cada aplicativo. Finalmente, na minha opinião, sua área de trabalho ficará estranha.
Mas lá. É assim que você pode fazer isso.