Emacs에서 배경색을 얻는 방법은 무엇입니까?

Emacs에서 배경색을 얻는 방법은 무엇입니까?

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에 넣습니다 .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

관련 정보