Прозрачный фон в Emacs на Gnome Shell

Этот вопрос является продолжением предыдущего вопроса здесь: Как сделать консоль emacs режим наследования цветов оболочки

В Ubuntu 12.10 и Gnome Shell 3.6.2 я использую Emacs. Следуя http://www.emacswiki.org/emacs/TransparentEmacs, я могу установить альфа-канал прозрачность в моем окне Emacs X, используя:

(set-frame-parameter (selected-frame) 'alpha '(85 50))
(add-to-list 'default-frame-alist '(alpha 85 50))

К сожалению, это установило прозрачность для всех «элементов» в моем окне emacs, включая передний план, содержащий текст. В результате становится трудно читать содержимое Emacs. То, что я ищу, - это способ установить альфа-значение только на фоне. Таким образом, я смогу четко видеть содержимое моего окна Emacs и читать информацию из окон за emacs (я успешно делаю это с очень хорошим терминалом gnome).


person Manuel Selva    schedule 13.02.2013    source источник


Ответы (2)


Похоже, это было задано некоторое время назад, но я не вижу, где Мануэль получил полное решение. У меня была такая же проблема, и вот что я придумал.

Если вы установили прозрачность своей оболочки, а затем запустили emacs -nw -q, поведение Emacs по умолчанию, похоже, будет соответствовать настройкам вашей оболочки. Если у вас этого не происходит, скорее всего, вы где-то установили конфликтующие настройки. Может быть, вы используете тему, которая устанавливает цвет фона по умолчанию? Если это так, вам нужно изменить этот параметр.

Если вы используете одну из встроенных тем (например, adwaita, танго, вомбат и т. д.), они устанавливают цвет фона по умолчанию, который переопределяет параметр альфа-рамки. Одним из решений является найти этот файл темы и закомментировать строку, которая устанавливает это значение по умолчанию. Мои темы находятся в /usr/share/emacs/25.3/etc/themes. Если его там нет, переключитесь на рабочий буфер и оцените значение переменной каталога данных. В этом каталоге должен быть подкаталог themes. Чтобы изменить файл темы, вам могут потребоваться права администратора.

Код, который Джефф дал ранее, должен работать. См. раздел 28.4: Параметры кадра Руководства по ELisp. Кроме того, ознакомьтесь с 51.1.7: Пользовательские темы в Руководстве по Emacs. Код Джеффа установит прозрачность фрейма только для Emacs. Это хорошо, если вы хотите, чтобы прозрачность отличалась от прозрачности вашего приложения оболочки. Если вы просто хотите, чтобы он следовал поведению вашей оболочки, как я уже сказал, это значение по умолчанию.

person jsonofspock    schedule 14.04.2018

Мой работал нормально - передний план виден в цвете, который я установил в .Xresources. Возможно, вы можете попробовать это, что-то вроде:

emacs*foreground: gold
emacs*background: black

можно войти в ~/.Xresources, затем использовать команду

$ xrdb ~/.Xresources

перед вызовом emacs с этими двумя строками, которые вы дали (в ~/.emacs):

(set-frame-parameter (selected-frame) 'alpha '(85 50))
(add-to-list 'default-frame-alist '(alpha 85 50))

Я обновил приведенное выше, чтобы включить эти две строки в ~/.emacs, потому что это то, что заставляет работать прозрачность. Кроме того, я заметил, что когда мое окно emacs теряет фокус, передний план также становится прозрачным. Возможно, это то, что вы имели в виду?

person Jeff    schedule 18.06.2013
comment
Спасибо за ответ, но это не решает мою проблему, а просто меняет указанные передний план и фон. Я хочу только прозрачный фон. - person Manuel Selva; 18.06.2013