free, distributed and user-friendly IRC client with Twitter, and XMPP/Jabber support for Linux, Windows and macOS based on GNOME / GTK+

And here we go again! We're proud to announce the new version of Smuxi, release 1.0 "Finally". During the development, 20 bug reports and 10 feature requests in 285 commits were worked on.

Finally 1.0

Smuxi is celebrating its 10th anniversary! 10 years ago, Mirco Bauer made the first commit to the Smuxi source code repository and is still very committed to it. He started the Gnosmirc project in 2005 when the only way a 24/7 "always-on" experience with IRC meant you had to use a console based IRC client like bitchx, irssi or epic combined with screen and SSH. This looks very practical at first and is a powerful Unix-ish way of accomplishing that job, but it has the big downside that it doesn't integrate with a desktop environment like GNOME. A bit later the Gnosmirc project was renamed to Smuxi when the new code architecture allowed other frontend implementations besides the GNOME one. The ncurses/STFL based text frontend was later implemented and is considered stable and useful enough for day to day use, but still has some rough edges. WinForms and WPF frontends also exist but need more work to reach a usable state.

At this point Smuxi 1.0 contains all features that we could have imagined and even goes beyond with very advanced features like message patterns or language agnostic scripting.

Changes since Smuxi 0.11

Message Persistence

One of the biggest drawbacks of the IRC protocol ever was that messages can't be retrieved from the IRC server because the IRC server is simply relaying messages to the connected clients. So, if an IRC client is freshly started and connects it starts to receive new messages, but all message you had received before are no longer available. This always made IRC in a way "volatile" unlike other communication systems like email where messages are relayed and stored on the client side. One common approach for IRC clients is to store log files in a text file. This is a simple feature and gives the user the possibility to read older conversations. Smuxi also supports text file logging like other IRC clients but it has a big user experience drawback as you need to open the file from the disk outside of the IRC client.

In Smuxi 1.0 messages sent and received are now stored on the disk in a way they can automatically be retrieved/loaded when you restart Smuxi. It is like you have never closed Smuxi! This feature was already available in Smuxi for some time as a technical preview and it used the Db4o object database, but we were never happy about the performance neither with the stability so it always stayed an optional feature you need to enable. This year we tried a new message buffer backend using the famous SQLite database and it works much faster and stable as a rock. So finally we can enable this feature by default because it just works and enhanced your experience. We hope you enjoy it.

Documentation of how you can change Smuxi message buffer backend and behavior can be found here.

For instructions how to convert your existing db4o history to SQLite can be found in the "smuxi-message-buffer tool" section.

User Interface Enhancements

  • Synced message markers: the position of of the seen/unseen messages marker is pushed to the smuxi-server and remembered when the frontend reconnects. (Sebastian Poeplau)
  • Persistent message markers: the message marker position is also remembered across Smuxi(-server) restarts.
  • Message Counter: in addition to the highlight counter next to a chat new/unseen messages are also counted. This makes it easy to identify chats with much traffic.
  • Single application instance support. If you start Smuxi again from the menu it will bring the existing instance into the foreground. This makes the Ubuntu Messaging Menu much nicer.
  • The command/message entry is alignment with the messages. (Lex Berezhny)

Text Frontend Enhancements

  • The console background color can now be configured using: /config set STFL/Interface/TerminalBackgroundColor = #000000 (Ondřej Hošek)
  • The text color contrast if nicks with the background is now ensured (Ondřej Hošek) #1033
  • Messages containing images will not be skipped but their alternative text is shown instead (Ondřej Hošek) #1035

New smuxi-message-buffer tool

This is a new commandline tool that allows you to convert and export the message history of Smuxi message buffer files. This can be used to convert your existing Db4o history to SQLite like this for example:

