如何在OSX上的GNU Emacs中获得透明窗口?

时间:2014-02-21 22:20:23

标签: macos emacs terminal org-mode aquamacs

我在OSX Mavericks中使用GNU Emacs而我正在尝试使我的背景透明而不是文本。

有一种简单的方法可以使整个框架透明:

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

但是这会使整个框架透明/半透明,包括文本。我只希望框架背景是透明的,文本是纯黑色。 Emacs Wiki上有人说这样的实现必须是特定于操作系统的。那么,有没有人知道如何为OSX做这个?

使用所需的设置,Emacs将如下所示:
truly transparent Emacs window

同样,我希望窗口100%透明,前景文本100%不透明,它应该在Emacs的全屏模式下工作。

1 个答案:

答案 0 :(得分:8)

以下是一些屏幕截图和使用的不同.emacs设置。我在2014年2月16日使用Emacs Trunk构建--with-ns,操作系统是OSX Snow Leopard 10.6.8。


设置#1

(set-frame-parameter (selected-frame) 'alpha '(85 85))

(add-to-list 'default-frame-alist '(alpha 85 85))

(set-face-attribute 'default nil :background "black"
  :foreground "white" :font "Courier" :height 180)

Example


设置#2

(set-frame-parameter (selected-frame) 'alpha '(85 85))

(add-to-list 'default-frame-alist '(alpha 85 85))

(set-face-attribute 'default nil :background "white"
  :foreground "black" :font "Courier" :height 180)

Example


设置#3

(set-frame-parameter (selected-frame) 'alpha '(75 75))

(add-to-list 'default-frame-alist '(alpha 75 75))

(set-face-attribute 'default nil :background "white"
    :foreground "black" :font "Courier" :height 180)

Example


设置#4

(set-frame-parameter (selected-frame) 'alpha '(0 0))

(add-to-list 'default-frame-alist '(alpha 0 0))

(set-face-attribute 'default nil :background "white"
    :foreground "black" :font "Courier" :height 180)

Example


编辑(2014年2月24日):以下是相关主题的链接,其中Aquamacs的首席开发人员(即David Reitter)建议将nsterm.m修改为潜力解决方案:http://comments.gmane.org/gmane.emacs.aquamacs.devel/836 - “至少,更改将是ns_clear_framens_clear_frame_area。您可以尝试*设置,而不是使用背景颜色填充背景。 NSColor对象的alpha组件,因此它在窗口的实际背景中是透明的*复制。那么,你的框架背景是透明的。这不会处理框架UI元素, ......“ [换句话说,潜在的解决方案可能需要在构建自定义版本的Emacs之前修改源代码。]