我想更改我的 Emacs 安装的菜单栏颜色(版本 24.5.1,带有 GTK+3,在 Debian Testing 上运行,带有 KDE 桌面)。在浏览网页后,我知道菜单栏颜色无法在 Emacs 本身内更改,但必须使用 GTK+3 资源。我使用了此参考中描述的方法: GTK+ 3 Emacs 菜单配置
首先我创建了一个文件夹,路径为“/home/USERHOME/.themes/.configure/gtk-3.0”。然后我在这个文件夹中创建了两个 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
emacs-zufall.css
我测试了将您的示例 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 文件有不同的看法,您可以:
将主题复制到本地目录并进行必要的修改:
$ mkdir -pv ~/.local/share/themes/Orion $ cp -ai /usr/share/themes/Orion/gtk-3.0 ~/.local/share/themes/Orion/
在本地修改的文件中添加@import语句
gtk.css
:@import url("apps/emacs.css");
并创建或确保文件
apps/emacs.css
存在于预期位置并具有所需的修改。
请记住emacs
使用命令行启动以查看任何可能的 CSS 相关错误。根据我的经验,没有主题缓存,因此可以打开多个具有不同主题设置的 emacs 应用程序,这与链接的超级用户答案所说的相反;但这可能是因为我没有运行 Gnome 桌面系统(我选择的是 KDE)。
如果您使用的是其他操作系统,那么应该有其他实用程序来跟踪系统调用。OS X 和其他 BSD 系统可能使用 DTrace 等。如果您找不到如何在系统上跟踪系统调用的方法,您也可以考虑在调试器下运行 emacs,尽管这会麻烦得多。