Posso aplicar um tema GTK3 diferente do principal a um aplicativo individual?

46

Por exemplo, posso manter o Ambiance como tema principal, mas atribuir um tema elementar ao aplicativo do elementar?

Rossi
fonte
8
As respostas atuais são sobre Gtk2, estou perguntando sobre Gtk3.
neonboy
Editei a pergunta para refletir melhor o que você procura. Desculpe, mas a resposta curta de minha pesquisa é não , você não pode, sem ter que gastar algum esforço criando um novo tema "híbrido", como explicou @Kush :( Não é tão simples como GTK2 mais.
ish

Respostas:

32

Você pode usar a variável de ambiente GTK GTK_THEME=elementarypara iniciar um aplicativo com o tema elementar. Por exemplo, a execução GTK_THEME=elementary pantheon-filesiniciará o aplicativo Arquivos elementar usando o tema GTK elementar.

Para que isso seja aplicado sempre que você iniciar um aplicativo específico, é provável que sua melhor opção crie um arquivo .desktop personalizado (iniciador).

Crie um arquivo .desktop personalizado

  1. Abra o navegador de arquivos
  2. Navegar para /usr/share/applications/
  3. Copie o iniciador (destaque e Ctrl + C) para o aplicativo que você deseja iniciar com o tema elementar
  4. Navegue ~/.local/share/applications/e cole o iniciador (Ctrl + V)
  5. Clique com o botão direito do mouse e abra o iniciador com um editor de texto
  6. Modifique a linha começando com Exec=para incluir Exec=env GTK_THEME=elementarye, em seguida, o conteúdo existente anterior da linha. (Então Exec=pantheon-filesse tornaria Exec=env GTK_THEME=elementary pantheon-files)
  7. Salve e feche o arquivo

Na próxima vez que você iniciar o aplicativo a partir do Unity (ou do iniciador de aplicativos de sua escolha), ele usará o tema elementar.

Bônus: faça funcionar ao usar a linha de comando

Você também pode querer que o aplicativo seja iniciado com o tema elementar ao iniciá-lo na linha de comando. Para fazer isso:

  1. Abra seu aplicativo Terminal
  2. Digite alias pantheon-files="GTK_THEME=elementary pantheon-files"(substituindo pantheon-filespelo aplicativo desejado)
  3. pressione Enter

Ressalvas:

  1. Isso não altera o tema do seu gerenciador de janelas para o tema elementar.
  2. Isso (por design) será aplicável apenas à sua conta, não ao root ou a qualquer outra pessoa na máquina.
  3. Os nomes dos temas são cAsE-sEnsItiVe e devem corresponder ao nome da pasta do tema.

Fontes:

  1. Sou colaborador elementar;)
  2. Manual de referência do GTK + 3: Executando aplicativos GTK +
  3. Definir variável no arquivo .desktop
Cassidy James
fonte
Boa resposta, mas não consigo fazer isso funcionar para nenhum tema. Você pode dar um exemplo usando o terminal find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'e geditpara fins de demonstração? Por exemplo, GTK_THEME="HighContrast" geditou env GTK_THEME="HighContrast" geditou GTK_THEME=Adwaita:dark gedit... nada.
Redsandro
Eu apenas mudei /usr/share/applications/<appname>.desktope funcionou para mim.
Tirou Chapin
Alguma maneira de fazer isso a partir do código dentro do aplicativo?
Anony-Mousse 14/09/14
1
Vale a pena notar que os nomes dos temas diferenciam maiúsculas de minúsculas.
Cedric Reichenbach
Isso funciona para alguns aplicativos, mas não para todos.
10

A questão ainda é válida e eu encontrei uma maneira:

  • crie qualquer pasta path/to/MY_FOLDER
  • crie uma /share/themes/pasta dentro dela (ou seja path/to/MY_FOLDER/share/themes).
  • coloque qualquer tema GTK3 dentro deste último
  • renomeie o tema para o nome do TEMA ATUAL ATUALMENTE.

    Por fim, este comando fará com que um aplicativo use o tema renomeado em vez do tema atualmente ativo:

GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATON

