KGtk (Use KDE Dialogs in Gtk Apps)
Various KDE Extensions
Description:

This is a quick-and-dirty LD_PRELOAD hack that allows *some* Gtk applications to use KDE's file dialogs when run under KDE.

The Gtk file chooser functions have been overridden to communicate with this KDE module/application.

After compiling and installing this, you can run Gtk applications in 2 ways:

A. call /usr/local/bin/kgtk-wrapper gimp

B. i. Create a symbolic link from the wrapper script to your application, e.g.
ln -s /usr/local/bin/kgtk-wrapper /usr/local/bin/gimp
ii. Make sure /usr/local/bin is before /usr/bin (or wherever gimp is installed) in your $PATH
iii. Now simply run 'gimp' - this should find the wrapper script first.

If this works OK, then edit the .desktop file (e.g. /usr/share/applications/gimp.desktop) to have "Exec=/usr/local/bin/[appname]" instead of "Exec=[appname]", e.g. for gimp.desktop this would be:

Exec=/usr/local/bin/gimp-remote-2.2 %U

or:

Exec=/usr/local/bin/kgtk-wrapper gimp-remote-2.2 %U


So far I have tested this with the following applications:

1. Kino. Works perfectly - in fact Kino was my main reason for doing this.
2. Firefox. Works with Firefox 1.5, but *not* Firefox 1.0.x
3. GIMP. Again, seems to work just fine. However, there is no progress bar on file loading - as GIMP uses a progress bar embedded in the file chooser.
4. Inkscape. Works OK - at least 0.43
5. Streamtuner - the folder browser button works.
6. AbiWord - does *not* work. Don't even try...
7. Glade2. Seems to work OK, however I have had it crash when loading Kino's .glade file, but not always. So I'm not sure if this is Glade's fault, or mine.
8. Eclipse. Will work only if dlsym can be overriden

As the only Gtk apps I use are Kino, GIMP, and a little of Firefox, this library works great for me. Your millage may vary, and please note that this is only a quick hack to get things working now for me. I'm not sure how stable it will be under heavy usage, so don't be surprised if it breaks. However, if it does break - the only thing that should happen is that the Gtk apps will fall back to using the standard Gtk dialogs.


p.s. Before anyone asks, as they always do:
Widget style: QtCurve, works for KDE and Gtk (also does KDE->Gtk icon mapping). This is set on the "Clear" variation.
Window decoration: Crystal with Knifty buttons
Font: Verdana. However, I have recompiled FreeType with the TrueType byte encoder enabled - this give great looking non anti-aliased fonts (otherwise they look *horrible*)
Last changelog:

5 years ago

0.11.0
------
1. Gtk3 support.
2. Better, and safer, lookup of file filters.
3. Correctly determine size of string needed for pidfile!
4. Add thunderbird, and LibreOffice apps, to list of gtk2 apps.
5. Cleanup usless stuff; remove kdialogd3, qt3, qt4, kgtk2-wrapper, kqt3-wrapper, kqt4-wrapper.
6. Merge kgtkXX-wrapper scripts into kgtk-wrapper
7. Install kdialogd4 into KDE4 libexec dir.
8. Fix crash where client is terminated whilst file dialog is open.
9. Configurable debug. Pass cmake -DKGTK_DEBUG=true
When starting app, set KGTK_DEBUG env var, e.g.

KGTK_DEBUG=0x10 kgtk-wrapper lowriter

0x01 Connection debug
0x02 General debug
0x04 Filter get and set debug
0x08 Filter creation debug
0x10 Custom widget debug
0x20 dlsym debug
Values may be combined

10. If LibreOffice is detected (app is libreoffice, lowriter, etc.) then also set the OOO_FORCE_DESKTOP env var to gnome, so that we get nicer
themeing.
11. When passing filters to KFileDialog, replace / with \/
12. Make filter combo non-editable.
13. When returning selected filter to Gtk app, also return the filter name and not just the file pattern. This way if two filters have the same file pattern the corrent one can be selected.
14. Support for checkbox custom widgets.
15. Save location history per app.

