Especificação do tema do botão da janela Unity?

2

Estou tentando rastrear a especificação dos temas de botão da janela do Unity. Com isso quero dizer a especificação específica para Unity , ( /usr/share/themes/Radiance/unity ), não as especificações gtk ou metacity ( /usr/share/themes/Radiance/metacity-1 ou /usr/share/themes/Radiance/gtk-x.0 ).

Os únicos temas que encontrei que parecem usar essa especificação são os de Radiance e Ambiance (no pacote light-themes ).

Ao procurar em /usr/share/themes/(Ambiance|Radiance)/unity , vejo as imagens:

  • role.png
  • role_focusstate_state.png

onde

  • role é um dos close , maximize , minimize ou unmaximize ;
  • focusstate é focused ou unfocused ;
  • state é normal , prelight ou pressed .

Existe alguma especificação sobre como criar um tema de janela de unidade? Qual dos arquivos acima é necessário no mínimo? quando cada um é usado?

(Por exemplo, o close.png já foi usado se close_[focusstate]_[state].png já existe para todos os estados e estados de foco? Se sim, quando? Se não, por que close.png é incluído no Ambiance / Radiance, que parece abranger todos os estados foco e todos os estados já?)

    
por mathematical.coffee 03.06.2013 / 05:50

1 resposta

2

Eu fiz um pouco mais de escavação e suspeito que:

    A unidade
  • usa o tema de metacity ( metacity-1 subpasta) para todas as decorações de janela ;
  • A unidade
  • usa a subpasta unity para desenhar os botões da janela somente no painel superior da unidade (quando uma janela é maximizada e a barra de títulos está oculta (?))

(atualmente não tenho o Unity disponível para testar).

O bug relevante: link

Em particular, comentário 22:

  

Isso foi corrigido. Verifique / usr / share / themes / ambiance / unity, você encontrará botões lá que são carregados no painel. Então, sim, os botões de controle da janela Unity agora são programáveis.

O código relevante (3 / Jun / 2013): link

Não acredito que exista documentação .

No entanto, ao ler o código relevante (acima), parece que

  • Os tipos de botão da janela são CLOSE , MINIMIZE , UNMAXIMIZE , MAXIMIZE
  • Os estados do botão da janela são NORMAL , PRELIGHT , PRESSED , DISABLED , UNFOCUSED , UNFOCUSED_PRELIGHT , UNFOCUSED_PRESSED

Isso parece o mesmo que a metacidade.

Para encontrar a imagem correspondente ao botão com o tipo type e o estado state , consultamos unity/<type_><state_>.png , onde:

  • type_ é:
    • 'fechar' para o tipo CLOSE ;
    • 'minimize' para o tipo MINIMIZE ;
    • 'maximizar' para o tipo MAXIMIZE ;
    • 'unmaximize' para o tipo UNMAXIMIZE .
  • state_ é:
    • '' (nada) para o estado NORMAL (um botão na janela ativa);
    • '_ focused_prelight' para o estado PRELIGHT (um botão na janela ativa que está sendo exibido);
    • '_ focused_pressed' para o estado PRESSED (um botão na janela ativa que está sendo pressionada);
    • '_ desfocado' para o estado DISABLED ; (??)
    • '_ desfocado' para o estado UNFOCUSED (um botão em uma janela sem foco);
    • '_ unfocused_prelight' para o estado UNFOCUSED_PRELIGHT (um botão em uma janela sem foco que está sendo passado);
    • '_ unfocused_pressed' para o estado UNFOCUSED_PRESSED (um botão em uma janela sem foco que está sendo pressionada).

Por isso, note que das imagens na subpasta unity de (digamos) Ambiente, <role>_focused_normal.png não é usado , mesmo que seja fornecido no pacote (??).

Se a imagem de um determinado (tipo, estado) não for encontrada, parece que algum tipo de botão padrão é desenhado (em vez de usar uma das imagens existentes).

    
por mathematical.coffee 03.06.2013 / 08:49