2008年2月28日

[vine-users:078122] Re: vine4.xにて、オリジナルログイン画面の作成について

こんばんは、M.H といいます。

すでに解決されているかも知れませんが、こういうのを考えるのが単純に好きなので、
ついでに投稿しておきます^^;

> ・この画面に、お知らせを表示したいのですが、実現できるでしょうか?
>
> お知らせというのは、テキストレベルで、情報は通信可能なサーバに

> 格納できれば理想と考えております。
>
>
>
>      ようこそ
>    -------------------
> | (ID入力ボックス)|
>    -------------------
>
>
> --------------------------------
> | |
> | |
> | |  <------> 情報はサーバに格納
> | |     (サーバのテキストを表示)
> | |
> --------------------------------
> ※このエリアにテキストベースのお知らせ

なんらかのサーバとやりとりしてテキストファイルを作成する処理は別に考えるとして、
そのテキストファイルを表示する処理の部分だけなんですけど、
昔、XDMのログイン画面に「Reboot」「Poweroff」のボタンを表示したやり方を
応用すれば出来るような気がします。

1. /etc/X11/xdm/dm_info(任意のファイル名)を以下の内容で作成します。
-- ここから
#!/bin/sh
# display information window
. /etc/sysconfig/i18n
export LANG
INFOFILE="/var/gdm/info.txt"
FONT="-misc-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0"
/usr/bin/wish <<EOF &
if {![catch {open "$INFOFILE" r} infofile]} {
set infotext [ read \$infofile ]
close \$infofile
} else {
exit
}
wm geometry . +340-0
canvas .can -background white -width 600 -height 200
pack .can
.can create rectangle 10 10 590 190 -outline black -width 2
.can create text 20 20 -fill black -font $FONT -text \$infotext -width 560 -anchor nw -justify left
EOF
echo $! > /var/run/dm_info.pid
-- ここまで

2. /etc/X11/xdm/Xsetup_0 に以下の記述を追加します。
-- ここから
if [ -x /etc/X11/xdm/dm_info ]; then
/etc/X11/xdm/dm_info &
fi
-- ここまで

3. /etc/X11/xdm/dm_info_kill(任意のファイル名)を以下の内容で作成します。
-- ここから
#!/bin/sh
# kill information window
if [ -r /var/run/dm_info.pid ]; then
kill `cat /var/run/dm_info.pid`
rm -f /var/run/dm_info.pid
fi
-- ここまで

4. /etc/X11/xdm/GiveConsole と /etc/X11/gdm/PreSession/Default に以下の記述を追加します。
-- ここから
if [ -x /etc/X11/xdm/dm_info_kill ]; then
/etc/X11/xdm/dm_info_kill &
fi
-- ここまで

5. chmod 755 /etc/X11/xdm/dm_info* して、ログイン、ログアウトして確認。

1.はテキストファイルを読んで、その内容をウィンドウに表示するスクリプトで、
bash と tcl/tk の混合。
この例では /var/gdm/info.txt の内容を読んで、600x200ピクセルの大きさの白いウィンドウに、
黒い枠線付き、黒い文字で表示しています。位置は 1280x1024の画面下側中央。
このフォント、ウィンドウのサイズだと、35文字 x 10行分の日本語が枠内に表示可能です。

2.はそのスクリプトの実行部分で、GDMだと、/etc/X11/gdm/Init/:0 として実行されます。

3.はセッションの開始時に、表示ウィンドウがそのまま残ってしまうと困るので、
1.のスクリプトの最後で作成したプロセスIDファイルを参照して
そのプロセスをkillするスクリプト。

4.はそのスクリプトの実行部分ですが、XDMを使わなければ、
/etc/X11/xdm/GiveConsole への記述は必要ありません。
それと、/etc/X11/xdm/Xsetup_0 や /etc/X11/gdm/PreSession/Default は、
xinitrc や gdmパッケージが更新されると、
たぶん置き換わってしまうファイルなのでご注意を。

以上、こんなやり方もアリかも?程度のご参考までに。

Thanks!
-M.H

投稿者 xml-rpc : 2008年2月28日 00:03
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/70432
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。