PabliNet

4 years ago

First of all I apologize for my English because I speak only Spanish.

Debian testing 3.2.0-3-686-pae + KDE 4.8.4

Library installed:
libgtk-3-0:i386
libgtk-3-bin
libgtk-3-common
libgtk-3-dev
libgtk2.0-0:i386
libgtk2.0-bin
libgtk2.0-common
libgtk2.0-dev


1) $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr

-- The C compiler identification is GNU 4.7.1
-- The CXX compiler identification is GNU 4.7.1
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.8.2 (using /usr/bin/qmake)
-- Looking for XOpenDisplay in /usr/lib/i386-linux-gnu/libX11.so;/usr/lib/i386-linux-gnu/libXext.so;/usr/lib/i386-linux-gnu/libXft.so;/usr/lib/i386-linux-gnu/libXau.so;/usr/lib/i386-linux-gnu/libXdmcp.so
-- Looking for XOpenDisplay in /usr/lib/i386-linux-gnu/libX11.so;/usr/lib/i386-linux-gnu/libXext.so;/usr/lib/i386-linux-gnu/libXft.so;/usr/lib/i386-linux-gnu/libXau.so;/usr/lib/i386-linux-gnu/libXdmcp.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/i386-linux-gnu/libX11.so
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found.
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- Found Automoc4: /usr/bin/automoc4
-- Found Perl: /usr/bin/perl (found version "5.14.2")
-- Found Phonon: /usr/include
-- Performing Test _OFFT_IS_64BIT
-- Performing Test _OFFT_IS_64BIT - Failed
-- Performing Test HAVE_FPIE_SUPPORT
-- Performing Test HAVE_FPIE_SUPPORT - Success
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL
-- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL - Success
-- Performing Test __KDE_HAVE_GCC_VISIBILITY
-- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success
-- Found KDE 4.8 include dir: /usr/include
-- Found KDE 4.8 library dir: /usr/lib
-- Found the KDE4 kconfig_compiler preprocessor: /usr/bin/kconfig_compiler
-- Found automoc4: /usr/bin/automoc4
-- Found Qt-Version 4.8.2 (using /usr/bin/qmake)
-- Found X11: /usr/lib/i386-linux-gnu/libX11.so
-- Looking for getpeereid
-- Looking for getpeereid - not found
-- checking for module 'gtk+-2.0>=2.6'
-- found gtk+-2.0, version 2.24.10
** INFORMATION: Gtk2 LD_PRELOAD library will be built.
-- checking for module 'gtk+-3.0>=3.0'
-- found gtk+-3.0, version 3.4.2
** INFORMATION: Gtk3 LD_PRELOAD library will be built.
-- Found xgettext: /usr/bin/xgettext
** INFORMATION: Using installation prefix: /usr
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pablo/Descargas/KGtk-0.11.0/build


