index.rst 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. ********
  2. searx-qt
  3. ********
  4. Lightweight desktop application for searx
  5. #########################################
  6. This is documentation for searx-qt version 0.2
  7. .. _index:
  8. ******
  9. Index
  10. ******
  11. - `Index <index_>`_
  12. - `About <about_>`_
  13. - - `Summary <about/summary_>`_
  14. - - `Source <about/source_>`_
  15. - - `License <about/license_>`_
  16. - - `Dependencies <about/dependencies_>`_
  17. - - `Translations <about/translations_>`_
  18. - - `Contact <about/contact_>`_
  19. - `Getting started <getting_started_>`_
  20. - - `Install dependencies <getting_started/install_dependencies_>`_
  21. - - `Installation <getting_started/installation_>`_
  22. - `Usage <usage_>`_
  23. - - `Profiles <usage/profiles_>`_
  24. - - `Settings <usage/settings_>`_
  25. - - `Instances <usage/instances_>`_
  26. - - `Search <usage/search_>`_
  27. .. _about:
  28. ******
  29. About
  30. ******
  31. .. _about/summary:
  32. Summary
  33. #######
  34. searx-qt is a lightweight desktop application that lets you search on
  35. public searx instances listed on `https://searx.space`.
  36. Technically searx-qt is a client application that does magic with the searx
  37. API and searx-stats2 it's instances.json.
  38. Since version `0.2` it is also possible to manage your own (private?)
  39. instances.
  40. searx
  41. -----
  42. Actual search requests will be made to a server running searx software,
  43. there are many public available. We call such servers 'searx instances'
  44. or in this document we may refer to just 'instance(s)'.
  45. If you are not familiar with the searx project; you can checkout their page
  46. here: https://asciimoo.github.io/searx/ or https://searx.me/
  47. - API Docs: https://asciimoo.github.io/searx/dev/search_api.html
  48. - Source: https://github.com/asciimoo/searx
  49. - License: GPLv3
  50. searx-stats2
  51. ------------
  52. The searx-stats2 project lists public searx instances with statistics. The
  53. original searx-stats2 instance is running at https://searx.space/. This is
  54. where searx-qt will request a list with instances when the update button
  55. is pressed.
  56. - Source: https://github.com/dalf/searx-stats2
  57. - License: GPLv3
  58. .. _about/source:
  59. Source
  60. ######
  61. https://notabug.org/CYBERDEViL/searx-qt
  62. .. _about/license:
  63. License
  64. #######
  65. - GPLv3
  66. - https://www.gnu.org/licenses/gpl-3.0.en.html
  67. .. _about/dependencies:
  68. Dependencies
  69. ############
  70. ======== ========= ========= =====
  71. name version license URL
  72. ======== ========= ========= =====
  73. python 3 PSFL https://docs.python.org/3/license.html
  74. requests - Apache 2 http://docs.python-requests.org/en/master/
  75. PyQt5 - GPLv3 https://www.riverbankcomputing.com/software/pyqt/intro
  76. urllib3 - MIT https://urllib3.readthedocs.io/
  77. ======== ========= ========= =====
  78. Optional for socks proxy support:
  79. ======== ========= ========= =====
  80. name version license URL
  81. ======== ========= ========= =====
  82. pysocks - BSD https://github.com/Anorov/PySocks
  83. ======== ========= ========= =====
  84. .. _about/translations:
  85. Translations
  86. ############
  87. Since version `0.2` searx-qt is able (application-wise, not search results) to
  88. be fully translated with the use of gettext and `.po .pot` files. However there
  89. are no translations yet. If you like to translate searx-qt in your language
  90. please `let me know <about/contact_>`_.
  91. .. _about/contact:
  92. Contact
  93. ############
  94. One option is to open a issue on `https://notabug.org/cyberdevil/searx-qt`.
  95. Another is to see if I'm (CYBERDEViL) am online at `#searx-qt` on
  96. `irc.freenode.net`.
  97. .. _getting_started:
  98. ****************
  99. Getting started
  100. ****************
  101. .. _getting_started/install_dependencies:
  102. Install dependencies
  103. ####################
  104. Note: ``python-requests`` is also dependent on ``python-urllib3`` ;
  105. so ``python-urllib3`` will be installed with ``python-requests``
  106. (No need to do a explicit install).
  107. Debian / Ubuntu based
  108. ---------------------
  109. Install required dependencies::
  110. # apt update
  111. # apt upgrade
  112. # apt install python3 python3-requests python3-pyqt5
  113. **Optional** for socks proxy support::
  114. # apt install python3-socks
  115. Arch based
  116. ----------
  117. Install required dependencies::
  118. # pacman -Syu python python-requests python-pyqt5
  119. **Optional** for socks proxy support::
  120. # pacman -S python-pysocks
  121. .. _getting_started/installation:
  122. Installation
  123. ############
  124. It is always recommended to let the package-manager of your system
  125. do the installing of software, so your package-manager will keep
  126. track of files installed. Only use ``setup.py`` directly if you
  127. know what you are doing.
  128. Since searx-qt isn't available in any GNU/Linux distribution (yet?); the
  129. best option is to create a package for your distribution yourself from the
  130. latest release. This will also mean that you have to manually update
  131. searx-qt if there is a new version available.
  132. Note: https://notabug.org/CYBERDEViL/searx-qt/releases
  133. Note: noticed the ``#`` or ``$`` before every command? When there is a
  134. ``$`` before the command, it should be run as a regular user. ``#`` as root.
  135. Debian based
  136. ------------
  137. The steps below describe how to get a specific version of searx-qt; then
  138. package and install it. This method is available from version
  139. ``0.1-beta2`` and up.
  140. 1) Make sure you have ``python3-stdeb`` and ``git`` installed::
  141. # apt install python3-stdeb git
  142. 2) Creating a working directory and ``cd`` in to it, you may
  143. change this to your own preference::
  144. $ mkdir ~/git
  145. $ cd ~/git
  146. 3) Cloning the repository and ``cd`` in to it::
  147. $ git clone "https://notabug.org/CYBERDEViL/searx-qt.git" "searx-qt"
  148. $ cd searx-qt
  149. 4) Checkout a specific version:
  150. Note: get a list with available tags (versions) with the
  151. ``git tag`` command.
  152. Below is a example to checkout version ``0.1-beta2``::
  153. $ git checkout 0.1-beta2
  154. 5) Create .deb::
  155. $ ./utils/gen_deb.sh
  156. 6) Install the created package::
  157. # dpkg -i ./deb_dist/python3-searx-qt_0.1-beta2-1_all.deb
  158. Arch based
  159. ----------
  160. For Arch based distributions there is a package available in the AUR;
  161. https://aur.archlinux.org/packages/searx-qt/
  162. 1) Make sure you have ``git`` installed::
  163. # pacman -S git
  164. 2) Creating a working directory and ``cd`` in to it, you may change this
  165. to your own preference::
  166. $ mkdir ~/pkg
  167. $ cd ~/pkg
  168. 3) Getting the ``PKGBUILD`` from Arch AUR::
  169. $ git clone https://aur.archlinux.org/searx-qt.git
  170. $ cd searx-qt
  171. 4) Build and install searx-qt package::
  172. $ makepkg -si
  173. .. _usage:
  174. ******
  175. Usage
  176. ******
  177. .. _usage/profiles:
  178. Profiles
  179. ########
  180. .. image:: images/profiles_window.png
  181. :alt: Profiles window
  182. :align: right
  183. Profiles are useful when you want to have different settings and/or data without
  184. to having to set it manually every-time. For example you can create a profile
  185. named `Tor` which has different proxy and stats2 settings then you normal
  186. profile.
  187. There are two types of profiles:
  188. - `Stats2` profile
  189. - `User` profile
  190. The profile type names maybe changed to something better, suggestions are welcome.
  191. Create a `Stats2` profile if you wish to get/update a list of searx-instances
  192. from a `searx-stats2` instance. For example the default `https://searx.space`.
  193. Create a `User` profile if you wish to add/remove/update your own list with
  194. searx-instances.
  195. | **NOTE**: Profile types cannot be changed after the creation of the profile,
  196. | but you can add multiple profiles of both types.
  197. Creating new profile
  198. --------------------
  199. On first usage of `searx-qt` you will need to create a new profile. The `Add` button (of the "Profile select" window) will open a dialog to do so.
  200. .. image:: images/profiles_new.png
  201. :alt: Create new profile dialog
  202. Deleting a profile
  203. ------------------
  204. I hope that it is self explanatory that the `Delete` button of the
  205. "Profile select" window deletes the currently selected profile, it will ask
  206. for confirmation before doing so.
  207. It is not possible to delete a active profile (at-least it shouldn't ;-)).
  208. .. _usage/settings:
  209. Settings
  210. ########
  211. .. image:: images/settings.png
  212. :align: right
  213. Connection
  214. ----------
  215. Verify (SSL)
  216. ============
  217. Request will fail on a invalid SSL/TLS certificate.
  218. Leave checked if unsure.
  219. See
  220. https://requests.readthedocs.io/en/master/user/advanced/#ssl-cert-verification
  221. for a more technical description.
  222. Timeout
  223. =======
  224. Timeout in seconds for a single request.
  225. Leave it at the default value of 10 seconds if unsure.
  226. See https://requests.readthedocs.io/en/master/user/advanced/#timeouts for a
  227. more technical description.
  228. Proxy
  229. =====
  230. Here you can set a proxy that will be used for every connection searx-qt
  231. makes. Leave the input field blank to use no proxy.
  232. The 'Http' section can be used to proxy plain http:// requests to for
  233. example instances without a certificate. The 'Https' section can be used
  234. to proxy all https:// requests to instances (including fetching the
  235. instances list data from https://searx.space) with a certificate. So you
  236. can use a separate proxy for both protocols.
  237. If you use a socks4 or socks5 proxy you probably want to make sure the
  238. 'Proxy DNS' checkbox is checked so DNS requests will also go through the
  239. proxy. DNS proxy is not available for a http proxy type.
  240. User-agents
  241. ===========
  242. What user-agent string should searx-qt send?
  243. After pressing the `Edit` button it will change to a `Save` button, you will
  244. be able to edit the user-agent ?string(s) searx-qt will send. Some notes:
  245. - One user-agent string per line.
  246. - Set total blank to not send any user-agent string.
  247. When the `Random` checkbox is checked and there are multiple user-agent
  248. strings set then searx-qt will pick a random user-agent string from the list
  249. for every request.
  250. searx-stats2
  251. ------------
  252. Here you can change the URL of the searx-stats2 instance you like to use
  253. for fetching the instances data.
  254. | **NOTE**: This is only available for a `Stats2` profile type.
  255. .. _usage/instances:
  256. Instances
  257. #########
  258. .. image:: images/instances.png
  259. :align: right
  260. A searx instance is a server running the searx project. Since we want to
  261. preform searches to searx instance(s) we need addresses of those
  262. instance(s).
  263. The interface to manage instances is on the right.
  264. With `Stats2` profile type
  265. --------------------------
  266. If your profile is a `Stats2` type, the searx-instances will be fetched
  267. from ``https://searx.space/data/instances.json``. The ``instances.json``
  268. from ``search.space`` also contains a lot of other data about the
  269. instances it lists (which we can use to filter instances based on our
  270. preferences).
  271. If searx-qt is used for the first time you will need to update the
  272. instances table. There is a 'Update' button between the Filter and the
  273. Table that can be used for this. searx-qt will not update this automatically!
  274. It maybe useful to update the instances data so now and then since public
  275. instances appear, disappear and their stats change over time.
  276. With `User` profile type
  277. ------------------------
  278. If your profile is a `User` type you will have to add addresses of instances
  279. manually.
  280. This can be done by pressing the `Add instance` button right above
  281. the instances table, a dialog will pop-up asking for the address to add
  282. (without scheme).
  283. The scheme (http:// or https://) can be selected from the combobox.
  284. There is also a "Update data on add" checkbox, when this is checked
  285. and `Add` is pressed it will automatically download data from
  286. `http(s)://your-address/config`. Downloading/updating this data may also be
  287. done later by right clicking on a (or multiple) searx-instances in the table
  288. and pressing `Update selected`.
  289. .. _usage/instances/table:
  290. Instances table
  291. ---------------
  292. The instances table can be used to browse instances with their data that
  293. remain after all filters. The table is also used to set the current
  294. instance by left-clicking on one.
  295. The currently used instance should also be visible bottom right in the
  296. application it's status-bar.
  297. Right-clicking in the table opens a context-menu from where you can do
  298. the following:
  299. - Whitelist/blacklist selected instance(s).
  300. - Copy selected instance(s) it's/their URL(s).
  301. - Select All instances (CTRL+A should do the same).
  302. - Hide or show columns.
  303. If your profile is a `User` profile the context-menu will have the
  304. following extra actions:
  305. - Remove selected instance(s).
  306. - Update selected instance(s).
  307. Filter instances
  308. ----------------
  309. When a filter is enabled and the instance it's value that is being
  310. matched is unknown then it is excluded by default!
  311. Network
  312. =======
  313. Filter instances on network type. Only instances that match one of the
  314. checked network types remain.
  315. Require ASN privacy
  316. ===================
  317. Excludes instances that run their server at a known malicious network.
  318. Like for example CloudFlare, Google, Akamai etc..
  319. This does not give any guarantee, it only filters **known** privacy
  320. violators!
  321. For a full list of known malicious networks (technical):
  322. https://github.com/dalf/searx-stats2/blob/master/searxstats/data/asn.py
  323. Require IPv6
  324. ============
  325. Exclude instances that don't have at least one IPv6 address.
  326. Version
  327. =======
  328. Include only instances that have a searx version that has been added to
  329. this widget. Leave empty to allow all searx versions.
  330. Blacklist
  331. =========
  332. Here are the URLs of the instances that have been manually blacklisted.
  333. There is a button right to each blacklist item to remove it from the
  334. blacklist.
  335. You can manually blacklist a instance by right clicking on a instance in
  336. the instances table and click 'Add to blacklist'; multiple instances can
  337. be blacklisted at once.
  338. Blacklisted instances will be excluded from the table by default.
  339. Whitelist
  340. =========
  341. Here are the URLs of the instances that have been manually whitelisted.
  342. There is a button right to each whitelist item to remove it from the
  343. whitelist.
  344. You can manually whitelist a instance by right clicking on a instance in
  345. the instances table and click 'Add to whitelist'; multiple instances can
  346. be whitelisted at once.
  347. Whitelisted instances will be in the table by default.
  348. .. _usage/search:
  349. Search
  350. ######
  351. .. _usage/search/bar:
  352. Search bar
  353. ------------------------
  354. .. image:: images/search_bar.png
  355. .. _usage/search/bar/fallback:
  356. Fallback
  357. ========
  358. If checked it will pick a random instance from the instances table if a
  359. search request fails one way or another and re-try the same request with
  360. the freshly picked instance. There is a maximum amount of 10 tries (10
  361. different instances to try the same request on).
  362. What is fail?
  363. - Connection errors including timeout.
  364. - Wrong status code (not 200).
  365. - No or malformed results returned.
  366. .. _usage/search/random_every:
  367. Random every
  368. ============
  369. If checked it will automatically pick a random instance on a search request,
  370. it will also hide the 'Random search button' because it makes it obsolete.
  371. If not checked it will do search requests on the same instance unless the
  372. request fails somehow and 'Fallback' is checked. Exception is when the
  373. 'Random search button' is used for the search request.
  374. .. _usage/search/bar/random_search_button:
  375. Random search button
  376. ====================
  377. When pressed it will pick a random instance from the list and preform the
  378. search request.
  379. .. _usage/search/bar/reload_button:
  380. Reload button
  381. =============
  382. When pressed it basically preforms a search request without 'Fallback'
  383. whenever it is enabled or not, it also doesn't reset the page number. So
  384. it can act as a reload button thus it's name, but it does more.
  385. Note: When a search argument like the search query, instance URL,
  386. categories/engines etc. has changed by user interaction it will do the
  387. request with those changes, that isn't a real reload of the previous
  388. request.
  389. Dev-note: Probably this behavior should change or the name/icon should
  390. change to something more fitting.
  391. .. _usage/search/bar/search_button:
  392. Search button
  393. =============
  394. Preform a search request on the currently selected instance.
  395. Page number is reset, 'Fallback' and 'Random Every' options are honored.
  396. .. _usage/search/bar/search_query_input:
  397. Search query input
  398. ==================
  399. The query you like to search for.
  400. See https://asciimoo.github.io/searx/user/search_syntax.html for what is
  401. possible.
  402. It will do a search request on ``enter`` key pressed, same behavior as
  403. when the 'Search button' has been pressed.
  404. .. _usage/search/options:
  405. Search options
  406. --------------
  407. .. image:: images/search_options.png
  408. :alt: Search options bar
  409. Right clicking in (on the picture above) the dark area opens a
  410. context-menu where you can manage what options you want to be visible or
  411. not as shown in the image below.
  412. .. image:: images/search_options_rmb.png
  413. :alt: Search options context menu
  414. .. _usage/search/options/categories:
  415. Categories
  416. ==========
  417. .. image:: images/categories_menu.png
  418. :alt: Categories menu
  419. :align: right
  420. A category is basically a collection of engines. When a category gets checked
  421. then all the engines it represents will also be checked which in turn will
  422. filter out all searx-instances that don't have at least one of the checked
  423. engines enabled.
  424. Multiple categories may be selected.
  425. The default (non-editable) categories will be compiled from categories listed
  426. in engines. Besides default categories there is also a option to create custom
  427. categories.
  428. .. image:: images/custom_categories.png
  429. :alt: Custom categories window
  430. .. _usage/search/options/engines:
  431. Engines
  432. =======
  433. Here you can toggle what search engines should be enabled. It will
  434. automatically filter out all instances from the instances table that doesn't
  435. have at least one of the checked engines enabled. The checked engines will
  436. be send with a search request to a searx instance with the `enabled_engines`
  437. param. You should only get results from engines that are checked.
  438. If no engine is checked it means that it may return results of any engine
  439. in the list.
  440. The list with engines is created with data from the
  441. `instances table <usage/instances/table_>`_, so only engines are listed that
  442. are available from the instances table.
  443. .. _usage/search/options/period:
  444. Period
  445. ======
  446. Search period you like results from. Options are ``Last day``,
  447. ``Last week``, ``Last month`` or ``Last year``.
  448. .. _usage/search/options/language:
  449. Language
  450. ========
  451. If you want results in a specific language than you can select one here.