Emacsウィンドウなしモードでは、背景は自動的に端末と同じです。私が見たとき、(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