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

17

我正在使用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看起来像这样:
真正透明的Emacs窗口

再次强调,我希望窗口100%透明,前景文字100%不透明,并且它应该在Emacs的全屏模式下工作。


1
另外一种选择是,如果你愿意在终端中使用emacs,你可以在偏好设置下创建一个新的shell配置文件,并将不透明度和模糊度都设置为“0”。 - lubert
1个回答

13
以下是几个屏幕截图和使用的不同.emacs设置。我正在使用在2014年2月16日构建带有--with-ns参数的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)

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)

示例


场景 #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的自定义版本之前。]


1
Aquamacs有许多开发人员定制的功能,超越了基本版本。我确定您可以找到导致问题的设置,但这可能需要耗费很长时间。我的建议是忘记Aquamacs,改用http://emacsformacosx.com/ ,最终您可以构建自己的编辑器。一开始我选择Aquamacs是因为它原生支持OSX拼写检查和右键上下文菜单。最终,我选择了Aspell和基本版本的Emacs,并创建了自己的右键上下文菜单。 - lawlist
1
еҰӮжһңжӮЁдҪҝз”ЁдёҖдёӘеҸӘеҢ…еҗ«жӮЁй—®йўҳдёӯзҡ„дёӨиЎҢд»Јз Ғе’ҢжҲ‘зҡ„зӯ”жЎҲд»Јз Ғзҡ„.emacsж–Ү件пјҢеҲҷе®ғеҸҜд»ҘеңЁOSX Snow Leopard 10.6.8дёҠдҪҝз”ЁеҪ“еүҚзүҲжң¬зҡ„Emacs trunkжһ„е»ә--with-nsгҖӮжүҖд»ҘжҲ‘жңҖеҘҪзҡ„зҢңжөӢжҳҜжӮЁзҡ„й…ҚзҪ®ж–Ү件дёӯжңүе…¶д»–еҶІзӘҒзҡ„еҶ…е®№гҖӮе°қиҜ•д»…дҪҝз”ЁжӮЁй—®йўҳдёӯзҡ„д»Јз Ғе’ҢжҲ‘зҡ„зӯ”жЎҲпјҲеңЁеҲқе§ӢеҢ–ж–Ү件дёӯжІЎжңүе…¶д»–еҶ…е®№пјү并жҹҘзңӢжҳҜеҗҰжңүж•ҲгҖӮ - lawlist
1
该网站的构建是使用ns选项制作的,因此您只需要决定最后一个稳定版本或带有即将推出内容的开发人员构建。最新的开发人员快照版本将具有许多良好的错误修复,但可能存在尚未知晓的新问题。Emacs Trunk的最新构建确实具有全屏功能。 - lawlist
2
你的图片确实帮助我理解你所寻求的 -- 谢谢。 - lawlist
1
Emacs和Aquamacs都使用nsterm.m,因此建议的修改可以应用于任何一个版本。然而,该代码是用"C"编写的,远远超出了我目前最基本的编码知识水平。如果您下载Emacs或Aquamacs的源代码并查看nsterm.m,您就会明白我的意思。 Aquamacs对nsterm.m进行了一些额外的自定义更改(例如,用于本机OSX拼写检查器):https://github.com/davidswelt/aquamacs-emacs/blob/aquamacs24/src/nsterm.m - lawlist
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接