簡體   English   中英

在Mac上,在特定顯示器中打開Emacs框架?

[英]On mac, open an Emacs frame in a specific monitor?

背景:我使用帶雙顯示器的mac。 當我啟動Emacs時,它總是在“主”監視器(我的macbook pro上的監視器)中打開,這不是我想看的那個。 是否有任何elisp函數在特定的監視器中打開一個新幀,以便在emacs啟動后我可以在兩個監視器中都有幀?

或者,有沒有辦法讓Emacs在外部監視器中啟動(如果存在)?

順便說一句,我的Emacs是來自emacsforosx.com的24.1.1。

顯示屏上的可見區域具有連續的坐標空間。 主顯示屏的左上角(帶有菜單欄的那個)是(0,0)。 因此,在特定顯示器上打開框架只是在特定位置打開框架的特殊情況。

首先移動您想要的框架,然后使用(frame-parameters)獲取頂部/左側值。 通常(frame-parameters)的結果是alist(對列表),如下所示:

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

但是,如果您在主顯示屏的上方或左側顯示,則該顯示屏上窗口的頂部/左側值將為負值。 Emacs的GUI支持,最初來自X11,沒有任何負坐標的概念。 如果您嘗試使用負值,Emacs會將它們解釋為相對於主顯示屏的底部/右側 - 可能不是您想要的。

框架參數alist中有一個hack來處理這種情況:當存儲負的top / left值時,相應的列表項是三個項目的列表。 例如:

(... (top + -51) (left + -1674) ...)

通常你可以直接將這些項目提供給make-frame ,但它不理解這種黑客行為。 相反,您可以通過修改其參數來制作框架並立即移動它。 例如,我的左側有一個1680x1050的顯示屏,略高於我的主顯示屏,因此可以在該顯示屏上顯示一個新的框架:

(modify-frame-parameters (make-frame) '((top + -51) (left + -1674)))

我個人只是使​​用Moom ,因為它更容易使用,更靈活。 我在Emacs中使用Cx 5 2創建一個新框架,然后使用Moom鍵盤快捷鍵將其移動到另一個顯示器,或者我想要的任何其他位置。

當我嘗試(frame-parameters)方法時,它創建了一個奇怪的東西:主顯示器上有一個窗口,輔助顯示器上有一個窗口。 然而,它們是“相同的”窗口,因為當我Cx C-c'd時,另一個也會被殺死。

這對我有用。 我輸入了我的.emacs文件。 不確定是否必須設置寬度和高度,但它當然也是一種方便的方法:

(setq default-frame-alist
  '((top + -550) (left + -1800) (width . 108) (height . 60)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM