# ワークスペース・マネージャのカスタマイズ

この章では、デスクトップ・ワークスペース・マネージャのカスタマイズの方法について説明します。

SAG.WMCnf.div.3
SAG.WMCnf.div.8
SAG.WMCnf.div.13
SAG.WMCnf.div.18
SAG.WMCnf.div.22
SAG.WMCnf.div.26

ワークスペース・マネージャは、デスクトップが提供するウィンドウ・マネージャです。他のウィンドウ・マネージャのように、次のことをコントロールします。

- ウィンドウ枠コンポーネントの外観

- ウィンドウの重なり順やフォーカス動作などのウィンドウの動作

- キー割り当てとボタン割り当て

- アイコン化されたウィンドウの外観

- [ワークスペース]メニューと[ウィンドウ]メニュー

さらに、次のデスクトップ・コンポーネントをコントロールします。

- ワークスペース。いくつものワークスペースを管理し、各ワークスペースごとにどのウィンドウを開いているか監視します。

- ワークスペース背景。スタイル・マネージャを使用して背景を変更しますが、背景の管理はワークスペース・マネージャの機能のひとつです。

- フロントパネル。フロントパネルは独自の構成ファイルを使用しますが、そのファイルはワークスペース・マネージャが作成および管理します。

これらのほとんどはスタイル・マネージャで変更できます。スタイル・マネージャは、よく行われる変更を手間をかけずにすばやく行えるようにします。他のリソースは手動で設定しなければなりません。

ワークスペース・マネージャは `dtwm` です。Motif ウィンドウ・マネージャをベースとしています。

## 関連項目

- ワークスペース・マネージャのリファレンス情報については、`dtwm`(1) および `dtwmrc(4)` のマニュアル・ページを参照してください。

- ワークスペース・マネージャのリソースの設定については、 SAG.FACol.div.2 を参照してください。

- フロントパネル構成ファイルの情報については、 SAG.FrPC.mkr.1 を参照してください。

リソース設定の追加情報については、 SAG.FACol.div.2 を参照してください。

## ワークスペース・マネージャ構成ファイル

ワークスペース・マネージャは、ウィンドウ・メニュー、ワークスペース・メニュー、ボタン割り当て、構成ファイルからのキー割り当てに関する情報を獲得します。

ワークスペース・マネージャは、次のファイルのいずれかを使用します。

- 個人用ファイル: HomeDirectory`/.dt/
  dtwmrc`

- システム・カスタム・ファイル: `/etc/dt/config/`language`/
  sys.dtwmrc`

- 組み込みファイル: `/usr/dt/config/`language`/sys.dtwmrc`

ワークスペース・マネージャは、上記に示した順で構成ファイルを検索し、最初に見つけたファイルを使用します。

２つ以上のセッション言語を使用するユーザは、個人用の言語依存構成ファイル HomeDirectory`/.dt`/language/`dtwrmc` を HomeDirectory`/.dt/dtwmrc` より優先するものとして作成することができます。

### 個人用構成ファイルを作成または変更するには

個人用ワークスペース・マネージャ構成ファイルは HomeDirectory`/.dt/dtwmrc` です。このファイルが存在している場合は、これを使用します。

1. [デスクトップツール]アプリケーション・グループの
   [Dtwmrc の編集]をダブルクリックします。

   すでに個人用 `dtwmrc` ファイルがある場合は、エディタに読み込まれます。ない場合は、`sys.dtwmrc` が HomeDirectory`/.dt/dtwmrc` にコピーされ、それからエディタに読み込まれます。

2. ファイルを編集します。

3. エディタを終了します。

   ファイルは、その元のソースにかかわらず、個人用 `dtwmrc` として保存されます。

### システム共通構成ファイルを作成するには

システム共通のワークスペース・マネージャ構成ファイルは `/etc/dt/config/`language`/sys.dtwmrc` です。

1. `/usr/dt/config/`language`/
   sys.dtwmrc` を `/etc/dt/config/`language`/sys.dtwmrc` へコピーします。

HomeDirectory`/.dt/dtwmrc` が存在する場合は、このファイルを使用しません。

