Se você souber como descobrir a partir do terminal, você pode usar o mesmo comando para descobrir a partir do Emacs.
No meu caso, eu faria um roteiro como este:
#!/bin/zsh
cat .Xresources | grep 'URxvt\*background\:' | cut -d" " -f2
(Nota: -d
é definir o delimitador de campo, -f
é definir o campo a ser exibido: o primeiro campo é 1
, não 0
)
O comando tem a mesma aparência porque .Xresources
, o arquivo que define a cor do plano de fundo, se parece com isso:
# ...
URxvt*background: black
# ...
Torne o script executável ( chmod +x
) e coloque-o no seu PATH
( echo $PATH
).
Se o script for chamado de what_bg
, no Emacs, M-x shell-command RET what_bg
.
Editar (em resposta ao comentário):
Veja se isso funciona. Eu testei do Emacs e em urxvt, xterm e rxvt. Embora seja mais portátil que o primeiro script, ele assume a configuração .Xresources
(que, embora não seja incomum, obviamente não está em todos os lugares).
Estou começando a me perguntar, por que você precisa disso para começar?
E, se você realmente precisar, você não pode apenas procurar na janela para determinar sua cor?
De qualquer forma, o script:
#!/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