Copyright (C) 2001 to 2012 Chris Vine
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 2 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.
A copy of the GNU General Public License version 2 is set out
in the file COPYING accompanying this distribution. You can
also obtain a written copy from the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Note that the copyright of the efax program, to which this is a
front end, belongs to Ed Casas.
This program is a GTK+ front end for the efax program. It can be used
to send and receive faxes with a fax modem, and to view, print and
manage faxes received. It also has a socket interface to provide a
"virtual printer" for sending faxes from word processors and similar
programs, and can automatically e-mail a received fax to a designated
user, and automatically print a received fax.
Any files to be faxed should be in postscript format, which is the
generic printer format for Unix/Linux systems. The program will use
ghostscript to convert these into the Group 3 fax format which the fax
modem will understand. Recent versions of ghostscript (which is used
to carry out the conversion) will also accept files in PDF format.
The efax-gtk distribution compiles and installs a patched version of
efax-0.9a-001114, so you do not need to separately build and install
efax. In particular, the version of efax supplied with efax-gtk
provides internationalization support, and resolves certain
difficulties with locales in the standard distribution.
If you get reports of UTF-8 conversion errors from efax-gtk or efax
when referring to file names then you may not have set the
G_FILENAME_ENCODING or G_BROKEN_FILENAMES environmental variable
correctly - see the "INTERNATIONALISATION" section below for further
To avoid name conflicts the patched versions of efax and efix are
installed as efax-0.9a and efix-0.9a.
INSTALLATION: FROM SOURCE FILES
Compiling from source
To compile from source, place the distribution file in a local source
directory (eg ~/src). Untarring/unzipping it will create a
sub-directory 'efax-gtk' where the source code can be found. You can
now edit the file efax-gtkrc (which by default will be placed by "make
install" in /usr/local/etc) to provide global settings which match
your serial port, name, telephone number and other particulars.
efax-gtkrc specifies run-time not compile-time options, but you can
edit it now so that the version installed by "make install" is
correct. Alternatively, you can start up the program and enter any
settings by bringing up the `Settings' dialog from the `File/Settings'
pull-down menu once the program has started. (See below).
Then enter the command `./configure'. This will set up the Makefile
so that it matches your system. This can be done as user (you do not
need to be root). Then type "make", and then "make install". "make
install" must be run as root, but "make" can be run as user. The
program will by default be installed in /usr/local/bin. The name of
the executable is "efax-gtk".
You can change the install directory by running `./configure' with the
--prefix=[dir] option. Thus -
will install the executables in /usr/bin, as will -
The configuration file efax-gtkrc (see above) is installed in $RCDIR,
which by default is /usr/local/etc. If the --prefix=[dir] option is
used, $RCDIR will be taken from that. So -
will install efax-gtkrc in the /usr/etc directory. Its install
directory RCDIR can also be changed by running ./configure with the
--sysconfdir=[dir] option. Thus -
will install efax-gtkrc in /etc.
The man file will by default be installed in $prefix/man. If the
--prefix=[dir] option is used, the base directory will be taken from
that. So -
will install the man file in the /usr/man/man1 directory, as will -
In addition, a fax filter file `efax-gtk-faxfilter' is by default
installed in /var/spool/fax, but a different directory can be chosen
by running `./configure' with the --with-spooldir=[dir] option. See
below for an explanation of what this does.
To compile and use the program, glib >=2.10.0, gtk+2 >= 2.12.0 or
gtk+3 >= 2.99.0, c++-gtk-utils-1.2 >= 1.2.13 or c++-gtk-utils-2.0 >=
2.0.1 or c++-gtk-utils-2.2 >= 2.1.0, dbus-glib >= 0.70 and libtiff
must be installed, except that dbus-glib is not required if glib is >=
See under "GTK VERSIONS" below for further particulars about choosing
between gtk+2 and gtk+3.
As mentioned above, there is a dependency on c++-gtk-utils-1.2 >=
1.2.13, c++-gtk-utils-2.0 >= 2.0.1 or c++-gtk-utils-2.2 >= 2.1.0.
c++-gtk-utils-1.2 only requires C++98, whereas c++-gtk-utils-2.0
requires reasonably complete support for C++0x/11 at the level
provided by gcc-4.4 or later and c++-gtk-utils-2.2 requires gcc-4.6 or
later. efax-gtk will compile with c++-gtk-utils-1.2,
c++-gtk-utils-2.0 or c++-gtk-utils-2.2, but if it is known that
C++0x/11 is supported to the level provided by gcc-4.4 or gcc-4.6,
then prefer c++-gtk-utils-2.0 or c++-gtk-utils-2.2 respectively; if
versions of gcc earlier than gcc-4.4 are also to be used to compile
this program, then use c++-gtk-utils-1.2. c++-gtk-utils can be
obtained from http://cxx-gtk-utils.sourceforge.net/
All the versions of c++-gtk-utils will compile under GTK+2 and GTK+3.
To compile them for GTK+2, configure them with './configure-gtk2', and
to compile them for GTK+3, configure them with './configure-gtk3'.
The program is written as a single instance program: if the user tries
to start another instance when one is already running, the one already
running will be brought up.
Making RPM binaries
A RPM spec file is included in the distribution. If rpm is installed,
entering `rpmbuild -tb efax-gtk-[version].src.tgz' as root will create
a standard RPM binary file efax-gtk-[version]-1.[i386].rpm. This will
be found in the RPM binary directory that your RPM-build configuration
specifies (normally /usr/src/redhat/RPMS/i386 for Redhat i86 systems,
and /usr/src/packages/RPMS/i386 for SuSE i86 systems).
To install the rpm binary once made, use the normal command
`rpm -i [rpm filename]'.
To make the binary RPM file you must have the packages referred to in
"Compiling from source" above. Once the rpm file is made, to install
it you must also have the ghostscript package installed.
As the efax-gtk.spec file causes rpm to check for dependencies both
when efax-gtk is being compiled and when being installed, this can
give rise to problems of portability, because different distributions
package things under different names. If the rpm binary won't compile
or install on your system because of these dependencies, but you are
sure that you have gtk+, libsigc++ and ghostscript installed, there
are two choices -- to compile the package using `rpmbuild -tb --nodeps
efax-gtk-[version].src.tgz' and install the binary file using `rpm -i
--nodeps [rpm filename]', or to:
- unzip efax-gtk-[version].src.tgz,
- amend the `BuildRequires:' and/or `Requires:' lines in the
efax-gtk.spec file to provide the correct dependency package
names for your distribution
- copy efax-gtk-[version].src.tgz to /usr/src/[packages]/SOURCES
- enter `rpmbuild -bb efax-gtk.spec'.
If you install via binary RPMs, then you will either have to use the
File/Settings dialog to configure the program when you first use it,
or before using it have to amend the $prefix/etc/efax-gtkrc by hand
after installation (see further below).
The first time you use the program, you will be asked if you accept
the terms of the General Public Licence, version 2.
Files to be sent should be saved as postscript files. Recent versions
of ghostscript (which is used to convert the postscript file to tiffg3
fax format) will also accept PDF files. If the program is started
with a filename as the last argument, then it will begin with that
file already inserted in the program's "file to be sent" box.
Otherwise once the program has started you can use the standard file
open dialog, or enter it directly into the box via the keyboard.
Ordinary ascii text files can be converted into postscript if required
using a number of programs, of which probably the easiest to use are
nenscript or GNU enscript (`man enscript').
For further suggestions about sending faxes from a wordprocessor using
CUPS, see "Using with a word processor" below.
For efax to operate correctly, the user must have write permission to
the /var/lock directory, and to the serial port to which the fax modem
is connected. In most distributions, the uucp group has write
permission for these: if this applies to your distribution, the
easiest approach is to make users members of the uucp group.
The program may be started with a -r option and a -s option:
efax-gtk -r This will start the program in receive standby mode
efax-gtk -s This will start the program hidden in the system tray
Before sending a fax, it must be specified in the "Fax to send" box.
It must be in postscript format (a format produced by all Unix/Linux
word and document processors), and will be converted by the program
into the correct tiffg3 fax format. Recent versions of ghostscript
(which is used to convert the postscript file to tiffg3 fax images)
will also accept files in PDF format.
There are two fax entry methods. First, the fax to be sent can be a
file saved on the filesystem. It can be entered manually in the "Fax
to send" box, or entered by means of the file selection dialog. If
the file comprises a single postscript or PDF file, then you can find
it by pressing the "Single File" button. It can be more easily found
with this dialog if it is placed in the $HOME/faxout directory.
Where more than one file is specified in the "Fax to send" box, they
will be sent as a single fax appended in the order in which they are
entered in the box. Such multiple files can be more easily selected
using the file list brought up by pressing the "Multiple Files"
button. Pressing the "Multiple Files" button enables files to be
found and added to the file list, and they can be reordered by using
the Up or Down arrow buttons, or by dragging and dropping with the
mouse. (If entering multiple files manually rather than by means of
the "Multiple Files" dialog, use a ',' or a ';' as the file name
As an alternative, faxes can be received directly from the print
system by means of a socket server provided by the program. Efax-gtk
maintains a list of queued faxes received from the socket which can be
accessed by choosing "Socket" as the fax entry method, and then
bringing up the queued faxes list by pressing the "Socket list"
button. This is a more convenient way of sending faxes from a word
processor, and enables a fax to be sent for faxing to efax-gtk by
printing from the word processor program. Where a fax is queued for
sending in the socket list, a small red circle will appear in the main
program window on the right hand side of the "Fax to send" box. More
particulars are given under "Using with a word processor" below.
The telephone number to which the fax is to be sent is entered into
the "Tel number" box. This can be entered directly into the box, or
by using the built-in addressbook. The addressbook can be invoked by
pressing the "Tel number" button, or from the `File/Address book'
pull-down menu item. See "Using the address book" further below.
However, if a telephone connection has already been established with
the remote fax receiver, then the fax can be sent without dialing by
leaving the "Tel number" box blank (a dialog will come up asking if
you would like to send the fax without dialing - this does the same
thing as 'fax send -m ...' using the efax 'fax' script from the
When a fax is received from the print system via the socket server,
the program settings can also be configured to bring up a dialog
automatically. If the program is inactive or is standing-by to
receive faxes, the fax can be sent directly from this dialog without
the need to invoke the list of queued faxes received from the socket.
Successfully sent faxes are copied to a directory in the $HOME/faxsent
directory, which has a name derived from the year, month, day, hour
and seconds when the sending of the fax was completed, and will appear
in the faxes sent list. They are only included in that list if they
have been sent without error. The efax message display box will
report on the progress of a fax being sent. The fax list can be
brought up from the `File/List sent faxes' pull down menu item. See
'Using the fax lists" further below.
The program can send a fax when it is in receive standby mode. If
sending a fax from receive standby mode, when the fax has been sent
(or there is an error in sending the fax), the program will return to
receive standby mode.
The program settings have an option for automatic redialing of a fax
to be sent if the modem was in use or the receiving station was busy
when the first attempt to send it was made. A list of the faxes
queued for redialing can be brought up from the 'File' pull-down menu
or from the icon in the system tray.
If the program settings have been set to provide for automatic
redialing, the program will keep trying to send the fax at the
intervals chosen in the settings until either (a) the sending of the
fax is successful, (b) there has been a failure arising from something
other than the modem being in use or the recipient station being busy
(such as a modem error, or the remote number ringing out without
answering), (c) the fax is removed by the user from the list of faxes
queued for redialing, (d) if the fax to be sent is a print job
received from the print system, the print job is removed by the user
from the dialog showing the list of queued faxes from the print
socket, (e) if the fax to be sent comprises file(s) on the file
system, the file(s) are deleted or moved (or their permissions changed
to make them unreadable), or (f) the 'Stop' button is pressed while an
attempt is being made to send the fax concerned which is queued for
A fax queued for redialing will not be sent while the Settings dialog
is open. Instead, if the interval for resending such a fax has
passed, a further sending attempt will take place once the Settings
dialog has been closed.
The list of queued faxes for redialing is not preserved when the
program is terminated. However, if any unsent faxes are print jobs
received from the print system, they can still be found in the dialog
showing the list of queued faxes from the print socket (assuming they
have not been explicitly removed from that list by the user).
Three ways of receiving faxes are provided for.
First, the program can be set to answer a fax call which is ringing
but has not been answered, by pressing the "Answer call" button.
Secondly, the program can take over a call which has already been
answered (say, by a telephone hand set) by pressing the "Take over
Thirdly, the program can be placed in standby mode by pressing the
"Standby" button. This will automatically answer any call after the
number of rings specified in the efax-gtkrc file, and receive the fax.
The program will keep on receiving faxes until the "Stop" button is
pressed. A fax can also be sent when the program is in receive
Received faxes in tiffg3 format (one file for each page) are placed in
a directory in the $HOME/faxin directory, which has a name derived
from the year, month, day, hour and seconds when reception of the fax
was completed (for version 3.0.4 onwards), and is the fax ID number.
Received faxes can be printed, viewed, described and managed using the
built in fax list facility. This can be brought up from the
`File/List received faxes' pull down menu item. See "Using the fax
lists" further below.
When a fax is received, a pop-up dialog can also be set to appear (go
to the Settings dialog to do this).
In the settings dialog you can also specify a program to be executed
whenever a fax is received. The fax ID number is passed as the first
(and only) argument to the program, which enables the program to find
the fax in $HOME/faxin. The distribution contains two executable
scripts, mail_fax and print_fax, which can be used to e-mail a fax to
a user or print a fax automatically when it is received. (These
scripts are not installed by 'make install' - if you want to use them,
make them executable with 'chmod +x' and copy them to a directory
which is in the system path, such as /usr/local/bin, and then specify
the script name in the settings dialog).
Using the address book
To pick a telephone number from the address book, highlight the
relevant address by pressing the left mouse button over it, and then
press the "OK" button.
Addresses can be added to the address book by pressing the add button,
and then completing the relevant dialog which will appear. To delete
an address from the address book, highlight the relevant address and
press the delete (trashcan) button. The addressbook can be sorted by
using the up and down arrow buttons on a highlighted address, or by
dragging and dropping using the mouse.
Addresses are stored in file `$HOME/.efax-gtk_addressbook'.
Using the fax lists
To bring up the fax lists, go to the the `File' menu and pick the
`List received faxes' or `List sent faxes' menu item. Highlight the
fax to printed or viewed by pressing the left mouse button. The
programs to be used to print and view the fax are specifed in the
efax-gtkrc configuration file, or if none are specified, the program
will print using lpr (which will work for most Unix systems) and view
To print faxes, a PRINT_SHRINK parameter can be specifed in efax-gtkrc
to enable the fax page to fit within the printer margins. A parameter
of 98 will work with most printers. This can be changed while the
program is running by bringing up the `Settings' dialog and entering
it into the `Print/Print Shrink' box.
A fax can be deleted from a fax list by pressing the delete (trashcan)
button. This will place the deleted fax in the `Trash' folder. If
the delete (trashcan) button is pressed in relation to a fax in the
`Trash' folder, it will be deleted from the file system.
A description can be added to a received fax when appearing in a fax
list (or subsequently amended) by pressing the relevant button -- this
will enable faxes to be more easily identified.
The received faxes list will show, at the far right of the tool bar,
the number of faxes received since the program was last started. If
efax-gtk is in receive standby mode, the "tooltips" for the program's
icon in the system tray will also indicate this number. The count can
be reset to 0 without restarting the program by pressing the reset
button in the received faxes list.
From version 3.0.4 onwards, the fax lists have a column displaying the
time at which faxes are received or sent. However, in the case of
faxes received with versions earlier than version 3.0.4 but displayed
with version 3.0.4 or later, the displayed received fax time will be
the time efax-gtk was put into receive mode (which could be a
considerably earlier than the time a fax was actually received if
efax-gtk was in receive-standby mode), rather than the time the fax
was actually received. With faxes received with version 3.0.4
onwards, the displayed received fax time will be correctly shown as
the time that efax-gtk completed reception of the fax. (You can tell
whether a received fax was received with version 3.0.4 or later, or an
earlier one, by going to the faxin sub-directory and examining the fax
ID giving the directory name within which individual faxes are stored.
If the fax ID number is a 12 digit number, the fax was received with a
version earlier than 3.0.4. If the fax ID number is a 14 digit number
beginning with 2, then the fax was received with version 3.0.4 or
later. This is because the fax ID is given as a number comprising
year-month-day-hour-minutes-seconds, and with versions earlier than
3.0.4 the year is given by a two digit number (eg 05), and with
version 3.0.4 or later it is given by its full four digit number (eg
The displayed sent fax time is correct for faxes sent with all
versions of efax-gtk, including versions earlier than version 3.0.4.
The time displayed will be the time that the sending of the fax was
From version 3.0.7 of efax-gtk, fax descriptions in the fax lists are
stored in the UTF-8 codeset rather than the locale codeset. This
means that any fax descriptions previously stored in a codeset other
than ASCII or UTF-8 by efax-gtk will not be shown in version 3.0.7.
Sorry about that, but the former method of storing them in the locale
codeset was bound to lead to trouble, because in due course Unix-like
systems will adopt UTF-8 as their standard codeset and on changing
codesets, previously entered file description were bound to be broken
anyway. This gets it over with. To show these fax descriptions
again, the contents of all the files with the name Description in the
$HOME/[WORK_SUBDIR]/faxsent/[faxnumber] directories will need to be
changed from the locale codeset to UTF-8. gedit can do this manually,
although it will be a bit tedious.
The program settings can be changed by manually editing the efax-gtk
configuration file comprising $HOME/.efax-gtkrc,
$sysconfdir/efax-gtkrc or /etc/efax-gtkrc. The file is searched for
in that order, so $HOME/.efax-gtkrc takes precedence over the other
The configuration file can also be set by using the Settings dialog
launched from the `File/Settings' pull down menu item. The settings
entered using this dialog are always stored as $HOME/.efax-gtkrc.
Accordingly, if the Settings dialog has been used, and you want to
revert to the global settings, this can be done either by deleting the
$HOME/.efax-gtkrc file, or by pressing the `Reset' button in the
Settings dialog, which will reload the Settings dialog from the global
configuration file ($sysconfdir/efax-gtkrc or /etc/efax-gtkrc).
Help can be obtained when filling out the Settings dialog by holding
the mouse over the relevant help (?) button, which will bring up a
"Tips" display, or by pressing the button, which will bring up an
USING WITH A WORD PROCESSOR
Printing to file from the program itself
Probably the simplest way of using the program with a word processor
is to print to file from the print dialog of the word processor
program concerned, and choosing a file name in the $HOME/faxout
directory which can then be selected with the file selector dialog in
efax-gtk. The file to be printed should be in postscript format or
PDF format (recent versions of ghostscript will accept PDF files as
well as postscript files).
Faxing via CUPS
Versions 2.2.* and 3.* provide a socket server, which CUPS can connect
to. When the socket server is running, fax files received from CUPS
will automatically be displayed in a "Queued faxes from socket" list
maintained by efax-gtk. From this list, a fax can be selected for
sending by efax-gtk, so there is no need to print to file from the
word processor and then select the file with the file selection dialog
When a fax is received in this way from the print system via the
socket, the program settings can also be configured to bring up a
dialog automatically. If the program is inactive or is standing-by to
receive faxes, the fax can be sent directly from this dialog without
the need to invoke the list of queued faxes received from the socket.
If you are using CUPS and you want to connect it directly to efax-gtk
as mentioned above, you can do so by bringing up the fax
administration page for CUPS in a web browser, installing a new
printer with a name of "fax" (or whatever other name you want), choose
the IPP protocol, pick a URI of "socket://[hostname]:[port]", and
choose the "Raw" CUPS printer driver.
The port number can be any port number less than 65536 and more than
1023 which is not used by any other service on your machine/network
(this can be checked out by using nmap, but it is best to avoid any
listed in /etc/services). For example, as you will usually be
printing from a local computer, if you choose a port number of 9900
(which would be quite reasonable) the URI would be:
As an alternative, rather easier than the web interface is adding a
new CUPS virtual printer for efax-gtk by using lpadmin. To do this,
log in as whatever user has appropriate permissions (usually root) and
do it from the command line with:
/usr/sbin/lpadmin -p FaxPrinter -E -v socket://localhost:9900
That will create a printer name for efax-gtk called FaxPrinter for a
case where efax-gtk is listening on port 9900.
You should then start efax-gtk, go to the Socket tab in the settings
dialog, check the "Run socket server" box, and enter 9900 in the "Port
to which faxes to be sent" box.
To send a fax from the "Queued faxes from socket" dialog, highlight
the one to be sent, press the "Enter selected fax to send" button in
the dialog (the one with an icon representing a fax machine) which
will enter the fax in the "File to fax" box in efax-gtk, and then
choose a telephone number to send it to and press the "Send fax"
button in the ordinary way.
If efax-gtk isn't running when you attempt to send a file via CUPS to
efax-gtk don't worry. CUPS will queue the fax until it detects that
the efax-gtk socket server is running, and then send it to efax-gtk.
Faxing via lpd/lprng
The socket server can also be used in the same way with lpd/lprng.
The files efax-gtk-faxfilter and efax-gtk-socket-client are installed
in /var/spool/fax, when you run 'make install' (the installation
directory can be changed at the ./configure stage using the
./configure --spooldir=[dir] parameter). You should add at the end of
/etc/printcap the following -
This will cause a printer by the name of "fax" to be available, which
(if printed to) will send the file to the efax-gtk socket server. If
you set efax-gtk to listen on a port other than port 9900, you will
need to amend the file /var/spool/fax/efax-gtk-faxfilter by hand to
specify the correct port number on which efax-gtk is listening.
Don't forget to restart the lpd printer daemon after amending
/etc/printcap. (An equivalent addition to /etc/printcap can also be
made by using the printer configuration tool with your distribution,
choosing a printer name of "fax" (or whatever other name you want),
choosing a printer device of "/dev/null", a spool directory of
"/var/spool/fax" and an input filter of
Efax-gtk has been written so that it will sit in the system tray in
GNOME and KDE when the program is running.
From the system tray, the program can be hidden and raised again by
left-clicking with the mouse on the icon, and right-clicking on it
will bring up a menu from which certain program operations can be
performed. A 'tips' display will also indicate the program state if
the mouse is left hovering over the efax-gtk icon.
Clicking on the top right (delete) button of the window frame will not
cause the program to terminate if the program is embedded in the
system tray. Instead it will hide it in the tray. If you want to
close the program when it is embedded in the tray, either select the
"Quit" menu item in the system tray efax-gtk menu, or select the
"Quit" menu item in the "File" pull-down menu in the program toolbar.
Recent versions of GNOME call the system tray a "Notification Area".
If your desktop panel does not have a Notification Area installed, it
can be placed on the panel by right clicking on the panel, and going
to Add to Panel -> Utility -> Notification Area.
Errors and warnings from efax are displayed in red in the application
text window, and information messages and reports on the progress of
negotiations and on fax status are displayed in black in the window.
In addition, these messages are sent to stderr and stdout
respectively. Accordingly, fax status can be logged by redirecting
stderr and stdout to a log file.
As an alternative, a log file can also be maintained by setting the
LOG_FILE parameter in the efax-gtkrc configuration file, or by
entering a log file name via the Settings dialog. If no log file is
specified, no log file will be maintained. If a log file is
specified, then it can be viewed and printed from the "Log" pull-down
If a log file is specified, it can be specified with or without an
absolute path name. If it is specified without an absolute path name,
then it will be maintained either in the $HOME directory or if a
working sub-directory is specified with the WORK_SUBDIR parameter (see
below), in the working sub-directory.
If you have a scanner and want to fax it's output, you may find that
it produces a separate postscript file for each page. The easiest way
of dealing with this is to concatenate the postscript page files
produced by the scanner to a single fax file such as /tmp/faxfile.ps,
using 'cat' and appropriate command line wildcards. You may want to
automate this with a script.
Alternatively, as mentioned above, more than one file can be specified
in the "File to fax" box when the program is running.
Version 2.0 and above of the program has been written to accommodate
i18n support. If anyone wants to provide me with a *.po file with
translations into their language/locale, I will include it in the
An efax-gtk.pot file and other relevant build tools are included in
the po directory in the source directory for the purpose.
Users with a file system using other than the ASCII or UTF-8 codesets
will need to set either the G_FILENAME_ENCODING or G_BROKEN_FILENAMES
environmental variable in order for glib to carry out the correct
conversions of file names. (If you receive frequent error messages
stating that there was a "UTF-8 conversion error in
FileReadSelectDialog::set_result()" or some other function, then you
probably haven't set either environmental variable but need to do so.)
The environmental variables are best set in /etc/profile or ~/.profile
or in a file included in /etc/profile.d (depending on the
distribution). The G_FILENAME_ENCODING environmental variable is
supported in recent versions of glib-2.0, and if used should be set to
the codeset used by the file system for filenames. For example, with
a bash shell, if the file system uses the ISO-8859-15 codeset for
filenames, a line in the relevant file as follows will do the trick:
Earlier versions of glib-2.0 only support the G_BROKEN_FILENAMES
environmental variable (this is also usable by current versions). If
this environmental variable is set, glib will assume filenames use the
same codeset as the current locale. G_FILENAME_ENCODING takes
precedence over G_BROKEN_FILENAMES, but you only need to set one of
them. To get glib to use your locale codeset for filenames (and they
are almost always the same), the following will do the trick in the
The name of this environmental variable is a little misleading. The
authors of glib chose to regard any filename codeset other than UTF-8
as "broken". In due course UTF-8 will probably become universal on
Unix-like systems. At present, it is not.
A working sub-directory for the storage of .efax-gtk_addressbook,
.efax-gtk_mainwin_save and .efax-gtk_queued_server_files and the
faxin, faxout, faxsent and efax-gtk-server directories can be
specified in the efax-gtkrc configuration file with the WORK_SUBDIR:
parameter. This working subdirectory will appear as a subdirectory of
$HOME (so if WORK_SUBDIR: is specified as efax-gtk, $HOME/efax-gtk
will be the working directory). If none is specified, which is the
default, then these files/directories will be stored directly in $HOME
(which was what happened before the option was available, so past
efax-gtk installations will not be broken if this option is left
unset). The WORK_SUBDIR: parameter enables these files and folders to
be kept together in a separate directory if wanted. If a WORK_SUBDIR:
parameter is specified, only .efax-gtkrc will appear directly in
Note that if you specify a value for WORK_SUBDIR: in the efax-gtkrc
configuration file, you will need to shift old versions of the files
and directories mentioned above into the new working directory or
efax-gtk will not be able to find them, so use this option with
caution. In addition, if you wish to use the 'print_fax' or
'mail_fax' scripts, you will need to set the WORK_SUBDIR option in the
MODEM CLASS MODES
Efax-gtk provides Group 3 fax support using either Class 1, Class 2 or
Class 2.0 modem protocols. When operating in Class 2 and 2.0 modes,
it is the modem which does most of the work. In Class 1 mode, the
computer (running efax) does more of the fax processing.
Many fax modem firmware implementations for Class 2 are buggy,
particularly when receiving faxes. If you select the "Auto" modem
class option in the efax-gtk program settings, Classes 2 and 2.0 modes
will be selected in preference to Class 1 if the program detects that
the modem supports them. If you find you get fax reception errors in
an auto-detected class 2 or 2.0 mode, but your modem also supports the
Class 1 protocol, try explicitly selecting the "Class 1" modem class
option in the program settings. Because most of the fax processing in
Class 1 mode is done by efax (which is known to do it correctly),
there is much less chance of running into buggy firmware problems.
The program operates as a single-instance program, and in order to do
so a dbus session message bus must be running. Most recent
distributions using GNOME, KDE or Xfce do this anyway, but if your X
environment does not start a session bus, you may need to start one
yourself in the script which starts your X session. To do this you
can put the following in the script (this will often be a xinitrc file
in /etc/X11/xinit, but might be ~/.xsession or ~/.Xclients):
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
eval `dbus-launch --sh-syntax --exit-with-session`
echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
However, before amending your scripts, test whether this is necessary,
by trying to launch the program, or by bringing up a terminal (such as
xterm, gnome-terminal or konsole) and seeing if 'echo
$DBUS_SESSION_BUS_ADDRESS' reports anything. (Usually it won't be
necessary to amend your scripts.)
If an attempt to start the program is made without the session message
bus running then an error dialog will be shown and the program will
The program can compile against GTK+3 as well as GTK+2. Whichever one
of those has c++-gtk-utils compiled for it will be picked
automatically by the configure script. If c++-gtk-utils has been
parallel installed for both GTK+2 and GTK+3, GTK+3 will be preferred,
but if './configure' is passed the '--with-gtk-version=gtk2' option,
then the program will be configured and compiled against GTK+2
instead. To compile against GTK+3, GTK+ >= 2.99.0 is required.
The configuration option '--with-gtk-version' can also be given the
values 'gtk3' and 'auto'. If 'gtk3' is given, then c++-gtk-utils must
have been compiled and installed against GTK+3 if configuration is to
succeed; if 'auto' is given, then the effect is the same as if the
'--with-gtk-version' option had not been used.
CONTACTING THE AUTHOR
I can be contacted at: cvine -at- users -dot- sourceforge -dot- net.
Updates can be obtained from http://efax-gtk.sourceforge.net/