Alterando a cor da barra de menus do Emacs (GTK + 3)

2

Eu quero mudar a cor da barra de menu da minha instalação do Emacs (versão 24.5.1 com GTK + 3 e roda no Debian Testing com a área de trabalho do KDE). Depois de navegar na web, eu sei que a cor da barra de menu não pode ser alterada dentro do próprio Emacs, mas é preciso usar os recursos do GTK + 3. Eu usei a abordagem descrita nesta referência: Configuração do menu do GTK + 3 para o Emacs

Primeiro, criei uma pasta com o seguinte caminho "/home/USERHOME/.themes/.configure/gtk-3.0". Então eu criei 2 arquivos css nesta pasta, que são chamados "emacs.css" e "gtk.css". O conteúdo de "gtk.css" é

@import url("/home/zufall/.themes/Emacs/gtk-3.0/emacs.css") 

E em "emacs.css" eu escrevi

#pane #menubar
{
    background-color: #00FF00;
    foreground-color: #000000;
    border: none;
    padding: 0px 0px;
    margin: 25px;
}

Infelizmente, essa configuração não funcionou, a cor da barra de menu ainda é a padrão (primeiro plano: preto, plano de fundo: cinza). Eu acho que o arquivo "emacs.css" não está completo, mas não sei exatamente o que devo adicionar. Alguém pode me dar dica, o que eu possivelmente perdi?

    
por zufall 21.08.2016 / 00:50

1 resposta

1

Testei salvar seu arquivo CSS de amostra em um arquivo emacs-zufall.css que importei do arquivo gtk.css modificado localmente usando

@import url("apps/emacs-zufall.css");

e funcionou: minha barra de menu se transformou em cor verde psicodélica com texto em preto.

Eu estou supondo que o seu emacs não está nem lendo o arquivo no local que você criou. A localização depende do nome do tema. Estou usando o tema Orion e o emacs está tentando carregar gtk.css usando caminho

~/.local/share/themes/Orion/gtk-3.0/gtk.css

e, se falhar, a partir de

~/.themes/Orion/gtk-3.0/gtk.css

A maneira mais fácil de ver isso é apenas rastrear as chamadas do sistema. Se estiver usando o Linux, você pode executar

$ strace -o strace.log emacs &

e procure a string themes em strace.log usando seu pager ou editor favorito (por exemplo, emacs !). Há muita saída, mas é possível localizar rapidamente o caminho usando essa sequência de pesquisa (para corresponder às tentativas de localizar o arquivo de tema). Aqui está o que eu encontrei na minha strace saída quando eu movi temporariamente o diretório do tema modificado localmente:

access("/home/foof/.local/share/themes/Orion/gtk-3.0/gtk.css", F_OK) = -1 ENOENT (No such file or directory)
access("/home/foof/.themes/Orion/gtk-3.0/gtk.css", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/themes/Orion/gtk-3.0/gtk.css", F_OK) = 0

Se você vir um resultado ENOENT semelhante indicando seu emacs e tiver uma opinião diferente sobre onde procurar os arquivos CSS, você pode:

  1. copie o tema para o seu diretório local e faça as modificações necessárias:

    $ mkdir -pv ~/.local/share/themes/Orion
    $ cp -ai /usr/share/themes/Orion/gtk-3.0 ~/.local/share/themes/Orion/
    
  2. adicione a instrução @import ao arquivo gtk.css modificado localmente:

    @import url("apps/emacs.css");
    
  3. e crie ou certifique-se de que o arquivo apps/emacs.css exista no local esperado com as modificações desejadas.

Lembre-se de lançar emacs usando a linha de comando para ver possíveis erros relacionados ao CSS. Na minha experiência, não há cache de temas, então era possível ter vários aplicativos emacs abertos com diferentes configurações de tema, ao contrário do que a resposta do superusuário ligado dizia; mas isso pode ser porque eu não estou executando o sistema de desktop Gnome (o KDE é a minha escolha).

Se você estiver usando outro sistema operacional, deve haver outro utilitário para rastrear as chamadas do sistema. OS X e talvez outros sistemas BSD usem o DTrace, etc. Você também pode considerar a execução do emacs sob o debugger se você não puder encontrar como rastrear as chamadas do sistema em seu sistema, embora isso seja muito mais problemático.

    
por 20.09.2016 / 13:17