index.html 56 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  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.20.1: https://docutils.sourceforge.io/" />
  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. body {
  18. max-width: 800px;
  19. background-color: #161616;
  20. color: #bcb;
  21. }
  22. a {
  23. color: #11aa11;
  24. }
  25. table {
  26. border: none;
  27. background-color: #191919;
  28. }
  29. tr {
  30. border: none;
  31. }
  32. th {
  33. border: none;
  34. text-align: left;
  35. }
  36. td {
  37. border: none;
  38. border-bottom: 1px solid #114411;
  39. text-align: left;
  40. }
  41. /*indent sections a little*/
  42. .section {
  43. margin-left: 12px;
  44. }
  45. /*indent section contents a little*/
  46. p, pre, table {
  47. margin-left: 12px;
  48. }
  49. pre {
  50. font-family: monospace;
  51. background-color: #222;
  52. border: 1px solid #111;
  53. padding: 5px;
  54. }
  55. h1 {
  56. background-color: #222;
  57. padding: 6px;
  58. }
  59. h1 a {
  60. color: #fff;
  61. text-decoration: none;
  62. }
  63. h1 a:hover {
  64. text-decoration: underline;
  65. }
  66. img.header {
  67. max-width: 800px;
  68. height: auto;
  69. width: 100%;
  70. }
  71. img.align-right {
  72. clear: right;
  73. float: right;
  74. margin-left: 1em
  75. }
  76. </style>
  77. </head>
  78. <body>
  79. <div class="document">
  80. <div class="section" id="searx-qt">
  81. <h1>Searx-Qt</h1>
  82. <div class="section" id="desktop-client-application-for-searx-searxng-searx-space">
  83. <h2>Desktop client application for Searx/SearXNG/searx-space</h2>
  84. <p>This is documentation for Searx-Qt version 0.6.0-alpha1</p>
  85. <img alt="Searx-Qt v0.4 screenshot." class="header" src="images/screenshot_0_4a1.png" />
  86. </div>
  87. </div>
  88. <div class="section" id="index-1">
  89. <span id="index"></span><h1>Index</h1>
  90. <ul class="simple">
  91. <li><a class="reference internal" href="#index">Index</a></li>
  92. <li><a class="reference internal" href="#about">About</a></li>
  93. <li><ul class="first">
  94. <li><a class="reference internal" href="#about-summary">Summary</a></li>
  95. </ul>
  96. </li>
  97. <li><ul class="first">
  98. <li><a class="reference internal" href="#about-source">Source</a></li>
  99. </ul>
  100. </li>
  101. <li><ul class="first">
  102. <li><a class="reference internal" href="#about-license">License</a></li>
  103. </ul>
  104. </li>
  105. <li><ul class="first">
  106. <li><a class="reference internal" href="#about-dependencies">Dependencies</a></li>
  107. </ul>
  108. </li>
  109. <li><ul class="first">
  110. <li><a class="reference internal" href="#about-translations">Translations</a></li>
  111. </ul>
  112. </li>
  113. <li><ul class="first">
  114. <li><a class="reference internal" href="#about-contact">Contact</a></li>
  115. </ul>
  116. </li>
  117. <li><a class="reference internal" href="#getting-started">Getting started</a></li>
  118. <li><ul class="first">
  119. <li><a class="reference internal" href="#getting-started-install-dependencies">Install dependencies</a></li>
  120. </ul>
  121. </li>
  122. <li><ul class="first">
  123. <li><a class="reference external" href="getting_started/start_without_install">Start without install</a></li>
  124. </ul>
  125. </li>
  126. <li><ul class="first">
  127. <li><a class="reference internal" href="#getting-started-installation">Installation</a></li>
  128. </ul>
  129. </li>
  130. <li><a class="reference internal" href="#usage">Usage</a></li>
  131. <li><ul class="first">
  132. <li><a class="reference internal" href="#usage-profiles">Profiles</a></li>
  133. </ul>
  134. </li>
  135. <li><ul class="first">
  136. <li><a class="reference internal" href="#usage-settings">Settings</a></li>
  137. </ul>
  138. </li>
  139. <li><ul class="first">
  140. <li><ul class="first">
  141. <li><a class="reference internal" href="#usage-settings-general">General</a></li>
  142. </ul>
  143. </li>
  144. </ul>
  145. </li>
  146. <li><ul class="first">
  147. <li><ul class="first">
  148. <li><a class="reference internal" href="#usage-settings-connection">Connection</a></li>
  149. </ul>
  150. </li>
  151. </ul>
  152. </li>
  153. <li><ul class="first">
  154. <li><ul class="first">
  155. <li><a class="reference internal" href="#usage-settings-searxng">SearXNG</a></li>
  156. </ul>
  157. </li>
  158. </ul>
  159. </li>
  160. <li><ul class="first">
  161. <li><ul class="first">
  162. <li><a class="reference internal" href="#usage-settings-searxspace">Searx-Space</a></li>
  163. </ul>
  164. </li>
  165. </ul>
  166. </li>
  167. <li><ul class="first">
  168. <li><ul class="first">
  169. <li><a class="reference internal" href="#usage-settings-guard">Guard</a></li>
  170. </ul>
  171. </li>
  172. </ul>
  173. </li>
  174. <li><ul class="first">
  175. <li><a class="reference internal" href="#usage-instances">Instances</a></li>
  176. </ul>
  177. </li>
  178. <li><ul class="first">
  179. <li><a class="reference internal" href="#usage-search">Search</a></li>
  180. </ul>
  181. </li>
  182. <li><a class="reference internal" href="#troubleshooting">Troubleshooting</a></li>
  183. <li><ul class="first">
  184. <li><a class="reference internal" href="#troubleshooting-wontstart">Searx-Qt won't start</a></li>
  185. </ul>
  186. </li>
  187. <li><a class="reference internal" href="#development">Development</a></li>
  188. <li><ul class="first">
  189. <li><a class="reference internal" href="#development-themes">Themes</a></li>
  190. </ul>
  191. </li>
  192. <li><ul class="first">
  193. <li><a class="reference internal" href="#development-translations">Translations</a></li>
  194. </ul>
  195. </li>
  196. </ul>
  197. </div>
  198. <div class="section" id="about-1">
  199. <span id="about"></span><h1><a class="reference internal" href="#about">About</a></h1>
  200. <div class="section" id="summary">
  201. <span id="about-summary"></span><h2><a class="reference internal" href="#about-summary">Summary</a></h2>
  202. <p>Search with <tt class="docutils literal">Searx</tt>/<tt class="docutils literal">SearXNG</tt> instances without the need for a complex
  203. web-browser.</p>
  204. <p>Searx-Qt is a desktop application that lets you search on
  205. public <tt class="docutils literal">SearXNG</tt> instances listed on <tt class="docutils literal"><span class="pre">https://searx.space</span></tt> (or you
  206. can add <tt class="docutils literal">Searx</tt> or <tt class="docutils literal">SearXNG</tt> instance urls manually).</p>
  207. <p>The aim of the project is to preform search operations on <tt class="docutils literal">Searx</tt>/
  208. <tt class="docutils literal">SearXNG</tt> instances with the use of their API and without the need for a
  209. complex web-browser. <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> will do the bare minimum of what is
  210. required to search, no cookies and no javascript. Just render a
  211. <tt class="docutils literal">Searx</tt>/<tt class="docutils literal">SearXNG</tt> API request to something usefull.</p>
  212. <p>Unfortunately most public <tt class="docutils literal">SearXNG</tt> instances actively block requests to
  213. their <tt class="docutils literal"><span class="pre">JSON-API</span></tt>. <em>But don't worry!</em> Thats why there is a option in the
  214. <a class="reference internal" href="#usage-settings-searxng">SearXNG settings</a> (which is on by default) to
  215. parse <tt class="docutils literal">HTML</tt> instead, and still no javascript and no cookies.</p>
  216. <p>Since version <tt class="docutils literal">0.2</tt> it is also possible to manage your own (private?)
  217. instances with the use of a 'user' profile.</p>
  218. <div class="section" id="searx">
  219. <h3>Searx</h3>
  220. <p>The <tt class="docutils literal">Searx</tt> project is no longer maintained but for now <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt>
  221. will still support it.</p>
  222. <ul class="simple">
  223. <li>API Docs: <a class="reference external" href="https://searx.github.io/searx/dev/search_api.html">https://searx.github.io/searx/dev/search_api.html</a></li>
  224. <li>Source: <a class="reference external" href="https://github.com/searx/searx">https://github.com/searx/searx</a></li>
  225. <li>License: AGPL3</li>
  226. <li>Status: Inactive</li>
  227. </ul>
  228. </div>
  229. <div class="section" id="searxng">
  230. <h3>SearXNG</h3>
  231. <ul class="simple">
  232. <li>API Docs: <a class="reference external" href="https://docs.searxng.org/dev/search_api.html">https://docs.searxng.org/dev/search_api.html</a></li>
  233. <li>Source: <a class="reference external" href="https://github.com/searxng/searxng">https://github.com/searxng/searxng</a></li>
  234. <li>License: AGPL3</li>
  235. <li>Status: Active</li>
  236. </ul>
  237. </div>
  238. <div class="section" id="searx-space">
  239. <h3>searx-space</h3>
  240. <p>The <tt class="docutils literal"><span class="pre">searx-space</span></tt> project lists public <tt class="docutils literal">SearXNG</tt> instances with
  241. statistics. The official instance is running at <tt class="docutils literal"><span class="pre">https://searx.space/</span></tt>.
  242. This is where <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> will request a list with instances when the update
  243. button is pressed by default (the <tt class="docutils literal"><span class="pre">searx-space</span></tt> url can be changed in the
  244. settings).</p>
  245. <ul class="simple">
  246. <li>Source: <a class="reference external" href="https://github.com/searxng/searx-space">https://github.com/searxng/searx-space</a></li>
  247. <li>License: AGPL3</li>
  248. </ul>
  249. </div>
  250. </div>
  251. <div class="section" id="source">
  252. <span id="about-source"></span><h2><a class="reference internal" href="#about-source">Source</a></h2>
  253. <p><a class="reference external" href="https://notabug.org/CYBERDEViL/searx-qt">https://notabug.org/CYBERDEViL/searx-qt</a></p>
  254. </div>
  255. <div class="section" id="license">
  256. <span id="about-license"></span><h2><a class="reference internal" href="#about-license">License</a></h2>
  257. <ul class="simple">
  258. <li>GPL3 <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>
  259. </ul>
  260. </div>
  261. <div class="section" id="dependencies">
  262. <span id="about-dependencies"></span><h2><a class="reference internal" href="#about-dependencies">Dependencies</a></h2>
  263. <table border="1" class="docutils">
  264. <colgroup>
  265. <col width="16%" />
  266. <col width="10%" />
  267. <col width="10%" />
  268. <col width="63%" />
  269. </colgroup>
  270. <thead valign="bottom">
  271. <tr><th class="head">name</th>
  272. <th class="head">version</th>
  273. <th class="head">license</th>
  274. <th class="head">URL</th>
  275. </tr>
  276. </thead>
  277. <tbody valign="top">
  278. <tr><td>python</td>
  279. <td>3</td>
  280. <td>PSFL</td>
  281. <td><a class="reference external" href="https://docs.python.org/3/license.html">https://docs.python.org/3/license.html</a></td>
  282. </tr>
  283. <tr><td>requests</td>
  284. <td><ul class="first last simple">
  285. <li></li>
  286. </ul>
  287. </td>
  288. <td>Apache 2</td>
  289. <td><a class="reference external" href="http://docs.python-requests.org/en/master/">http://docs.python-requests.org/en/master/</a></td>
  290. </tr>
  291. <tr><td>jsonschema</td>
  292. <td>&gt;= 4.10</td>
  293. <td>MIT</td>
  294. <td><a class="reference external" href="https://github.com/python-jsonschema/jsonschema">https://github.com/python-jsonschema/jsonschema</a></td>
  295. </tr>
  296. <tr><td>PyQt5</td>
  297. <td><ul class="first last simple">
  298. <li></li>
  299. </ul>
  300. </td>
  301. <td>GPL3</td>
  302. <td><a class="reference external" href="https://www.riverbankcomputing.com/software/pyqt/intro">https://www.riverbankcomputing.com/software/pyqt/intro</a></td>
  303. </tr>
  304. <tr><td>urllib3</td>
  305. <td><ul class="first last simple">
  306. <li></li>
  307. </ul>
  308. </td>
  309. <td>MIT</td>
  310. <td><a class="reference external" href="https://urllib3.readthedocs.io/">https://urllib3.readthedocs.io/</a></td>
  311. </tr>
  312. <tr><td>beautifulsoup4</td>
  313. <td><ul class="first last simple">
  314. <li></li>
  315. </ul>
  316. </td>
  317. <td>MIT</td>
  318. <td><a class="reference external" href="https://www.crummy.com/software/BeautifulSoup/">https://www.crummy.com/software/BeautifulSoup/</a></td>
  319. </tr>
  320. </tbody>
  321. </table>
  322. <p><strong>Optional</strong>:</p>
  323. <blockquote>
  324. <table border="1" class="docutils">
  325. <colgroup>
  326. <col width="10%" />
  327. <col width="12%" />
  328. <col width="12%" />
  329. <col width="24%" />
  330. <col width="42%" />
  331. </colgroup>
  332. <thead valign="bottom">
  333. <tr><th class="head">name</th>
  334. <th class="head">version</th>
  335. <th class="head">license</th>
  336. <th class="head">why</th>
  337. <th class="head">URL</th>
  338. </tr>
  339. </thead>
  340. <tbody valign="top">
  341. <tr><td>pysock</td>
  342. <td><ul class="first last simple">
  343. <li></li>
  344. </ul>
  345. </td>
  346. <td>BSD</td>
  347. <td>Socks proxy support</td>
  348. <td><a class="reference external" href="https://github.com/Anorov/PySocks">https://github.com/Anorov/PySocks</a></td>
  349. </tr>
  350. <tr><td>pillow</td>
  351. <td><ul class="first last simple">
  352. <li></li>
  353. </ul>
  354. </td>
  355. <td>BSD</td>
  356. <td>Thumbnail support</td>
  357. <td><a class="reference external" href="https://python-pillow.org">https://python-pillow.org</a></td>
  358. </tr>
  359. </tbody>
  360. </table>
  361. </blockquote>
  362. <p><strong>Building</strong>:</p>
  363. <blockquote>
  364. <table border="1" class="docutils">
  365. <colgroup>
  366. <col width="19%" />
  367. <col width="10%" />
  368. <col width="10%" />
  369. <col width="61%" />
  370. </colgroup>
  371. <thead valign="bottom">
  372. <tr><th class="head">name</th>
  373. <th class="head">version</th>
  374. <th class="head">license</th>
  375. <th class="head">URL</th>
  376. </tr>
  377. </thead>
  378. <tbody valign="top">
  379. <tr><td>gettext</td>
  380. <td><ul class="first last simple">
  381. <li></li>
  382. </ul>
  383. </td>
  384. <td>GPL</td>
  385. <td><a class="reference external" href="https://www.gnu.org/software/gettext/">https://www.gnu.org/software/gettext/</a></td>
  386. </tr>
  387. <tr><td>qt5-dev-tools</td>
  388. <td><ul class="first last simple">
  389. <li></li>
  390. </ul>
  391. </td>
  392. <td>GPL3</td>
  393. <td><a class="reference external" href="https://www.riverbankcomputing.com/software/pyqt/intro">https://www.riverbankcomputing.com/software/pyqt/intro</a></td>
  394. </tr>
  395. </tbody>
  396. </table>
  397. </blockquote>
  398. <p><strong>Packaging</strong>:</p>
  399. <blockquote>
  400. <table border="1" class="docutils">
  401. <colgroup>
  402. <col width="24%" />
  403. <col width="13%" />
  404. <col width="13%" />
  405. <col width="51%" />
  406. </colgroup>
  407. <thead valign="bottom">
  408. <tr><th class="head">name</th>
  409. <th class="head">version</th>
  410. <th class="head">license</th>
  411. <th class="head">URL</th>
  412. </tr>
  413. </thead>
  414. <tbody valign="top">
  415. <tr><td>python-build</td>
  416. <td><ul class="first last simple">
  417. <li></li>
  418. </ul>
  419. </td>
  420. <td>MIT</td>
  421. <td><a class="reference external" href="https://github.com/pypa/build">https://github.com/pypa/build</a></td>
  422. </tr>
  423. <tr><td>python-installer</td>
  424. <td><ul class="first last simple">
  425. <li></li>
  426. </ul>
  427. </td>
  428. <td>MIT</td>
  429. <td><a class="reference external" href="https://github.com/pypa/installer">https://github.com/pypa/installer</a></td>
  430. </tr>
  431. <tr><td>python-wheel</td>
  432. <td><ul class="first last simple">
  433. <li></li>
  434. </ul>
  435. </td>
  436. <td>MIT</td>
  437. <td><a class="reference external" href="https://pypi.python.org/pypi/wheel">https://pypi.python.org/pypi/wheel</a></td>
  438. </tr>
  439. <tr><td>python-setuptools</td>
  440. <td><ul class="first last simple">
  441. <li></li>
  442. </ul>
  443. </td>
  444. <td>PSF</td>
  445. <td><a class="reference external" href="https://pypi.org/project/setuptools/">https://pypi.org/project/setuptools/</a></td>
  446. </tr>
  447. </tbody>
  448. </table>
  449. </blockquote>
  450. </div>
  451. <div class="section" id="translations">
  452. <span id="about-translations"></span><h2><a class="reference internal" href="#about-translations">Translations</a></h2>
  453. <p>The default language is English.</p>
  454. <p>Since version <tt class="docutils literal">0.2</tt> Searx-Qt is able (application-wise, not search results)
  455. to be fully translated with the use of gettext and <cite>.po .pot</cite> files. However
  456. the only translation available currently is for the Dutch language. If you
  457. like to translate Searx-Qt in your language then you can find a example of how
  458. to do that in the <a class="reference internal" href="#development">development section</a>. Please consider
  459. opening a PR on <tt class="docutils literal"><span class="pre">https://notabug.org/CYBERDEViL/searx-qt</span></tt> after your
  460. translation has finished.</p>
  461. </div>
  462. <div class="section" id="contact">
  463. <span id="about-contact"></span><h2><a class="reference internal" href="#about-contact">Contact</a></h2>
  464. <p>Please open an issue on <tt class="docutils literal"><span class="pre">https://notabug.org/cyberdevil/searx-qt</span></tt>.</p>
  465. <p>You may also want to see if anyone is online on IRC at <tt class="docutils literal"><span class="pre">#searx-qt</span></tt> at
  466. <tt class="docutils literal">irc.libera.chat:6697</tt>.</p>
  467. </div>
  468. </div>
  469. <div class="section" id="getting-started-1">
  470. <span id="getting-started"></span><h1><a class="reference internal" href="#getting-started">Getting started</a></h1>
  471. <div class="section" id="install-dependencies">
  472. <span id="getting-started-install-dependencies"></span><h2><a class="reference internal" href="#getting-started-install-dependencies">Install dependencies</a></h2>
  473. <p><strong>Note:</strong> <tt class="docutils literal"><span class="pre">python-requests</span></tt> is also dependent on <tt class="docutils literal"><span class="pre">python-urllib3</span></tt> ;
  474. so <tt class="docutils literal"><span class="pre">python-urllib3</span></tt> will be installed with <tt class="docutils literal"><span class="pre">python-requests</span></tt>
  475. (No need to do a explicit install).</p>
  476. <div class="section" id="debian-ubuntu-based">
  477. <h3>Debian / Ubuntu based</h3>
  478. <p>Install required dependencies:</p>
  479. <pre class="literal-block">
  480. # apt update
  481. # apt upgrade
  482. # apt install python3 python3-requests python3-pyqt5 gettext \
  483. qtbase5-dev-tools python3-jsonschema python3-bs4 \
  484. python3-build python3-installer python3-wheel \
  485. python3-setuptools
  486. </pre>
  487. <p><strong>Optional</strong> for socks proxy support:</p>
  488. <pre class="literal-block">
  489. # apt install python3-socks
  490. </pre>
  491. <p><strong>Optional</strong> for thumbnail support:</p>
  492. <pre class="literal-block">
  493. # apt install python3-pillow
  494. </pre>
  495. </div>
  496. <div class="section" id="arch-based">
  497. <h3>Arch based</h3>
  498. <p>Install required dependencies:</p>
  499. <pre class="literal-block">
  500. # pacman -Syu python python-requests python-jsonschema python-pyqt5 \
  501. python-beautifulsoup4 python-build python-installer \
  502. python-wheel python-setuptools gettext qt5-tools
  503. </pre>
  504. <p><strong>Optional</strong> for socks proxy support:</p>
  505. <pre class="literal-block">
  506. # pacman -S python-pysocks
  507. </pre>
  508. <p><strong>Optional</strong> for thumbnail support:</p>
  509. <pre class="literal-block">
  510. # pacman -S python-pillow
  511. </pre>
  512. </div>
  513. </div>
  514. <div class="section" id="start-without-install-1">
  515. <span id="getting-started-start-without-install"></span><h2><a class="reference internal" href="#getting-started-start-without-install">Start without install</a></h2>
  516. <ol class="arabic">
  517. <li><p class="first">Creating a working directory and <tt class="docutils literal">cd</tt> in to it, you may
  518. change this to your own preference:</p>
  519. <pre class="literal-block">
  520. $ mkdir ~/git
  521. $ cd ~/git
  522. </pre>
  523. </li>
  524. <li><p class="first">Get the <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> source and <tt class="docutils literal">cd</tt> in to it:</p>
  525. <pre class="literal-block">
  526. $ git clone https://notabug.org/cyberdevil/searx-qt
  527. $ cd searx-qt
  528. </pre>
  529. </li>
  530. <li><p class="first">Compile locales and theme icons:</p>
  531. <pre class="literal-block">
  532. $ ./utils/locale_tool.sh -m all
  533. $ python3 ./utils/themes_tool.py make all
  534. </pre>
  535. </li>
  536. <li><p class="first">Copy <tt class="docutils literal"><span class="pre">searx-qt</span></tt> to current working directory:</p>
  537. <pre class="literal-block">
  538. $ cp bin/searx-qt ./
  539. </pre>
  540. </li>
  541. <li><p class="first">Run it :-):</p>
  542. <pre class="literal-block">
  543. $ ./searx-qt
  544. </pre>
  545. </li>
  546. </ol>
  547. </div>
  548. <div class="section" id="installation">
  549. <span id="getting-started-installation"></span><h2><a class="reference internal" href="#getting-started-installation">Installation</a></h2>
  550. <p>It is always recommended to let the package-manager of your system
  551. do the installing of software, so your package-manager will keep
  552. track of files installed. Only use <tt class="docutils literal">setup.py</tt> directly if you
  553. know what you are doing.</p>
  554. <p>Since Searx-Qt isn't available in any GNU/Linux distribution (yet?); the
  555. best option is to create a package for your distribution yourself from the
  556. latest release. This will also mean that you have to manually update
  557. Searx-Qt if there is a new version available.</p>
  558. <p><strong>Note:</strong> <a class="reference external" href="https://notabug.org/CYBERDEViL/searx-qt/releases">https://notabug.org/CYBERDEViL/searx-qt/releases</a></p>
  559. <p><strong>Note:</strong> noticed the <tt class="docutils literal">#</tt> or <tt class="docutils literal">$</tt> before every command? When there is a
  560. <tt class="docutils literal">$</tt> before the command, it should be run as a regular user. <tt class="docutils literal">#</tt> as root.</p>
  561. <div class="section" id="debian-based">
  562. <h3>Debian based</h3>
  563. <p>The steps below describes how to get a specific version of <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt>; then
  564. package and install it.</p>
  565. <ol class="arabic">
  566. <li><p class="first">Install some dependencies of this method:</p>
  567. <pre class="literal-block">
  568. # apt install git wget
  569. </pre>
  570. </li>
  571. <li><p class="first">Creating a working directory and <tt class="docutils literal">cd</tt> in to it, you may
  572. change this to your own preference:</p>
  573. <pre class="literal-block">
  574. $ mkdir ~/git
  575. $ cd ~/git
  576. </pre>
  577. </li>
  578. <li><p class="first">Cloning the repository and <tt class="docutils literal">cd</tt> in to it:</p>
  579. <pre class="literal-block">
  580. $ git clone &quot;https://notabug.org/CYBERDEViL/searx-qt.git&quot; &quot;searx-qt&quot;
  581. $ cd searx-qt
  582. </pre>
  583. </li>
  584. <li><p class="first">Checkout a specific version:</p>
  585. </li>
  586. </ol>
  587. <blockquote>
  588. <p><strong>Note:</strong> get a list with available tags (versions) with the
  589. <tt class="docutils literal">git tag</tt> command.</p>
  590. <p>Below is a example to checkout version <tt class="docutils literal"><span class="pre">0.6-alpha1</span></tt>:</p>
  591. <pre class="literal-block">
  592. $ git checkout 0.6-alpha1
  593. </pre>
  594. </blockquote>
  595. <ol class="arabic" start="5">
  596. <li><p class="first">Create .deb:</p>
  597. <pre class="literal-block">
  598. $ cd distro/debian/searx-qt-this
  599. $ ../makedeb.sh
  600. </pre>
  601. </li>
  602. <li><p class="first">Install the created package:</p>
  603. <pre class="literal-block">
  604. # dpkg -i python3-searx-qt_0.6-alpha1-1_all.deb
  605. </pre>
  606. </li>
  607. </ol>
  608. </div>
  609. <div class="section" id="arch-based-1">
  610. <h3>Arch based</h3>
  611. <p>For Arch based distributions there is a package available in the AUR;
  612. <a class="reference external" href="https://aur.archlinux.org/packages/searx-qt/">https://aur.archlinux.org/packages/searx-qt/</a></p>
  613. <ol class="arabic">
  614. <li><p class="first">Make sure you have <tt class="docutils literal">git</tt> installed:</p>
  615. <pre class="literal-block">
  616. # pacman -S git
  617. </pre>
  618. </li>
  619. <li><p class="first">Creating a working directory and <tt class="docutils literal">cd</tt> in to it, you may change this
  620. to your own preference:</p>
  621. <pre class="literal-block">
  622. $ mkdir ~/pkg
  623. $ cd ~/pkg
  624. </pre>
  625. </li>
  626. <li><p class="first">Getting the <tt class="docutils literal">PKGBUILD</tt> from Arch AUR:</p>
  627. <pre class="literal-block">
  628. $ git clone https://aur.archlinux.org/searx-qt.git
  629. $ cd searx-qt
  630. </pre>
  631. </li>
  632. <li><p class="first">Build and install Searx-Qt package:</p>
  633. <pre class="literal-block">
  634. $ makepkg -si
  635. </pre>
  636. </li>
  637. </ol>
  638. </div>
  639. </div>
  640. </div>
  641. <div class="section" id="usage-1">
  642. <span id="usage"></span><h1><a class="reference internal" href="#usage">Usage</a></h1>
  643. <div class="section" id="profiles">
  644. <span id="usage-profiles"></span><h2><a class="reference internal" href="#usage-profiles">Profiles</a></h2>
  645. <img alt="Profiles window" class="align-right" src="images/profiles_window.png" />
  646. <p>Profiles are useful when you want to have different settings and/or data without
  647. to having to set it manually every-time. For example you can create a profile
  648. named <cite>Tor</cite> which has different proxy and stats2 settings then you normal
  649. profile.</p>
  650. <dl class="docutils">
  651. <dt>There are two types of profiles:</dt>
  652. <dd><ul class="first last simple">
  653. <li><cite>Stats2</cite> profile</li>
  654. <li><cite>User</cite> profile</li>
  655. </ul>
  656. </dd>
  657. </dl>
  658. <p>The profile type names maybe changed to something better, suggestions are
  659. welcome.</p>
  660. <p>Create a <cite>Stats2</cite> profile if you wish to get/update a list of Searx-instances
  661. from a <cite>Searx-Stats2</cite> instance. For example the default <cite>https://searx.space</cite>.</p>
  662. <p>Create a <cite>User</cite> profile if you wish to add/remove/update your own list with
  663. Searx-instances.</p>
  664. <blockquote>
  665. <div class="line-block">
  666. <div class="line"><strong>NOTE</strong>: Profile types cannot be changed after the creation of the profile,</div>
  667. <div class="line-block">
  668. <div class="line">but you can add multiple profiles of both types.</div>
  669. </div>
  670. </div>
  671. </blockquote>
  672. <div class="section" id="creating-new-profile">
  673. <h3>Creating new profile</h3>
  674. <p>On first usage of <cite>Searx-Qt</cite> you will need to create a new profile. The <cite>Add</cite>
  675. button (of the &quot;Profile select&quot; window) will open a dialog to do so.</p>
  676. <p>There are profile settings presets (Web, Tor, i2p) which you can choose from.
  677. The Tor preset sets the proxy to <tt class="docutils literal">127.0.0.1:9050</tt> and
  678. changes the Searx-Stats2 instance url to the onion address. The i2p preset
  679. sets the proxy to <tt class="docutils literal">127.0.0.1:4444</tt>, it also adds some known
  680. i2p instances of Searx.</p>
  681. <blockquote>
  682. <img alt="Create new profile dialog" src="images/profiles_new.png" />
  683. </blockquote>
  684. </div>
  685. <div class="section" id="deleting-a-profile">
  686. <h3>Deleting a profile</h3>
  687. <p>I hope that it is self explanatory that the <cite>Delete</cite> button of the
  688. &quot;Profile select&quot; window deletes the currently selected profile, it will ask
  689. for confirmation before doing so.</p>
  690. <p>It is not possible to delete a active profile (at-least it shouldn't ;-)).</p>
  691. </div>
  692. </div>
  693. <div class="section" id="settings">
  694. <span id="usage-settings"></span><h2><a class="reference internal" href="#usage-settings">Settings</a></h2>
  695. <div class="section" id="general">
  696. <span id="usage-settings-general"></span><h3><a class="reference internal" href="#usage-settings-general">General</a></h3>
  697. <img alt="images/settings_general.png" class="align-right" src="images/settings_general.png" />
  698. <div class="section" id="theme">
  699. <h4>Theme</h4>
  700. <p>A <tt class="docutils literal">Theme</tt> is a Searx-Qt specific <tt class="docutils literal">stylesheet</tt> and the <tt class="docutils literal">Base style</tt> is a
  701. Qt theme/style.</p>
  702. <p>The Searx-Qt specific <tt class="docutils literal">Theme</tt> does override the <tt class="docutils literal">Base style</tt>.</p>
  703. </div>
  704. <div class="section" id="cli-output-level">
  705. <h4>CLI output level</h4>
  706. <p>The amount of CLI spam can be set here.</p>
  707. <blockquote>
  708. <ul class="simple">
  709. <li><tt class="docutils literal">Info</tt> does print to <tt class="docutils literal">stdout</tt>.</li>
  710. <li><tt class="docutils literal">Warning</tt> does print to <tt class="docutils literal">stderr</tt>.</li>
  711. <li><tt class="docutils literal">Debug</tt> does print to <tt class="docutils literal">stderr</tt>.</li>
  712. <li><tt class="docutils literal">Errror</tt> does print to <tt class="docutils literal">stderr</tt>.</li>
  713. </ul>
  714. </blockquote>
  715. </div>
  716. <div class="section" id="custom-anchor-commands">
  717. <h4>Custom anchor commands</h4>
  718. <p>What happends when you click on a (hyperlink) anchor?
  719. Normal <tt class="docutils literal">QDesktopServices</tt> wil handle it, it will open the default
  720. application for the given <tt class="docutils literal">URL</tt>, default meaning what is set
  721. default in your desktop environment; like the default webbrowser or
  722. torrent client.</p>
  723. <p>Maybe you don't run a fancy desktop enviroment that sets those defaults
  724. or you wish to open a non default application for whatever reasons, then
  725. these settings are for you.</p>
  726. </div>
  727. </div>
  728. <div class="section" id="connection">
  729. <span id="usage-settings-connection"></span><h3><a class="reference internal" href="#usage-settings-connection">Connection</a></h3>
  730. <img alt="images/settings_connection.png" class="align-center" src="images/settings_connection.png" />
  731. <div class="section" id="verify-ssl">
  732. <h4>Verify (SSL)</h4>
  733. <p>Request will fail on a invalid SSL/TLS certificate.</p>
  734. <p>Leave checked if unsure.</p>
  735. <p>See
  736. <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>
  737. for a more technical description.</p>
  738. </div>
  739. <div class="section" id="timeout">
  740. <h4>Timeout</h4>
  741. <p>Timeout in seconds for a single request.</p>
  742. <p>Leave it at the default value of 10 seconds if unsure.</p>
  743. <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
  744. more technical description.</p>
  745. </div>
  746. <div class="section" id="receive-limit">
  747. <h4>Receive limit</h4>
  748. <blockquote>
  749. <div class="line-block">
  750. <div class="line"><strong>NOTE</strong>: Do not touch if you do not know what this is.</div>
  751. </div>
  752. </blockquote>
  753. <p>The maximum response content size of a request in Kilobytes.</p>
  754. </div>
  755. <div class="section" id="chunk-limit">
  756. <h4>Chunk limit</h4>
  757. <blockquote>
  758. <div class="line-block">
  759. <div class="line"><strong>NOTE</strong>: Do not touch if you do not know what this is.</div>
  760. </div>
  761. </blockquote>
  762. <p>The maximum chunk size of a request in Kilobytes.</p>
  763. </div>
  764. <div class="section" id="proxy">
  765. <h4>Proxy</h4>
  766. <p>Here you can set a proxy that will be used for every connection Searx-Qt
  767. makes.</p>
  768. <p>The set proxy will apply to both <tt class="docutils literal">HTTP</tt> and <tt class="docutils literal">HTTPS</tt> requests.</p>
  769. <p>If you use a <tt class="docutils literal">socks4</tt> or <tt class="docutils literal">socks5</tt> proxy you probably want to make sure the
  770. 'Proxy DNS' checkbox is checked so DNS requests will also go through the
  771. proxy. DNS proxy is not available for a http proxy type.</p>
  772. </div>
  773. <div class="section" id="user-agents">
  774. <h4>User-agents</h4>
  775. <p>What user-agent string should Searx-Qt send?</p>
  776. <p>After pressing the <cite>Edit</cite> button it will change to a <cite>Save</cite> button, you will
  777. be able to edit the user-agent ?string(s) Searx-Qt will send. Some notes:</p>
  778. <ul class="simple">
  779. <li>One user-agent string per line.</li>
  780. <li>Set total blank to not send any user-agent string.</li>
  781. </ul>
  782. <p>When the <cite>Random</cite> checkbox is checked and there are multiple user-agent
  783. strings set then Searx-Qt will pick a random user-agent string from the list
  784. for every request.</p>
  785. </div>
  786. <div class="section" id="extra-headers">
  787. <h4>Extra headers</h4>
  788. <p>Excluding the <tt class="docutils literal"><span class="pre">User-Agent</span></tt> string, these are the headers <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> will
  789. send. As well the header key as the value should between double quotes (&quot;),
  790. the key and the value should be separated by at least one space. <strong>Edit these
  791. only when you know what you are doing!</strong></p>
  792. </div>
  793. </div>
  794. <div class="section" id="searxng-1">
  795. <span id="usage-settings-searxng"></span><h3><a class="reference internal" href="#usage-settings-searxng">SearXNG</a></h3>
  796. <img alt="images/settings_searxng.png" class="align-right" src="images/settings_searxng.png" />
  797. <div class="section" id="parse-html">
  798. <h4>Parse HTML</h4>
  799. <p>When this is enabled <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> will request <tt class="docutils literal">HTML</tt> on search request and
  800. not make use of the <tt class="docutils literal">SearXNG</tt> <tt class="docutils literal"><span class="pre">JSON-API</span></tt>. The <tt class="docutils literal">HTML</tt> will be parsed and
  801. turned into a <tt class="docutils literal">JSON</tt> object, what will be processed as usual.</p>
  802. <p>This is enabled by default.</p>
  803. </div>
  804. <div class="section" id="safe-search">
  805. <h4>Safe Search</h4>
  806. <p>When this option is enabled it will simply send <tt class="docutils literal">safesearch: &quot;1&quot;</tt> with a
  807. search requests. It is whatever <tt class="docutils literal">SearXNG</tt> and the search engines it relies
  808. upon will do with it.</p>
  809. <p>It is assumed that NSFW results are left out (filtered-out). So when left
  810. unchecked NSFW content may be returned, and when checked there should be none
  811. (BUT NO GUARANTEE).</p>
  812. <p>This is disabled by default.</p>
  813. </div>
  814. </div>
  815. <div class="section" id="searx-space-1">
  816. <span id="usage-settings-searxspace"></span><h3><a class="reference internal" href="#usage-settings-searxspace">Searx-Space</a></h3>
  817. <p>Here you can change the URL of the Searx-Stats2 instance you like to use
  818. for fetching the instances data.</p>
  819. <blockquote>
  820. <div class="line-block">
  821. <div class="line"><strong>NOTE</strong>: This is only available for a <cite>Stats2</cite> profile type.</div>
  822. </div>
  823. </blockquote>
  824. </div>
  825. <div class="section" id="guard">
  826. <span id="usage-settings-guard"></span><span id="usage-instances"></span><h3><a class="reference internal" href="#usage-settings-guard">Guard</a></h3>
  827. <p>Guard can put instances on a timeout or the blacklist when they are failing
  828. and is enabled by default.</p>
  829. <p>When the Guard rules are set properly, searches will be quicker over time
  830. since failing instances are not used anymore. This reduces the chance of
  831. requesting a search query to a instance that probably will fail again. Also
  832. some instances block our request for whatever reason they have, and there is
  833. no standard response so they all may (and many will) respond differently (Thus
  834. we can not properly detect when we may use the API and when not).</p>
  835. <blockquote>
  836. <ul class="simple">
  837. <li>It should be obvious that when <tt class="docutils literal">Enable guard</tt> is checked that Guard is enabled, when not checked Guard is disabled.</li>
  838. <li>When Guard is enabled it is advised to also enable the <tt class="docutils literal">Store log</tt> option so that old failures can be evaluated against new failures after Searx-Qt has been restarted.</li>
  839. <li>Below the <tt class="docutils literal">Store log</tt> option is a spinbox that defines for how long log entries will be stored (in days).</li>
  840. <li>A rule defines what a fail is and what should happen with the failing instance.</li>
  841. </ul>
  842. </blockquote>
  843. <img alt="images/settings_guard.png" class="align-right" src="images/settings_guard.png" />
  844. <div class="section" id="rules">
  845. <h4>Rules</h4>
  846. <p>A rule has the following variables:</p>
  847. <blockquote>
  848. <ul class="simple">
  849. <li><tt class="docutils literal">Error Type</tt>, the type of error.</li>
  850. <li><tt class="docutils literal">Amount</tt> of fails.</li>
  851. <li><tt class="docutils literal">Timeframe</tt> in which the <tt class="docutils literal">Amount</tt> of fails have to occur.</li>
  852. <li><tt class="docutils literal">Status</tt>, the HTTP response code. (Only used for the <tt class="docutils literal">WrongStatus</tt> <tt class="docutils literal">Error type</tt>).</li>
  853. <li><tt class="docutils literal">Destination</tt>, what should happen to the instance? Should Guard put it on
  854. the blacklist or on a timeout?</li>
  855. <li><tt class="docutils literal">Duration</tt> in minutes of the timeout. (Only used when <tt class="docutils literal">Destionation</tt> is set to <tt class="docutils literal">Timeout</tt>). When <tt class="docutils literal">Timeout</tt> is used as <tt class="docutils literal">Destination</tt> and this is set to <tt class="docutils literal">0</tt> minutes the instance will be on timeout until Searx-Qt
  856. has been restarted.</li>
  857. </ul>
  858. </blockquote>
  859. <p>When <tt class="docutils literal">Error type</tt>, <tt class="docutils literal">Amount</tt>, <tt class="docutils literal">Timeframe</tt> and <tt class="docutils literal">Status</tt> are met the rule
  860. will be triggered and the instance will be put on the <tt class="docutils literal">Destination</tt> for
  861. <tt class="docutils literal">Duration</tt> amount of time in minutes.</p>
  862. </div>
  863. <div class="section" id="log">
  864. <h4>Log</h4>
  865. <p>Here you can see failed search requests. Failed search requests will only
  866. be logged when Guard is enabled.</p>
  867. <p>It logs as little as possible. The following is logged:</p>
  868. <blockquote>
  869. <ul class="simple">
  870. <li>Date and time.</li>
  871. <li>Instance url.</li>
  872. <li>Error Type.</li>
  873. <li>HTTP status code.</li>
  874. <li>HTTP content/Error message (for debugging, may contain error message which
  875. is handy for debugging but also may contain SENSITIVE stuff!)</li>
  876. </ul>
  877. </blockquote>
  878. </div>
  879. </div>
  880. </div>
  881. <div class="section" id="instances">
  882. <h2><a class="reference internal" href="#usage-instances">Instances</a></h2>
  883. <img alt="images/instances.png" class="align-right" src="images/instances.png" />
  884. <p>A Searx instance is a server running the Searx project. Since we want to
  885. preform searches to Searx instance(s) we need addresses of those
  886. instance(s).</p>
  887. <p>The interface to manage instances is on the right.</p>
  888. <div class="section" id="with-stats2-profile-type">
  889. <h3>With <cite>Stats2</cite> profile type</h3>
  890. <p>When your profile is a <cite>Stats2</cite> type, the Searx-instances will be fetched
  891. from <tt class="docutils literal"><span class="pre">https://searx.space/data/instances.json</span></tt> (or any other set in the
  892. settings by your preference). The <tt class="docutils literal">instances.json</tt> from <tt class="docutils literal">search.space</tt>
  893. also contains a lot of other data about the instances it lists (which we can
  894. use to filter instances based on our preferences).</p>
  895. <p>When Searx-Qt is used for the first time you will need to update the
  896. instances table. There is a 'Update' button between the Filter and the
  897. Table that can be used for this. Searx-Qt will not update this automatically!</p>
  898. <p>It maybe useful to update the instances data so now and then since public
  899. instances appear, disappear and their stats change over time.</p>
  900. </div>
  901. <div class="section" id="with-user-profile-type">
  902. <h3>With <cite>User</cite> profile type</h3>
  903. <p>If your profile is a <cite>User</cite> type you will have to add addresses of instances
  904. manually.</p>
  905. <p>This can be done by pressing the <cite>Add instance</cite> button right above
  906. the instances table, a dialog will pop-up asking for the address to add
  907. (without scheme).</p>
  908. <p>The scheme (<a class="reference external" href="http://">http://</a> or <a class="reference external" href="https://">https://</a>) can be selected from the combobox.</p>
  909. <p>There is also a &quot;Update data on add&quot; checkbox, when this is checked
  910. and <cite>Add</cite> is pressed it will automatically download data from
  911. <cite>http(s)://your-address/config</cite>. Downloading/updating this data may also be
  912. done later by right clicking on a (or multiple) Searx-instances in the table
  913. and pressing <cite>Update selected</cite> from the context-menu that has popped-up.</p>
  914. </div>
  915. <div class="section" id="instances-table">
  916. <span id="usage-instances-table"></span><h3>Instances table</h3>
  917. <p>The instances table can be used to browse instances with their data that
  918. remain after all filters. The table is also used to set the current
  919. instance by left-clicking on one.</p>
  920. <p>The currently used instance should also be visible bottom right in the
  921. application it's status-bar.</p>
  922. <p>Right-clicking in the table opens a context-menu from where you can do
  923. the following:</p>
  924. <ul class="simple">
  925. <li>Whitelist/blacklist selected instance(s).</li>
  926. <li>Temporary blacklist.</li>
  927. <li>Copy any column(s) of the selected instance(s) to the clipboard.</li>
  928. <li>Copy JSON data of the selected instance(s) to the clipboard.</li>
  929. <li>Select All instances (CTRL+A should do the same).</li>
  930. <li>Hide or show columns.</li>
  931. </ul>
  932. <p>If your profile is a <cite>User</cite> profile the context-menu will have the
  933. following extra actions:</p>
  934. <ul class="simple">
  935. <li>Remove selected instance(s).</li>
  936. <li>Update selected instance(s).</li>
  937. </ul>
  938. </div>
  939. <div class="section" id="filter-instances">
  940. <h3>Filter instances</h3>
  941. <p>When a filter is enabled and the instance it's value that is being
  942. matched is unknown then it is excluded by default!</p>
  943. <div class="section" id="network">
  944. <h4>Network</h4>
  945. <p>Filter instances on network type. Only instances that match one of the
  946. checked network types remain.</p>
  947. </div>
  948. <div class="section" id="require-asn-privacy">
  949. <h4>Require ASN privacy</h4>
  950. <p>Excludes instances that run their server at a known malicious network.
  951. Like for example CloudFlare, Google, Akamai etc..</p>
  952. <p>This does not give any guarantee, it only filters <strong>known</strong> privacy
  953. violators!</p>
  954. <p>For a full list of known malicious networks (technical):
  955. <a class="reference external" href="https://github.com/dalf/searx-stats2/blob/master/searxstats/data/asn.py">https://github.com/dalf/searx-stats2/blob/master/searxstats/data/asn.py</a></p>
  956. </div>
  957. <div class="section" id="require-ipv6">
  958. <h4>Require IPv6</h4>
  959. <p>Exclude instances that don't have at least one IPv6 address.</p>
  960. </div>
  961. <div class="section" id="version">
  962. <h4>Version</h4>
  963. <p>This has multiple options to filter on Searx/SearXNG versions strings. Both
  964. semantic versions and date versions are supported.</p>
  965. <blockquote>
  966. <ul class="simple">
  967. <li>[<tt class="docutils literal">Minimum</tt>]
  968. Include only instances with versions of the set minimum version or higher.</li>
  969. <li>[<tt class="docutils literal">Invalid</tt>]
  970. Include instances with a invalid version string.</li>
  971. <li>[<tt class="docutils literal">Development</tt>]
  972. Include development versions (git versions).</li>
  973. <li><ul class="first">
  974. <li>[<tt class="docutils literal">Dirty</tt>]
  975. Include SearXNG development versions with uncommited changes.</li>
  976. </ul>
  977. </li>
  978. <li><ul class="first">
  979. <li>[<tt class="docutils literal">Extra</tt>]
  980. Include versions with the 'extra' addition, I don't know what this is; so
  981. TODO.</li>
  982. </ul>
  983. </li>
  984. <li><ul class="first">
  985. <li>[<tt class="docutils literal">Unknown</tt>]
  986. Include Searx development versions with unknown changes.</li>
  987. </ul>
  988. </li>
  989. </ul>
  990. </blockquote>
  991. </div>
  992. <div class="section" id="blacklist">
  993. <h4>Blacklist</h4>
  994. <p>Here are the URLs of the instances that have been blacklisted, either manually
  995. or automatically by Guard (when enabled).</p>
  996. <p>There is a button right to each blacklist item to remove it from the
  997. blacklist.</p>
  998. <p>Hovering the remove button or the url of a blacklist item will show a tooltip
  999. with some more info.</p>
  1000. <p>You can manually blacklist a instance by right clicking on a instance in
  1001. the instances table and click 'Add to blacklist'; multiple instances can
  1002. be blacklisted at once.</p>
  1003. <p>Blacklisted instances will be excluded from the table by default.</p>
  1004. </div>
  1005. <div class="section" id="whitelist">
  1006. <h4>Whitelist</h4>
  1007. <p>Here are the URLs of the instances that have been manually whitelisted.
  1008. There is a button right to each whitelist item to remove it from the
  1009. whitelist.</p>
  1010. <p>You can manually whitelist a instance by right clicking on a instance in
  1011. the instances table and click 'Add to whitelist'; multiple instances can
  1012. be whitelisted at once.</p>
  1013. <p>Whitelisted instances will be in the table by default except when they are on
  1014. the timeout list.</p>
  1015. </div>
  1016. <div class="section" id="timeout-1">
  1017. <h4>Timeout</h4>
  1018. <p>This is a temporary blacklist. Instances manually put on a timeout will stay
  1019. here until Searx-Qt is restarted. When Guard is enabled it also may put
  1020. instances here depending on the set rules, those may persist after Searx-Qt is
  1021. restarted depending on the rule(s).</p>
  1022. <p>Hovering the remove button or the url of a timeout item will show a tooltip
  1023. with some more info.</p>
  1024. </div>
  1025. </div>
  1026. </div>
  1027. <div class="section" id="search">
  1028. <span id="usage-search"></span><h2><a class="reference internal" href="#usage-search">Search</a></h2>
  1029. <div class="section" id="search-bar">
  1030. <span id="usage-search-bar"></span><h3>Search bar</h3>
  1031. <img alt="images/search_bar.png" src="images/search_bar.png" />
  1032. <div class="section" id="fallback">
  1033. <span id="usage-search-bar-fallback"></span><h4>Fallback</h4>
  1034. <p>When checked it will pick a random instance from the instances table if a
  1035. search request fails one way or another and re-try the same request with
  1036. the freshly picked instance. There is a maximum amount of 10 tries (10
  1037. different instances to try the same request on).</p>
  1038. <p>What is fail?</p>
  1039. <ul class="simple">
  1040. <li>Connection errors including timeout.</li>
  1041. <li>Wrong status code (not 200).</li>
  1042. <li>No (usefull) or malformed results returned.</li>
  1043. </ul>
  1044. </div>
  1045. <div class="section" id="random-every">
  1046. <span id="usage-search-random-every"></span><h4>Random every</h4>
  1047. <p>When checked it will automatically pick a random instance on a search request,
  1048. it will also hide the 'Random search button' because it makes it obsolete.</p>
  1049. <p>When not checked it will do search requests on the same instance unless the
  1050. request fails somehow and 'Fallback' is checked. Exception is when the
  1051. 'Random search button' is used for the search request.</p>
  1052. </div>
  1053. <div class="section" id="random-search-button">
  1054. <span id="usage-search-bar-random-search-button"></span><h4>Random search button</h4>
  1055. <p>When pressed it will pick a random instance from the list and preform the
  1056. search request.</p>
  1057. </div>
  1058. <div class="section" id="reload-button">
  1059. <span id="usage-search-bar-reload-button"></span><h4>Reload button</h4>
  1060. <p>When pressed it basically preforms a search request without 'Fallback'
  1061. whenever it is enabled or not, it also doesn't reset the page number. So
  1062. it can act as a reload button thus it's name, but it does more.</p>
  1063. <p>Note: When a search argument like the search query, instance URL,
  1064. categories/engines etc. has changed by user interaction it will do the
  1065. request with those changes, that isn't a real reload of the previous
  1066. request.</p>
  1067. <p>Dev-note: Probably this behavior should change or the name/icon should
  1068. change to something more fitting.</p>
  1069. </div>
  1070. <div class="section" id="search-button">
  1071. <span id="usage-search-bar-search-button"></span><h4>Search button</h4>
  1072. <p>Preform a search request on the currently selected instance.</p>
  1073. <p>Page number is reset, 'Fallback' and 'Random Every' options are honored.</p>
  1074. </div>
  1075. <div class="section" id="search-query-input">
  1076. <span id="usage-search-bar-search-query-input"></span><h4>Search query input</h4>
  1077. <p>The query you like to search for.</p>
  1078. <p>See <a class="reference external" href="https://searx.github.io/searx/user/search_syntax.html">https://searx.github.io/searx/user/search_syntax.html</a> for what is
  1079. possible.</p>
  1080. <p>It will do a search request on <tt class="docutils literal">enter</tt> key pressed, same behavior as
  1081. when the 'Search button' has been pressed.</p>
  1082. </div>
  1083. </div>
  1084. <div class="section" id="search-options">
  1085. <span id="usage-search-options"></span><h3>Search options</h3>
  1086. <img alt="Search options bar" src="images/search_options.png" />
  1087. <p><strong>NOTE</strong>: Right clicking in (on the picture above) the dark area opens a
  1088. context-menu where you can manage what options you want to be visible or
  1089. not as shown in the image below.</p>
  1090. <img alt="Search options context menu" class="align-right" src="images/search_options_rmb.png" />
  1091. <p><strong>NOTE</strong>: Left-click (mouse) on the <tt class="docutils literal">Categories</tt> or <tt class="docutils literal">Engines</tt> label will
  1092. toggle the label collapsed/expanded state, to be able to reduce the height
  1093. when multiple options are selected.</p>
  1094. <p><strong>NOTE</strong>: Right-click (mouse) on <tt class="docutils literal">Categories</tt> or <tt class="docutils literal">Engines</tt> label will open
  1095. a context menu with a option to uncheck all for convenience.</p>
  1096. <div class="section" id="categories">
  1097. <span id="usage-search-options-categories"></span><h4>Categories</h4>
  1098. <img alt="Categories menu" class="align-right" src="images/categories_menu.png" />
  1099. <p>A category is basically a collection of engines. When a category gets checked
  1100. then all the engines it represents will also be checked which in turn will
  1101. filter out all Searx-instances that don't have at least one of the checked
  1102. engines enabled.</p>
  1103. <p>Multiple categories may be selected.</p>
  1104. <p>The default (non-editable) categories will be compiled from categories listed
  1105. in engines. Besides default categories there is also a option to create custom
  1106. categories.</p>
  1107. <img alt="Custom categories window" src="images/custom_categories.png" />
  1108. </div>
  1109. <div class="section" id="engines">
  1110. <span id="usage-search-options-engines"></span><h4>Engines</h4>
  1111. <p>Here you can toggle what search engines should be enabled. It will
  1112. automatically filter out all instances from the instances table that doesn't
  1113. have at least one of the checked engines enabled. The checked engines will
  1114. be send with a search request to a Searx instance with the <cite>enabled_engines</cite>
  1115. param. You should only get results from engines that are checked.</p>
  1116. <p>If no engine is checked it means that it may return results of any engine
  1117. in the list.</p>
  1118. <p>The list with engines is created with data from the
  1119. <a class="reference internal" href="#usage-instances-table">instances table</a>, so only engines are listed that
  1120. are available from the instances table.</p>
  1121. </div>
  1122. <div class="section" id="period">
  1123. <span id="usage-search-options-period"></span><h4>Period</h4>
  1124. <p>Search period you like results from. Options are <tt class="docutils literal">Last day</tt>,
  1125. <tt class="docutils literal">Last week</tt>, <tt class="docutils literal">Last month</tt> or <tt class="docutils literal">Last year</tt>.</p>
  1126. </div>
  1127. <div class="section" id="language">
  1128. <span id="usage-search-options-language"></span><h4>Language</h4>
  1129. <p>If you want results in a specific language than you can select one here. The
  1130. set language will persist on restart.</p>
  1131. <p>Since Searx-Qt 0.3 there is a option to mark languages a favorites. Favorites
  1132. will appear on the top of the combobox list so you won't have to scroll.</p>
  1133. <p>Adding a language to favorite can be done by hovering the language and
  1134. pressing the spacebar on your keyboard. Removing a favorite works the same,
  1135. hover the favorite language and press the spacebar on your keyboard.</p>
  1136. <blockquote>
  1137. <div class="line-block">
  1138. <div class="line"><strong>NOTE</strong>: Not all engines have language support and not all engines </div>
  1139. <div class="line-block">
  1140. <div class="line">honor the requested language. Searx-qt does not (yet?) act on </div>
  1141. <div class="line">this.</div>
  1142. </div>
  1143. </div>
  1144. <div class="line-block">
  1145. <div class="line"><strong>NOTE</strong>: When <tt class="docutils literal">Default language</tt> is set that means the default language</div>
  1146. <div class="line-block">
  1147. <div class="line">of the instance.</div>
  1148. </div>
  1149. </div>
  1150. </blockquote>
  1151. </div>
  1152. </div>
  1153. <div class="section" id="search-results">
  1154. <h3>Search results</h3>
  1155. <div class="section" id="find-text-in-results">
  1156. <h4>Find text in results</h4>
  1157. <p>The find widget to search text inside the results can be opened/focused by the
  1158. keyboard shortcut <tt class="docutils literal">Ctrl + F</tt>.</p>
  1159. <p>Shortcuts that may be used while the find text input is activated:</p>
  1160. <blockquote>
  1161. <ul class="simple">
  1162. <li><tt class="docutils literal">Return</tt> to find the next match.</li>
  1163. <li><tt class="docutils literal">Shift + Return</tt> to find the previous match.</li>
  1164. <li><tt class="docutils literal">Escape</tt> to close.</li>
  1165. </ul>
  1166. </blockquote>
  1167. </div>
  1168. </div>
  1169. </div>
  1170. </div>
  1171. <div class="section" id="troubleshooting-1">
  1172. <span id="troubleshooting"></span><h1><a class="reference internal" href="#troubleshooting">Troubleshooting</a></h1>
  1173. <div class="section" id="searx-qt-won-t-start">
  1174. <span id="troubleshooting-wontstart"></span><h2><a class="reference internal" href="#troubleshooting-wontstart">Searx-Qt won't start</a></h2>
  1175. <p>When <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> fails to start the first thing you should try is to run it on
  1176. the <tt class="docutils literal">CLI</tt> and see if there are any error messages.</p>
  1177. <p>When you just updated to a newer version of <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> it can happen that the
  1178. stored profile data is not compatible. <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> should be aware of this and
  1179. notify you when this happend but this is NOT the case yet. So one thing you can
  1180. try is to delete the local <tt class="docutils literal"><span class="pre">Searx-Qt</span></tt> config (usually in
  1181. <tt class="docutils literal"><span class="pre">~/.config/CYBERDEViL/searx-qt/</span></tt>). Sorry for losing your previous config,
  1182. this is still <tt class="docutils literal">TODO</tt>, patches are welcome.</p>
  1183. </div>
  1184. </div>
  1185. <div class="section" id="development-1">
  1186. <span id="development"></span><h1><a class="reference internal" href="#development">Development</a></h1>
  1187. <p><strong>NOTE</strong>: Make sure you are in the Searx-Qt source root (where utils/,
  1188. locales/, searxqt/ etc.. are).</p>
  1189. <p><strong>NOTE</strong>: To run Searx-Qt without need to install:</p>
  1190. <pre class="literal-block">
  1191. # Copy the executable from ./bin to cwd (searx-qt source root)
  1192. cp bin/searx-qt ./
  1193. # Start
  1194. ./searx-qt
  1195. </pre>
  1196. <div class="section" id="themes">
  1197. <span id="development-themes"></span><h2><a class="reference internal" href="#development-themes">Themes</a></h2>
  1198. <div class="section" id="create-new-theme">
  1199. <h3>Create new theme</h3>
  1200. <p>A theme consists of icons, application css and search result/fail css.</p>
  1201. <p>Simple example to create a new theme from the default theme:</p>
  1202. <p><strong>NOTE</strong>: Replace <tt class="docutils literal">your_theme</tt> with the name of your new theme.</p>
  1203. <p><strong>NOTE</strong>: For this example you should know basic CSS.</p>
  1204. <ol class="arabic">
  1205. <li><p class="first">Setup structure for new theme.</p>
  1206. <blockquote>
  1207. <pre class="code literal-block">
  1208. cp -r ./themes/default/ ./themes/your_theme/
  1209. </pre>
  1210. </blockquote>
  1211. </li>
  1212. <li><p class="first">Edit the application style <tt class="docutils literal">./themes/your_theme/style.css</tt>.</p>
  1213. </li>
  1214. <li><p class="first">Edit the css used for failed search result message <tt class="docutils literal">./themes/your_theme/html_fail.css</tt>.</p>
  1215. </li>
  1216. <li><p class="first">Edit the css used for search results <tt class="docutils literal">./themes/your_theme/html_results.css</tt></p>
  1217. </li>
  1218. <li><p class="first">Edit the icons (don't change their size) <tt class="docutils literal"><span class="pre">./themes/your_theme/icons/*.png</span></tt></p>
  1219. </li>
  1220. <li><p class="first">Open <tt class="docutils literal">./themes/your_theme/manifest.json</tt> and change the <tt class="docutils literal">name</tt> variable to the pretty name of your new theme.</p>
  1221. </li>
  1222. <li><p class="first">See if your theme is listed, when not there is a error:</p>
  1223. <pre class="literal-block">
  1224. python ./utils/themes_tool.py list
  1225. </pre>
  1226. </li>
  1227. <li><p class="first">Compile the theme:</p>
  1228. <pre class="literal-block">
  1229. python ./utils/themes_tool.py make your_theme
  1230. </pre>
  1231. </li>
  1232. <li><p class="first">Open Searx-Qt, go to settings, change to your new theme (it should be listed, else there is an error) and test it:</p>
  1233. <pre class="literal-block">
  1234. ./searx-qt
  1235. </pre>
  1236. </li>
  1237. <li><p class="first">Done? :-)</p>
  1238. </li>
  1239. </ol>
  1240. </div>
  1241. </div>
  1242. <div class="section" id="translations-1">
  1243. <span id="development-translations"></span><h2><a class="reference internal" href="#development-translations">Translations</a></h2>
  1244. <p>Searx-Qt will try to find a translation for your system locale and use that
  1245. when found.</p>
  1246. <p>To test translations the system locale should be installed for that language,
  1247. it doesn't have to be set for testing since we can easly override the <tt class="docutils literal">LANG</tt>
  1248. environment variable before executing Searx-Qt.</p>
  1249. <p><strong>NOTE</strong>: The examples below are for a Dutch language translation, you
  1250. should replace <tt class="docutils literal">nl_NL</tt> with the i18n locale ID of the language you whish to
  1251. translate.</p>
  1252. <div class="section" id="create-new-translation">
  1253. <h3>Create new translation</h3>
  1254. <ol class="arabic">
  1255. <li><p class="first">Setup structure for new language:</p>
  1256. <pre class="literal-block">
  1257. # Update the searx-qt.pot template file.
  1258. ./utils/locale_tool.sh -c
  1259. # Create directory structure.
  1260. mkdir -p ./locales/nl_NL/LC_MESSAGES/
  1261. # Copy the template file to our new directory.
  1262. cp ./locales/searx-qt.pot ./locales/nl_NL/LC_MESSAGES/searx-qt.po
  1263. # Check if our new language is found. It should be listed.
  1264. ./utils/locale_tool.sh --list
  1265. </pre>
  1266. </li>
  1267. <li><p class="first">Start working on the translation.</p>
  1268. <p>You can edit the <tt class="docutils literal"><span class="pre">./locales/nl_NL/LC_MESSAGES/searx-qt.po</span></tt> file with a
  1269. text editor or a special editor for translations (that can handle <tt class="docutils literal">.po</tt>
  1270. files like for example Poedit).</p>
  1271. </li>
  1272. <li><p class="first">Compile the translation:</p>
  1273. <pre class="literal-block">
  1274. ./utils/locale_tool.sh -m nl_NL
  1275. </pre>
  1276. </li>
  1277. <li><p class="first">Test the translation:</p>
  1278. <pre class="literal-block">
  1279. # Note: overriding XDG_DATA_HOME only for debugging translations! Themes
  1280. # will not work.
  1281. XDG_DATA_HOME=&quot;$(pwd -P)/&quot; LC_ALL=nl_NL.UTF-8 ./searx-qt
  1282. </pre>
  1283. </li>
  1284. </ol>
  1285. </div>
  1286. <div class="section" id="update-existing-translation">
  1287. <h3>Update existing translation</h3>
  1288. <ol class="arabic">
  1289. <li><p class="first">Update files:</p>
  1290. <pre class="literal-block">
  1291. # Update the .pot template file.
  1292. ./utils/locale_tool.sh -c
  1293. # Update the translation it's .po file
  1294. ./utils/locale_tool.sh -u nl_NL
  1295. </pre>
  1296. </li>
  1297. <li><p class="first">Edit the translation:</p>
  1298. <p>You can edit the <tt class="docutils literal"><span class="pre">./locales/nl_NL/LC_MESSAGES/searx-qt.po</span></tt> file with a
  1299. text editor or a special editor for translations (that can handle <tt class="docutils literal">.po</tt>
  1300. files like for example Poedit).</p>
  1301. </li>
  1302. <li><p class="first">Compile the translation:</p>
  1303. <pre class="literal-block">
  1304. ./utils/locale_tool.sh -m nl_NL
  1305. </pre>
  1306. </li>
  1307. <li><p class="first">Test the translation:</p>
  1308. <pre class="literal-block">
  1309. # Note: overriding XDG_DATA_HOME only for debugging translations! Themes
  1310. # will not work.
  1311. XDG_DATA_HOME=&quot;$(pwd -P)/&quot; LC_ALL=nl_NL.UTF-8 ./searx-qt
  1312. </pre>
  1313. </li>
  1314. </ol>
  1315. </div>
  1316. </div>
  1317. </div>
  1318. </div>
  1319. </body>
  1320. </html>