Corrigindo a fonte utilizada no Java e incluindo bordas e sombras em menus

Iniciado por Sergio Benjamim, 03 de Novembro de 2012, 21:40

tópico anterior - próximo tópico

Sergio Benjamim

Tenho instalado alguns aplicativos java no Ubuntu 12.04, como Arduino, Netbeans, Scilab e Visual Paradigm, e eles naturalmente utilizam o GTK+ look-and-feel (um tema java que faz com que os aplicativos java tenham a mesma aparência parecida com os aplicativos nativos do Ubuntu), mas há uma série de problemas relacionados à esse look-and-feel.

Depois de ter atualizado para o Java 7 (estou usando openjdk7-jre), notei que a fonte dos menus dos aplicativos se encontram em negrito, fazendo com que as palavras ocupem um espaço maior do que o devido. Dei uma procurada, e parece que este problema ocorre somente para quem tem o Wine instalado (ele acaba instalando algumas fontes, que interferem com o Java, não sei como). Tem um saída para isso, basta ir em /usr/share/fonts/truetype/unfonts-core/ e deletar o arquivo UnDotum.ttf (use Alt+F2 e gksu Nautilus para isso). Após isso, os aplicativos vão abrir com uma fonte mais correta (não fica 100% fiel ao resto do sistema).

Outro problema está relacionado à falta de bordas dos menus, que faz com que vc não saiba onde começa e termina o menu em certos casos (fica muito horrível). Achei um link útil à respeito:

Workaround for borderless Java Swing menus on Linux

Lá diz que este problema ocorre em temas como Adwaita, Ambiance (padrão do Ubuntu) e Radiance. É só alterar o arquivo presente em /usr/share/themes/Adwaita/gtk-2.0/gtkrc, /usr/share/themes/Ambiance/gtk-2.0/gtkrc e /usr/share/themes/Radiance/gtk-2.0/gtkrc (não precisa alterar todos, somente o tema que você costuma usar) de modo a substituir o 0 por 1 em xthickness e ythickness, como é mostrado abaixo, no destaque em azul e negrito:

Citar
[...]

style "menu" {
   xthickness = 1
   ythickness = 1

   [...]
}

[...]

style "separator_menu_item" {
   xthickness = 1
   ythickness = 1
       [...]
}

[...]

Vou tentar colocar sombras nos menus ainda, mas parece que não é possível, achei este report de bug: Compiz draw shadows + Java applications
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Alguém tem noção de como eu faço para "pegar" a classe dos menus de qualquer aplicativo? O WindowMatching do Compiz não permite fazer isso, e tentei:

Citarsleep 4 && xprop WM_CLASS | cut -d\" -f2

e quando abro um menu, e espero o tempo de 4 segundos terminar, dá o seguinte resultado:

Citarxprop: error: Can't grab the mouse.

É impossível determinar a classe de menus, pop up menus, tooltips e etc... se descobrisse, colocaria na opção "Janelas com sombra" na "Decoração da janela" lá do Compiz o menu de aplicativos java:

Citar(type = DropDownMenu | PopUpMenu | ToolTip | Menu | Dock ) & !(type = NORMAL)
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

#2
Esses dias os meus aplicativos java voltaram a ter os mesmos problemas, provavelmente alguma atualização substituiu os gtkrc que alterei. Uma solução para isso não acontecer é copiar a pasta Ambiance que está em /usr/share/themes/ para a ~/.themes (fica na sua pasta pessoal, aperte Ctrl+H para aparecer as pastas ocultas).

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Há um problema com o openJDK 6 há um tempão, a fonte do menu dos aplicativos simplesmente fica quase da mesma cor do fundo do menu (preto), e fica difícil enxergar. No openJDK 7 isso já foi corrigido, mas se você tiver um programa que usa a versão 6 do java (o Scilab por exemplo, ao instalar ele só usa a versão 6, a menos que você mexa nos arquivos de configuração) terá que fazer o seguinte para contornar o problema:

- copie a pasta Ambiance no seu diretório pessoal, essa pasta está em /usr/share/themes. Copie para ~/.themes, ou seja, /home/seu-usuario/.themes
- entre na pasta Ambiance, entre na gtk2.0 e abra o arquivo gtkrc
- substitua a linha...
    style "menu" {
... por essa linha:
   style "menu" = "dark" {

Pronto! Agora as fontes dos menus dos seus aplicativos Java voltarão a ficar visíveis.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !