|
|
|
Introduction
|
|
|
|
------------
|
|
|
|
|
|
|
|
KGtk is a quick-n-dirty hack to allow some Gtk2, Qt3, and Qt4
|
|
|
|
applications to use KDE3 or KDE4 file dialogs.
|
|
|
|
|
|
|
|
KGtk is composed of the following pieces:
|
|
|
|
|
|
|
|
1. An application called kdialogd. In this archive there are
|
|
|
|
two varieties of this - a KDE3 version, and a KDE4 version.
|
|
|
|
2. LD_PRELOAD libraries that are used to override the Gtk2, Qt3,
|
|
|
|
and Qt4 file dialogs.
|
|
|
|
|
|
|
|
If you start an application using the following command:
|
|
|
|
kgtk-wrapper gimp
|
|
|
|
|
|
|
|
...the the following occurs:
|
|
|
|
|
|
|
|
1. kgtk-wrapper determines whether the application is a Gtk2, Qt3,
|
|
|
|
or Qt4 application. It then sets the LD_PRELOAD environment
|
|
|
|
variable to point to the approriate KGtk library.
|
|
|
|
2. When the application now starts, it checks for the
|
|
|
|
KDE_SESSION_VERSION environment variable. If this is not set,
|
|
|
|
or is less than 4, then the KDE3 version of kdialogd is started,
|
|
|
|
else the KDE4 version is started.
|
|
|
|
3. When 'gimp' now tries to open a file dialog, the KGtk library
|
|
|
|
intercepts this, and asks kdialogd to open a file dialog instead.
|
|
|
|
|
|
|
|
There will only ever be one instance of kdialogd, and all apps communicate with the same
|
|
|
|
instance - and it termiantes itself 30 seconds after the last Gtk/Qt app has
|
|
|
|
disconnected. This timeout can be changed by editing kdialogdrc and setting/changing
|
|
|
|
|
|
|
|
[General]
|
|
|
|
Timeout=10
|
|
|
|
|
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
As of v0.9.1, kgtk uses CMake in place of autotools.
|
|
|
|
|
|
|
|
Because KGtk includes code for Qt3/KDE3 and Qt4/KDE4, you need
|
|
|
|
to specify when building which variants you would like to build.
|
|
|
|
This is accomplished as follows:
|
|
|
|
|
|
|
|
1. mkdir build
|
|
|
|
2. cd build
|
|
|
|
3. cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
|
|
|
4. make
|
|
|
|
5. sudo make install
|
|
|
|
|
|
|
|
* -DKGTK_KDE3=true instructs CMake to create makefiles for the KDE3
|
|
|
|
version of KDialogD. Defaults to "true", use -DKGTK_KDE3=false
|
|
|
|
to turn off. Turning this on, sets -DKGTK_KDE4=false and
|
|
|
|
-DKGTK_QT4=false
|
|
|
|
|
|
|
|
* -DKGTK_KDE4=true would instruct CMake to create makefiles for
|
|
|
|
the KDE4 version of KDialogD. Defaults to "false".
|
|
|
|
|
|
|
|
* -DKGTK_GTK2=true instructs CMake to create makefiles for the Gtk2
|
|
|
|
version of the LD_PRELOAD library. Defaults to "true", use
|
|
|
|
-DKGTK_GTK2=false to turn off.
|
|
|
|
|
|
|
|
* -DKGTK_QT3=true instructs CMake to create makefiles for the Qt3
|
|
|
|
version of the LD_PRELOAD library. Defaults to "true", use
|
|
|
|
-DKGTK_QT3=false to turn off. Turning this on, sets
|
|
|
|
-DKGTK_KDE4=false and -DKGTK_QT4=false
|
|
|
|
|
|
|
|
* -DKGTK_QT4=true instructs CMake to create makefiles for the Qt4
|
|
|
|
version of the LD_PRELOAD library. Defaults to "false".
|
|
|
|
|
|
|
|
* For 64 bit systems, also append -DLIB_SUFFIX=64
|
|
|
|
|
|
|
|
Mixing '-DKGTK_KDE3=true' and '-DKGTK_KDE4=true' wont work, so compile the Qt3/KDE3,
|
|
|
|
and Qt4/KDE4 variants separately. Also, the 'build' folder *must* be cleaned before
|
|
|
|
switching to/from Qt3/KDE3 from/to Qt4/KDE4
|
|
|
|
|
|
|
|
|
|
|
|
So, to compile everything I suggest the following:
|
|
|
|
|
|
|
|
1. mkdir build3
|
|
|
|
2. cd build3
|
|
|
|
3. cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
|
|
|
[ This will build KDialogD for KDE3, and create the LD_PRELOAD libraries for
|
|
|
|
Qt3 and Gtk2 ]
|
|
|
|
4. make
|
|
|
|
5. sudo make install
|
|
|
|
|
|
|
|
6. set up Qt4/KDE4 env variables
|
|
|
|
7. clean build folder
|
|
|
|
|
|
|
|
8. mkdir build4
|
|
|
|
9. cd build4
|
|
|
|
10. cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DKGTK_KDE4=true -DKGTK_QT4=true -DKGTK_GTK2=false
|
|
|
|
11. make
|
|
|
|
12. sudo make install
|
|
|
|
|
|
|
|
NOTE: If you have both KDE3 and KDE4 installed, when calling cmake for KDE3, set TDEDIR to be empty.
|
|
|
|
e.g.
|
|
|
|
TDEDIR= cmake -DCMAKE_INSTALL_PREFIX=/usr -DKGTK_KDE4=false -DKGTK_QT4=false
|
|
|
|
|
|
|
|
Notes
|
|
|
|
-----
|
|
|
|
|
|
|
|
The library has been tested with the following applications:
|
|
|
|
|
|
|
|
Reported to work:
|
|
|
|
|
|
|
|
1. Firefox (1.5.x only, not 1.0.x)
|
|
|
|
2. Inkscape
|
|
|
|
3. GIMP
|
|
|
|
4. Kino
|
|
|
|
5. Eclipse
|
|
|
|
6. Azureus
|
|
|
|
7. Galde-2
|
|
|
|
8. Streamtuner
|
|
|
|
9. Avidemux2
|
|
|
|
10. Scribus
|
|
|
|
11. QComcBook
|
|
|
|
12. Planner 0.14: works, but asks twice for open file
|
|
|
|
|
|
|
|
Reported *not* working:
|
|
|
|
|
|
|
|
1. AbiWord
|
|
|
|
|