Next: Frame Parameters, Previous: Creating Frames, Up: Frames [Contents][Index]
Emacsは、それぞれの端末を端末オブジェクト(terminal object)というデータ型で表します(Terminal Typeを参照)。GNUおよびUnixシステムでは、Emacsはそれぞれのセッション内で複数の端末を同時に実行できます。その他のシステムでは、単一の端末だけが使用できます。端末オブジェクトはそれぞれ、以下の属性をもちます:
terminal-live-p
によりリターンされるシンボル(たとえばx
、t
、w32
、ns
、pc
)である。Framesを参照のこと。
端末オブジェクトを作成するプリミティブはありません。make-frame-on-display
(以下参照)を呼び出したときなど、Emacsは必要に応じてそれらを作成します。
この関数は、terminalにより使用されるデバイスのファイル名をリターンする。terminalが省略またはnil
の場合のデフォルトは、選択されたフレームの端末である。terminalはフレームでもよく、その場合はそのフレームの端末となる。
この関数は、すべての生きた端末オブジェクトのリストをリターンする。
この関数は、deviceにより与えられたデバイス名の端末をリターンする。deviceが文字列の場合は端末デバイス名、または‘host:server.screen’という形式のXディスプレイ名のいずれかを指定できる。deviceの場合、この関数はそのフレームの端末をリターンする。nil
は選択されたフレームを意味する。最後に、もしdeviceが生きた端末を表す端末オブジェクトなら、その端末がリターンされる。引数がこれらのいずれとも異なる場合、この関数はエラーをシグナルする。
この関数は、terminal上のすべてのフレームを削除して、それらが使用していたリソースを解放する。これらはアブノーマルフックdelete-terminal-functions
を実行し、各関数の引数としてterminalを渡す。
terminalが省略またはnil
の場合のデフォルトは、選択されたフレームの端末である。terminalはフレームでもよく、その場合はそのフレームの端末を意味する。
この関数は通常、唯一アクティブな端末の削除を試みるとエラーをシグナルするが、forceが非nil
なら、これを行うことができる。端末上で最後のフレームを削除した際、Emacsは自動的にこの関数を呼び出す(Deleting Framesを参照)。
delete-terminal
により実行されるアブノーマルフック。各関数は、delete-terminal
に渡されたterminalを、唯一の引数として受け取る。技術的な詳細により、この関数は端末の削除の直前、または直後のいずれかに呼び出される。
数は多くありませんが、いくつかのLisp変数は端末ローカル(terminal-local)です。つまり、それらは端末それぞれにたいして、個別にバインディングをもちます。いかなるときも、実際に効果をもつバインディングは、カレントで選択されたフレームに属する端末にたいして1つだけです。これらの変数にはdefault-minibuffer-frame
、defining-kbd-macro
、last-kbd-macro
、system-key-alist
が含まれます。これらは常に端末ローカルであり、決してバッファーローカル(Buffer-Local Variablesを参照)にはできません。
GNUおよびUnixシステムでは、Xディスプレイはそれぞれ別のグラフィカル端末になります。Xウィンドウシステム内でEmacsが開始された際は環境変数DISPLAY
、または‘--display’オプション(Initial
Options in The GNU Emacs
Manualを参照)により指定されたXディスプレイを使用します。Emacsはコマンドmake-frame-on-display
を通じて、別のXディスプレイに接続できます。それぞれのXディスプレイは各自、選択されたフレームとミニバッファーをもちます。しかしあらゆる瞬間(Input Focusを参照)において、それらのフレームのうちの1つだけが、“いわゆる選択されたフレーム”になります。emacsclient
との対話することにより、Emacsが別のテキスト端末と接続することさえ可能です。Emacs
Server in The GNU Emacs Manualを参照してください。
1つのXサーバーが、1つ以上のディスプレイを処理できます。各Xディスプレイには、‘hostname:displaynumber.screennumber’という3つの部分からなる名前があります。1つ目の部分のhostnameは、その端末が物理的に接続されるマシン名です。2つ目の部分のdisplaynumberは、同じキーボードとポインティングデバイス(マウスやタブレット等)を共有するマシンに接続された、1つ以上のモニターを識別するための、0基準の番号です。3つ目の部分のscreennumberは、そのXサーバー上の単一のモニターコレクション(a single monitor collection)の一部である、0基準のスクリーン番号(個別のモニター)です。1つのサーバー配下にある2つ以上のスクリーンを使用する際、Emacsはそれらの名前の同一部分から、それらが単一のキーボードを共有することを知ることができるのです。
MS-WindowsのようにXウィンドウシステムを使用しないシステムは、Xディスプレイの概念をサポートせず、各ホスト上には1つのディスプレイだけがあります。これらのシステム上のディスプレイ名は、上述したような3つの部分からなる名前にしたがいません。たとえば、MS-Windowsシステム上のディスプレイ名は文字列定数‘w32’です。これは互換性のために存在するものであり、ディスプレイ名を期待する関数にこれを渡すことができます。
この関数は、display上に新たにフレームを作成して、それをリターンする。その他のフレームパラメーターは、alist parametersから取得する。displayはXディスプレイの名前(文字列)であること。
この関数は、フレーム作成前にEmacsがグラフィックを表示するために“セットアップ”されることを保証する。たとえば、Emacsが(テキスト端末上で開始された等で)Xリソースを未処理なら、この時点で処理を行う。他のすべての点においては、この関数はmake-frame
(Creating Framesを参照)と同様に振る舞う。
この関数は、EmacsがどのXディスプレイに接続したかを識別するリストをリターンする。このリストの要素は文字列で、それぞれがディスプレイ名を表す。
この関数は、ディスプレイ上にフレームを作成することなく、Xディスプレイdisplayへの接続をオープンする。通常は、make-frame-on-display
が自動的に呼び出すので、Emacs
Lispプログラムがこの関数を呼び出す必要はない。これを呼び出す唯一の理由は、与えられたXディスプレイにたいして通信を確立できるかどうかチェックするためである。
オプション引数xrm-stringが非nil
なら、それは.Xresourcesファイル内で使用されるフォーマットと同一な、リソース名とリソース値である。X Resources in The GNU Emacs
Manualを参照のこと。これらの値はそのXサーバー上で記録されたリソース値をオーバーライドして、このディスプレイ上で作成されるすべてのEmacsフレームにたいして適用される。以下は、この文字列がどのようなものかを示す例である:
"*BorderWidth: 3\n*InternalBorder: 2\n"
must-succeedが非nil
なら、接続オープンの失敗によりEmacsが終了させられる。それ以外の場合は、通常のLispエラーとなる。
この関数は、ディスプレイdisplayへの接続をクローズする。これを行う前にまず、そのディスプレイ上でオープンしたすべてのフレームを削除しなければならない(Deleting Framesを参照)。
“マルチモニター”のセットアップにおいて、単一のXディスプレイが複数の物理モニターに出力される場合があります。そのようなセットアップを取得するために、関数display-monitor-attributes-list
とframe-monitor-attributes
を使用できます。
この関数は、display上の物理モニターの属性のリストをリターンする。displayにはディスプレイ名(文字列)、端末、フレームを指定でき、省略またはnil
の場合のデフォルトは、選択されたフレームのディスプレイである。このリストの各要素は、物理モニターの属性を表す連想リストである。1つ目の要素はプライマリーモニターである。以下は属性のキーと値である:
‘(x y width height)’のような、ピクセル単位でのそのモニターのスクリーンの左上隅の位置、そのサイズ。そのモニターがプライマリーモニターでない場合は、いくつかの座標が負になり得る。
‘(x y width height)’のような、ピクセル単位でのワークエリア(“使用可能”なスペース)の左上隅の位置と、そのサイズ。これはワークエリアから除外され得る、ウィンドウマネージャーのさまざまな機能(dock、taskbar等)が占めるスペースの分、‘geometry’とは異なるかもしれない。そのような機能が実際にワークエリアから差し引かれるかどうかは、そのプラットフォームと環境に依存する。繰り返しになるが、そのモニターがプライマリーモニターでない場合、いくつかの座標は負になり得る。
‘(width height)’<のような、ミリメートル単位での幅と高さ。
その物理モニターが支配(dominate)するフレームのリスト(以下参照)。
stringのような、その物理モニターの名前。
stringのような、マルチモニターの情報ソース(例: ‘XRandr’、‘Xinerama’等)。
x、y、width、heightは整数。‘name’と‘source’は欠落しているかもしれない。
あるモニター内にフレームの最大領域がある、または(フレームがどの物理モニターに跨がらないなら)そのモニターがフレームに最も近いとき、フレームは物理モニターにより支配(dominate)される。グラフィカルなディスプレイ内の(ツールチップではない)すべてのフレームは、たとえそのフレームが複数の物理モニターに跨がる(または物理モニター上にない)としても、(可視か否かによらず)正確に1つの物理モニターにより支配される。
以下は、2つのモニターディスプレイ上でこの関数により生成されたデータの例である:
(display-monitor-attributes-list) ⇒ (((geometry 0 0 1920 1080) ;; 左手側プライマリーモニター (workarea 0 0 1920 1050) ;; タスクバーが幾分かの高さを占有 (mm-size 677 381) (name . "DISPLAY1") (frames #<frame emacs@host *Messages* 0x11578c0> #<frame emacs@host *scratch* 0x114b838>)) ((geometry 1920 0 1680 1050) ;; 右手側モニター (workarea 1920 0 1680 1050) ;; スクリーン全体を使用可 (mm-size 593 370) (name . "DISPLAY2") (frames)))
この関数は、 frameを支配(上記参照)する物理モニターの属性をリターンする。 frameのデフォルトは選択されたフレームである。
Next: Frame Parameters, Previous: Creating Frames, Up: Frames [Contents][Index]