CDE (Common Desktop Environment)は、 The Open GroupによるUNIXのデスクトップ環境です。 商用UNIXのデフォルトのデスクトップ環境はみんなこれです。 UNIXベンダがよってたかって作ったわりには、ゴミですね。 普通は、.dtprofileにSESSIONTYPE=xdmと書いて、 こんなゴミは捨ててしまいます。
とはいえ、世の中には、いろんな理由でCDEを使う人がいるものです。 実は最近、僕も使うようになりました。 さすがに、そのままでは使う気になれないので、カスタマイズして使ってます。
カスタマイズにはリソースの指定が必要ですが、 CDEのセッションマネージャ(dtsession)がリソース周りで余計なことをするので、 最初にそれを何とかする必要があります。 まず、勝手に.Xdefaultsをxrdbするのですが、 タイミングが遅すぎるので、.Xresourcesにして.dtprofileで先に読んでしまいます。 そのときに、勝手に設定されている*Font:とかも削ります。
xrdb -query | grep -v '^\*Font[:LS]' | cat - ${HOME}/.Xresources | xrdb -load
さらに、.Xresourcesかアプリケーションリソースファイルに Dtsession*writeXrdbColors: Falseを入れておくと、 dtsessionが*Foreground:と*Background:を上書きする悪癖が止まります。
dtsessionの悪さを止めてしまえば、あとはDtwmクラスのリソースや.dt/dtwmrcで、 なーんぼでもカスタマイズできます。 dtwm(1)およびdtwmrc(4)を参照されたし。 僕はDtwm*useFrontPanel: Falseとしてフロントパネルを消しています。 どこがCDEなんだ?と馬鹿にされます。
dtwmrcに以下の記述を入れると、Alt+Control+hljk でキーボードフォーカスの切り替えと、raise/lower ができます。 いまどきの Window Manager なら珍しくもないだろうけど、 これは dtwm の前身の mwm のころ、つまり10数年前からできたのさ。
Keys DtKeyBindings { ... Alt Ctrl<Key>k root|window f.raise Alt Ctrl<Key>j root|window f.lower Alt Ctrl<Key>l root|window f.next_key window Alt Ctrl<Key>h root|window f.prev_key window }
ほとんどの場合、起動するコマンドをどこかに書いておく必要はありません。 アプリケーションを起動したままログアウトすれば、 次にログインしたときにdtsessionが同じアプリケーションをあげてくれます。
ただし、セッションマネージャに対応していないアプリケーションはあがってこないので、 .dt/session/sessionetcに起動するコマンドを書きます。 セッションマネージャに対応しているアプリケーションをここに書くと、 ログインするたびにアプリケーションが増殖します。 このファイルは“実行”されるので実行権限が必要です。 また、コマンドをバックグラウンドで実行して、終了しなければなりません。
コマンドの実行に必要な環境変数の設定を .loginとか.profileとか.zsh_profileとか.bash_profileに書いている人は、 .dtprofileにDTSOURCEPROFILE=trueと書いておきましょう。
マニュアルには書いてありませんが、少なくとも Solaris 8以降の/usr/dt/bin/Xsessionは、bashもzshもtschのことも知っていて、 対応する設定ファイルを読んだログインシェルが、 dtsessionを起動するようにはからってくれます。
.dtprofile に以下の一行を入れます。デフォルトでは dtstart_session[0] には dtsession が入っているのですが、これをssh-agent の子プロセスにします。
dtstart_session[0]="ssh-agent ${dtstart_session[0]}"
そうしておいて先のsessionetcにssh-add < /dev/null と書いておけば、ログイン時に${SSH_ASKPASS}がパスフレーズを聞いてくるでしょう。
Solarisにはせっかくいろんな言語のフォントが付いているのに、 ロケールがjaだと使えません。 .dprofileに以下の記述を入れて、 Xのフォントパスの設定をja_JP.UTF-8に合わせてやると、 大体必要なフォントがそろうはずです。
fontpath="" fs="fp+ " for f in `cat /usr/openwin/lib/locale/ja_JP.UTF-8/OWfontpath` do fontpath="$fontpath$fs$f" fs="," done xset $fontpath
ま、これを読めばだいたいわかるんじゃないでしょうか。