### 他のファイルを取り込む（参照する）には

1. 次の構文を使用します。

       include
       {
           path
           path
         …
       }

たとえば、次の行は `/users/ellen/mymenu` ファイルを参照します。

    include
    {
       /users/ellen/mymenu
    }

include 文は、構成ファイルをすべてコピーせずに機能を追加する場合に有用です。たとえば、すべての構成ファイルを管理せずに新しいキー割り当てを作成したいとします。この場合、次の内容の HomeDirectory`/.dt/dtwmrc` ファイルを作成できます。

    include
    {
     /etc/dt/config/C/sys.dtwmrc
    }
    Keys DtKeyBindings
    {
      Alt<Key>F5 root  f.menu  Applications
    }
    Menu Applications
    {
      “GraphicsApp” f.exec “/usr/bin/GraphicsApp/GApp”
      …
    }

### ワークスペース・マネージャを再起動するには

構成ファイルに対する変更内容を有効にするには、ワークスペース・マネージャを必ず再起動してください。

1. [ワークスペース]メニューから[ワークスペースマネージャ の再起動]を選択します（ポインタが背景上にあるときにマウス・ボタン３を押します）。

## ワークスペースのカスタマイズ

ワークスペース名やワークスペース数の変更など、多くのワークスペースのカスタマイズは、デスクトップのインタフェースを使用して行うことができます。ただし、システム共通デフォルトを設定するリソースは、ワークスペース・マネージャが提供します。

### システム共通のベースのワークスペース数を変更するには

デフォルトのデスクトップ設定では、４つのワークスペースが提供されます。ワークスペース・スイッチに関連付けられたポップアップ・メニューを使用して、ワークスペースを追加したり削除したりできます。

ワークスペース・マネージャは、デフォルトのワークスペース数を変更するためのリソースを提供します。

1. `workspaceCount` リソースを使用して、ワークスペースの数を設定します。

   `Dtwm*workspaceCount: number`

ワークスペース・マネージャのリソース設定については、 SAG.FACol.div.2 を参照してください。

たとえば、次のリソースは、ワークスペース数を 6 に設定します。

    Dtwm*workspaceCount: 6

### システム共通ワークスペース名を指定するには

内部的には、ワークスペースは番号割り当て規則 `ws` n（n は 0, 1, 2 など）によって番号が付けられます。たとえば、４つのデフォルト・ワークスペースは、内部的に `ws0` から `ws3` までの番号が付けられます。

1. `title` リソースを使用して指定したワークスペース名を変更します。

       Dtwm*wsn: name

       Dtwm*wsn.title: name

ワークスペース・マネージャのリソース設定については、 SAG.FACol.div.2 を参照してください。

たとえば、次のリソースは４つのデフォルト・ワークスペースを指定した名前に設定します。

    Dtwm*ws0*title:  Anna
    Dtwm*ws1*title:  Don
    Dtwm*ws2*title   Julia
    Dtwm*ws3*title   Patti

### 追加背景を作成するには

1. 背景イメージを作成します。ビットマップ・ファイルまたはピックスマップ・ファイルにしてください。

2. 次のディレクトリのいずれかに背景を指定します（ディレクトリを作成しなければならない場合もあります）。

   - システム共通背景: `/etc/dt/backdrops`

   - 個人用背景: HomeDirectory`/.dt/backdrops`

3. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

システム共通背景および個人用背景は、`/usr/dt/backdrops` の組み込み背景に追加されます。

既存の組み込み背景は、同じ名前の個人用背景またはシステム共通背景を作成することによって置き換えることができます。

### グラフィック・イメージで背景を置き換えるには

背景は、ディスプレイの
ルート・ウィンドウ全体を覆っています。スタイル・マネージャの[背景]ダイアログ・ボックスは、背景が透過的である
NoBackdrop 設定を提供します。

すべてのワークスペースの背景の背後には、ひとつのルート・ウィンドウしかありません。したがって、ルート・ウィンドウにあるグラフィック・イメージは、すべてのワークスペースで存在します。どのワークスペースがルート・ウィンドウを背景で覆うか指定できます。ただし、NoBackdrop が有効である場合、表示可能なイメージはすべてのワークスペースで同じになります。

