From d41cc01560e10df6d0c7e05845dd3ec4db8ceea1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 11 Nov 2020 11:16:08 +0530 Subject: [PATCH] Add support for file URLs as command line arguents --- src/calibre/gui2/ui.py | 13 ++++++++++++- src/calibre/linux.py | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index a76f04e9b3..c63dd2beab 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -601,12 +601,12 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ self.tags_view.recount() def handle_cli_args(self, args): + from urllib.parse import unquote, urlparse, parse_qs if isinstance(args, string_or_bytes): args = [args] files, urls = [], [] for p in args: if p.startswith('calibre://'): - from urllib.parse import unquote, urlparse, parse_qs try: purl = urlparse(p) if purl.scheme == 'calibre': @@ -617,6 +617,17 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ except Exception: prints('Ignoring malformed URL:', p, file=sys.stderr) continue + elif p.startswith('file://'): + try: + purl = urlparse(p) + if purl.scheme == 'file': + path = unquote(purl.path) + a = os.path.abspath(path) + if not os.path.isdir(a) and os.access(a, os.R_OK): + files.append(a) + except Exception: + prints('Ignoring malformed URL:', p, file=sys.stderr) + continue else: a = os.path.abspath(p) if not os.path.isdir(a) and os.access(a, os.R_OK): diff --git a/src/calibre/linux.py b/src/calibre/linux.py index 4acc969198..a315fa6bc1 100644 --- a/src/calibre/linux.py +++ b/src/calibre/linux.py @@ -1129,7 +1129,7 @@ Name=calibre GenericName=E-book library management Comment=E-book library management: Convert, view, share, catalogue all your e-books TryExec=calibre -Exec=calibre --detach %F +Exec=calibre --detach %U Icon=calibre-gui Categories=Office; X-GNOME-UsesNotifications=true