2

Я хочу изменить цвет строки меню моей установки Emacs (версия 24.5.1 с GTK+ 3 и запускается при тестировании Debian с рабочим столом KDE). После просмотра веб-страниц я знаю, что цвет строки меню нельзя изменить в самом Emacs, но нужно использовать ресурсы GTK+ 3. Я использовал подход, который описан в этой ссылке: GTK+ 3 Конфигурация меню для Emacs

Сначала я создал папку со следующим путем "/home/USERHOME/.themes/.configure/gtk-3.0". Затем я создал 2 css-файла в этой папке, которые называются «emacs.css» и «gtk.css». Содержание "gtk.css"

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

И в "emacs.css" я написал

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

К сожалению, эта настройка не сработала, цвет строки меню по-прежнему по умолчанию (передний план: черный, фон: серый). Я думаю, что файл "emacs.css" не является полным, но я не уверен, что именно я должен добавить. Может ли кто-нибудь дать мне подсказку, что я, возможно, пропустил?

1 ответ1

1

Я протестировал сохранение вашего образца CSS-файла в файл emacs-zufall.css который я импортировал из локально модифицированного файла gtk.css используя

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

и это сработало: мой менубар превратился в психоделический зеленый цвет с черным текстом.

Я предполагаю, что ваш emacs даже не читает файл в том месте, где вы его создали. Расположение зависит от названия темы. Я использую тему Orion и Emacs пытается загрузить чтение gtk.css используя путь

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

и если не получится, то от

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

Самый простой способ увидеть это, просто отследить системные вызовы. Если вы используете Linux, вы можете запустить

$ strace -o strace.log emacs &

и ищите строковые themes в strace.log используя ваш любимый пейджер или редактор (например, emacs !). Выводов много, но вы можете быстро найти путь, используя эту строку поиска (чтобы соответствовать попыткам найти файл темы). Вот что я нашел в своем выводе strace когда временно переместил локально измененный каталог темы:

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

Если вы видите похожий результат ENOENT указывающий на ваши emacs и у вас другое мнение о том, где искать файлы CSS, вы можете:

  1. скопируйте тему в локальный каталог и сделайте необходимые изменения:

    $ mkdir -pv ~/.local/share/themes/Orion
    $ cp -ai /usr/share/themes/Orion/gtk-3.0 ~/.local/share/themes/Orion/
    
  2. добавьте оператор @import в локально модифицированный файл gtk.css :

    @import url("apps/emacs.css");
    
  3. и создайте или убедитесь, что файл apps/emacs.css существует в ожидаемом месте с желаемыми изменениями.

Не забудьте запустить emacs с помощью командной строки, чтобы увидеть возможные ошибки, связанные с CSS. По моему опыту, кеширование тем отсутствует, поэтому было возможно открыть несколько приложений emacs с разными настройками темы, что противоречит ответу связанного суперпользователя; но это может быть потому, что я не использую настольную систему Gnome (KDE - мой выбор).

Если вы используете другую операционную систему, то должна быть другая утилита для отслеживания системных вызовов. OS X и, возможно, другие системы BSD используют DTrace и т.д. Вы можете также рассмотреть возможность запуска emacs в режиме отладчика, если не можете найти, как отслеживать системные вызовы в вашей системе, хотя это гораздо более хлопотно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .