DMDirc3 is a free and open source desktop IRC client. It is currently in an early stage of development, and is usable but lacking many features of a more mature client.
DMDirc3 is a rewrite of the DMDirc client, using more a more modern language (Kotlin), UI toolkit (JavaFX), and building on the lessons we learnt from maintaining a client for over 10 years.
To get started, check out the releases page to find an installer for your platform. We do not currently have any documentation for the client, but as it’s relatively basic we hope most users will be able to find their way around. We’d love to hear your feedback on DMDirc — please feel free to raise issues, or join us on freenode.
-
Automatically connect to multiple servers when launching DMDirc
-
Inline previews for image links
-
Automatic update checking, downloading, and installation
Please feel free to raise issues or submit pull requests. All pull requests will be ran through our continuous integration pipeline and the code coverage will be reported on the PR. We are striving to get better coverage so if you can please do write tests; but if you can’t please send us a PR anyway and we’ll see if we can carry it over the finish line together. If you have any technical questions about the project, the best way to get in touch with us is on IRC, naturally!
A code style configuration for IDEA can be found in codestyle.xml
. To import it:
-
Open the settings (Ctrl+Alt+S)
-
Browse to
Editor
>Code Style
-
Click on the cog next to the
Scheme
dropdown -
Select
Import Scheme
>Intellij IDEA CodeStyle XML
-
Select the file from this repository
We run ktlint as part of our CI tests. While IDEA should output compliant code with the provided settings, you can check manually with:
$ ./gradlew lintKotlin
And automatically fix some problems with:
$ ./gradlew formatKotlin
We use GNU gettext to extract translatable strings from the source code. All text strings in the client must be
wrapped in a call to the static functions in com.jukusoft.i18n.I
, e.g.:
import com.jukusoft.i18n.I.tr
MenuItem(tr("Join Channel"))
We then periodically extract the strings into a POT file (we will automate this at some point):
$ find src/main/kotlin -name '*.kt' > FILES
$ xgettext --keyword=tr --language=java --add-comments --sort-output --omit-header -s -o translations/messages.pot --files-from=FILES
Crowdin will detect the changes and update the translation console. When the translated files change, Crowdin will automatically submit a pull request with the new versions.
Like many open source projects, DMDirc3 relies on numerous third-party libraries and services. This allows us to focus on writing an IRC client, instead of developing installers, configuration formats, translation workflows, and so on. In particular we’d like to call out:
-
ej-technology for providing an open source install4j licence, which we use for our multi-platform installers, launchers and auto updating.
-
which we use for reporting application errors, for providing an open source account.
-
Crowdin for providing an open source account, which we use for managing translations.
-
RichTextFX which powers our main text area, and solves one of the biggest headaches we had with the previous client!
-
konf by uchuhimo, a simple yet powerful configuration system we use to save DMDirc’s settings.
Of course there are many other projects that have helped us along the way, and we are thankful for them all.