2) $ make
Scanning dependencies of target kgtk2
[ 7%] Building C object gtk2/CMakeFiles/kgtk2.dir/kgtk.o
In file included from /home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:74:0:
/home/pablo/Descargas/KGtk-0.11.0/common/connect.h: In function ‘createSocketConnectionReal’:
/home/pablo/Descargas/KGtk-0.11.0/common/connect.h:121:5: warning: #warning "Using sloppy security checks" [-Wcpp]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: In function ‘handleGtkFileChooserButtonClicked’:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2600:58: warning: unused parameter ‘button’ [-Wunused-parameter]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: In function ‘kgtk_g_module_check_init’:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2744:49: warning: unused parameter ‘module’ [-Wunused-parameter]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: At top level:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2750:37: warning: ‘struct PR_LoadLibrary’ declared inside parameter list [enabled by default]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2750:37: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
Linking C shared library ../lib/libkgtk2.so
[ 7%] Built target kgtk2
Scanning dependencies of target kgtk3
[ 15%] Building C object gtk3/CMakeFiles/kgtk3.dir/__/gtk2/kgtk.o
In file included from /home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:74:0:
/home/pablo/Descargas/KGtk-0.11.0/common/connect.h: In function ‘createSocketConnectionReal’:
/home/pablo/Descargas/KGtk-0.11.0/common/connect.h:121:5: warning: #warning "Using sloppy security checks" [-Wcpp]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: In function ‘handleGtkFileChooserButtonClicked’:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2600:58: warning: unused parameter ‘button’ [-Wunused-parameter]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: In function ‘kgtk_g_module_check_init’:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2744:49: warning: unused parameter ‘module’ [-Wunused-parameter]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c: At top level:
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2750:37: warning: ‘struct PR_LoadLibrary’ declared inside parameter list [enabled by default]
/home/pablo/Descargas/KGtk-0.11.0/gtk2/kgtk.c:2750:37: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
Linking C shared library ../lib/libkgtk3.so
[ 15%] Built target kgtk3
Scanning dependencies of target kdialogd4_bin_automoc
Generating kdialogd.moc
[ 15%] Built target kdialogd4_bin_automoc
Scanning dependencies of target kdialogd4_bin
[ 23%] Building CXX object kdialogd4/CMakeFiles/kdialogd4_bin.dir/kdialogd4_bin_automoc.o
[ 30%] Building CXX object kdialogd4/CMakeFiles/kdialogd4_bin.dir/kdialogd.o
Linking CXX executable kdialogd4
[ 30%] Built target kdialogd4_bin
Scanning dependencies of target pofiles
[ 38%] Generating zh_CN.gmo
/home/pablo/Descargas/KGtk-0.11.0/kdialogd4/po/zh_CN.po: atención: El conjunto de caracteres "CHARSET" no es un nombre de codificación portátil.
La conversión de mensajes al conjunto de caracteres del usuario podría no funcionar.
[ 46%] Generating de.gmo
[ 53%] Generating fr.gmo
/home/pablo/Descargas/KGtk-0.11.0/kdialogd4/po/fr.po: atención: El conjunto de caracteres "CHARSET" no es un nombre de codificación portátil.
La conversión de mensajes al conjunto de caracteres del usuario podría no funcionar.
[ 61%] Generating es.gmo
/home/pablo/Descargas/KGtk-0.11.0/kdialogd4/po/es.po: atención: El conjunto de caracteres "CHARSET" no es un nombre de codificación portátil.
La conversión de mensajes al conjunto de caracteres del usuario podría no funcionar.
[ 69%] Generating ru.gmo
[ 76%] Generating cs.gmo
[ 84%] Generating pt_BR.gmo
[ 92%] Generating it.gmo
[100%] Generating en_GB.gmo
[100%] Built target pofiles


3) # make install
[ 7%] Built target kgtk2
[ 15%] Built target kgtk3
[ 15%] Built target kdialogd4_bin_automoc
[ 30%] Built target kdialogd4_bin
[100%] Built target pofiles
Install the project...
-- Install configuration: "RelWithDebInfo"
-- Installing: /usr/bin/kgtk-wrapper
-- Installing: /usr/lib/kgtk/libkgtk2.so
-- Installing: /usr/lib/kgtk/libkgtk3.so
-- Installing: /usr/lib/kde4/libexec/kdialogd4
-- Installing: /usr/share/locale/zh_CN/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/de/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/fr/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/es/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/ru/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/cs/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/pt_BR/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/it/LC_MESSAGES/kdialogd4.mo
-- Installing: /usr/share/locale/en_GB/LC_MESSAGES/kdialogd4.mo


4) Run with GIMP:
$ kgtk-wrapper gimp
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.

(gimp:11336): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
/usr/bin/kgtk-wrapper: línea 88: 11336 `trap' para punto de parada/seguimiento LD_PRELOAD=/usr/lib/kgtk/libk${toolkit}.so:$LD_PRELOAD "$@"
QSocketNotifier: Invalid socket 11 and type 'Read', disabling...

Report

Murz

5 years ago

Because Kubuntu remove native support for KDE file dialogs in Firefox (more info here: http://www.phoronix.com/scan.php?page=news_item&px=MTA3MjI ) many users searching the way to solve this problem and got KDE file dialogs back.
So will be good if anybody can provide ppa with kgk packages, because install from ppa is very easier that compiling from sources.
In launchpad there are already exist KGTK package team: https://launchpad.net/~kgtk/+archive/ppa but version is too old. Is there any problems to compile updated version for Kubuntu 12.04?

Report

Murz

5 years ago

While KGTK for Kubuntu 12.04 didn't exist in ppa, I have found PPA with patched firefox for Kubuntu 12.04 users: https://launchpad.net/~alexey-ivanov/+archive/firefox-kde

Report

johu

5 years ago

Can confirm that kgtk crashs firefox after dwonload in KDE 4.8 see downstream bug report:
https://bugs.gentoo.org/show_bug.cgi?id=401697

Report

gnumdk

5 years ago

Same on archlinux...

Report

gnumdk

5 years ago

Same on archlinux...


(firefox:2483): Gtk-CRITICAL **: IA__gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed

Report

CraigD

5 years ago

I can confirm the crash. But **please** do not report KGtk errors to upstream projects. KGtk is a massive *HACK*. The fact that it sometimes works is a bonus, but it messes about underneath the toolkit, so its hardly surprising that somethings crash.

Why not use the firefox-kde support created by openSUSE? This works much better, and is packaged with KUbuntu as well.

Report

gravy

5 years ago

Unfortunately firefox-kde-support is no longer packaged for Kubuntu 12.04 Precise. :(

Report

negora

5 years ago

I've found the corresponding package in Launchad: https://launchpad.net/ubuntu/precise/+package/firefox-kde-support .

Surprisingly it's listed as an existing Ubuntu 12.04 package, although it can't be downloaded from the official Ubuntu repositories.

I've installed the package but it seems to have no effect on the file dialog window of the most recent version of Firefox.

Report

Murz

5 years ago

Kubuntu 12.04 remove support for this package: http://www.phoronix.com/scan.php?page=news_item&px=MTA3MjI

Report

unikum111

5 years ago

Firefox crash when I try save page. Tested on 8 and 9 versions.

Report

-luk-

5 years ago

Is there a way to integrate this program in chakra. Actually apps like gimp or firefox are installed using bundles.Everytime you launch a program the system mount a little partition in which the program is executed.

Is there a way to use kgtk?

Report

unikum111

5 years ago

I tried kgtk-wrapper with Hanbrake GUI and it have works. But it not be able choose a directory (only files).

Report

gcala

5 years ago

The wrapper doesn't work with bluefish; the terminal output when launching this program with and without the wrapper differs only in one line:

QSocketNotifier: Invalid socket 12 and type 'Read', disabling...

comparing when closing wrapped bluefish.

Report

CraigD

5 years ago

Does bluefish start via a shell script? If so, then kgtk-wrapper will not be able to determine if its a Gtka pp or not. To force kgtk-wrapper to use Gtk2 for 'bluefish' (or whatever the commandline name is), edit ~/.kde/share/config/kgtkrc to have:


[Apps]
bluefish=gtk2


Does that help?

Report

gcala

5 years ago

No, it isn't a script:

$ file /usr/bin/bluefish
/usr/bin/bluefish: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, stripped


ldd output: http://paste.kde.org/143666/

Report

gcala

5 years ago

Have successfully used the wrapper with:

* truecrypt
* gnome-mplayer

Regards

Report

unikum111

6 years ago

Link to source is wrong

Report

jospoortvliet

6 years ago

Just let me repeat that I think this is awesome :D

Gimp and Inkscape work perfectly. LibreOffice and Firefox have KDE file dialogs in openSUSE anyway so no need for those with kgtk2 btw.

I just wish there was an easier way of using this (for all gtk apps, maybe with a whitelist) than editing the global files which conflicts with package management...

Report

mkyral

6 years ago

Hi,
I'm not able to compile it under KDE 4.5.2. It seems like they removed some files under this minor release:

[100%] Building CXX object kdialogd4/CMakeFiles/kdialogd4_bin.dir/kdialogd.o
In file included from /usr/include/kfileitem.h:32,
from /usr/include/kdirlister.h:24,
from /usr/include/kdiroperator.h:30,
from /var/tmp/portage/kde-misc/kgtk-0.10.1/work/KGtk-0.10.1/kdialogd4/kdialogd.cpp:5:
/usr/include/kdatetime.h:32:21: error: QMetaType: No such file or directory

Report

mkyral

6 years ago

Sorry, I was wrong: http://bugs.gentoo.org/show_bug.cgi?id=338568#c5

Report

k4in

7 years ago

can you add support for chromium browser?

Report

tigerfoot

7 years ago

With the lastest 0.10.1 with a 4.3.5 kde version I've got error in compile

make
Scanning dependencies of target kdialogd4_bin_automoc
Generating kdialogd.moc
[ 0%] Built target kdialogd4_bin_automoc
Scanning dependencies of target kdialogd4_bin
[ 8%] Building CXX object kdialogd4/CMakeFiles/kdialogd4_bin.dir/kdialogd4_bin_automoc.o
[ 16%] Building CXX object kdialogd4/CMakeFiles/kdialogd4_bin.dir/kdialogd.o
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp: In member function ‘void KDialogD::deleteConnection(KDialogDClient*)’:
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp:257: warning: suggest explicit braces to avoid ambiguous ‘else’
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp: In member function ‘void KDialogD::timeout()’:
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp:268: warning: suggest explicit braces to avoid ambiguous ‘else’
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp: At global scope:
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/kdialogd.cpp:667: warning: unused parameter ‘modal’
Linking CXX executable kdialogd4
[ 16%] Built target kdialogd4_bin
Scanning dependencies of target pofiles
[ 16%] Generating es.gmo
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/po/es.po: AVERTISSEMENT : Le jeu de caractères « CHARSET » n'est pas un nom d'encodage portable.
La conversion vers le jeu de caractères de l'utilisateur peut ne pas fonctionner.
[ 16%] Generating en_GB.gmo
[ 16%] Generating cs.gmo
[ 16%] Generating fr.gmo
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/po/fr.po: AVERTISSEMENT : Le jeu de caractères « CHARSET » n'est pas un nom d'encodage portable.
La conversion vers le jeu de caractères de l'utilisateur peut ne pas fonctionner.
[ 16%] Generating de.gmo
[ 16%] Generating ru.gmo
[ 16%] Generating pt_BR.gmo
[ 16%] Generating zh_CN.gmo
/home/bruno/src_tmp/KGtk-0.10.1/kdialogd4/po/zh_CN.po: AVERTISSEMENT : Le jeu de caractères « CHARSET » n'est pas un nom d'encodage portable.
La conversion vers le jeu de caractères de l'utilisateur peut ne pas fonctionner.
[ 83%] Built target pofiles
[ 91%] Generating mangled.h
Scanning dependencies of target kqt4
[100%] Building CXX object qt4/CMakeFiles/kqt4.dir/kqt4.o
In file included from /home/bruno/src_tmp/KGtk-0.10.1/qt4/kqt4.cpp:54:
/home/bruno/src_tmp/KGtk-0.10.1/common/connect.h:98:5: warning: #warning "Using sloppy security checks"
/home/bruno/src_tmp/KGtk-0.10.1/qt4/kqt4.cpp: In function ‘const char* getAppName(bool)’:
/home/bruno/src_tmp/KGtk-0.10.1/qt4/kqt4.cpp:112: error: invalid conversion from ‘const char*’ to ‘char*’
make[2]: *** [qt4/CMakeFiles/kqt4.dir/kqt4.o] Erreur 1
make[1]: *** [qt4/CMakeFiles/kqt4.dir/all] Erreur 2
make: *** [all] Erreur 2

Did you have an idea ?

Nota for the po, they are not all utf-8 that why we get warnings

Report

tigerfoot

6 years ago

change in KGtk-0.10.1/qt4/kqt4.cpp

-char *slash
+const char *slash

compile now under kde4.4.4

Report

SurJector

7 years ago

Hi,

you miss two bytes in the malloc in getPidFilename() and kdialogd4 crashes reliably.

Could you apply the following (or similar) patch (sorry, space is garbled) ?

--- common/common.h.orig 2009-11-25 10:09:23.000000000 +0100
+++ common/common.h 2009-11-25 10:14:10.000000000 +0100
@@ -49,7 +49,7 @@
if(!tmp || !tmp[0])
tmp=(char *)"/tmp";

- pidfile=(char *)malloc(strlen(tmp)+strlen(PID_DIR)+strlen(user)+strlen(PID_NAME)+1);
+ pidfile=(char *)malloc(strlen(tmp)+strlen("/")+strlen(PID_DIR)+strlen(user)+strlen("/")+strlen(PID_NAME)+1);

#ifdef __KDIALOGD_H__
// We are kdialogd - so create socket folder if it does not exist...
@@ -57,7 +57,7 @@
KStandardDirs::makeDir(QString::fromAscii(pidfile));
#endif

- /* CPD: TODO get dispaly number! */
+ /* CPD: TODO get display number! */
sprintf(pidfile, "%s/%s%s/%s", tmp, PID_DIR, user, PID_NAME);
}
}
@@ -89,7 +89,8 @@
if(!tmp || !tmp[0])
tmp=(char *)"/tmp";

- sock=(char *)malloc(strlen(tmp)+strlen(SOCK_DIR)+strlen(user)+strlen(SOCK_NAME)+4+32);
+ /* 18446744073709551616 = 2 to the 64 = enough for display nr */
+ sock=(char *)malloc(strlen(tmp)+strlen("/")+strlen(SOCK_DIR)+strlen(user)+strlen("/")+strlen(SOCK_NAME)+strlen("18446744073709551616")+1);

#ifdef __KDIALOGD_H__
// We are kdialogd - so create socket folder if it does not exist...
@@ -97,7 +98,7 @@
KStandardDirs::makeDir(QString::fromAscii(sock));
#endif

- /* CPD: TODO get dispaly number! */
+ /* CPD: TODO get display number! */
sprintf(sock, "%s/%s%s/%s-%d", tmp, SOCK_DIR, user, SOCK_NAME, 1);
}
}

Report

5 years ago

0.11.0
------
1. Gtk3 support.
2. Better, and safer, lookup of file filters.
3. Correctly determine size of string needed for pidfile!
4. Add thunderbird, and LibreOffice apps, to list of gtk2 apps.
5. Cleanup usless stuff; remove kdialogd3, qt3, qt4, kgtk2-wrapper, kqt3-wrapper, kqt4-wrapper.
6. Merge kgtkXX-wrapper scripts into kgtk-wrapper
7. Install kdialogd4 into KDE4 libexec dir.
8. Fix crash where client is terminated whilst file dialog is open.
9. Configurable debug. Pass cmake -DKGTK_DEBUG=true
When starting app, set KGTK_DEBUG env var, e.g.

KGTK_DEBUG=0x10 kgtk-wrapper lowriter

0x01 Connection debug
0x02 General debug
0x04 Filter get and set debug
0x08 Filter creation debug
0x10 Custom widget debug
0x20 dlsym debug
Values may be combined

10. If LibreOffice is detected (app is libreoffice, lowriter, etc.) then also set the OOO_FORCE_DESKTOP env var to gnome, so that we get nicer
themeing.
11. When passing filters to KFileDialog, replace / with \/
12. Make filter combo non-editable.
13. When returning selected filter to Gtk app, also return the filter name and not just the file pattern. This way if two filters have the same file pattern the corrent one can be selected.
14. Support for checkbox custom widgets.
15. Save location history per app.

File (click to download) Version Description Filetype Packagetype License Downloads Date Filesize OCS-Install
Score 85%
85.00 Likes
15 Dislikes
Details
version
0.11.0
updated Nov 03 2011
added Mar 06 2006
downloads
page views 5498