macos - 在 mac 上,在特定监视器中打开 Emacs 框架?

标签 macos emacs multiple-monitors

背景:我使用带双显示器的 mac。当我启动 Emacs 时,它总是在“主”监视器(我的 macbook pro 上的那个)中打开,这不是我想看的那个。是否有任何elisp功能可以在特定监视器中打开一个新框架,以便在emacs启动后我可以在两个监视器中都有框架?

或者,有没有办法让 Emacs 在外部监视器中启动(如果存在)?

顺便说一句,我的 Emacs 是来自 emacsforosx.com 的 24.1.1。

最佳答案

显示器上的可见区域具有连续的坐标空间。主显示屏(带有菜单栏的显示屏)的左上角是(0,0)。因此,在特定显示器上打开框架只是在特定位置打开框架的一种特殊情况。

首先将框架移动到所需的位置,然后使用(frame-parameters)获取顶部/左侧的值。通常,(frame-parameters)的结果是一个列表(成对列表),如下所示:

(... (top . 54) (left . 107) ...)

但是,如果您在主显示上方或左侧有显示,则该显示上的窗口的上/左值将为负。 Emacs的GUI支持最初来自X11,没有任何负坐标的概念。如果您尝试使用负值,则Emacs会将其解释为相对于主显示屏的底部/右侧-可能不是您想要的。

框架参数alist中有一个hack可以处理这种情况:存储负的top/left值时,对应的列表项是三个项的列表。例如:
(... (top + -51) (left + -1674) ...)

通常,您可以将这些项目直接提供给make-frame,但是它不理解此hack。相反,您可以制作框架并通过修改其参数立即移动它。例如,我左侧有一个1680x1050显示屏,略高于我的主显示屏,因此可以在该显示屏上显示一个新的帧:
(modify-frame-parameters (make-frame) '((top + -51) (left + -1674)))

我个人只是使​​用Moom,因为它更易于使用且更灵活。我在Emacs中使用C-x 5 2创建了一个新框架,然后使用Moom键盘快捷键将其移动到另一个显示器或其他需要的位置。

关于macos - 在 mac 上,在特定监视器中打开 Emacs 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457317/

相关文章:

macos - 如何在 OSX 中使用 .net core 设置控制台颜色

c++ - 在 Xcode 中捕获线程退出

Emacs 在多个文件中查找和替换正则表达式 (find-name-dired + Q),不保存我的缓冲区?

emacs - 为什么在 Lisp 中将代码视为数据很有用

"\C-' 的 Emacs 键绑定(bind)"

c# - 即使主显示器已锁定,如何在扩展显示器中连续显示 Windows 窗体

wpf - 为什么WPF MediaElement在辅助监视器上不起作用?

c++ - 如何在各种显示器上使用 Qt/C++ 获取打印屏幕?

c++ - 错误 : invalid argument '-std=gnu99' not allowed with 'C++/ObjC++'

c - 程序在mac os下运行正常,在linux下运行异常