From 657fecde373f7afb28aca14010fac42d375afc71 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 5 Aug 2017 07:35:45 +0530 Subject: [PATCH] Linux: fix native file dialog via kdialog not working on older KDE systems --- src/calibre/gui2/linux_file_dialogs.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/linux_file_dialogs.py b/src/calibre/gui2/linux_file_dialogs.py index de9420d55f..ff2fd8728b 100644 --- a/src/calibre/gui2/linux_file_dialogs.py +++ b/src/calibre/gui2/linux_file_dialogs.py @@ -114,8 +114,19 @@ def run(cmd): # KDE {{{ + +def kdialog_supports_desktopfile(): + ans = getattr(kdialog_supports_desktopfile, 'ans', None) + if ans is None: + raw = subprocess.check_output(['kdialog', '--help']).decode('utf-8') + ans = kdialog_supports_desktopfile.ans = '--desktopfile' in raw + return ans + + def kde_cmd(window, title, *rest): - ans = ['kdialog', '--desktopfile', 'calibre-gui', '--title', title] + ans = ['kdialog', '--title', title] + if kdialog_supports_desktopfile(): + ans += ['--desktopfile', 'calibre-gui'] winid = get_winid(window) if winid is not None: ans += ['--attach', str(int(winid))]