(O caminho a seguir GTK_DATA_PREFIX=deve ser esse ( e somente isso ) para a pasta que contém /share/themes/RENAMED_THEME . É por isso que NÃO é path/to/MY_FOLDER/share/themes/RENAMED_THEME, mas apenas path/to/MY_FOLDER.

Para ter isso dentro de um iniciador, substitua de acordo:

Exec=sh -c 'GTK_DATA_PREFIX=path/to/MY_FOLDER YOUR_APPLICATION'
Tsu Jan
fonte
1
Agora, isso realmente funciona mesmo com o Eclipse, ao contrário das outras respostas que tentei.
Ruslan
2
qual arquivo / pasta exatamente apontamos para usar GTK_DATA_PREFIX?
runDOSrun
1
Isso foi bastante confuso, mas descobri e editei a resposta.
Outra forma é colocar o tema renomeado específicos do aplicativo no ~/.themes(tem a corrente ativa para a /usr/share/themes) e depois usar algum caminho GTK_DATA_PREFIX=path/to/nowhere para lançar esse aplicativo, que irá redefinir o tema aplicativo para o atual, só vai olhar primeiro em ~/.themese take aquele com o mesmo nome lá.
1
@runDOSrun - o caminho a seguir GTK_DATA_PREFIX=deve ser aquele ( e somente isso ) para a pasta que contém /share/themes/RENAMED_THEME . É por isso que NÃO FOLDER/share/themes/RENAMED_THEME , mas apenas FOLDER.
8

É certamente possível, eu não tenho muita experiência com temas, mas quando você navega para o /usr/share/themes/*Theme Name*/gtk-3.0/apps/diretório, encontrará .cssarquivos nomeados com aplicativos que eles direcionam para o tema, então sim, você pode criar temas específicos para aplicativos.

Observe que a maneira como você mencionou o tema de seus aplicativos pode exigir algum trabalho a ser feito (como o Ambiance e o Elementar trabalham simultaneamente, pois cada tema tem um arquivo base sobre o qual é feito um estilo específico de aplicativo (um arquivo gtkrcno Gtk 2.0 enquanto, um arquivo gtk.cssno caso do Gtk3.0 ).

E esse arquivo de tema base contém regras de estilo que visam especificamente o tema determinado, portanto, você não pode criar aparência e aparência elementares a partir do arquivo de tema base do Ambiance sem fazer alterações pesadas e, mesmo se o fizer, perderá a aparência do Ambiance.

Além disso, no GNOME, é possível ter apenas um tema aplicado por vez. Por exemplo, se você usou a janela Aparência no Ubuntu 12.04, sabe que pode selecionar qualquer tema na lista suspensa, caso tenha usado gnome-tweak-tool, você pode definir temas diferentes, para Gtk, quadros de janela e ícones, mas ainda assim não permite direcionar aplicativos específicos para o tema. Como eu disse anteriormente, você pode definir temas totalmente diferentes para aplicativos diferentes, se trabalhar com inteligência. arquivo de tema base, a partir de agora, nenhum aplicativo de terceiros pode fazer isso sozinho.

Uma maneira de fazer isso sozinho é que, deixe o arquivo de tema base ( gtk.css) ter apenas regras essenciais que são neutras a qualquer tema, seja escuro ou claro. E tenha o design do tema real gravado em arquivos específicos do aplicativo que residem no diretório acima mencionado, ou seja, para estilizar o Nautilus, você pode gravar todas as propriedades necessárias no nautilus.cssarquivo. O mesmo acontece com todos os aplicativos que você deseja segmentar. Obviamente, fazer isso requer alguma experiência decente com o tema Gtk.

Você pode consultar isso para criar seu próprio tema usando o modelo. Também há uma documentação decente sobre o tema do Gtk +.

Kushal
fonte
7
Não quero criar um novo tema, quero atribuir um tema existente.
neonboy
@neonboy: Como eu disse que com o GTK3, não é tão simples assim, um tema é distribuído por vários arquivos e, se as dependências não forem satisfeitas, o tema quebrado é tudo que você obterá. Foi por isso que postei a resposta que mostra a possível solução com o GTK3, e não com o GTK2 (em que fazer isso é bastante mais fácil).
Kushal
6

Sim, a maneira mais simples é apontar o aplicativo para o caminho necessário em que reside o arquivo rc, no comando que executa seu aplicativo:

GTK2_RC_FILES=/usr/share/themes/Redmond/gtk-2.0/gtkrc inkscape

Isso no 12.04 para o inkscape (que ainda é o Gnome2 btw) produz o seguinte:

janela do inkscape com tema do windows

Veja mais informações sobre o tema Gtk2 em execução aqui .

Martin Owens -doctormo-
fonte
7
A pergunta é sobre Gtk3 e não Gtk2, obrigado.
neonboy
Você não especificou isso na sua pergunta original. Por favor, não antagonize os questionadores.
precisa saber é o seguinte
5
Originalmente, era "Posso usar diferentes temas do GTK3 para aplicativos individuais?" que ainda tinha o assunto Gtk3 na pergunta, a liberdade foss me pede para comentar sobre respostas não válidas e editar a pergunta, se necessário, não estou antagonizando ninguém.
neonboy
1

Sim, você pode, na verdade, pesquisei no Google e obtive algumas respostas:

  1. Procure o executável exato para o programa que você deseja alterar o tema. Por exemplo, se você desejar para ooffice, digite which oofficeo terminal.
  2. Procure a pasta bin onde todos os aplicativos colocam seus executáveis ​​binários. Digite echo $PATHo terminal e você ge o caminho. Eu recomendo que você crie uma pasta bin no diretório inicial digitandomkdir ~/bin
  3. Digite gedit ~/.bashrcpara abrir o arquivo bash rc.
  4. Vá para o final deste arquivo e adicione esta linha export PATH=~/bin:${PATH}

Agora criaremos um script que executará seu programa com tema personalizado:

  1. Crie o arquivo de script do aplicativo digitando: gedit ~/bin/ooffice
  2. Digite estas linhas no arquivo aberto:

    #!/bin/bash
    env GTK2_RC_FILES=/usr/share/themes/SlicknessX/gtk-2.0/gtkrc /usr/bin/ooffice "$@"
    
  3. Alterar o modo do arquivo para o executável digitando: chmod +x ~/bin/ooffice.

Espero que isso ajude, você deve se lembrar apenas de uma coisa, o formato do script, como mostrado abaixo:

#!/bin/bash
env GTK2_RC_FILES=PATH_TO_GTKRC PATH_TO_EXECUTABLE "$@"
Ravi Raj
fonte
Certamente é possível para aplicativos GTK2 usando GTK2_RC_FILES env. variável. Além disso, de quais temas você está falando em compilar? A questão é sobre os temas GTK em todo o sistema disponíveis no Ubuntu.
Ish
1
Acredito que o método que você mencionou tenha como alvo o Gtk2.0 enquanto o Ubuntu 12.04 usa o Gtk3.0 para temas, por isso, se não funcionar.
Kushal
6
Sinto muito, isso é uma solução para Gtk2, a pergunta é sobre Gtk3.
neonboy