1. グラフィック・イメージを作成します。これは、ルート・ウィンドウにイメージを表示するためのツールの形式でなければなりません。たとえば `xsetroot` を使用する場合は、ビットマップ・ファイルを作成しなければなりません。

2. ファイルがすでに存在しなければ、実行可能ファイル HomeDirectory`/.dt/sessions/sessionetc` を作成します。`sessionetc` ファイルは、ログインするごとに実行されます。

3. コマンドを入力して、`sessionetc` ファイルのイメージを表示します。

   たとえば、次のコマンドは、ルート・ウィンドウに指定したビットマップを表示します。

       xsetroot -bitmap /users/ellen/.dt/icons/root.bm

## ワークスペース・マネージャのメニュー

ワークスペース・マネージャには、次の３つのデフォルト・メニューがあります。

[ワークスペース]メニュー | ルート・メニューとも呼ばれます。ポインタが背景にあるときにマウス・ボタン３を押すと表示されます。このメニューはボタン割り当てによって、マウス・ボタンに関連付けられています。
[ウィンドウ]メニュー | ポインタがウィンドウ・メニュー・ボタン（ウィンドウ枠の左上隅）上にあるときにマウス・ボタン１または３を押すと表示されます。このメニューは `windowMenu` リソース によって、ボタンに関連付けられています。
フロントパネル・メニュー | ポインタがフロントパネルのウィンドウ・メニュー・ボタン上にあるときにマウス・ボタン１または３を押すと表示されます。

### ワークスペース・マネージャのメニュー構文

ワークスペース・マネージャのメニュー構文は、次のとおりです。

    Menu MenuName
    {
        selection1 [mnemonic] [accelerator] function [argument]
        selection2 [mnemonic] [accelerator] function [argument]
        …
    }

where:

selection | メニューに表示されるテキストまたはビットマップ。テキストにスペースを入れるときは、テキストを引用符で囲みます。ビットマップには、@/path 構文を使用します。
mnemonic | メニューが表示されたときに、キーボード・ショートカットとして動作する１文字。`_`character という形式で指定します。
accelerator | メニューが表示されているかどうかにかかわらずアクティブなキーボード・ショートカットです。アクセラレータの構文は modifier`<Key>` Keyname で、修飾子は、`Ctrl`、`Shift`、`Alt`（拡張文字）、および `Lock` です。すべての可能なキー名のリストについては、システムの “X11 include” ディレクトリの `keysymdef.h` ファイルを参照してください。
function | これを選択したときに実行される関数です。関数のリストについては、`dtwmrc(4)` のマニュアル・ページを参照してください。
argument | 関数の引き数です。詳細については、`dtwmrc(4)` のマニュアル・ページを参照してください。

たとえば、次の Restore というラベルの付いたメニュー項目は、ウィンドウを元に戻します。メニューが表示されたときに “R” と入力してもウィンドウは復元されます。拡張文字[F5]を押しても同じです。

    Restore    _R    Alt<Key> F5    f.normalize

ワークスペース・マネージャのメニュー構文の詳細については、`dtwmrc(4)` のマニュアル・ページを参照してください。

### 既存のワークスペース (ルート) メニューを変更するには

1. 編集するため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

   これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. [ワークスペース]メニューの記述を編集します。

   デフォルトの[ワークスペース]メニューは
   DtRootMenu です。

       Menu DtRootMenu
       {
           “Workspace Menu”   f.title
           “Shuffle Up”       f.circle_up
           “Shuffle Down”     f.circle_down
           …
       }

### 新規ワークスペース (ルート) メニューを作成するには

1. 編集するため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

   これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. 新規メニューを作成します。

       Menu menu_name
       {
               …
       }

   SAG.WMCnf.mkr.9 を参照してください。

