index.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
  7. <title>searx-qt documentation</title>
  8. <style type="text/css">
  9. /*
  10. :Author: CYBERDEViL
  11. :Contact: cyberdevilnl at protonmail d0t com
  12. :Copyright: This stylesheet has been placed in the public domain.
  13. Stylesheet for use with Docutils.
  14. https://docutils.sourceforge.io/docs/howto/html-stylesheets.html
  15. */
  16. @import url(html4css1.css);
  17. /*indent sections a little*/
  18. .section {
  19. margin-left: 12px;
  20. }
  21. /*indent section contents a little*/
  22. p, pre, table {
  23. margin-left: 12px;
  24. }
  25. pre {
  26. background-color: #efefef;
  27. border: 1px solid #dfdfdf;
  28. }
  29. h1 {
  30. background-color: #cfcfcf;
  31. }
  32. img.align-right {
  33. clear: right ;
  34. float: right ;
  35. margin-left: 1em
  36. }
  37. </style>
  38. </head>
  39. <body>
  40. <div class="document">
  41. <div class="section" id="searx-qt">
  42. <h1>searx-qt</h1>
  43. <div class="section" id="lightweight-desktop-application-for-searx">
  44. <h2>Lightweight desktop application for searx</h2>
  45. <p>This document is work in progress; as is the searx-qt project.</p>
  46. </div>
  47. </div>
  48. <div class="section" id="id1">
  49. <span id="index"></span><h1>Index</h1>
  50. <ul class="simple">
  51. <li><a class="reference internal" href="#index">Index</a></li>
  52. <li><a class="reference internal" href="#about">About</a></li>
  53. <li><ul class="first">
  54. <li><a class="reference internal" href="#about-summary">Summary</a></li>
  55. </ul>
  56. </li>
  57. <li><ul class="first">
  58. <li><a class="reference internal" href="#about-source">Source</a></li>
  59. </ul>
  60. </li>
  61. <li><ul class="first">
  62. <li><a class="reference internal" href="#about-license">License</a></li>
  63. </ul>
  64. </li>
  65. <li><ul class="first">
  66. <li><a class="reference internal" href="#about-dependencies">Dependencies</a></li>
  67. </ul>
  68. </li>
  69. <li><a class="reference internal" href="#getting-started">Getting started</a></li>
  70. <li><ul class="first">
  71. <li><a class="reference internal" href="#getting-started-install-dependencies">Install dependencies</a></li>
  72. </ul>
  73. </li>
  74. <li><ul class="first">
  75. <li><a class="reference internal" href="#getting-started-installation">Installation</a></li>
  76. </ul>
  77. </li>
  78. <li><a class="reference internal" href="#usage">Usage</a></li>
  79. <li><ul class="first">
  80. <li><a class="reference internal" href="#usage-settings">Settings</a></li>
  81. </ul>
  82. </li>
  83. <li><ul class="first">
  84. <li><a class="reference internal" href="#usage-instances">Instances</a></li>
  85. </ul>
  86. </li>
  87. <li><ul class="first">
  88. <li><a class="reference internal" href="#usage-search">Search</a></li>
  89. </ul>
  90. </li>
  91. </ul>
  92. </div>
  93. <div class="section" id="id2">
  94. <span id="about"></span><h1>About</h1>
  95. <div class="section" id="summary">
  96. <span id="about-summary"></span><h2>Summary</h2>
  97. <p>searx-qt is a lightweight desktop application that lets you search on
  98. public searx instances listed on <cite>https://searx.space</cite>.</p>
  99. <p>Technically searx-qt is a client application that does magic with the searx
  100. API and searx-stats2 it's instances.json</p>
  101. <div class="section" id="searx">
  102. <h3>searx</h3>
  103. <p>Actual search requests will be made to a server running searx software, there
  104. are many public available. We call such servers 'instances'.</p>
  105. <p>If you are not familiar with the searx project; you can checkout their page
  106. here: <a class="reference external" href="https://asciimoo.github.io/searx/">https://asciimoo.github.io/searx/</a> or <a class="reference external" href="https://searx.me/">https://searx.me/</a></p>
  107. <ul class="simple">
  108. <li>API Docs: <a class="reference external" href="https://asciimoo.github.io/searx/dev/search_api.html">https://asciimoo.github.io/searx/dev/search_api.html</a></li>
  109. <li>Source: <a class="reference external" href="https://github.com/asciimoo/searx">https://github.com/asciimoo/searx</a></li>
  110. <li>License: GPLv3</li>
  111. </ul>
  112. </div>
  113. <div class="section" id="searx-stats2">
  114. <h3>searx-stats2</h3>
  115. <p>The searx-stats2 project lists public searx instances with statistics. The
  116. original instance is running at <a class="reference external" href="https://searx.space/">https://searx.space/</a>. This is where searx-qt
  117. will request a list with instances when the update button is pressed.</p>
  118. <ul class="simple">
  119. <li>Source: <a class="reference external" href="https://github.com/dalf/searx-stats2">https://github.com/dalf/searx-stats2</a></li>
  120. <li>License: GPLv3</li>
  121. </ul>
  122. </div>
  123. </div>
  124. <div class="section" id="source">
  125. <span id="about-source"></span><h2>Source</h2>
  126. <ul class="simple">
  127. <li>git: <a class="reference external" href="https://notabug.org/CYBERDEViL/searx-qt">https://notabug.org/CYBERDEViL/searx-qt</a></li>
  128. <li>ssh: <a class="reference external" href="mailto:git&#64;notabug.org">git&#64;notabug.org</a>:CYBERDEViL/searx-qt.git</li>
  129. </ul>
  130. </div>
  131. <div class="section" id="license">
  132. <span id="about-license"></span><h2>License</h2>
  133. <ul class="simple">
  134. <li>GPLv3</li>
  135. <li><a class="reference external" href="https://www.gnu.org/licenses/gpl-3.0.en.html">https://www.gnu.org/licenses/gpl-3.0.en.html</a></li>
  136. </ul>
  137. </div>
  138. <div class="section" id="dependencies">
  139. <span id="about-dependencies"></span><h2>Dependencies</h2>
  140. <table border="1" class="docutils">
  141. <colgroup>
  142. <col width="10%" />
  143. <col width="11%" />
  144. <col width="11%" />
  145. <col width="68%" />
  146. </colgroup>
  147. <thead valign="bottom">
  148. <tr><th class="head">name</th>
  149. <th class="head">version</th>
  150. <th class="head">license</th>
  151. <th class="head">URL</th>
  152. </tr>
  153. </thead>
  154. <tbody valign="top">
  155. <tr><td>python</td>
  156. <td>3</td>
  157. <td>PSFL</td>
  158. <td><a class="reference external" href="https://docs.python.org/3/license.html">https://docs.python.org/3/license.html</a></td>
  159. </tr>
  160. <tr><td>requests</td>
  161. <td>&nbsp;</td>
  162. <td>Apache 2</td>
  163. <td><a class="reference external" href="http://docs.python-requests.org/en/master/">http://docs.python-requests.org/en/master/</a></td>
  164. </tr>
  165. <tr><td>PyQt5</td>
  166. <td>&nbsp;</td>
  167. <td>GPLv3</td>
  168. <td><a class="reference external" href="https://www.riverbankcomputing.com/software/pyqt/intro">https://www.riverbankcomputing.com/software/pyqt/intro</a></td>
  169. </tr>
  170. </tbody>
  171. </table>
  172. <p>Optional for socks proxy support:</p>
  173. <table border="1" class="docutils">
  174. <colgroup>
  175. <col width="14%" />
  176. <col width="15%" />
  177. <col width="15%" />
  178. <col width="56%" />
  179. </colgroup>
  180. <thead valign="bottom">
  181. <tr><th class="head">name</th>
  182. <th class="head">version</th>
  183. <th class="head">license</th>
  184. <th class="head">URL</th>
  185. </tr>
  186. </thead>
  187. <tbody valign="top">
  188. <tr><td>pysocks</td>
  189. <td>&nbsp;</td>
  190. <td>BSD</td>
  191. <td><a class="reference external" href="https://github.com/Anorov/PySocks">https://github.com/Anorov/PySocks</a></td>
  192. </tr>
  193. </tbody>
  194. </table>
  195. </div>
  196. </div>
  197. <div class="section" id="id3">
  198. <span id="getting-started"></span><h1>Getting started</h1>
  199. <div class="section" id="install-dependencies">
  200. <span id="getting-started-install-dependencies"></span><h2>Install dependencies</h2>
  201. <div class="section" id="debian-ubuntu-based">
  202. <h3>Debian / Ubuntu based</h3>
  203. <p>Install required dependencies:</p>
  204. <pre class="literal-block">
  205. # apt update
  206. # apt upgrade
  207. # apt install python3 python3-requests python3-pyqt5
  208. </pre>
  209. <p><strong>Optional</strong> for socks proxy support:</p>
  210. <pre class="literal-block">
  211. # apt install python3-socks
  212. </pre>
  213. </div>
  214. <div class="section" id="arch-based">
  215. <h3>Arch based</h3>
  216. <p>Install required dependencies:</p>
  217. <pre class="literal-block">
  218. # pacman -Syu python python-requests python-pyqt5
  219. </pre>
  220. <p><strong>Optional</strong> for socks proxy support:</p>
  221. <pre class="literal-block">
  222. # pacman -S python-pysocks
  223. </pre>
  224. </div>
  225. </div>
  226. <div class="section" id="installation">
  227. <span id="getting-started-installation"></span><h2>Installation</h2>
  228. <p>TODO</p>
  229. </div>
  230. </div>
  231. <div class="section" id="id4">
  232. <span id="usage"></span><h1>Usage</h1>
  233. <div class="section" id="settings">
  234. <span id="usage-settings"></span><h2>Settings</h2>
  235. <img alt="images/settings.png" class="align-right" src="images/settings.png" />
  236. <div class="section" id="verify-ssl">
  237. <h3>Verify (SSL)</h3>
  238. <p>Request will fail on a invalid SSL/TLS certificate.</p>
  239. <p>Leave checked if unsure.</p>
  240. <p>See <a class="reference external" href="https://requests.readthedocs.io/en/master/user/advanced/#ssl-cert-verification">https://requests.readthedocs.io/en/master/user/advanced/#ssl-cert-verification</a>
  241. for a more technical description.</p>
  242. </div>
  243. <div class="section" id="timeout">
  244. <h3>Timeout</h3>
  245. <p>Timeout in seconds for a single request.</p>
  246. <p>Leave it at the default value of 10 seconds if unsure.</p>
  247. <p>See <a class="reference external" href="https://requests.readthedocs.io/en/master/user/advanced/#timeouts">https://requests.readthedocs.io/en/master/user/advanced/#timeouts</a> for a
  248. more technical description.</p>
  249. </div>
  250. <div class="section" id="proxy">
  251. <h3>Proxy</h3>
  252. <p>Here you can set a proxy that will be used for every connection searx-qt
  253. makes. Leave the input field blank to use no proxy.</p>
  254. <p>The 'Http' section can be used to proxy plain <a class="reference external" href="http://">http://</a> requests to for
  255. example instances without a certificate. The 'Https' section can be used
  256. to proxy all <a class="reference external" href="https://">https://</a> requests to instances (including fetching the
  257. instances list data from <a class="reference external" href="https://searx.space">https://searx.space</a>) with a certificate. So you
  258. can use a separate proxy for both protocols.</p>
  259. <p>If you use a socks4 or socks5 proxy you probably want to make sure the
  260. 'Proxy DNS' checkbox is checked so DNS requests will also go through the
  261. proxy. DNS proxy is not available for a http proxy type.</p>
  262. </div>
  263. </div>
  264. <div class="section" id="instances">
  265. <span id="usage-instances"></span><h2>Instances</h2>
  266. <img alt="images/instances.png" class="align-right" src="images/instances.png" />
  267. <p>A instance is a server running the searx project. Since we want to
  268. preform searches to searx instance(s) we need addresses of those
  269. instance(s); those will be fetched from
  270. <tt class="docutils literal"><span class="pre">https://searx.space/data/instances.json</span></tt>. The <tt class="docutils literal">instances.json</tt>
  271. from <tt class="docutils literal">search.space</tt> also contains a lot of other data about the
  272. instances it lists which we can use to filter instances based on our
  273. preferences.</p>
  274. <p>The interface to manage instances is on the right. This is used to update
  275. the instances data with a press on the 'Update' button; filter the
  276. instances and browse/use the leftover instances in the instances table.</p>
  277. <div class="section" id="update-instances-table">
  278. <h3>Update instances table</h3>
  279. <p>If searx-qt is used for the first time you will need to update the
  280. instances table. There is a 'Update' button between the Filter and the
  281. Table that can be used for this. searx-qt will not update this automatically!</p>
  282. <p>It maybe useful to update the instances data so now and then since public
  283. instances appear, disappear and their stats change over time.</p>
  284. </div>
  285. <div class="section" id="instances-table">
  286. <h3>Instances table</h3>
  287. <p>The instances table can be used to browse instances with their data that
  288. remain after all filters. The table is also used to set the current
  289. instance by left-clicking on one.</p>
  290. <p>Right-clicking in the table opens a context-menu from where you can do the following:</p>
  291. <ul class="simple">
  292. <li>Blacklist selected instance(s).</li>
  293. <li>Copy selected instance(s) it's/their URL(s).</li>
  294. <li>Select All instances (CTRL+A should do the same).</li>
  295. <li>Hide or show columns.</li>
  296. </ul>
  297. <p>The currently used instance should also be visible bottom right in the
  298. application it's status-bar.</p>
  299. </div>
  300. <div class="section" id="filter-instances">
  301. <h3>Filter instances</h3>
  302. <p>When a filter is enabled and the instance it's value that is being
  303. matched is unknown then it is excluded by default!</p>
  304. <div class="section" id="network">
  305. <h4>Network</h4>
  306. <p>Filter instances on network type. Only instances that match one of the
  307. checked network types remain.</p>
  308. </div>
  309. <div class="section" id="require-asn-privacy">
  310. <h4>Require ASN privacy</h4>
  311. <p>Excludes instances that use a known MITM reverse proxy service like
  312. CloudFlare.</p>
  313. </div>
  314. <div class="section" id="require-ipv6">
  315. <h4>Require IPv6</h4>
  316. <p>Exclude instances that don't have at least one IPv6 address.</p>
  317. </div>
  318. <div class="section" id="version">
  319. <h4>Version</h4>
  320. <p>Include only instances that have a searx version that has been added to
  321. this widget. Leave empty to allow all searx version.</p>
  322. </div>
  323. <div class="section" id="blacklist">
  324. <h4>Blacklist</h4>
  325. <p>Here are the URLs of the instances that have been manually blacklisted
  326. listed. There is a button right to each blacklist item to remove it from
  327. the blacklist.</p>
  328. <p>You can manually blacklist a instance by right clicking on a instance in
  329. the instances table and click 'Add to blacklist'; multiple instances can
  330. be blacklisted at once.</p>
  331. </div>
  332. </div>
  333. </div>
  334. <div class="section" id="search">
  335. <span id="usage-search"></span><h2>Search</h2>
  336. <div class="section" id="search-bar">
  337. <h3>Search bar</h3>
  338. <img alt="images/search_bar.png" src="images/search_bar.png" />
  339. <div class="section" id="fallback">
  340. <h4>Fallback</h4>
  341. <p>If checked it will pick a random instance from the instances table if a
  342. search request fails one way or another and re-try the same request with
  343. the freshly picked instance. There is a maximum amount of 10 tries (10
  344. different instances to try the same request on).</p>
  345. <p>What is fail?</p>
  346. <ul class="simple">
  347. <li>Connection errors including timeout.</li>
  348. <li>Wrong status code (not 200).</li>
  349. <li>No or malformed results returned.</li>
  350. </ul>
  351. </div>
  352. <div class="section" id="random-every">
  353. <h4>Random every</h4>
  354. <p>If checked it will automatically pick a random instance on a search request,
  355. it will also hide the 'Random search button' because it makes it obsolete.</p>
  356. <p>If not checked it will do search requests on the same instance unless the
  357. request fails somehow and 'Fallback' is checked. Exception is when the
  358. 'Random search button' is used for the search request.</p>
  359. </div>
  360. <div class="section" id="random-search-button">
  361. <h4>Random search button</h4>
  362. <p>When pressed it will pick a random instance from the list and preform the
  363. search request.</p>
  364. </div>
  365. <div class="section" id="reload-button">
  366. <h4>Reload button</h4>
  367. <p>When pressed it basically preforms a search request without 'Fallback'
  368. whenever it is enabled or not, it also doesn't reset the page number. So
  369. it can act as a reload button thus it's name, but it does more.</p>
  370. <p>Note: When a search argument like the search query, instance URL,
  371. categories/engines etc. has changed by user interaction it will do the
  372. request with those changes, that isn't a real reload of the previous
  373. request.</p>
  374. <p>Dev-note: Probably this behavior should change or the name/icon should
  375. change to something more fitting.</p>
  376. </div>
  377. <div class="section" id="search-button">
  378. <h4>Search button</h4>
  379. <p>Preform a search request on the currently selected instance.</p>
  380. <p>Page number is reset, 'Fallback' and 'Random Every' options are honored.</p>
  381. </div>
  382. <div class="section" id="search-query-input">
  383. <h4>Search query input</h4>
  384. <p>The query you like to search for.</p>
  385. <p>See <a class="reference external" href="https://asciimoo.github.io/searx/user/search_syntax.html">https://asciimoo.github.io/searx/user/search_syntax.html</a> for what is
  386. possible.</p>
  387. <p>It will do a search request on <tt class="docutils literal">enter</tt> key pressed, same behavior as when the 'Search button' has been pressed.</p>
  388. </div>
  389. </div>
  390. <div class="section" id="search-options">
  391. <h3>Search options</h3>
  392. <img alt="images/search_options.png" src="images/search_options.png" />
  393. <p>Right clicking in (on the picture above) the dark area opens a
  394. context-menu where you can manage what options you want to be visible or
  395. not.</p>
  396. <div class="section" id="categories">
  397. <span id="usage-search-options-categories"></span><h4>Categories</h4>
  398. <p>These are predefined by searx but can vary by instance. Example if
  399. 'Images' is checked it will only use engines with images enabled. If
  400. 'Files' is checked it will only use engines with files enabled.</p>
  401. <p>searx-qt only passes this info to a searx instance with a search request,
  402. it will not automatically filter the instances table (yet).</p>
  403. </div>
  404. <div class="section" id="engines">
  405. <h4>Engines</h4>
  406. <p>Here you can toggle what search engines should be enabled. It will
  407. automatically filter out all instances from the instances table that doesn't
  408. have at least one of the checked engines enabled. The checked engines will
  409. be send with a search request to a searx instance with the <cite>enabled_engines</cite>
  410. param. You should only get results from engines that are checked.</p>
  411. <p>If no engine is checked it means that it may return results of any engine
  412. in the list, unless one or more of the <a class="reference internal" href="#usage-search-options-categories">categories</a> are checked.</p>
  413. <p>The list with engines is created with data from the instances table, so
  414. only engines are listed that are available from the instances table.</p>
  415. </div>
  416. <div class="section" id="period">
  417. <h4>Period</h4>
  418. <p>Search period you like results from. Options are <tt class="docutils literal">Last day</tt>,
  419. <tt class="docutils literal">Last week</tt>, <tt class="docutils literal">Last month</tt> or <tt class="docutils literal">Last year</tt>.</p>
  420. </div>
  421. <div class="section" id="language">
  422. <h4>Language</h4>
  423. <p>If you want results in a specific language than you can select one here.</p>
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. </div>
  429. <div class="footer">
  430. <hr class="footer" />
  431. <a class="reference external" href="https://notabug.org/CYBERDEViL/searx-qt/raw/master/docs/index.rst">View document source</a>.
  432. Generated on: 2020-06-30 21:30 UTC.
  433. Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
  434. </div>
  435. </body>
  436. </html>