Tree @master (Download .tar.gz)
"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.
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 https://libexpat.github.io/) 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 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).
- Gotk3: GTK+3 bindings for Go: https://github.com/gotk3/gotk3
- Gotext: Gettext-compatible i18n: https://github.com/leonelquinteros/gotext
- Subdependency: Kinako: Parse Gettext plural strings: https://github.com/mattn/kinako
$ go get golang.org/x/crypto/otr $ go get github.com/gotk3/gotk3/gtk $ go get github.com/leonelquinteros/gotext
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/mg.guelker.eu/fernschreiberx/fernschreiberx $ 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
In order to install the software, run
# 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
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
$ 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 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 https://www.gnu.org/licenses/.
Commit History @master
- Fix Markdown problems in README Marvin Gülker 4 days ago
- Add file extension to make README web-renderable Marvin Gülker 4 days ago
- Fix indentation in ciphersuites.go. Marvin Gülker 4 days ago
- License Fernschreiber X as GPL. Marvin Gülker 4 days ago
- - Initialize tls1.3 as recommended at https://golang.org/pkg/crypto/tls/ Lauri Ojansivu (commit: Marvin Gülker) 4 days ago
- - Add TLSv1.3 cipher suites - Update translation string locations - Fix goxpat.go error with go1.12.4 Lauri Ojansivu (commit: Marvin Gülker) 4 days ago
- Add Finnish translation Lauri Ojansivu (commit: Marvin Gülker) 3 months ago
- Add generated executable to .gitignore. Marvin Gülker 3 months ago
- Remove unneeded dependency from README. Marvin Gülker 3 months ago
- Fix build issues with current gotk3. Marvin Gülker 3 months ago