背景:デュアルモニター付きのMacを使用しています。Emacsを起動すると、常に「メイン」モニター(私のmacbook proにあるモニター)で開きますが、これは私が見たいものではありません。emacsの起動後に両方のモニターでフレームを使用できるように、特定のモニターで新しいフレームを開くためのelisp関数はありますか?
または、Emacsを外部モニター(存在する場合)で起動させる方法はありますか?
ところで、私のEmacsはemacsforosx.comの24.1.1です。
背景:デュアルモニター付きのMacを使用しています。Emacsを起動すると、常に「メイン」モニター(私のmacbook proにあるモニター)で開きますが、これは私が見たいものではありません。emacsの起動後に両方のモニターでフレームを使用できるように、特定のモニターで新しいフレームを開くためのelisp関数はありますか?
または、Emacsを外部モニター(存在する場合)で起動させる方法はありますか?
ところで、私のEmacsはemacsforosx.comの24.1.1です。
ディスプレイ全体の表示領域には、連続した座標空間があります。メイン ディスプレイ (メニュー バーがあるディスプレイ) の左上は (0, 0) です。したがって、特定のディスプレイでフレームを開くことは、特定の場所でフレームを開くという特殊なケースにすぎません。
最初にフレームを必要な場所に移動してから、 を使用(frame-parameters)
して上/左の値を取得します。通常、 の結果は(frame-parameters)
次のような連想リスト (ペアのリスト) です。
(... (top . 54) (left . 107) ...)
ただし、メイン ディスプレイの上または左にディスプレイがある場合、そのディスプレイのウィンドウの上/左の値は負になります。Emacs の GUI サポートは、もともと X11 からのもので、負の座標の概念がありませんでした。負の値を使用しようとすると、Emacs はそれらをメイン ディスプレイの下部/右側に相対的なものとして解釈します — おそらくあなたが望むものではありません.
この状況を処理するために、フレーム パラメータの alist にハックがあります。上/左に負の値を格納する場合、対応するリスト項目は代わりに 3 つの項目のリストになります。例えば:
(... (top + -51) (left + -1674) ...)
通常、これらのアイテムを に直接提供できますがmake-frame
、このハックは理解されません。代わりに、フレームを作成し、パラメータを変更してすぐに移動できます。たとえば、左側のメイン ディスプレイの少し上に 1680x1050 のディスプレイがあるので、これはそのディスプレイに新しいフレームを表示するために機能します。
(modify-frame-parameters (make-frame) '((top + -51) (left + -1674)))
個人的にはMoomを使用しています。これは、使いやすく柔軟性があるためです。Emacsで新しいフレームを作成し、C-x 5 2
Moom のキーボード ショートカットを使用して別のディスプレイに移動したり、必要な場所に移動したりします。
このアプローチを試してみたところ(frame-parameters)
、プライマリ ディスプレイに 1 つのウィンドウが、セカンダリ ディスプレイに 1 つのウィンドウが表示されるという奇妙な現象が発生しました。ただし、一方を Cx Cc すると、もう一方も強制終了されるため、それらは「同じ」ウィンドウでした。
これが私にとってうまくいくものです。.emacs ファイルを入れました。幅と高さを設定する必要があるかどうかはわかりませんが、それも同様に便利な方法です。
(setq default-frame-alist
'((top + -550) (left + -1800) (width . 108) (height . 60)))