for DB_DB4O in $HOME/.local/share/smuxi/buffers/*/*/*/*.db4o; do
    DB_SQLITE=${DB_DB4O/.db4o/.sqlite3}
    smuxi-message-buffer convert $DB_DB4O $DB_SQLITE
done

Smuxi shouldn't be running when using this tool.

Scripting Enhancements

New Hook Points

Smuxi 1.0 supports with the following new hook points:

  • engine/protocol-manager/on-presence-status-changed/ This hook point is raised when the presence status of a protocol manager changes. This happens for example when an IRC connection toggles the away state.
  • engine/session/on-event-message/ This hook point raises event messages that usually begin with "-!-". This can be useful to track state changes that are shown as a message without having a dedicated hook point for it.
  • engine/session/command-$cmd/ This hook point is raised on the engine side for commands, e.g. /some_command that isn't handled by the frontend or engine built-in commands. This is useful for commands that should be available for all frontends and isn't specific to the frontend environment.

New Plugins

The following new plugins are supported by Smuxi 1.0:

  • topic-diff: Shows the word differences of the topic after topic changes. (meebey)
  • away-nick: Automatically appends and removes $AWAY_SUFFIX to/from the nick name when you go away using the /away command or by disconnecting all frontends from the smuxi-server. (meebey)
  • system-info: Shows system info. Includes system kernel version, distro name, and CPU vendor information. (AK0)
  • now-playing: This plugin is not new but was rewritten in Python to get rid of the spaghetti code monster which was written in Bash. (jamesaxl)

IRC Enhancements

  • NICKSERV support Notices from Nick/ChanServ are no longer shown on all channels as they like to send greeting messages and other spam which is annoying to see on all channels. #868
  • Automatic rejoin of channels protected with a key works as expected again
  • Connecting to irc.gitter.im is now supported. Gitter's IRCd implementation has a bug in the IRC protocol which is now tolerated.

Twitter Enhancements

  • The /search command shows tweets as live stream
  • Added /delete, /favorite and /unfavorite commands

Behind the Scenes

  • Re-licensed smuxi-common from GPLv2 to MIT/X11

Contributors

Contributors to this release are the following people:

  • Mirco Bauer (199 commits)
  • Carlos Martín Nieto (15 commits)
  • Andrés G. Aragoneses (14 commits)
  • Piotr Drąg (12 commits)
  • Ondřej Hošek (11 commits)
  • Oliver Schneider (5 commits)
  • Calvin B (4 commits)
  • Victor Seva (3 commits)
  • Will Johansson (2 commits)
  • Sebastian Poeplau (2 commits)
  • Julian Taylor (2 commits)
  • James Axl (2 commits)
  • Daniel Mustieles (2 commits)
  • Christopher James Halse Rogers (2 commits)
  • Ş. Uzun (1 commit)
  • Lex Berezhny (1 commit)
  • Kalle Kaitala (1 commit)
  • Jordi Mas (1 commit)
  • Joe Hansen (1 commit)
  • Jimmie Elvenmark (1 commit)
  • Dimitris Spingos (1 commit)
  • Dean Lee (1 commit)
  • Clément Bourgeois (1 commit)
  • Carlos Hernandez (1 commit)

Thank you very much for your contributions to Smuxi!

Want this? Go here and grab it right now!

Posted Sun 09 Aug 2015 05:48:18 PM CEST

And here we go again! We're proud to announce the new version of Smuxi, release 0.11 "Distractions". During the development, 11 bug reports and 2 feature requests in 112 commits were worked on. Notable highlights in this release are:

User Interface Enhancements

  • The chat list can be shrunken. This is especially handy with XMPP/Jabber and long group chat identifiers.
  • The highlight counter is now a separate column. This enhances the vertical alignment with other highlights and guarantees to be visible even if the chat name was truncated.

Multi Identity Support

Smuxi cares for user feedback. Multi identity support was the most voted feature and thus it has been implemented! Now you can please your schizo^Wdesire to use different nicks, users and real names depending on the server. Simply edit the server in preferences and change the details.

Message Patterns

Everybody knows text can be boring because it is all just text. Nothing can sidetrack you except reading that bare text. Text often has recurring patterns from which something useful and interactive can be created. For example, someone writes:

Hey meebey, do you know RFC2812?

RFCs are a recurring pattern with a distinct number behind it and are real references to something in the internet (collection of protocol specifications).

So I would usually fire up a browser tab, copy/paste or type RFC2812 into my favorite search engine and click the first hit. Then I'd reply to the question afterwards. But with Smuxi's message patters, it turns RFC2812 into a link on which you can simply click to launch the relevant document.

Wow this is very cool, but isn't this already happening with http URLs and email addresses? Exactly! Why shouldn't more information be used to create useful things from it? Smuxi message patterns allow you to define text patterns that are transformed into clickable links. This can be used for RFCs, CVEs, bug report numbers (#XXX), git commit hashes and much more. Make good use of your creativity!

By default Smuxi comes with built-in message patterns for:

  • URLs
  • heuristic URLs (not starting with http:// etc)
  • email addresses
  • RFCs
  • CVEs
  • Debian Security Advisories (DSA)
  • Many popular bug trackers (GNU, GCC, kernel, Launchpad, freedesktop, GNOME, KDE, Xfce, Debian, Redhat, Novell, Xamarin, openSUSE, Mozilla, Samba, SourceForge, CPAN, boost, Claws and Smuxi)

If you know more general patterns useful for others, please submit them.

For a full list of built-in message patterns or how to add your own patterns, head over to the message pattern documentation.

Hooks Enhancements

  • A bug was fixed that prevented hooks from issuing more than one command
  • New hook points:
    • engine/session/on-group-chat-person-added
    • engine/session/on-group-chat-person-removed
    • engine/session/on-group-chat-person-updated
  • New hook variables:
    • CMD
    • CMD_PARAMETER
    • CMD_CHARACTER
    • PROTOCOL_MANAGER_PRESENCE_STATUS: Unknown, Offline, Online, Away

Twitter Enhancements

As of 14 Jan 2014, Twitter disallows unencrypted HTTP requests which broke Smuxi's Twitter support. Smuxi is now making exclusively encrypted requests (HTTPS) and thus works with Twitter again.

JabbR (Beta) Enhancements

  • Messages now raise Smuxi hooks
  • The Validate certificate setting is now correctly honored.

Updated Translations

Smuxi should now be in your language, including:

  • Initial complete Dutch (Jeroen Baten)

Behind the Scenes

  • New Smuxi git repository @ GNOME
  • Cleaner XMPP code (Oliver Schneider)
  • Smuxi's STFL text frontend is doing a graceful shutdown on quit (Calvin B))
  • New sexy website! We hope you like it :)

Contributors

Contributors to this release are the following people:

  • Mirco Bauer (98 commits)
  • Oliver Schneider (6 commits)
  • Calvin B (6 commits)
  • Andrés G. Aragoneses (1 commit)
  • Jeroen Baten (translations)

Thank you very much for your contributions to Smuxi!

Want it? Go here and grab it right now!

Posted Mon 14 Apr 2014 01:23:29 PM CEST

And here we go again! We're proud to announce the new version of Smuxi, release 0.10 "Unexpected". During the development, 12 bug reports and 8 feature requests in 259 commits were worked on. Notable highlights in this release are:

GNOME Frontend Enhancements

  • Tabs replaced with chat list. The list is grouped by server and sorted alphabetically. Private (person to person) chats are sorted after public (group) chats.
  • Man pages included for smuxi-frontend-gnome (Calvin Buckley)
  • /window command now cycles through tabs with same name (Oliver Schneider)
  • The Windows installer was switched to GTK# 2.12.22 which is more stable than the previous used 2.12.20 version.
  • Adding and editing remote engines works now correctly on Windows and OS X.

Screenshot of Smuxi 0.10 on GNOME3 Screenshot of Smuxi 0.10 on Ubuntu Unity

Screenshot of Smuxi 0.10 on Windows 7 Screenshot of Smuxi 0.10 on Mac OS X

Screenshot of Smuxi 0.9's text frontend

Text Frontend Enhancements

  • Messages no longer sometimes get sent multiple times
  • Rare crashes with scrolling were fixed
  • Man pages included for smuxi-frontend-stfl (Calvin Buckley)

Smuxi Hooks / Scripts / Plugins Support

After years of waiting we are more than happy to finally announce the added scripting support in Smuxi! You are probably thinking right now "so which scripting language is it?! C#? VB.NET? JavaScript? Perl? Python? Ruby? Maybe even PHP?" and here comes the best part: ALL OF THEM AND MORE! More? What else there would be... well, if you really want you can write Smuxi hooks in C, C++ or even assembler ;)

"How is this possible?"

It's Magic! No, just kidding. This is pure Unix technology taken from the 70s ported to a powerful messaging client. If you know what Git hooks, Nagios checks/plugins or CGI scripts are, then you already know what Smuxi hooks are, if you don't then continue reading this paragraph. Any executable program in a special location (hook points) will be executed when a specific event happens, like receiving a message. This program gets all information passed as environment variables, like who send the message (SENDER), what was the message (MSG), when was it received (MSG_TIMESTAMP_UNIX) etc. This program is also able to execute Smuxi commands by writing hook commands to the standard output.

Currently there are 2 main types of Smuxi hooks:

  • protocol-manager hooks: these are mainly events like message-received/sent that the various protocol managers (IRC, Twitter, XMPP, etc) can raise
  • command hooks: these are added Smuxi commands running in the frontend, so you can add /some_cool_command to Smuxi

Smuxi hooks are maintained in the smuxi-hooks git repository. So if you want to share your written hook simply create a pull request against that repository on GitHub, other Smuxi users will be very thankful! Right now thre are only 2 proof-of-concept hooks available:

  • now-playing: adds a /np command to Smuxi which shows the currently playing song/video of Banshee using MPRIS2 on D-Bus or YouTube (Chrome only).
  • tinyurl-resolver: resolves all shortened URLs of t.co, bit.ly, etc to the full URL. This was originally an irssi plugin written in Perl.

Installing Hooks

"Wow, I am completely amazed, but how can I install hooks?" For now you will need to either download the files of the hook into the same location into $HOME/.local/share/smuxi/hooks or by cloning the git repository and symlinking the files. Here is an example for each method:

Download Method
mkdir -p $HOME/.local/share/smuxi/hooks/frontend/command-manager/command-np/
cd $HOME/.local/share/smuxi/hooks/frontend/command-manager/command-np/
wget https://raw.github.com/meebey/smuxi-hooks/master/now-playing/frontend/command-manager/command-np/now-playing.sh
chmod +x now-playing.sh
Git Clone Method
cd $HOME
git clone https://github.com/meebey/smuxi-hooks.git
mkdir -p $HOME/.local/share/smuxi/hooks/frontend/command-manager/command-np/
cd $HOME/.local/share/smuxi/hooks/frontend/command-manager/command-np/
ln -s $HOME/smuxi-hooks/now-playing/frontend/command-manager/command-np/now-playing.sh

IRC Enhancements

XMPP (Beta) Enhancements

  • Pretty chat states: you can now see if your chat peer is composing a message with a pretty design (Oliver Schneider / George Karavasilev)
  • Find Group Chats support for chat rooms on own server (Oliver Schneider)
  • Resource collisions are no longer happening if resource was not overridden. (Oliver Schneider)
  • Multi user chats (MUC) are automatically rejoined after a reconnect.
  • When "Use Encryption" is enabled, Smuxi will now force SSL/TLS. If that fails it will no longer silently downgrade to unencrypted. If you can suddenly no longer connect, check if "Use Encryption" is correctly configured for that server (as not all XMPP servers support SSL/TLS).
  • Annoying FeatureNotImplemented messages are no longer visible.
  • Added translations.

Twitter Enhancements

  • /retweet command and /reply command. Both commands need a short id as parameter so Smuxi knows which tweet you want to retweet or reply to. The short ids are shown in brackets like [42] before each tweet. Example of how a reply to tweet with short id 42 could look like: /reply 42 thanks, Smuxi is awesome!
  • /search command
  • /timeline command (Andrés G. Aragoneses)
  • /follow and /unfollow command
  • On Connect Commands are now executed (Andrés G. Aragoneses)
  • Twitter context menu (Andrés G. Aragoneses)

JabbR (Beta) Enhancements

  • Message History: Opening chats will now load and show the previous messages from the JabbR server.
  • Added automatic and manual reconnect support.
  • Added translations.

Campfire (Beta) Enhancements

  • Fixed an issue that can lead to a DoS behavior when the session becomes invalid. (Carlos Martín Nieto)

Server Enhancements

  • The server will now cleanly shutdown on SIGINT and SIGTERM signals. (Christopher James Halse Rogers)
  • Man pages included for smuxi-server (Calvin Buckley)

Updated Translations

Smuxi should now be in your language, including:

  • Initial partial Persian (Behrooz Amoozad)
  • Initial partial Telugu (Praveen Illa)
  • French (Clément Bourgeois)
  • Czech (Ondřej Hošek)
  • Chinese Simp (Dean Lee)
  • Swedish (Martin Bagge)
  • Danish (Joe Hansen)
  • German (Bianca Mix)
  • Spanish (Matías Bellone)
  • Partial Turkish (Umut Albayrak)
  • Partial Finnish (Kalle Kaitala)
  • Partial Portuguese (Brazil) (Leonardo Pires Felix)

Behind the Scenes

  • The #smuxi-devel IRC channel has moved from OFTC to freenode, everyone interested in Smuxi's development is invited to join.
  • The C# 4.0 compiler dmcs will now automatically be used and no longer needs an MCS=/usr/bin/dmcs override with the configure script.
  • Added dbus-sharp-2.0 support to build system.
  • This GitHub repo is now used as the primary repository including all submodules of Smuxi. This GNOME repo is now the official mirror. If you are using git.qnetp.net in your git remotes (git remote -v) then you should switch that to either https://github.com/meebey/smuxi.git or git://git.gnome.org/smuxi
  • The HACKING file contains now the used codying style of Smuxi.

Contributors

Contributors to this release are the following people:

  • Mirco Bauer (165 commits)
  • Oliver Schneider (48 commits)
  • Andrés G. Aragoneses (22 commits)
  • Calvin Buckley (6 commits)
  • Christopher James Halse Rogers (4 commits)
  • Carlos Martín Nieto (2 commits)
  • George Karavasilev (artwork)
  • Umut Albayrak (translations)
  • Praveen Illa (translations)
  • Ondřej Hošek (translations)
  • Matías Bellone (translations)
  • Martin Bagge (translations)
  • Leonardo Pires Felix (translations)
  • Kalle Kaitala (translations)
  • Joe Hansen (translations)
  • Dean Lee (translations)
  • Clément Bourgeois (translations)
  • Bianca Mix (translations)
  • Behrooz Amoozad (translations)

Thank you very much for your contributions to Smuxi!

Want this? Go right here, right now!

Posted Sun 22 Dec 2013 05:09:25 PM CET