Как получить цвет фона в Emacs?

В Emacs нет оконного режима, фон автоматически совпадает с терминалом (гном-терминал). Когда я смотрю (frame-parameters) я вижу это (background-color . "unspecified-bg") . Ну, для меня фон бывает черным. Есть ли способ узнать, каков фактический цвет фона для сеанса Emacs?

  • Терминал не открывается после выполнения "screenfetch"
  • Как использовать `gnome-terminal` с новой архитектурой клиент / сервер в качестве оболочки?
  • Проблема с отображением в бесконечной ОС
  • Пользовательская команда Gnome-terminal и динамический рабочий каталог
  • Как изменить название терминала без изменения строки приглашения?
  • Могу ли я сделать текст в xterm и выглядеть как gnome-terminal?
  • Загрузите другой .bashrc при запуске консоли или термина из командной строки
  • Как явным образом установить tabname нового терминала gnome?
  • One Solution collect form web for “Как получить цвет фона в Emacs?”

    Если вы знаете, как узнать из терминала, вы можете использовать эту команду, чтобы узнать из 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, Mx 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 
    Linux и Unix - лучшая ОС в мире.