fernschreiberx / master

Tree @master (Download .tar.gz)

Fernschreiber X

"Fernschreiber X" is an XMPP client. The XMPP library that does the actual XMPP handling underneath is called "fernx".


"Fernschreiber" is the German word for "Teletypewriter". The "X" in the name means "XMPP".


The programme has some dependencies, as documented here.

C libraries

XMPP uses long-lived XML streams over TCP for communication, which are not suitable for Go's ordinary XML parser as that one can't do incremental processing (a.k.a. SAX parser). Fernschreiber X uses Cgo to overcome the problem and binds to the Expat library (see to gain access to a stream-oriented SAX parser. Additionally, Fernschreiber X uses Gotk as a dependency for the UI, which in turn depends on the Gtk+3 C library.

Thus, you need Cgo working, and Gtk+3 and Expat installed (with development headers). For Ubuntu 18.04, it should be sufficient to execute the following command to get the C side of things working:

# apt-get install build-essential libgtk-3-dev

Additionally, some Cgo bindings for the native OS libraries are used, but since they're native to the OS, you have them installed anyway (example: libuuid on Linux or the Win32API on Windows).

Go dependencies

Install via:

$ go get
$ go get
$ go get

If building Fernschreiber X takes an unusually long time, rebuild Gotk3.

Build Fernschreiber X

Fernschreiber X consists of a front programme of this name, and a backend library called "fernx". The actual GUI programme is contained in the fernschreiberx/fernschreiberx directory and building it will build all the helper libraries as well. Thus, you do:

$ cd $GOPATH/src/
$ make

After some processing of the data directory, the make command will most notably invoke go build. Note that it's not going to call go install.

In order to install the software, run make install.

# make install

This will install Fernschreiber X below /usr/local (and not somewhere under your $GOPATH!).

It is possible to change the installation locations by setting the PREFIX and DESTDIR variables during make invocation. PREFIX tells Fernschreiber X where to look for its data, DESTDIR is only used during the make install step and effectively shifts the file system root (useful for packaging). If you invoke the build as follows, then the software will install under /opt/fernschreiberx.

$ make PREFIX=/opt/fernschreiberx
# make PREFIX=/opt/fernschreiberx install

If you invoke it as follows, the entire structure under /opt will be replicated below a directory staging below the current working directory.

$ make PREFIX=/opt/fernschreiberx DESTDIR=$PWD/staging
# make PREFIX=/opt/fernschreiberx DESTDIR=$PWD/staging install

Please note that you need to specify the exact same set of PREFIX and DESTDIR variables for both make and make install, otherwise you will run into unexpected problems.

Fernschreiber X is an XMPP client. Copyright © 2018-2019 Marvin Gülker

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see