Hi, I'm currently coding an Irssi gui using QT4, I've spent a bunch of days in the previous three months to take the time to learn how irssi works, do a first attempt which failed due to an implementation which didn't pay attention to thread sync ( how dumb I was :D ), then a second one which is pretty successfully usable for now.
I knew from the beginning that theses two implementations would be messy and won't have any wonderful gui design. It was just in order to get used to irssi development, and experiment things. But now it's time to sit down and think about features I should include, where to put external interfaces for plugins, how I should design classes according to these choices, and so on. The gui is built on top on the common-ui layer, like the old abandoned Gtk gui, and MacIrssi, meaning perl support is still here with his scripts ( sure, the ones requiring UI.pm like nicklist.pl doesn't work ) What is currently working in the existing code is not really important to list, since I plan do reorganize / rewrite everything, but rapidly : chatting like in irssi, including queries, multiple servers ... nicklist, completion, colors and themes, So here come the main points that I would like to discuss about : 1) I've chose to use a QDockWidget to show windows, see here : http://8bitpeoples.free.fr/stuff/xirssi.png . It brings some nice features : tiled windows ( like you can find in tiled wm like ratpoison, meaning all the available space is used ), detachable, stackable using tabs. The last two aren't shown on the screenshot. So it mixes x-chat tabs and Mirc MDI advantages. 2) What part of the applications would be nice to have as plugins ? I thought having windows rendering plugins would be nice, for example to have a simple dialog to chat with Nickserv instead of /msg'ing it. 3) Autotools, build process I'm not an autotools expert, I barely included in the original configure.am some glue to compile my QT code which lives in src/fe-qt/ , but this isn't really clean. So, If you got hints on how doing this in a clean way, tell me :) 4) GUI For this one, it's a tedious task, users have different tastes, and I really want the gui the be configurable as irssi is. This mean I need to collect some range of tastes and see how to create classes to allow configuration to reflect each of them. Next, I would like to keep it keyboard driven, using the same keybinding irssi has. A little note, on the screenshot seen at 1), the box where you enter text is present on every windows, I plan to replace that with just one one at the bottom. 5) Any ideas ? Feel free to suggest any idea. To conclude, and see what is currently done : The SVN repository : svn://svn.litchis.fr/jh/xirssi The Trac ( almost unused atm ) : https://dev.litchis.fr/jh/ ( remember, the sources are in src/fe-qt, fe-gui is the first attempt ) You might discover bugs using the existing implementation, but do not spend time on reporting it / investigating it, a complete rewrite is incoming :) Well I'm waiting for your comments, remarks, ... =) PS : To assure that I would not stop developing in two month by being to lazy, I've locked myself by incorporating this project as a part of my studies :) -- Jean-Hadrien Chabran
