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

Macos 如何在OSX上的GNU Emacs中获得透明窗口?,macos,emacs,terminal,org-mode,aquamacs,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)) 但这会使整个框架透明/半透明,包括文本。我只希望框架背景是透明的,文本是纯黑色。EmacsWiki上有人说,这样的实现必须是特定于操作系统的。那么,有人知道如何为

我在OSX Mavericks的GNU Emacs上,我试图使我的背景透明,但不是文本

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

(set-frame-parameter (selected-frame) 'alpha '(85 85))
(add-to-list 'default-frame-alist '(alpha 85 85))
但这会使整个框架透明/半透明,包括文本。我只希望框架背景是透明的,文本是纯黑色。EmacsWiki上有人说,这样的实现必须是特定于操作系统的。那么,有人知道如何为OSX做到这一点吗

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


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

以下是一些屏幕截图和使用的不同的
.Emacs
设置。我使用的是2014年2月16日构建的带有ns的Emacs主干,操作系统是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)
(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)
(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)
(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)


设置#2

(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)
(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)
(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)
(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)


设置#3

(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)
(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)
(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)
(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)


设置#4

(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)
(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)
(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)
(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)



EDIT(2014年2月24日):以下链接指向Aquamacs的首席开发人员(即David Reiter)建议修改
nsterm.m
作为潜在解决方案的相关线程:——“至少更改为
ns\u clear\u frame
ns\u clear\u frame\u area
。您可以尝试设置NSColor对象的alpha组件,使其在窗口的实际背景中透明,而不是用背景色填充背景。那么,你会有一个框架背景透明。这不考虑框架UI元素。“[换句话说,潜在的解决方案可能需要在构建自定义版本的Emacs之前修改源代码。]

Aquamacs拥有无数由开发人员定制的东西。”除了普通版本之外。我相信你可以找到导致你出现问题的设置,但这可能很耗时。我的建议是忘记Aquamacs和使用,最终你可以构建自己的。我最初被Aquamacs吸引是因为原生OSX拼写检查和右击上下文菜单。最后,我选择了Aspell和普通的Emacs构建,并创建了自己的右键单击上下文菜单。如果您使用的
.Emacs
文件只包含问题中的两行代码和我的答案中的代码,那么它可以与当前版本的Emacs trunk build
——在OSX Snow Leopard 10.6.8上使用ns
。所以我最好的猜测是您配置文件中存在冲突的其他内容。请仅使用问题和我的答案中的代码进行尝试(init文件中没有其他内容)看看它是否有效。该网站的构建是使用ns选项进行的,因此您只需决定最后一个稳定版本,或者是一个开发人员构建,并对即将到来的内容进行预览。最新的开发人员快照构建将有许多很好的bug修复,但可能有一些新问题尚不清楚。Emacs Trunk的最新构建确实有以下功能:ll-screen。您的图片确实帮助我了解您在寻找什么——谢谢。Emacs和Aquamacs都使用
nsterm.m
,因此建议的修改可以是任何一个版本。但是,代码是用“C”编写的“这远远超出了我目前的最低编码知识水平。如果您下载Emacs或Aquamacs的源代码并浏览一下
nsterm.m
,您就会明白我的意思。Aquamacs对
nsterm.m
进行一些额外的自定义更改(例如,对于本机OSX拼写检查器):另一种方法是,如果您愿意从终端使用emacs,您可以在“首选项”下创建新的外壳配置文件,并将“不透明度”设置为“0”,将“模糊”设置为“0”。