I tried to integrate all that into a single window. (Currently the text still goes to the terminal as well, but you can always minimize that.) In the Xaw version there was no possibility to do line-by-line colorization of text in XBoard dialogs, so the latter could not replace the terminal without loss of functionality. In the GTK version such colorization is possible, though.
So I put an ICS-output text memo to display the colorized text together with a single-line text entry to type commands for the ICS in a single window, similar to WinBoard's ICS Interaction window:

I combined this with the old XBoard Chat window, though: at the top of the window there are 5 buttons, which correspond to 5 chats that you can conduct in parallel. Initially they are not assigned. But when you press them, the output memo is split into two. The upper pane is the shrunk version of the ICS output memo. The lower pane is the output of the selected chat.
Together with the lower pane, a text entry appears, where you can type the player name, channel number or message type (shouts, whispers) to which you want to dedicate this chat. All messages belonging to it will then be diverted to the lower output pane. As long as this pane is shown, the input field will be used for the chat, and what you type there will go to the chat partner. XBoard will automatically prefix it with the required 'tell xxx' or 'shout' commands. To give commands to the ICS you would have to hide the the lower output pane, to which end a 'Hide' button appeared with it.

You can use the buttons at the top of the window to select which chat will be displayed. Activity in non-displayed chats will make the corresponding button turn orange.
The output panes have a context menu: right-clicking on them makes the ICS Text Menu dialog appear. Like with WinBoard, this text menu can now use the word you clicked in the output pane as part of its commands. So you can use it to challenge a specific opponent, or start observing his game. XBoard already had this menu, which could be kept open in an independent window, but you could only use texts in the commands if you first selected them carefully by hand in the terminal. Now you just have to click somewhere, and it will automatically take the corresponding word. If the Text Menu dialog popped up because of your click, it will minimize after you selected a command from it.
The Text Menu can be configured by the user; with the -icsMenu option in the settings file you can create buttons in there of any name, which could send any command you like to the ICS. If the word $name appears in the command, it will be replaced by the clicked word. If the word $input appears in the command, the latter will not be sent immediately to the ICS, but placed in the input field of the ICS Console window for you to finish. (E.g. "tell $name $input") would make "tell playername " appear in the input field when you right-clicked on "playername". When you configured a command "$chat" it will be recognized as a special case, and will assign one of the five chats to the name/number/word you clicked before selecting that command.

This XBoard version is highly experimental; no doubt the Xaw build will be broken, and it can only work for the GTK build. Nevertheless, for the adventurous who would like to try it, the source can be obtained from my repository at:
http://hgm.nubati.net/cgi-bin/gitweb.cgi
Feedback is welcome.