Emacsで背景色を取得する方法は?

Emacsで背景色を取得する方法は?

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に入れます。PATHecho $PATH

スクリプトがwhat_bgEmacsから呼び出されると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

関連情報