コマンド・ラインからは、
sgwmで起動します。
sgwmは、Xのウィンドウ等の準備ができた後に、.sgwmrcを/bin/shで実行しま す。ウィンドウ・マネージャの起動後に自動的に実行させたいコマンドは、こ こから起動するように記述して下さい。.sgwmrcは、以下の順序でディレクト リを探し、最初に発見したものを実行します。どこにも存在しない場合は、実 行しません。
(注意).sgwmrcで、すみやかに終了しないコマンドをフォアグランドで起動し ては、いけません。ウィンドウ・マネージャが動作しなくなります。そのよう なコマンドは、バックグランドで実行するようにして下さい。
sgwmを起動する時に指定できるオプションの説明をします。
アプレットなど外部から、ウィンドウマネージャの機能を呼び出す場合は、 XのClientMessageを利用します。ウィンドウマネージャに要求する場合は、以下 のClientMessageをRootウィンドウにSubstructureNotifyMaskを指定して SendEventで送ります。
windowパラメータは、すべて、送出するアプリケーションのウィンドウとしま す。 ウィンドウを持たないアプリケーションの場合は、Rootウィンドウでも構いま せん。
以下では、ワークスペースは、将来のことを考えて任意の数に対応可能なよう に定めています。現状では、ワークスペース数は、PDA向けで1、ハンドヘルドPC むけで2です。ワークスペース番号は、0から(ワークスペース数-1)までの整 数または、-1です。-1の場合は、特別な意味をもち、特に述べない限り、 は、アクティブ・ワークスペースを示します。ハンドヘルドPC向けでは、番号0の ワークスペースはメイン領域、番号1のワークスペースはサブ領域を示します。
formatパラメータは、すべて32です。
message_type | data.l[0] | data.l[1] | data.l[2] | 説明 |
---|---|---|---|---|
_AXE_SGWS_SWAP | ワークスペース番号1 | ワークスペース番号2 | l[0]と l[1]で指定されるワークスペースのタスクを交換します。 | |
_AXE_SGWS_ENABLE | ワークスペース番号 | 有効性 | 指定のワークスペースの 有効性を変更します。有効性は、0、1、-1のいずれかです。0は無効、1 は有効を示します。-1の場合は、有効ならば無効に、無効ならば有効に変更することを示 します。無効になると、ワークスペースは表示されなくなり、利用不可となり ます。 | |
_AXE_SGWS_ACTIVATE | ワークスペース番号 | 指定のワークスペースを アクティブにします。ワークスペース番号に-1を指定した場合、現状のアクティ ブ・ワークスペースの次のワークスペースをアクティブにします。 | ||
_AXE_SGWS_RESIZE | ワークスペース番号 | モード | サイズ | 指定の ワークスペースの表示サイズを指定のものにします。モードは、0の時は、指定サイ ズが絶対値と解釈し、それ以外の時は、指定サイズを増分であると解釈します。 指定したワークスペースの表示サイズが変更されることによって、他のワーク スペースの表示サイズも変更される可能性があります。 |
_AXE_SGWS_CALLDT | ワークスペース番号 | 指定のワークスペースに デスクトップを表示します。既に指定ワークスペースに表示している場合は、非 表示にします。 | ||
_AXE_SGWS_MAPWS | ワークスペース番号 | ウィンドウID | 指定のワーク スペースに指定のウィンドウIDで示されるタスクを表示します。 | |
_AXE_SGWS_MAP | ウィンドウID | 指定のウィンドウIDで示されるタスクを 表示します。表示ワークスペースは、ウィンドウマネージャにまかされます。 | ||
_AXE_SGWS_ROLL_UP | ワークスペース番号 | 指定のワークスペースに表 示されているタスクの表示をやめ、非表示タスク・リストの再後尾に置きます。後 には、リストの先頭にあったタスクが表示されます。 | ||
_AXE_SGWS_ROLL_DOWN | ワークスペース番号 | 指定のワークスペースに表 示されているタスクの表示をやめ、非表示タスク・リストの先頭に置きます。後 には、以前にリストの先頭にあったタスクが表示されます。 | ||
_AXE_SGWS_MOVE_NEXT | ワークスペース番号 | 指定のワークスペースに表 示されているタスクを次のワークスペースに表示します。元のワークスペースに は、非表示タスク・リストの先頭が表示されます。 | ||
_AXE_SGWS_MOVE_PREV | ワークスペース番号 | 指定のワークスペースに表 示されているタスクを前のワークスペースに表示します。元のワークスペースに は、非表示タスク・リストの先頭が表示されます。 |
式神ウィンドウ・マネージャに上で述べたメッセージを送るためのコマンドを 用意しています。
起動方法は、次の通りです。sgsendcmsg message_type arg1 arg2 ...
arg1やarg2は、data.l[0]およびdata.l[1]の値に対応しています。
例えば、次のコマンドはメイン領域とサブ領域のタスクを交換します。
sgsendcmsg _AXE_SGWS_SWAP 0 1
ウィンドウマネージャの幾つかの機能はキーボードにバインディングされ ています。バインディングは、GTKのバインディング機能を利用しています。 ただし、ウィンドウマネージャでは、利用するキーを占有(Grab)する必要があ るために、少々工夫が必要になっています。
キー・バインディングをユーザが指定するためには、gtkrcに以下のように記 述します。(記述方法の詳細はGTKの文書を参照して下さい)
binding "SGWMGrabbedBinding" { bind "F4"{ "swap_task" (0, 1) } } class "SGWMWidget" binding "SGWMGrabbedBinding"
バインディング・セット名は、本来ユーザが任意に指定できるものですが、 式神ウィンドウマネージャでは、SGWMGrabbedBindingを指定しなければなりま せん。このバインディング・セットで指定したキーはウィンドウ・マネージャに よって占有されるので注意が必要です。さらにこのバインディングをウィン ドウ・マネージャで有効にするには、上記にあるようにクラスSGWMWidgetにバ インディグする必要があります。
キーボード・バインディングは、全く指定がなければデフォルトが存在しますが、 指定する場合は、利用するすべてのキーバインディングをSGWMGrabbedBinding に記述しなければなりません。上記の例では、swap_wsの機能のみしか利用でき なくなります。
バインディングに記述できるシグナルは、先に述べたClientMessageから呼び 出せるものに対応し、以下通りです。
シグナル名 | 対応message_type | デフォルト・キー | デフォルト引数 | 説明 |
---|---|---|---|---|
swap_task | _AXE_SGWS_SWAP | Alt+F3 | (0, 1) | --メイン領域とサブ領域の交換 |
enabale_workspace | _AXE_SGWS_ENABLE | Alt+Del | (1, -1) | --サブ領域の生成、削除 |
activate_workspace | _AXE_SGWS_ACTIVATE | Alt+F4 | (-1) | --アクティブ領域の変更 |
resize_workspace | _AXE_SGWS_RESIZE | Alt+PgUp/Alt+PgDn | (0,1,10)/(0,1,-10) | --メイン領域の拡大/縮小 |
call_desktop | _AXE_SGWS_CALLDT | Alt+F5 | デスクトップの呼びだし | |
map_task_to_workspace | _AXE_SGWS_MAPWS | NoBinding | ||
map_task | _AXE_SGWS_MAP | NoBinding | ||
roll_up_task | _AXE_SGWS_ROLL_UP | Alt+↑ | (-1) | --アクティブ領域のタスク切替え(UP) |
roll_down_task | _AXE_SGWS_ROLL_DOWN | Alt+↓ | (-1) | --アクティブ領域のタスク切替え(DOWN) |
move_next_task | _AXE_SGWS_MOVE_NEXT | Alt+→ | (-1) | --アクティブ領域のタスクを他方の領域に移動 |
move_prev_task | _AXE_SGWS_MOVE_PREV | Alt+← | (-1) | --アクティブ領域のタスクを他方の領域に移動 |