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
Abra o navegador de arquivos
Navegar para /usr/share/applications/
Copie o iniciador (destaque e Ctrl + C) para o aplicativo que você deseja iniciar com o tema elementar
Navegue ~/.local/share/applications/e cole o iniciador (Ctrl + V)
Clique com o botão direito do mouse e abra o iniciador com um editor de texto
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)
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:
Abra seu aplicativo Terminal
Digite alias pantheon-files="GTK_THEME=elementary pantheon-files"(substituindo pantheon-filespelo aplicativo desejado)
pressione Enter
Ressalvas:
Isso não altera o tema do seu gerenciador de janelas para o tema elementar.
Isso (por design) será aplicável apenas à sua conta, não ao root ou a qualquer outra pessoa na máquina.
Os nomes dos temas são cAsE-sEnsItiVe e devem corresponder ao nome da pasta do tema.
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:
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ÃOFOLDER/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 +.
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:
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:
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.
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
Digite gedit ~/.bashrcpara abrir o arquivo bash rc.
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:
Crie o arquivo de script do aplicativo digitando: gedit ~/bin/ooffice
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.
Respostas:
Você pode usar a variável de ambiente GTK
GTK_THEME=elementary
para iniciar um aplicativo com o tema elementar. Por exemplo, a execuçãoGTK_THEME=elementary pantheon-files
iniciará 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
/usr/share/applications/
~/.local/share/applications/
e cole o iniciador (Ctrl + V)Exec=
para incluirExec=env GTK_THEME=elementary
e, em seguida, o conteúdo existente anterior da linha. (EntãoExec=pantheon-files
se tornariaExec=env GTK_THEME=elementary pantheon-files
)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:
alias pantheon-files="GTK_THEME=elementary pantheon-files"
(substituindopantheon-files
pelo aplicativo desejado)Ressalvas:
Fontes:
fonte
find /usr/share/themes -type d -name 'gtk-3.0' | awk -F'/' '{print $5}'
egedit
para fins de demonstração? Por exemplo,GTK_THEME="HighContrast" gedit
ouenv GTK_THEME="HighContrast" gedit
ouGTK_THEME=Adwaita:dark gedit
... nada./usr/share/applications/<appname>.desktop
e funcionou para mim.A questão ainda é válida e eu encontrei uma maneira:
path/to/MY_FOLDER
/share/themes/
pasta dentro dela (ou sejapath/to/MY_FOLDER/share/themes
).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 apenaspath/to/MY_FOLDER
.Para ter isso dentro de um iniciador, substitua de acordo:
fonte
GTK_DATA_PREFIX
?~/.themes
(tem a corrente ativa para a/usr/share/themes
) e depois usar algum caminhoGTK_DATA_PREFIX=path/to/nowhere
para lançar esse aplicativo, que irá redefinir o tema aplicativo para o atual, só vai olhar primeiro em~/.themes
e take aquele com o mesmo nome lá.GTK_DATA_PREFIX=
deve ser aquele ( e somente isso ) para a pasta que contém/share/themes/RENAMED_THEME
. É por isso que NÃOFOLDER/share/themes/RENAMED_THEME
, mas apenasFOLDER
.É 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á.css
arquivos 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
gtkrc
no Gtk 2.0 enquanto, um arquivogtk.css
no 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 nonautilus.css
arquivo. 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 +.
fonte
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:
Isso no 12.04 para o inkscape (que ainda é o Gnome2 btw) produz o seguinte:
Veja mais informações sobre o tema Gtk2 em execução aqui .
fonte
Sim, você pode, na verdade, pesquisei no Google e obtive algumas respostas:
which ooffice
o terminal.echo $PATH
o terminal e você ge o caminho. Eu recomendo que você crie uma pasta bin no diretório inicial digitandomkdir ~/bin
gedit ~/.bashrc
para abrir o arquivo bash rc.export PATH=~/bin:${PATH}
Agora criaremos um script que executará seu programa com tema personalizado:
gedit ~/bin/ooffice
Digite estas linhas no arquivo aberto:
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:
fonte