![如何在Emacs中获取背景颜色?](https://linux22.com/image/29689/%E5%A6%82%E4%BD%95%E5%9C%A8Emacs%E4%B8%AD%E8%8E%B7%E5%8F%96%E8%83%8C%E6%99%AF%E9%A2%9C%E8%89%B2%EF%BC%9F.png)
在 Emacs 无窗口模式下,背景自动与终端(gnome-terminal)相同。当我看着(frame-parameters)
时,我看到了(background-color . "unspecified-bg")
。好吧,对我来说,背景恰好是黑色的。有没有办法找出 Emacs 会话的实际背景颜色?
答案1
如果您知道如何从终端查找,则可以使用相同的命令从 Emacs 查找。
就我而言,我会制作这样的脚本:
#!/bin/zsh
cat .Xresources | grep 'URxvt\*background\:' | cut -d" " -f2
(注:-d
是设置字段分隔符,-f
是设置显示什么字段:第一个字段是1
,不是0
)
该命令看起来像它的样子.Xresources
,因为该文件套背景颜色,看起来像这样:
# ...
URxvt*background: black
# ...
使脚本可执行 ( chmod +x
),并将其放入您的PATH
( echo $PATH
) 中。
如果脚本what_bg
在 Emacs 中被称为 , M-x shell-command RET what_bg
.
编辑(回应评论):
看看这是否有效。我在 Emacs、urxvt、xterm 和 rxvt 中测试了它。虽然它比第一个脚本更可移植,但它采用.Xresources
配置(这虽然并不罕见,但显然并非无处不在)。
不过,我开始想知道为什么你需要这个?
而且,如果你确实需要它,你能不能看在窗口上确定其颜色?
无论如何,脚本:
#!/bin/zsh
terminal_emulator_parents=`pstree -As $$`
tep_list=`echo $terminal_emulator_parents | tr -s "-" | tr "-" " " \
| tac -s' ' | tr '\n' ' '`
found="false"
for process in `echo $tep_list`; do
if [[ $process =~ ("urxvt"|"xterm"|"rxvt") ]]; then # here: add all
found="true" # terminal emulators
break # configurable
fi # (and *configured*)
done # in ~/.Xresources
if [[ $found == "true" ]]; then
echo -n "$process: "
cat ~/.Xresources | grep -ie ^$process'\*background\:' \
| tr -s " " | cut -d" " -f2
else
echo "Couldn't determine the terminal emulator."
fi