Met*_*ind 4 macos emacs multiple-monitors
背景:我使用带双显示器的mac.当我启动Emacs时,它总是在"主"监视器(我的macbook pro上的监视器)中打开,这不是我想看的那个.是否有任何elisp函数在特定的监视器中打开一个新帧,以便在emacs启动后我可以在两个监视器中都有帧?
或者,有没有办法让Emacs在外部监视器中启动(如果存在)?
顺便说一句,我的Emacs是来自emacsforosx.com的24.1.1.
显示屏上的可见区域具有连续的坐标空间.主显示屏的左上角(带有菜单栏的那个)是(0,0).因此,在特定显示器上打开框架只是在特定位置打开框架的特殊情况.
首先将框架移动到您想要的位置,然后使用它(frame-parameters)
来获取顶部/左侧值.通常结果(frame-parameters)
是alist(对列表),如下所示:
(... (top . 54) (left . 107) ...)
Run Code Online (Sandbox Code Playgroud)
但是,如果您在主显示屏的上方或左侧显示,则该显示屏上窗口的顶部/左侧值将为负值.Emacs的GUI支持,最初来自X11,没有任何负坐标的概念.如果您尝试使用负值,Emacs会将它们解释为相对于主显示屏的底部/右侧 - 可能不是您想要的.
框架参数alist中有一个hack来处理这种情况:当存储负的top/left值时,相应的列表项是三个项目的列表.例如:
(... (top + -51) (left + -1674) ...)
Run Code Online (Sandbox Code Playgroud)
通常你可以直接提供这些项目make-frame
,但它不理解这个hack.相反,您可以通过修改其参数来制作框架并立即移动它.例如,我的左侧有一个1680x1050的显示屏,略高于我的主显示屏,因此可以在该显示屏上显示一个新的框架:
(modify-frame-parameters (make-frame) '((top + -51) (left + -1674)))
Run Code Online (Sandbox Code Playgroud)
我个人只是使用Moom,因为它更容易使用,更灵活.我C-x 5 2
在Emacs中创建了一个新框架,然后使用Moom键盘快捷键将其移动到另一个显示器,或者我想要的任何地方.
小智 5
当我尝试这种(frame-parameters)
方法时,它产生了一个奇怪的东西:主显示器上有一个窗口,副显示器上有一个窗口。然而,它们是“相同”的窗口,因为当我 Cx C-c'd 一个时,另一个也会被杀死。
这对我有用。我放入了我的 .emacs 文件。不确定是否必须设置宽度和高度,但这当然也是一种方便的方法:
(setq default-frame-alist
'((top + -550) (left + -1800) (width . 108) (height . 60)))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1939 次 |
最近记录: |