【问题标题】:how to get transparent window in GNU Emacs on OSX?如何在 OSX 上的 GNU Emacs 中获得透明窗口?
【发布时间】:2014-03-23 16:09:16
【问题描述】:

我在 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 将如下所示:

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

【问题讨论】:

  • 另一种方法是,如果您愿意从终端使用 emacs,您可以在首选项下创建一个新的 shell 配置文件,并将不透明度设置为“0”并将模糊设置为“0”。

标签: macos emacs terminal org-mode aquamacs


【解决方案1】:

以下是一些屏幕截图和使用的不同.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)


设置#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)


设置#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)


编辑(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 之前修改源代码。]

【讨论】:

  • Aquamacs 拥有一百万个由开发人员定制的东西,超出了原版版本。我相信您可以找到导致问题的设置,但这可能会很耗时。我的建议是忘记 Aquamacs 并使用emacsformacosx.com,最终您可以构建自己的。由于本机 OSX 拼写检查和右键单击上下文菜单,我最初被 Aquamacs 所吸引。最后,我选择了 Aspell 和 vanilla Emacs 构建,并创建了自己的右键单击上下文菜单。
  • 如果您使用的 .emacs 文件仅包含您的问题中的两行代码和我的答案中的代码,那么它适用于在 OSX Snow 上构建 --with-ns 的当前版本的 Emacs 主干豹10.6.8。所以我最好的猜测是你的配置文件中有其他冲突的东西。仅使用您问题中的代码和我的答案(初始化文件中没有其他内容)尝试一下,看看它是否有效。
  • 来自该网站的构建是使用 ns 选项制作的,因此您只需要决定最后一个稳定版本或开发人员构建并预览即将发布的内容。最新的开发者快照版本将有许多很好的错误修复,但可能还有未知的新问题。最新版本的 Emacs Trunk 确实具有全屏功能。
  • 你的照片确实能帮助我理解你在寻找什么——谢谢。
  • Emacs 和 Aquamacs 都使用nsterm.m,因此建议的修改可以是任一版本。但是,代码是用“C”编写的,因此远远超出了我目前的最低编码知识水平。如果您下载 Emacs 或 Aquamacs 的源代码并查看nsterm.m,您就会明白我的意思。 Aquamacs 对 nsterm.m 进行了一些额外的自定义更改(例如,对于本机 OSX 拼写检查器):github.com/davidswelt/aquamacs-emacs/blob/aquamacs24/src/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多