给 emacs-mac-port 打了个 patch,把标题栏变成透明的

你用了山人的配置吧,把配置里面的

 (which-function-mode)
;; when editing js file, this feature is very useful
 (setq-default header-line-format
               '((which-func-mode ("" which-func-format " "))))

注释掉

好吧,确实是

@lululau @railwaycat 透明效果无法关闭?

transparent-title-bar-no_emacs-mac-25_3

深色(solarized-dark)主题下,标题栏背景纯黑色、文字纯白色,对比度偏高,并且在非视网膜屏幕下有点发虚。

重现步骤:

$ brew cask install railwaycat/emacsmacport/emacs-mac
$ defaults write org.gnu.Emacs TransparentTitleBar NO
$ open /Applications/Emacs.app

@railwaycat 应该已经把我这个 patch 去掉了,你自己手动打一下吧

emacs-mac里⌘+v没有效果,有谁知道怎么解决么?Google上没找到相关信息。OvO (setq mac-command-modifier 'none)没啥用。映射到nil上也不行。

Control + Y,想用 macOS 風格的按鍵要自己绑。本身 emacs-mac 就沒這按鍵。

不知道emacs-plus是怎么搞的。emac-plus里默认⌘+v是粘贴。

Mac上默认的emacs-plus也有了一个透明标题栏的选项,是楼主PR的吗

brew install emacs-plus --with-natural-title-bar 的效果:

3 个赞

H-v 吗?绑定一下就可以了:

(global-set-key (kbd "H-v") 'yank)

:+1: 这个方案更喜欢!

最近从 master 安装的 Emacs,刚才看 Frame 相关的文档,发现官方的 Cocoa 的默认支持这个功能:

`ns-transparent-titlebar'
     Only available on macOS, if non-`nil', set the titlebar and
     toolbar to be transparent.  This effectively sets the background
     color of both to match the Emacs background color.
(make-frame '((ns-transparent-titlebar . t))) (make-frame)

另外也能是适配 macOS 的暗色主题(Emacs Mac Port 貌似默认就开了这个?):

`ns-transparent-titlebar'
     Only available on macOS, if non-`nil', set the titlebar and
     toolbar to be transparent.  This effectively sets the background
     color of both to match the Emacs background color.

此外,还支持半透明效果(或许老早就有了,只是我刚知道而已),(make-frame '((alpha . 80)))

4 个赞

我brew装的25.3 stable (--with-cocoa)版本还不支持(make-frame '((ns-transparent-titlebar . t))),运行没问题不过没变化;不过半透明效果倒是有。小惊喜啊,虽然不会去用 :smiley:

ns-transparent-titlebar 还要求必须是 macOS (10.12) 以上

我也没有在用,但还是特地写了个方便调节的命令,纯粹为了好玩吧。

(defun chunyang-alpha-param-adjust ()
  "调节当前 Frame 的透明度."
  (interactive)
  (let ((alpha (or (frame-parameter nil 'alpha) 100)))
    (while (pcase (read-key (format "%d%%, use +,-,0 for further adjustment" alpha))
             ((or ?+ ?=) (setq alpha (1+ alpha)))
             (?- (setq alpha (1- alpha)))
             (?0 (setq alpha 100))
             (_  nil))
      (cond ((> alpha 100) (setq alpha 100))
            ((< alpha 0) (setq alpha 0)))
      (modify-frame-parameters nil `((alpha . ,alpha))))))

灵感来源于调节字体大小的 C-x C-= (text-scale-adjust)。

2 个赞
1 个赞

我用的是Sierra 10.12.6. 估计是stable version还没支持这个功能吧。

emacs: stable 25.3 (bottled), devel 26.0.90, HEAD
GNU Emacs text editor
https://www.gnu.org/software/emacs/
/usr/local/Cellar/emacs/25.3 (4,051 files, 120.1MB) *
  Built from source on 2017-10-03 at 16:32:22 with: --with-cocoa --with-gnutls
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/emacs.rb