You are here

Styled Chats

Using a HTML/CSS rendering machine for user interfaces seem popular these days as it gives extended ways for customization using style sheets. And many people are used to hack CSS files from the web which extends the group of possible contributors. Several clients use it for the chat window, Adium on Mac OS X, Gtalk on Windows, Kopete on linux.

To my knowledge, these clients rely on platform specific rendering APIs, and doing this on an x-platform client like Coccinella would be very difficult and create a very large maintenance burden. Since Coccinella is using Tk for its user interface, which is an extremely portable toolkit and has a very high level API, this would require a HTML/CSS rendering widget written entirely for Tk. Fortunately, such a project is running and is called Tkhtml3 (Tcl/Tk projects usually take very straight names). People who know this business understand that writing such a widget from scratch is a giant undertaking, and not many toolkits have succeeded.

Tkhtml3 is still a fast moving target and many things aren't working as they should, but it looks very promising. I couldn't resist adding support for styled chats in Coccinella, just for the fun of it. Coccinella chat window using message style
The only docs I had was a page from Kopete which I don't know how well it reflects any kind of standard, if there is any. It is clear that the chat style theme directory structure resembles a Mac OS X bundle, and it is not far fetched that it comes from Adium. As I've already said, it is an experiment which looks promising, and not all themes render correctly. But it is x-platform! I built it on Mac OS X (10.2), and on MinGW on Windows just with configure/make. Straight out of the box! Antonio had it running on Linux without any instructions.

Comments

Can you add a follow-up blog post with instructions of how to use themes and in which you ask users to test compatibility of available Adium, Kopete, and Google Talk themes? I guess this feedback can be useful to find all bugs at a faster speed....leverage the availability of daily builds! ;-)

So far it is far too experimental for public use, even for testers. I will make more systematic tests later on, but some early attempts reveal several problems. It is better I do the very early testing and perhaps even make contributions to tkhtml code.

Hey, could you post the name of the theme shown in the picture? I like it and i wonder if there's a Version of it for Adium... Thanks.

I just picked a random theme from a link on the bug tracker: https://bugs.launchpad.net/coccinella/+bug/146671
I think it was a Gtalk theme.

I love this new feature, will make Coccinella a greater piece of software. Next version will be higher user friendly: avatars, drag and drop, spellchecking and finally chat themes. Maybe when this become a stable implementation to include XHTML-IM will be a easy task for closing the usability circle.

Today I've updated CVS and get this error in Preferences (you're still working on it, but FYI):

invalid command name "::ChatTheme::AllThemes"
while executing
"::ChatTheme::AllThemes"
(procedure "::Chat::BuildPrefsPage" line 57)
invoked from within
"::Chat::BuildPrefsPage $wpage"
(procedure "::Chat::BuildPrefsHook" line 6)
invoked from within
"::Chat::BuildPrefsHook .prefs.frall.f.f.t.frtree.t .prefs.frall.f.f.nb"
("eval" body line 1)
invoked from within
"eval $func $args"
invalid command name "::ChatTheme::AllThemes"
while executing
"::ChatTheme::AllThemes"
(procedure "::Chat::BuildPrefsPage" line 57)
invoked from within
"::Chat::BuildPrefsPage $wpage"
(procedure "::Chat::BuildPrefsHook" line 6)
invoked from within
"::Chat::BuildPrefsHook .prefs.frall.f.f.t.frtree.t .prefs.frall.f.f.nb"
("eval" body line 1)
invoked from within
"eval $func $args"
---
<spam removed>

I don't understand the logic of this. I have in Chat.tcL:

# Allow themed chats.
set ::config(chat,try-themed) 0

# Postpone this to init.
variable haveTheme 0
if {$::config(chat,try-themed) && ![catch {package require ChatTheme}]} {
set haveTheme 1
}
...
if {$haveTheme} {
ttk::separator $wc.sep4 -orient horizontal

::ChatTheme::Reload
set menuDef [lapply list [::ChatTheme::AllThemes]]

Have you a config file with
set config(chat,try-themed) 1
It doesn't make any difference anyway.