3. ボタン割り当てを作成または編集して新規メニューを表示します。

   既存のメニューを新規メニューに置き換える場合は、[ワークスペース]メニューを表示するボタン割り当てを編集します。

       <Btn3Down> root f.menu  menu_name

   メニューが追加メニューである場合、新しいマウス・ボタンを割り当てます。たとえば、次のようにボタンを割り当てると、背景上で[Shift]キーとマウス・ボタン３を押したときにメニューが表示されます。

       Shift<Btn3Down> root f.menu  menu_name

4. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

### 新規ウィンドウ・メニューを作成するには

[ウィンドウ]メニューは、ワークスペース・マネージャに組み込まれ、通常はカスタマイズしません。アプリケーション間でウィンドウの動作の一貫性を保つには、ウィンドウ・・メニューをあまり大幅に変更しないでください。

1. 編集するため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

   これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. 新規メニューを作成します。

       Menu menu_name
       {
               …
       }

3. `windowMenu` リソースを使用して新規メニューを指定します。

       Dtwm*windowMenu: menu_name

4. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

## ボタン割り当てのカスタマイズ

ボタン割り当て は、ウィンドウ・マネージャ機能とマウス・ボタン操作および可能なキーボード修飾キーとを関連付けることです。ボタン割り当ては、すべてのワークスペースに適用されます。

デスクトップのデフォルトのボタン割り当ての定義は、`
DtButtonBindings` というボタン割り当てセットのワークスペース・マネージャ構成ファイルに定義されています。

    Buttons DtButtonBindings
    {
      …
    }

### ボタン割り当て構文

