diff --git a/manual/url_scheme.rst b/manual/url_scheme.rst index 24a44e531c..ae680ab783 100644 --- a/manual/url_scheme.rst +++ b/manual/url_scheme.rst @@ -81,6 +81,18 @@ search expression is complicated, :ref:`encode it as a hex string and use ``eq`` instead. Leaving out the query will cause the current search to be cleared. +By default, if a Virtual library is selected, calibre will clear it before +doing the search to ensure all books are found. If you want to preserve the +Virtual library, use:: + + calibre://search/Library_Name?q=query&virtual_library=_ + +If you want to switch to a particular Virtual library, use:: + + calibre://search/Library_Name?virtual_library=Library%20Name + +replacing spaces in the Virtual library name by ``%20``. + .. _hex_encoding: diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 66038e8ade..3d4acd7c18 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -718,8 +718,13 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ if sq: sq = sq[0] sq = sq or '' + vl = (query.get('virtual_library') or ['-'])[0] + if vl == '-': + vl = None def doit(): + if vl != '_': + self.apply_virtual_library(vl) self.search.set_search_string(sq) self.perform_url_action(library_id, library_path, doit)