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

inc*_*man 11 macos emacs terminal aquamacs org-mode

我在OSX Mavericks中使用GNU Emacs,我试图让我的背景透明而不是文本.

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

(set-frame-parameter (selected-frame) 'alpha '(85 85))
(add-to-list 'default-frame-alist '(alpha 85 85))
Run Code Online (Sandbox Code Playgroud)

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

使用所需的设置,Emacs将如下所示:
真正透明的Emacs窗口.

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

law*_*ist 9

以下是一些屏幕截图和使用的不同.emacs设置.我使用的是--with-ns2014年2月16日制作的Emacs Trunk ,操作系统是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)
Run Code Online (Sandbox Code Playgroud)

例


设置#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)
Run Code Online (Sandbox Code Playgroud)

例


设置#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)
Run Code Online (Sandbox Code Playgroud)

例


设置#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)
Run Code Online (Sandbox Code Playgroud)

例


编辑(2014年2月24日):下面是相关的主题,其中Aquamacs(即大卫Reitter)的主要开发人员曾建议修改链nsterm.m作为一个潜在的解决方案: http://comments.gmane.org/gmane.emacs .aquamacs.devel/836 - "在最低限度,这些变化将是ns_clear_framens_clear_frame_area,而是填充背景色的背景,你可以尝试*设置NSColor对象的Alpha组件,这样它是透明的*复制在实际窗口的背景.那么,你的框架背景是透明的.这不会照顾框架的UI元素,..." [换句话说,潜在的解决方案可能需要在构建自定义版本的Emacs之前修改源代码.]

  • 你的照片肯定能帮助我理解你的目标 - 谢谢. (2认同)