リモートデスクトップの接続でターミナルサーバクライアントではちょうどいい画面サイズがないとき

Ubuntuではターミナルサーバクライアントのアプレット (コマンド名ではtsclient)から簡単にリモートデスクトップの接続ができますが、接続する画面サイズの選択肢に自分の使いたいちょうどいいものがなかったりします。私は1680x1050のモニタを2台使っているので、リモートデスクトップで1680x1050で接続できるとちょうどいいのです。

ターミナルサーバクライアントの画面サイズの選択肢がどこかファイルに書いてないか探したのですが、どうやらこれはtsclientの実行ファイルの中でハードコーディングされているようです。選択した設定はrdpファイルに保存しておけますが、その保存されたファイルの中の画面サイズの部分をテキストエデュタで変更すると、起動するときチェックされて用意されている選択肢に合致していないと標準の画面サイズで接続されてしまいます。 tsclient のソースコードを持ってきて書き直して再ビルドすればいけそうですが、ちょっとそこまでしなくてもという感じです。

ふと気がつくと、リモートデスクトップの実際の接続を行っているのはrdesktopという別のプログラムで、実はtsclientはrdesktopのフロントエンドにすぎないのです。ならばrdesktopを直接使えばいいのです。

man rdesktop でこのコマンドのコマンドラインオプションがわかります。英語ですが。

でももっと簡単な方法は、tsclientからrdesktopがどんなコマンドラインオプションが指定されているかを調べてそれを真似すればよいのです。
それはまずtsclientを使ってwindowsマシンにリモートデスクトップ接続をします。(フル画面以外で)
ターミナルを開いて以下のコマンドを打ち込みます。

 $ ps -fe |grep rdesktop > winxp

これでrdesktopが動いているときのコマンドラインオプションはwinxpというファイルをみればわかります。

koba@ubuntu:~$ cat winxp
koba      8203  4119  0 00:20 ?        00:00:00 rdesktop -T'192.168.121.13 - ターミナルサーバクライアント' -ukoba -pXXXXXXXXX -g1400x1050 -a16 -rsound:off -rclipboard:PRIMARYCLIPBOARD -D -k en-us -5 192.168.121.13
koba      8234  4141  0 00:26 pts/0    00:00:00 grep rdesktop
koba@ubuntu:~$ 

このファイルを編集して余分なところをカットします。一行目はrdesktopという文字列より前の部分を削除。2行目は削除します。
また、-pXXXXXX というオプションはパスワードの指定が伏せ字になったものなので、本当のパスワードに書き換えるか、または-pのオプションを削除します。

次にこのファイルに実行権をつけて、コマンドして実行してみます。

 $ chmod +x winxp
 $ winxp

これでうまく接続できたら、今度は -g オプションのところの画面サイズを自分の好きなサイズに変更します。表示する位置も指定することができます。私は1680x1050の大きさで画面の左上にぴったりつけたいので、 -g1680x1050+0+0 としています。


最終的に私が使っているのは以下のとおり。

$ cat ~/bin/winxp
rdesktop -T'192.168.121.13 - ターミナルサーバクライアント' -ukoba -dWORKGROUP -nkoba-linux -g1680x1050+0+0 -a16 -rsound:off -rclipboard:PRIMARYCLIPBOARD -K -D -k en-us -5 192.168.121.13 > /tmp/rdesktop.log 2>&1 &
$