Olá galera tudo a riba??? 
Gente eu tenho um jeito mais legal e bacana de fazer isso, igualzinho ao showcase do Prime
Ou seja, vamos utilizar os JAR´s diretamente, ai podemos modificar e/ou criar novos temas e criar o JAR na biblioteca.
Bom vamos lá:
Se voce for criar uma aplicação WEB normal, basta incluir os JAR´s dos themes na sua biblioteca PrimeFaces.
Se voce for utilizar Maven, basta colocar esses comandos no seu PORN:
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
[b]<theme.version>1.0.0</theme.version>[/b]
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<netbeans.hint.deploy.server>Tomcat70</netbeans.hint.deploy.server>
</properties>
e
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>aristo</artifactId>
<version>${theme.version}</version>
[b]Aqui voce pode colocar todos ou só aqueles que vc quiser utilizar, veja no PORN do showcase ok[/b]
</dependency>
Bom agora voce configura o WEB.XML
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>#{guestPreferences.theme}</param-value>
</context-param>
[b]Aqui usei o mesmo nome do showcase para facilitar minha vida :-)[/b]
No faces-config:
<managed-bean>
<managed-bean-name>guestPreferences</managed-bean-name>
<managed-bean-class>br.jm.financeiro.view.GuestPreferences</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Agora aqui no guestpreferences eu aproveitei e guardo/recupero o theme de cada usuário do sistema:
public class GuestPreferences implements Serializable {
private String theme = "aristo"; //default
private FacesContext ctx;
private HttpSession session;
private UsuarioJpaController usuarioDAO;
public String getTheme() {
ctx = FacesContext.getCurrentInstance();
session = (HttpSession) ctx.getExternalContext().getSession(false);
usuarioDAO = new UsuarioJpaController();
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
try {
Usuario user = (Usuario) session.getAttribute("usuarioAutenticado");
if (user != null) {
theme = user.getDscThema();
}
} catch (Exception e) {
e.getMessage();
}
if (params.containsKey("theme")) {
theme = params.get("theme");
}
return theme;
}
public void setTheme(String theme) throws Exception {
try {
ctx = FacesContext.getCurrentInstance();
session = (HttpSession) ctx.getExternalContext().getSession(false);
usuarioDAO = new UsuarioJpaController();
Usuario user = (Usuario) session.getAttribute("usuarioAutenticado");
user.setDscThema(theme);
session.setAttribute("usuarioAutenticado", user);
usuarioDAO.atualizaTema(user.getIdUsuario(), user.getDscThema());
} catch (SQLException e) {
e.getMessage();
}
if (theme == null) {
theme = "aristo";
}
this.theme = theme;
}
}
No template principal, voce copia as pastas do showcase CSS e syntaxhighlighter
No HEAD:
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/css/default.css" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/syntaxhighlighter/styles/syntaxhighlighter.css" />
Eu fiz igualzinho ao showcase, crio / copio o thememenu e ai basta escolher o seu theme que ele atualiza e já grava no usuário conectado.
Agora se quiser chamar direto, basta descompactar o ( s ) JAR´s no WEBCONTEXT e colocar no HEAD:
Bom galera é isso ai, espero ter ajudado.
Abraços
Jomello
OBS: Tem mais um trem, caso voce queira ficar atualizado nos themes, basta baixar via SVN os themes ok:
http://primefaces.googlecode.com/svn/themes