ボタン割り当ての構文は次のとおりです。

    Buttons ButtonBindingSetName
    {
        [modifier]<button_nameMouse_action> context  function [argument]
        [modifier]<button_nameMouse_action> context  function [argument]

where:

button_name | `Btn1—`左マウス・ボタン `Btn2—`中央ボタン (３つボタン・マウスの場合) または左右ボタン (２つボタン・マウスの場合) `Btn3—`右ボタン `Btn4—`３つボタン・マウスの場合のボタン１とボタン２ `Btn5—`３つボタン・マウスの場合のボタン２とボタン３
modifier | `Ctrl`、`Shift`、`Alt`、`Lock`
mouse_action | `Down`—マウス・ボタンを押し続ける `Up`—マウス・ボタンを離す `Click`—マウス・ボタンを押して離す `Click2`—マウス・ボタンをダブルクリックする `Drag`—マウス・ボタンを押しながらドラッグする
context | 割り当てを有効にするにはポインタがどこにあればいいかを示します。必要に応じて、複数の内容は、“`|`” で区切ります。 `root`—ワークスペース・ウィンドウ `window`—クライアント・ウィンドウまたはウィンドウ枠 `frame—`内容を除くウィンドウ枠 `icon—`アイコン `title—`タイトル・バー `app—`クライアントのウィンドウ（枠を除く）
function | ウィンドウ・マネージャ関数のひとつ。有効な関数のリストについては、 `dtwmrc(4)` のマニュアル・ページを参照してください。
argument | 任意のウィンドウ・マネージャ関数の必須引き数。詳細については、`dtwmrc(4)` のマニュアル・ページを参照してください。

たとえば、次の行を入力すると、ポインタが（クライアントのウィンドウ内ではなく）ワークスペース・ウィンドウにあるときにマウス・ボタン３を押すと `DtRootMenu` に記述されたメニューが表示されます。

    <Btn3Down>     root    f.menu    DtRootMenu

ボタン割り当て構文の完全な情報については、`dtwmrc(4)` のマニュアル・ページを参照してください。

### ボタン割り当てを追加するには

1. 編集するため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

   これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. ボタン割り当てを `DtButtonBindings` 定義に追加します。

   クリックおよび押す操作について同じボタンを別の関数に割り当てないでください。また、２つ以上の関数を同じボタンおよび内容に割り当てないでください。

3. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

### 新規ボタン割り当てセットを作成するには

1. 編集するため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

   これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. 新規ボタン割り当てセットを作成します。 SAG.WMCnf.mkr.13 を参照してください。

3. `
   buttonBindings` リソースに新しい名前を設定します。

       Dtwm*buttonBindings: ButtonBindingsSetName

4. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

既存のボタン割り当てを新規のボタン割り当てに置き換えます。保持したいボタン割り当てがあれば、`DtButtonBindings` からコピーします。

## キー割り当てのカスタマイズ

キー割り当て とも呼ばれる キーボード割り当て は、キーの組み合わせとワークスペース・マネージャ関数とを関連付けます。キー割り当ては、すべてのワークスペースに適用されます。

キーボード割り当てとして共通キーの組み合わせを使用するときは注意してください。たとえば、[Shift]キーと[A]キーを押すと通常は現在のウィンドウに文字[A]が表示されます。（[Shift]+[A]キー）を関数に割り当てた場合は、通常の動作をしません。

### デスクトップのデフォルト・キー割り当て

デスクトップのデフォルト・キー割り当ては、`DtKeyBindings` というキー割り当てセットのワークスペース・マネージャ構成ファイルに定義されています。

    Keys DtKeyBindings
    {
     …
    }

### キー割り当て構文

キー割り当ての構文は次のとおりです。

    Keys KeyBindingSetName
    {
        [Modifiers]<Key>key_name   context   function [argument]
        [Modifiers]<Key>key_name   context   function [argument]
       …
    }

where:

Modifiers | `Ctrl`、`Shift`、`Alt`、および `Lock`。複数の修飾子を指定できますが、それぞれをスペースで区切ります。
key_name | 関数をマップするキー。文字または数字のキーの場合、key_name 名は通常キーの上に刻印されます。たとえば、“a” というキーは “a”、“2” というキーは “2” と名付けられます。同様に、“Tab” キーは “Tab”、The “F3” キーは “F3” です。

他のキーについては、名前が省略されずに書かれます。たとえば、“+” キーは `plus` と表示されます。システム依存ディレクトリにある `keysymdef.h` ファイルには、キー名に関する追加情報があります。

context | このアクションを有効にするためのキーボード・フォーカスを必ずもつ要素。割り当てを２つ以上の内容に適用すると、内容を連結することができます。複数の内容は、“`|`” 文字で区切ります。 `root—`ワークスペース背景 `window—`クライアント・ウィンドウ `icon—`アイコン
function | ウィンドウ・マネージャ関数。有効な関数のリストについては、`dtwmrc(4)` のマニュアル・ページを参照してください。
argument | 任意のウィンドウ・マネージャ関数の必須引き数。詳細については、`dtwmrc(4)` のマニュアル・ページを参照してください。.

たとえば、次のようなキー割り当てを行うと、[Alt]+[F6]キーを押すことにより、アプリケーションの一時ウィンドウへキーボード・フォーカスを切り替えることができます。

    Alt<Key>F6    window    f.next_key    transient

キー割り当て構文の完全情報については、`dtwmrc(4)` のマニュアル・ページを参照してください。

### キー割り当てセットをカスタマイズするには

1. 編集のため、適切なファイルを開きます。

   - 個人用: HomeDirectory`/.dt/dtwmrc`

   - システム共通: `/etc/dt/config/`language`/sys.dtwmrc`

     これらのファイル作成の詳細については、 SAG.WMCnf.mkr.2 を参照してください。

2. 一意の KeyBindingSetName で新規キー割り当てセットを作成します。デスクトップのデフォルト・キー割り当てセット `DtKeyBindings` をガイドとして使用します。

3. `
   keyBindings` リソースに新規セット名を設定します。

       Dtwm*keyBindings: KeyBindingSetName

4. [ワークスペース]メニューから[ワークスペースマネージャの再起動]を選択します。

既存のキー割り当ては新規のキー割り当てに置き換えられます。保持したいキー割り当てがあれば、`DtKeyBindings` から新規セットにコピーします。

## デフォルト動作とカスタマイズ動作との切り替え

Motif デフォルト動作と共通デスクトップ環境 (CDE) のデスクトップ・ウィンドウ動作を切り替えるには、次のようにします。

1. [Alt]+[Shift]+[Ctrl]+[!] を押します。

2. ダイアログ・ボックスの[了解]をクリックします。

デフォルト動作に切り替えると、フロントパネル、任意のカスタマイズ・キー、ボタン割り当てが解除されます。