Gustav: The graphical GTK client for DNET

Tristan B. Kildaire

2021/01/25

Introduction

I spent the end of the year (the last few months) working on my GTK DNET client and I thought I shoould share a progress update on how that has gone so far. I should note that this is more of a backlog blog in the sense that I haven't worked on the client since a few months ago. So this won't be a really deep blog post but it will just be a collection of screenshots and descriptions of them just to show the progress I have been making with the client.


This is the first basic version of the client that I got working. As you can see it would list all channels (not actually the ones you joined) in the left-hand side sidebar, the right
hand side would be the users in the currently selected channel. Clicking on a channel would join you to the channel. Another thing to mention is the notebook
(the tabs at the top) - the client has support for multiple sessions active at the same time.
   



Here I am showing more messages coming through. As you can see it was showing messages not yet decoded but rather represented as
the bytes received. Some, like as with the above screenshot, were being decoded by their message types into the leaves and joins. I believe
that at this stage I was logging all messages to one scrollable text pane (to be correct a text pan in a GTK Box which is scrollable) so it was
not specific to the channel but rather ALL channels were being showed, I would fix this in a later commit. At this stage I just wanted a basic
UI working with all the needed messages and notifications coming through. The messages (text messages) are those ones right at the bottom.




This is where stuff really started picking up speed in terms of not only having a working client but rather one in which the channel logs were separated.
Here the title of the channel was added to the channel's view, as you can see with the selected channel alan. Also clicking a channel now would join you to it
and the sidebar was used for that. What the notebook switcher (the tabs at the top) represented was the channels you have already joined and you could
then easily switch between them like that. I also added a "Send" button to allow you to type into a textbox (which you cannot see here) and then hit send
to send to the channel. So it was effectively up to speed with what the terminal client, skippy, could do feature wise now.

I don't thing so maybe completely, the message decoding for received messages wasn't there yet - I believe the message you see there was me appending
it to the message log after sending a test message.




The client then got A LOT of stuff added to it (as you can now see in the toolbar). There is now a toolbar which allows you
to select what presence status you want set, Available, Away or Busy (from left to right).




I also add a little GTK about box expected of most GTK applications





Of course the credits screen also shows




I then wanted to have a screen that listed channels that when you clicked on them you
would join the channel (as the sidebar now was becoming not a total channels list but
one that listed the channels YOU have explicitly joined.




Here is where the presence messages can be seen with the black tooltip
that pops up to the left of your screen when you hover over a user in the user's
list sidebar




Messages go to and fro, entitled with the username of the message's author in bold





It was ACTUALLY only here where the channels sidebar to the left became a selector and list of channels
you joined and not a list of channels you can click on to join, however everything culminated to this and
it is a good prototype graphical client for DNET. The image shown is what multiple media would look
like but this is not yet implemented - that read an image from disk and rendered it. You can also see that
there is now a join button for each channel in the channel list and also each channel now shows a member
count that is fetched when the window is opened.


That is all for now but I will be posting more updates soon when I get back to work on this project as some stuff has changed, more addition-wise than anything you've seen here - that's stayed the same.