├── .codecov.yml ├── .config.sh ├── .coveragerc ├── .dir-locals.el ├── .dockerignore ├── .gitattributes ├── .gitignore ├── .landscape.yaml ├── .pylintrc ├── .travis.yml ├── AUTHORS.rst ├── CHANGELOG.rst ├── Dockerfile ├── LICENSE ├── Makefile ├── README.rst ├── babel.cfg ├── dockerfiles ├── docker-entrypoint.sh └── uwsgi.ini ├── docs ├── _themes │ └── searx │ │ ├── static │ │ └── searx.css │ │ └── theme.conf ├── admin │ ├── api.rst │ ├── arch_public.dot │ ├── architecture.rst │ ├── buildhosts.rst │ ├── engines.rst │ ├── filtron.rst │ ├── index.rst │ ├── installation-apache.rst │ ├── installation-docker.rst │ ├── installation-nginx.rst │ ├── installation-searx.rst │ ├── installation-uwsgi.rst │ ├── installation.rst │ ├── morty.rst │ ├── plugins.rst │ ├── settings.rst │ └── update-searx.rst ├── blog │ ├── admin.rst │ ├── index.rst │ ├── intro-offline.rst │ ├── lxcdev-202006.rst │ ├── private-engines.rst │ ├── python3.rst │ ├── searx-admin-engines.png │ └── searxpy3.png ├── build-templates │ ├── filtron.rst │ ├── morty.rst │ └── searx.rst ├── conf.py ├── dev │ ├── contribution_guide.rst │ ├── csv_table.txt │ ├── engine_overview.rst │ ├── hello.dot │ ├── index.rst │ ├── makefile.rst │ ├── plugins.rst │ ├── quickstart.rst │ ├── reST.rst │ ├── search_api.rst │ ├── svg_image.svg │ └── translation.rst ├── index.rst ├── static │ └── img │ │ └── searx_logo_small.png ├── user │ ├── conf.py │ ├── index.rst │ ├── own-instance.rst │ └── search_syntax.rst └── utils │ ├── filtron.sh.rst │ ├── index.rst │ ├── lxc.sh.rst │ ├── morty.sh.rst │ └── searx.sh.rst ├── examples └── basic_engine.py ├── manage.sh ├── requirements-dev.txt ├── requirements.txt ├── searx ├── __init__.py ├── answerers │ ├── __init__.py │ ├── random │ │ └── answerer.py │ └── statistics │ │ └── answerer.py ├── autocomplete.py ├── brand.py ├── data │ ├── bangs.json │ ├── currencies.json │ ├── engines_languages.json │ └── useragents.json ├── engines │ ├── 1337x.py │ ├── __init__.py │ ├── acgsou.py │ ├── apkmirror.py │ ├── archlinux.py │ ├── arxiv.py │ ├── base.py │ ├── bing.py │ ├── bing_images.py │ ├── bing_news.py │ ├── bing_videos.py │ ├── btdigg.py │ ├── currency_convert.py │ ├── dailymotion.py │ ├── deezer.py │ ├── deviantart.py │ ├── dictzone.py │ ├── digbt.py │ ├── digg.py │ ├── doku.py │ ├── duckduckgo.py │ ├── duckduckgo_definitions.py │ ├── duckduckgo_images.py │ ├── duden.py │ ├── dummy-offline.py │ ├── dummy.py │ ├── etools.py │ ├── fdroid.py │ ├── filecrop.py │ ├── flickr.py │ ├── flickr_noapi.py │ ├── framalibre.py │ ├── frinkiac.py │ ├── genius.py │ ├── gentoo.py │ ├── gigablast.py │ ├── github.py │ ├── google.py │ ├── google_images.py │ ├── google_news.py │ ├── google_videos.py │ ├── ina.py │ ├── invidious.py │ ├── json_engine.py │ ├── kickass.py │ ├── mediawiki.py │ ├── microsoft_academic.py │ ├── mixcloud.py │ ├── nyaa.py │ ├── openstreetmap.py │ ├── pdbe.py │ ├── photon.py │ ├── piratebay.py │ ├── pubmed.py │ ├── qwant.py │ ├── reddit.py │ ├── scanr_structures.py │ ├── searchcode_code.py │ ├── searchcode_doc.py │ ├── searx_engine.py │ ├── seedpeer.py │ ├── soundcloud.py │ ├── spotify.py │ ├── stackoverflow.py │ ├── startpage.py │ ├── tokyotoshokan.py │ ├── torrentz.py │ ├── translated.py │ ├── twitter.py │ ├── unsplash.py │ ├── vimeo.py │ ├── wikidata.py │ ├── wikipedia.py │ ├── wolframalpha_api.py │ ├── wolframalpha_noapi.py │ ├── www1x.py │ ├── xpath.py │ ├── yacy.py │ ├── yahoo.py │ ├── yahoo_news.py │ ├── yandex.py │ ├── youtube_api.py │ └── youtube_noapi.py ├── exceptions.py ├── external_bang.py ├── languages.py ├── plugins │ ├── __init__.py │ ├── https_rewrite.py │ ├── https_rules │ │ ├── 00README │ │ ├── Bing.xml │ │ ├── Dailymotion.xml │ │ ├── Deviantart.xml │ │ ├── DuckDuckGo.xml │ │ ├── Flickr.xml │ │ ├── Github-Pages.xml │ │ ├── Github.xml │ │ ├── Google-mismatches.xml │ │ ├── Google.org.xml │ │ ├── GoogleAPIs.xml │ │ ├── GoogleCanada.xml │ │ ├── GoogleImages.xml │ │ ├── GoogleMainSearch.xml │ │ ├── GoogleMaps.xml │ │ ├── GoogleMelange.xml │ │ ├── GoogleSearch.xml │ │ ├── GoogleServices.xml │ │ ├── GoogleShopping.xml │ │ ├── GoogleSorry.xml │ │ ├── GoogleTranslate.xml │ │ ├── GoogleVideos.xml │ │ ├── GoogleWatchBlog.xml │ │ ├── Google_App_Engine.xml │ │ ├── Googleplex.com.xml │ │ ├── OpenStreetMap.xml │ │ ├── Rawgithub.com.xml │ │ ├── Soundcloud.xml │ │ ├── ThePirateBay.xml │ │ ├── Torproject.xml │ │ ├── Twitter.xml │ │ ├── Vimeo.xml │ │ ├── WikiLeaks.xml │ │ ├── Wikimedia.xml │ │ ├── Yahoo.xml │ │ └── YouTube.xml │ ├── infinite_scroll.py │ ├── oa_doi_rewrite.py │ ├── open_results_on_new_tab.py │ ├── search_on_category_select.py │ ├── self_info.py │ ├── tracker_url_remover.py │ └── vim_hotkeys.py ├── poolrequests.py ├── preferences.py ├── query.py ├── results.py ├── search.py ├── settings.yml ├── settings_robot.yml ├── static │ ├── css │ │ └── bootstrap.min.css │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── js │ │ ├── bootstrap.min.js │ │ ├── html5shiv.min.js │ │ ├── jquery-1.11.1.min.js │ │ ├── mootools-autocompleter-1.1.2-min.js │ │ ├── mootools-core-1.4.5-min.js │ │ ├── require-2.1.15.min.js │ │ ├── respond.min.js │ │ └── typeahead.bundle.min.js │ ├── less │ │ └── bootstrap │ │ │ ├── .csscomb.json │ │ │ ├── .csslintrc │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ ├── alerts.less │ │ │ ├── background-variant.less │ │ │ ├── border-radius.less │ │ │ ├── buttons.less │ │ │ ├── center-block.less │ │ │ ├── clearfix.less │ │ │ ├── forms.less │ │ │ ├── gradients.less │ │ │ ├── grid-framework.less │ │ │ ├── grid.less │ │ │ ├── hide-text.less │ │ │ ├── image.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── nav-divider.less │ │ │ ├── nav-vertical-align.less │ │ │ ├── opacity.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── progress-bar.less │ │ │ ├── reset-filter.less │ │ │ ├── resize.less │ │ │ ├── responsive-visibility.less │ │ │ ├── size.less │ │ │ ├── tab-focus.less │ │ │ ├── table-row.less │ │ │ ├── text-emphasis.less │ │ │ ├── text-overflow.less │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── typeahead.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ ├── plugins │ │ ├── css │ │ │ ├── infinite_scroll.css │ │ │ └── vim_hotkeys.css │ │ └── js │ │ │ ├── infinite_scroll.js │ │ │ ├── open_results_on_new_tab.js │ │ │ ├── search_on_category_select.js │ │ │ └── vim_hotkeys.js │ └── themes │ │ ├── courgette │ │ ├── css │ │ │ ├── style-rtl.css │ │ │ └── style.css │ │ ├── img │ │ │ ├── bg-body-index.jpg │ │ │ ├── favicon.png │ │ │ ├── github_ribbon.png │ │ │ ├── icons │ │ │ │ ├── icon_500px.ico │ │ │ │ ├── icon_bing.ico │ │ │ │ ├── icon_dailymotion.ico │ │ │ │ ├── icon_deezer.ico │ │ │ │ ├── icon_deviantart.ico │ │ │ │ ├── icon_digg.ico │ │ │ │ ├── icon_duckduckgo.ico │ │ │ │ ├── icon_flickr.ico │ │ │ │ ├── icon_github.ico │ │ │ │ ├── icon_google play apps.ico │ │ │ │ ├── icon_google play movies.ico │ │ │ │ ├── icon_google play music.ico │ │ │ │ ├── icon_google.ico │ │ │ │ ├── icon_kickass.ico │ │ │ │ ├── icon_openstreetmap.ico │ │ │ │ ├── icon_searchcode code.ico │ │ │ │ ├── icon_searchcode doc.ico │ │ │ │ ├── icon_searchcode.ico │ │ │ │ ├── icon_soundcloud.ico │ │ │ │ ├── icon_stackoverflow.ico │ │ │ │ ├── icon_startpage.ico │ │ │ │ ├── icon_subtitleseeker.ico │ │ │ │ ├── icon_twitter.ico │ │ │ │ ├── icon_vimeo.ico │ │ │ │ ├── icon_wikipedia.ico │ │ │ │ ├── icon_yahoo.ico │ │ │ │ └── icon_youtube.ico │ │ │ ├── preference-icon.png │ │ │ ├── search-icon.png │ │ │ ├── searx-mobile.png │ │ │ ├── searx.png │ │ │ └── searx_logo.svg │ │ ├── js │ │ │ └── searx.js │ │ └── less │ │ │ ├── style-rtl.less │ │ │ └── style.less │ │ ├── legacy │ │ ├── css │ │ │ ├── style-rtl.css │ │ │ └── style.css │ │ ├── img │ │ │ ├── favicon.png │ │ │ ├── github_ribbon.png │ │ │ ├── icons │ │ │ │ ├── icon_500px.ico │ │ │ │ ├── icon_bing.ico │ │ │ │ ├── icon_dailymotion.ico │ │ │ │ ├── icon_deezer.ico │ │ │ │ ├── icon_deviantart.ico │ │ │ │ ├── icon_digg.ico │ │ │ │ ├── icon_duckduckgo.ico │ │ │ │ ├── icon_flickr.ico │ │ │ │ ├── icon_github.ico │ │ │ │ ├── icon_google play apps.ico │ │ │ │ ├── icon_google play movies.ico │ │ │ │ ├── icon_google play music.ico │ │ │ │ ├── icon_google.ico │ │ │ │ ├── icon_kickass.ico │ │ │ │ ├── icon_openstreetmap.ico │ │ │ │ ├── icon_searchcode code.ico │ │ │ │ ├── icon_searchcode doc.ico │ │ │ │ ├── icon_searchcode.ico │ │ │ │ ├── icon_soundcloud.ico │ │ │ │ ├── icon_stackoverflow.ico │ │ │ │ ├── icon_startpage.ico │ │ │ │ ├── icon_subtitleseeker.ico │ │ │ │ ├── icon_twitter.ico │ │ │ │ ├── icon_vimeo.ico │ │ │ │ ├── icon_wikipedia.ico │ │ │ │ ├── icon_yahoo.ico │ │ │ │ └── icon_youtube.ico │ │ │ ├── preference-icon.png │ │ │ ├── search-icon.png │ │ │ ├── searx.png │ │ │ └── searx_logo.svg │ │ ├── js │ │ │ └── searx.js │ │ └── less │ │ │ ├── autocompleter.less │ │ │ ├── code.less │ │ │ ├── definitions.less │ │ │ ├── mixins.less │ │ │ ├── search.less │ │ │ ├── style-rtl.less │ │ │ └── style.less │ │ ├── oscar │ │ ├── .gitignore │ │ ├── README.rst │ │ ├── css │ │ │ ├── leaflet.min.css │ │ │ ├── logicodev-dark.css │ │ │ ├── logicodev-dark.min.css │ │ │ ├── logicodev.css │ │ │ ├── logicodev.min.css │ │ │ ├── pointhi.css │ │ │ └── pointhi.min.css │ │ ├── gruntfile.js │ │ ├── img │ │ │ ├── favicon.png │ │ │ ├── icons │ │ │ │ ├── 1337x.png │ │ │ │ ├── README.md │ │ │ │ ├── amazon.png │ │ │ │ ├── dailymotion.png │ │ │ │ ├── deviantart.png │ │ │ │ ├── facebook.png │ │ │ │ ├── flickr.png │ │ │ │ ├── github.png │ │ │ │ ├── invidious.png │ │ │ │ ├── kickass.png │ │ │ │ ├── openstreetmap.png │ │ │ │ ├── photon.png │ │ │ │ ├── searchcode code.png │ │ │ │ ├── searchcode doc.png │ │ │ │ ├── soundcloud.png │ │ │ │ ├── stackoverflow.png │ │ │ │ ├── twitter.png │ │ │ │ ├── vimeo.png │ │ │ │ ├── wikipedia.png │ │ │ │ └── youtube.png │ │ │ ├── loader.gif │ │ │ ├── logo_privacytools_a.png │ │ │ ├── logo_searx_a.png │ │ │ ├── logo_searx_a_n.png │ │ │ ├── map │ │ │ │ ├── layers-2x.png │ │ │ │ ├── layers.png │ │ │ │ ├── marker-icon-2x-green.png │ │ │ │ ├── marker-icon-2x-orange.png │ │ │ │ ├── marker-icon-2x-red.png │ │ │ │ ├── marker-icon-2x.png │ │ │ │ ├── marker-icon-green.png │ │ │ │ ├── marker-icon-orange.png │ │ │ │ ├── marker-icon-red.png │ │ │ │ ├── marker-icon.png │ │ │ │ └── marker-shadow.png │ │ │ └── searx_logo.png │ │ ├── js │ │ │ ├── leaflet-0.7.3.min.js │ │ │ ├── searx.js │ │ │ ├── searx.min.js │ │ │ └── searx_src │ │ │ │ ├── 00_requirejs_config.js │ │ │ │ ├── 01_init.js │ │ │ │ ├── autocompleter.js │ │ │ │ ├── element_modifiers.js │ │ │ │ ├── leaflet_map.js │ │ │ │ └── toggleall.js │ │ ├── less │ │ │ ├── logicodev-dark │ │ │ │ └── oscar.less │ │ │ ├── logicodev │ │ │ │ ├── advanced.less │ │ │ │ ├── checkbox.less │ │ │ │ ├── code.less │ │ │ │ ├── cursor.less │ │ │ │ ├── footer.less │ │ │ │ ├── infobox.less │ │ │ │ ├── navbar.less │ │ │ │ ├── onoff.less │ │ │ │ ├── oscar.less │ │ │ │ ├── preferences.less │ │ │ │ ├── results.less │ │ │ │ ├── search.less │ │ │ │ └── variables.less │ │ │ └── pointhi │ │ │ │ ├── advanced.less │ │ │ │ ├── checkbox.less │ │ │ │ ├── code.less │ │ │ │ ├── cursor.less │ │ │ │ ├── footer.less │ │ │ │ ├── infobox.less │ │ │ │ ├── navbar.less │ │ │ │ ├── onoff.less │ │ │ │ ├── oscar.less │ │ │ │ ├── preferences.less │ │ │ │ ├── results.less │ │ │ │ └── search.less │ │ └── package.json │ │ ├── pix-art │ │ ├── css │ │ │ └── style.css │ │ ├── img │ │ │ ├── favicon.png │ │ │ ├── preference-icon-pixel.png │ │ │ ├── search-icon-pixel.png │ │ │ ├── searx-pixel-small.png │ │ │ └── searx-pixel.png │ │ ├── js │ │ │ └── searx.js │ │ └── less │ │ │ ├── definitions.less │ │ │ ├── mixins.less │ │ │ ├── search.less │ │ │ └── style.less │ │ └── simple │ │ ├── .gitignore │ │ ├── .jshintignore │ │ ├── css │ │ ├── searx-rtl.css │ │ ├── searx-rtl.min.css │ │ ├── searx.css │ │ └── searx.min.css │ │ ├── fonts │ │ ├── ion.css │ │ ├── ion.eot │ │ ├── ion.html │ │ ├── ion.svg │ │ ├── ion.ttf │ │ ├── ion.woff │ │ └── ion.woff2 │ │ ├── gruntfile.js │ │ ├── img │ │ ├── favicon.png │ │ ├── logo_searx_a.png │ │ ├── searx.png │ │ └── searx_logo.svg │ │ ├── js │ │ ├── searx.head.js │ │ ├── searx.head.min.js │ │ ├── searx.head.min.js.map │ │ ├── searx.js │ │ ├── searx.min.js │ │ ├── searx.min.js.map │ │ ├── searx_head │ │ │ └── 00_init.js │ │ └── searx_src │ │ │ ├── 00_searx_toolkit.js │ │ │ ├── autocomplete.js │ │ │ ├── searx_imageresult.js │ │ │ ├── searx_keyboard.js │ │ │ ├── searx_mapresult.js │ │ │ ├── searx_results.js │ │ │ └── searx_search.js │ │ ├── leaflet │ │ ├── images │ │ │ ├── layers-2x.png │ │ │ ├── layers.png │ │ │ ├── marker-icon-2x-green.png │ │ │ ├── marker-icon-2x-orange.png │ │ │ ├── marker-icon-2x-red.png │ │ │ ├── marker-icon-2x.png │ │ │ ├── marker-icon-green.png │ │ │ ├── marker-icon-orange.png │ │ │ ├── marker-icon-red.png │ │ │ ├── marker-icon.png │ │ │ └── marker-shadow.png │ │ ├── leaflet.css │ │ └── leaflet.js │ │ ├── less │ │ ├── autocomplete.less │ │ ├── code.less │ │ ├── definitions.less │ │ ├── index.less │ │ ├── ion.less │ │ ├── mixins.less │ │ ├── normalize.less │ │ ├── preferences.less │ │ ├── search.less │ │ ├── stats.less │ │ ├── style-rtl.less │ │ ├── style.less │ │ ├── toolkit.less │ │ └── toolkit_loader.less │ │ ├── magnet.svg │ │ └── package.json ├── templates │ ├── __common__ │ │ ├── about.html │ │ ├── opensearch.xml │ │ ├── opensearch_response_rss.xml │ │ └── translations.js.tpl │ ├── courgette │ │ ├── 404.html │ │ ├── about.html │ │ ├── base.html │ │ ├── categories.html │ │ ├── color.css │ │ ├── github_ribbon.html │ │ ├── index.html │ │ ├── preferences.html │ │ ├── result_templates │ │ │ ├── code.html │ │ │ ├── default.html │ │ │ ├── images.html │ │ │ ├── key-value.html │ │ │ ├── map.html │ │ │ ├── torrent.html │ │ │ └── videos.html │ │ ├── results.html │ │ ├── search.html │ │ └── stats.html │ ├── legacy │ │ ├── 404.html │ │ ├── about.html │ │ ├── base.html │ │ ├── categories.html │ │ ├── github_ribbon.html │ │ ├── index.html │ │ ├── infobox.html │ │ ├── preferences.html │ │ ├── result_templates │ │ │ ├── code.html │ │ │ ├── default.html │ │ │ ├── images.html │ │ │ ├── key-value.html │ │ │ ├── map.html │ │ │ ├── torrent.html │ │ │ └── videos.html │ │ ├── results.html │ │ ├── search.html │ │ └── stats.html │ ├── oscar │ │ ├── 404.html │ │ ├── about.html │ │ ├── advanced.html │ │ ├── base.html │ │ ├── categories.html │ │ ├── index.html │ │ ├── infobox.html │ │ ├── languages.html │ │ ├── macros.html │ │ ├── messages │ │ │ ├── first_time.html │ │ │ ├── no_cookies.html │ │ │ ├── no_data_available.html │ │ │ ├── no_results.html │ │ │ ├── save_settings_successfull.html │ │ │ └── unknow_error.html │ │ ├── navbar.html │ │ ├── preferences.html │ │ ├── result_templates │ │ │ ├── code.html │ │ │ ├── default.html │ │ │ ├── images.html │ │ │ ├── key-value.html │ │ │ ├── map.html │ │ │ ├── torrent.html │ │ │ └── videos.html │ │ ├── results.html │ │ ├── search.html │ │ ├── search_full.html │ │ ├── stats.html │ │ └── time-range.html │ ├── pix-art │ │ ├── 404.html │ │ ├── about.html │ │ ├── base.html │ │ ├── index.html │ │ ├── preferences.html │ │ ├── result_templates │ │ │ ├── default.html │ │ │ └── images.html │ │ ├── results.html │ │ ├── search.html │ │ └── stats.html │ └── simple │ │ ├── 404.html │ │ ├── about.html │ │ ├── base.html │ │ ├── categories.html │ │ ├── index.html │ │ ├── infobox.html │ │ ├── languages.html │ │ ├── macros.html │ │ ├── messages │ │ └── no_results.html │ │ ├── preferences.html │ │ ├── result_templates │ │ ├── code.html │ │ ├── default.html │ │ ├── images.html │ │ ├── key-value.html │ │ ├── map.html │ │ ├── torrent.html │ │ └── videos.html │ │ ├── results.html │ │ ├── search.html │ │ ├── simple.spec.txt │ │ ├── stats.html │ │ └── time-range.html ├── testing.py ├── translations │ ├── ar │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── bg │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── bo │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ca │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── cs │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── cy │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── da │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── de │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── el_GR │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── en │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── eo │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── es │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── et │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── eu │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── fa_IR │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── fi │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── fil │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── fr │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── gl │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── he │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── hr │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── hu │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ia │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── it │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ja │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── lt │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── nl │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── nl_BE │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── oc │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── pl │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── pt │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── pt_BR │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ro │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ru │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── sk │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── sl │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── sr │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── sv │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── ta │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── te │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── tr │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── uk │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── vi │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── zh_CN │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ ├── zh_Hant_TW │ │ └── LC_MESSAGES │ │ │ ├── messages.mo │ │ │ └── messages.po │ └── zh_TW │ │ └── LC_MESSAGES │ │ ├── messages.mo │ │ └── messages.po ├── url_utils.py ├── utils.py ├── version.py └── webapp.py ├── setup.py ├── tests ├── __init__.py ├── robot │ └── __init__.py ├── test_robot.py └── unit │ ├── __init__.py │ ├── test_answerers.py │ ├── test_plugins.py │ ├── test_preferences.py │ ├── test_query.py │ ├── test_results.py │ ├── test_search.py │ ├── test_utils.py │ └── test_webapp.py ├── tox.ini └── utils ├── brand.env ├── fabfile.py ├── fetch_currencies.py ├── fetch_firefox_version.py ├── fetch_languages.py ├── filtron.sh ├── google_search.py ├── lib.sh ├── lxc-searx.env ├── lxc.sh ├── makefile.include ├── makefile.lxc ├── makefile.python ├── makefile.sphinx ├── morty.sh ├── searx.sh ├── site-python └── sphinx_build_tools.py ├── standalone_searx.py ├── templates ├── etc │ ├── apache2 │ ├── filtron │ │ └── rules.json │ ├── httpd │ │ └── sites-available │ │ │ ├── morty.conf │ │ │ ├── searx.conf:filtron │ │ │ └── searx.conf:uwsgi │ ├── nginx │ │ └── default.apps-available │ │ │ ├── morty.conf │ │ │ └── searx.conf:filtron │ └── uwsgi │ │ ├── apps-archlinux │ │ ├── searx.ini │ │ └── searx.ini:socket │ │ └── apps-available │ │ ├── searx.ini │ │ └── searx.ini:socket └── lib │ └── systemd │ └── system │ ├── filtron.service │ └── morty.service └── update-translations.sh /.codecov.yml: -------------------------------------------------------------------------------- 1 | comment: false 2 | coverage: 3 | status: 4 | project: 5 | default: 6 | # basic 7 | target: auto 8 | threshold: null 9 | base: auto 10 | # advanced 11 | branches: null 12 | if_no_uploads: error 13 | if_not_found: success 14 | if_ci_failed: error 15 | only_pulls: false 16 | flags: null 17 | paths: null 18 | patch: 19 | default: 20 | # basic 21 | target: auto 22 | threshold: null 23 | base: auto 24 | # advanced 25 | branches: null 26 | if_no_uploads: error 27 | if_not_found: success 28 | if_ci_failed: error 29 | only_pulls: false 30 | flags: null 31 | paths: null 32 | -------------------------------------------------------------------------------- /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = 4 | searx/engines 5 | searx/__init__.py 6 | searx/autocomplete.py 7 | searx/https_rewrite.py 8 | searx/languages.py 9 | searx/search.py 10 | searx/testing.py 11 | searx/utils.py 12 | searx/webapp.py 13 | 14 | [report] 15 | show_missing = True 16 | exclude_lines = 17 | if __name__ == .__main__.: 18 | 19 | [html] 20 | directory = coverage 21 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *~ 2 | */*~ 3 | */*/*~ 4 | */*/*/*~ 5 | */*/*/*/*~ 6 | 7 | # 8 | local/ 9 | 10 | # Git 11 | .git 12 | .gitignore 13 | 14 | # CI 15 | .codeclimate.yml 16 | .travis.yml 17 | .taskcluster.yml 18 | 19 | # Byte-compiled / optimized / DLL files 20 | __pycache__/ 21 | */__pycache__/ 22 | */*/__pycache__/ 23 | */*/*/__pycache__/ 24 | *.py[cod] 25 | */*.py[cod] 26 | */*/*.py[cod] 27 | */*/*/*.py[cod] 28 | 29 | # to sync with .gitignore 30 | .coverage 31 | coverage/ 32 | .installed.cfg 33 | engines.cfg 34 | env 35 | searx-ve 36 | robot_log.html 37 | robot_output.xml 38 | robot_report.html 39 | test_basic/ 40 | setup.cfg 41 | 42 | # node_modules 43 | node_modules/ 44 | */node_modules/ 45 | */*/node_modules/ 46 | */*/*/node_modules/ 47 | */*/*/*/node_modules/ 48 | 49 | .tx/ -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | searx/static/css/bootstrap.min.css -diff 2 | searx/static/js/bootstrap.min.js -diff 3 | searx/static/themes/oscar/css/logicodev.min.css -diff 4 | searx/static/themes/oscar/css/leaflet.min.css -diff 5 | searx/static/themes/oscar/css/pointhi.min.css -diff 6 | searx/static/themes/oscar/js/searx.min.js -diff 7 | searx/static/themes/simple/css/searx.min.css -diff 8 | searx/static/themes/simple/css/searx-rtl.min.css -diff 9 | searx/static/themes/simple/js/searx.min.js -diff 10 | searx/static/themes/simple/js/searx.min.js.map -diff 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # to sync with .dockerignore 2 | .coverage 3 | coverage/ 4 | cache/ 5 | .installed.cfg 6 | engines.cfg 7 | env 8 | searx-ve 9 | robot_log.html 10 | robot_output.xml 11 | robot_report.html 12 | test_basic/ 13 | setup.cfg 14 | 15 | *.pyc 16 | */*.pyc 17 | *~ 18 | 19 | /node_modules 20 | 21 | .tx/ 22 | 23 | build/ 24 | dist/ 25 | local/ 26 | gh-pages/ 27 | searx.egg-info/ 28 | -------------------------------------------------------------------------------- /.landscape.yaml: -------------------------------------------------------------------------------- 1 | strictness: high 2 | ignore-paths: 3 | - bootstrap.py 4 | -------------------------------------------------------------------------------- /babel.cfg: -------------------------------------------------------------------------------- 1 | [python: **.py] 2 | [jinja2: **/templates/**.html] 3 | extensions=jinja2.ext.autoescape,jinja2.ext.with_ 4 | -------------------------------------------------------------------------------- /dockerfiles/uwsgi.ini: -------------------------------------------------------------------------------- 1 | [uwsgi] 2 | # Who will run the code 3 | uid = searx 4 | gid = searx 5 | 6 | # Number of workers (usually CPU count) 7 | workers = 4 8 | 9 | # The right granted on the created socket 10 | chmod-socket = 666 11 | 12 | # Plugin to use and interpretor config 13 | single-interpreter = true 14 | master = true 15 | plugin = python3 16 | lazy-apps = true 17 | enable-threads = true 18 | 19 | # Module to import 20 | module = searx.webapp 21 | 22 | # Virtualenv and python path 23 | pythonpath = /usr/local/searx/ 24 | chdir = /usr/local/searx/searx/ 25 | 26 | # Disable logging for privacy 27 | disable-logging=True 28 | 29 | # But keep errors for 2 days 30 | touch-logrotate = /run/uwsgi-logrotate 31 | unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate } 32 | log-backupname = /var/log/uwsgi/uwsgi.log.1 33 | logto = /var/log/uwsgi/uwsgi.log 34 | 35 | # No keep alive 36 | # See https://github.com/searx/searx-docker/issues/24 37 | add-header = Connection: close 38 | -------------------------------------------------------------------------------- /docs/_themes/searx/theme.conf: -------------------------------------------------------------------------------- 1 | [theme] 2 | inherit = pocoo 3 | stylesheet = searx.css 4 | 5 | [options] 6 | touch_icon = 7 | -------------------------------------------------------------------------------- /docs/admin/architecture.rst: -------------------------------------------------------------------------------- 1 | .. _architecture: 2 | 3 | ============ 4 | Architecture 5 | ============ 6 | 7 | .. sidebar:: Further reading 8 | 9 | - Reverse Proxy: :ref:`Apache ` & :ref:`nginx ` 11 | - Filtron: :ref:`searx filtron` 12 | - Morty: :ref:`searx morty` 13 | - uWSGI: :ref:`searx uwsgi` 14 | - Searx: :ref:`installation basic` 15 | 16 | Herein you will find some hints and suggestions about typical architectures of 17 | searx infrastructures. 18 | 19 | We start with a contribution from :pull:`@dalf <1776#issuecomment-567917320>`. 20 | It shows a *reference* setup for public searx instances which can build up and 21 | maintained by the scripts from our :ref:`toolboxing`. 22 | 23 | .. _arch public: 24 | 25 | .. kernel-figure:: arch_public.dot 26 | :alt: arch_public.dot 27 | 28 | Reference architecture of a public searx setup. 29 | -------------------------------------------------------------------------------- /docs/admin/index.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Administrator documentation 3 | =========================== 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | :caption: Contents 8 | 9 | installation 10 | installation-searx 11 | installation-uwsgi 12 | installation-nginx 13 | installation-apache 14 | installation-docker 15 | update-searx 16 | settings 17 | api 18 | architecture 19 | filtron 20 | morty 21 | engines 22 | plugins 23 | buildhosts 24 | -------------------------------------------------------------------------------- /docs/admin/installation-docker.rst: -------------------------------------------------------------------------------- 1 | .. _installation docker: 2 | 3 | =================== 4 | Docker installation 5 | =================== 6 | 7 | .. contents:: Contents 8 | :depth: 2 9 | :local: 10 | :backlinks: entry 11 | 12 | Make sure you have installed Docker. For instance, you can deploy searx like this: 13 | 14 | .. code:: sh 15 | 16 | docker pull wonderfall/searx 17 | docker run -d --name searx -p $PORT:8888 wonderfall/searx 18 | 19 | Go to ``http://localhost:$PORT``. 20 | 21 | See https://hub.docker.com/r/wonderfall/searx/ for more informations. It's also 22 | possible to build searx from the embedded Dockerfile. 23 | 24 | .. code:: sh 25 | 26 | git clone https://github.com/asciimoo/searx.git 27 | cd searx 28 | docker build -t whatever/searx . 29 | -------------------------------------------------------------------------------- /docs/admin/morty.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _searx morty: 3 | 4 | ========================= 5 | How to setup result proxy 6 | ========================= 7 | 8 | .. sidebar:: further reading 9 | 10 | - :ref:`morty.sh` 11 | 12 | .. _morty: https://github.com/asciimoo/morty 13 | .. _morty's README: https://github.com/asciimoo/morty 14 | 15 | By default searx can only act as an image proxy for result images, but it is 16 | possible to proxify all the result URLs with an external service, morty_. 17 | 18 | To use this feature, morty has to be installed and activated in searx's 19 | ``settings.yml``. 20 | 21 | Add the following snippet to your ``settings.yml`` and restart searx: 22 | 23 | .. code:: yaml 24 | 25 | result_proxy: 26 | url : http://127.0.0.1:3000/ 27 | key : your_morty_proxy_key 28 | 29 | ``url`` 30 | Is the address of the running morty service. 31 | 32 | ``key`` 33 | Is an optional argument, see `morty's README`_ for more information. 34 | -------------------------------------------------------------------------------- /docs/admin/plugins.rst: -------------------------------------------------------------------------------- 1 | .. _plugins generic: 2 | 3 | =============== 4 | Plugins builtin 5 | =============== 6 | 7 | .. sidebar:: Further reading .. 8 | 9 | - :ref:`dev plugin` 10 | 11 | Configuration defaults (at built time): 12 | 13 | :DO: Default on 14 | 15 | .. _configured plugins: 16 | 17 | .. jinja:: webapp 18 | 19 | .. flat-table:: Plugins configured at built time (defaults) 20 | :header-rows: 1 21 | :stub-columns: 1 22 | :widths: 3 1 9 23 | 24 | * - Name 25 | - DO 26 | - Description 27 | 28 | JS & CSS dependencies 29 | 30 | {% for plgin in plugins %} 31 | 32 | * - {{plgin.name}} 33 | - {{(plgin.default_on and "y") or ""}} 34 | - {{plgin.description}} 35 | 36 | {% for dep in (plgin.js_dependencies + plgin.css_dependencies) %} 37 | | ``{{dep}}`` {% endfor %} 38 | 39 | {% endfor %} 40 | -------------------------------------------------------------------------------- /docs/admin/update-searx.rst: -------------------------------------------------------------------------------- 1 | .. _update searx: 2 | 3 | ============= 4 | How to update 5 | ============= 6 | 7 | .. code:: sh 8 | 9 | sudo -H -u searx -i 10 | (searx)$ git stash 11 | (searx)$ git pull origin master 12 | (searx)$ git stash apply 13 | (searx)$ ./manage.sh update_packages 14 | 15 | Restart uwsgi: 16 | 17 | .. tabs:: 18 | 19 | .. group-tab:: Ubuntu / debian 20 | 21 | .. code:: sh 22 | 23 | sudo -H systemctl restart uwsgi 24 | -------------------------------------------------------------------------------- /docs/blog/index.rst: -------------------------------------------------------------------------------- 1 | ==== 2 | Blog 3 | ==== 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | :caption: Contents 8 | 9 | lxcdev-202006 10 | python3 11 | admin 12 | intro-offline 13 | private-engines 14 | -------------------------------------------------------------------------------- /docs/blog/searx-admin-engines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/docs/blog/searx-admin-engines.png -------------------------------------------------------------------------------- /docs/blog/searxpy3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/docs/blog/searxpy3.png -------------------------------------------------------------------------------- /docs/dev/csv_table.txt: -------------------------------------------------------------------------------- 1 | stub col row 1, column, "loremLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy 2 | eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam 3 | voluptua." 4 | stub col row 1, "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita 5 | kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", column 6 | stub col row 1, column, column 7 | -------------------------------------------------------------------------------- /docs/dev/hello.dot: -------------------------------------------------------------------------------- 1 | graph G { 2 | Hello -- World 3 | } 4 | -------------------------------------------------------------------------------- /docs/dev/index.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | Developer documentation 3 | ======================= 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | :caption: Contents 8 | 9 | quickstart 10 | contribution_guide 11 | engine_overview 12 | search_api 13 | plugins 14 | translation 15 | makefile 16 | reST 17 | -------------------------------------------------------------------------------- /docs/dev/svg_image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | Welcome to searx 3 | ================ 4 | 5 | *Search without being tracked.* 6 | 7 | Searx is a free internet metasearch engine which aggregates results from more 8 | than 70 search services. Users are neither tracked nor profiled. Additionally, 9 | searx can be used over Tor for online anonymity. 10 | 11 | Get started with searx by using one of the Searx-instances_. If you don't trust 12 | anyone, you can set up your own, see :ref:`installation`. 13 | 14 | .. sidebar:: Features 15 | 16 | - Self hosted 17 | - No user tracking 18 | - No user profiling 19 | - About 70 supported search engines 20 | - Easy integration with any search engine 21 | - Cookies are not used by default 22 | - Secure, encrypted connections (HTTPS/SSL) 23 | - Hosted by organizations, such as *La Quadrature du Net*, which promote 24 | digital rights 25 | 26 | .. toctree:: 27 | :maxdepth: 2 28 | :caption: Contents 29 | 30 | user/index 31 | admin/index 32 | dev/index 33 | utils/index 34 | blog/index 35 | 36 | .. _Searx-instances: https://searx.space 37 | -------------------------------------------------------------------------------- /docs/static/img/searx_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/docs/static/img/searx_logo_small.png -------------------------------------------------------------------------------- /docs/user/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8; mode: python -*- 2 | """Configuration for the Searx user handbook 3 | """ 4 | project = 'Searx User-HB' 5 | version = release = VERSION_STRING 6 | 7 | # Grouping the document tree into LaTeX files. List of tuples 8 | # (source start file, target name, title, 9 | # author, documentclass [howto, manual, or own class]). 10 | latex_documents = [ 11 | ('index' # startdocname 12 | , 'searx-user-hb.tex' # targetname 13 | , '' # take title from .rst 14 | , author # author 15 | , 'howto' # documentclass 16 | , False # toctree_only 17 | ), 18 | ] 19 | 20 | -------------------------------------------------------------------------------- /docs/user/index.rst: -------------------------------------------------------------------------------- 1 | ================== 2 | User documentation 3 | ================== 4 | 5 | .. toctree:: 6 | :maxdepth: 2 7 | :caption: Contents 8 | 9 | search_syntax 10 | own-instance 11 | -------------------------------------------------------------------------------- /docs/user/search_syntax.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _search-syntax: 3 | 4 | ============= 5 | Search syntax 6 | ============= 7 | 8 | Searx allows you to modify the default categories, engines and search language 9 | via the search query. 10 | 11 | Prefix ``!`` 12 | to set Category/engine 13 | 14 | Prefix: ``:`` 15 | to set language 16 | 17 | Prefix: ``?`` 18 | to add engines and categories to the currently selected categories 19 | 20 | Abbrevations of the engines and languages are also accepted. Engine/category 21 | modifiers are chainable and inclusive (e.g. with :search:`!it !ddg !wp qwer 22 | ` search in IT category **and** duckduckgo 23 | **and** wikipedia for ``qwer``). 24 | 25 | See the :search:`/preferences page ` for the list of engines, 26 | categories and languages. 27 | 28 | Examples 29 | ======== 30 | 31 | Search in wikipedia for ``qwer``: 32 | 33 | - :search:`!wp qwer ` or 34 | - :search:`!wikipedia qwer :search:` 35 | 36 | Image search: 37 | 38 | - :search:`!images Cthulhu ` 39 | 40 | Custom language in wikipedia: 41 | 42 | - :search:`:hu !wp hackerspace ` 43 | -------------------------------------------------------------------------------- /docs/utils/searx.sh.rst: -------------------------------------------------------------------------------- 1 | 2 | .. _searx.sh: 3 | 4 | ================== 5 | ``utils/searx.sh`` 6 | ================== 7 | 8 | .. sidebar:: further reading 9 | 10 | - :ref:`architecture` 11 | - :ref:`installation` 12 | - :ref:`installation nginx` 13 | - :ref:`installation apache` 14 | 15 | To simplify installation and maintenance of a searx instance you can use the 16 | script :origin:`utils/searx.sh`. 17 | 18 | Install 19 | ======= 20 | 21 | In most cases you will install searx simply by running the command: 22 | 23 | .. code:: bash 24 | 25 | sudo -H ./utils/searx.sh install all 26 | 27 | The script adds a ``${SERVICE_USER}`` (default:``searx``) and installs searx 28 | into this user account. The installation is described in chapter 29 | :ref:`installation basic`. 30 | 31 | .. _intranet reverse proxy: 32 | 33 | Overview 34 | ======== 35 | 36 | The ``--help`` output of the script is largely self-explanatory 37 | (:ref:`toolboxing common`): 38 | 39 | .. program-output:: ../utils/searx.sh --help 40 | -------------------------------------------------------------------------------- /examples/basic_engine.py: -------------------------------------------------------------------------------- 1 | 2 | categories = ['general'] # optional 3 | 4 | 5 | def request(query, params): 6 | '''pre-request callback 7 | params: 8 | method : POST/GET 9 | headers : {} 10 | data : {} # if method == POST 11 | url : '' 12 | category: 'search category' 13 | pageno : 1 # number of the requested page 14 | ''' 15 | 16 | params['url'] = 'https://host/%s' % query 17 | 18 | return params 19 | 20 | 21 | def response(resp): 22 | '''post-response callback 23 | resp: requests response object 24 | ''' 25 | return [{'url': '', 'title': '', 'content': ''}] 26 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | pallets-sphinx-themes 2 | Sphinx 3 | sphinx-issues 4 | mock==2.0.0 5 | nose2[coverage_plugin] 6 | cov-core==1.15.0 7 | pep8==1.7.0 8 | pylint 9 | plone.testing==5.0.0 10 | splinter==0.11.0 11 | transifex-client==0.12.2 12 | unittest2==1.1.0 13 | zope.testrunner==4.5.1 14 | selenium==3.141.0 15 | linuxdoc @ git+http://github.com/return42/linuxdoc.git 16 | sphinx-jinja 17 | sphinx-tabs 18 | sphinxcontrib-programoutput 19 | twine 20 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2020.4.5.1 2 | babel==2.7.0 3 | flask-babel==1.0.0 4 | flask==1.1.2 5 | idna==2.9 6 | jinja2==2.11.1 7 | lxml==4.5.0 8 | pygments==2.1.3 9 | pyopenssl==19.1.0 10 | python-dateutil==2.8.0 11 | pyyaml==5.3.1 12 | requests[socks]==2.23.0 13 | -------------------------------------------------------------------------------- /searx/brand.py: -------------------------------------------------------------------------------- 1 | GIT_URL = 'https://github.com/asciimoo/searx' 2 | GIT_BRANCH = 'master' 3 | ISSUE_URL = 'https://github.com/asciimoo/searx/issues' 4 | SEARX_URL = 'https://searx.me' 5 | DOCS_URL = 'https://asciimoo.github.io/searx' 6 | PUBLIC_INSTANCES = 'https://searx.space' 7 | -------------------------------------------------------------------------------- /searx/data/useragents.json: -------------------------------------------------------------------------------- 1 | { 2 | "versions": [ 3 | "75.0", 4 | "74.0.1", 5 | "74.0" 6 | ], 7 | "os": [ 8 | "Windows NT 10.0; WOW64", 9 | "X11; Linux x86_64" 10 | ], 11 | "ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}" 12 | } 13 | -------------------------------------------------------------------------------- /searx/engines/dummy-offline.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dummy Offline 3 | 4 | @results one result 5 | @stable yes 6 | """ 7 | 8 | 9 | def search(query, request_params): 10 | return [{ 11 | 'result': 'this is what you get', 12 | }] 13 | -------------------------------------------------------------------------------- /searx/engines/dummy.py: -------------------------------------------------------------------------------- 1 | """ 2 | Dummy 3 | 4 | @results empty array 5 | @stable yes 6 | """ 7 | 8 | 9 | # do search-request 10 | def request(query, params): 11 | return params 12 | 13 | 14 | # get response from search-request 15 | def response(resp): 16 | return [] 17 | -------------------------------------------------------------------------------- /searx/exceptions.py: -------------------------------------------------------------------------------- 1 | ''' 2 | searx is free software: you can redistribute it and/or modify 3 | it under the terms of the GNU Affero General Public License as published by 4 | the Free Software Foundation, either version 3 of the License, or 5 | (at your option) any later version. 6 | 7 | searx is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU Affero General Public License for more details. 11 | 12 | You should have received a copy of the GNU Affero General Public License 13 | along with searx. If not, see < http://www.gnu.org/licenses/ >. 14 | 15 | (C) 2017- by Alexandre Flament, 16 | ''' 17 | 18 | 19 | class SearxException(Exception): 20 | pass 21 | 22 | 23 | class SearxParameterException(SearxException): 24 | 25 | def __init__(self, name, value): 26 | if value == '' or value is None: 27 | message = 'Empty ' + name + ' parameter' 28 | else: 29 | message = 'Invalid value "' + value + '" for parameter ' + name 30 | super(SearxParameterException, self).__init__(message) 31 | self.message = message 32 | self.parameter_name = name 33 | self.parameter_value = value 34 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/00README: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Bing.xml: -------------------------------------------------------------------------------- 1 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 49 | 50 | 52 | 53 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/DuckDuckGo.xml: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Flickr.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 34 | 35 | 37 | 38 | 40 | 41 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Github-Pages.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Google-mismatches.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 22 | 23 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Google.org.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleCanada.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleMelange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleShopping.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 21 | 22 | 24 | 25 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleSorry.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleTranslate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/GoogleWatchBlog.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Google_App_Engine.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 21 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Googleplex.com.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/OpenStreetMap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Rawgithub.com.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/ThePirateBay.xml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 32 | 33 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/Torproject.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /searx/plugins/https_rules/WikiLeaks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /searx/plugins/infinite_scroll.py: -------------------------------------------------------------------------------- 1 | from flask_babel import gettext 2 | 3 | name = gettext('Infinite scroll') 4 | description = gettext('Automatically load next page when scrolling to bottom of current page') 5 | default_on = False 6 | preference_section = 'ui' 7 | 8 | js_dependencies = ('plugins/js/infinite_scroll.js',) 9 | css_dependencies = ('plugins/css/infinite_scroll.css',) 10 | -------------------------------------------------------------------------------- /searx/plugins/open_results_on_new_tab.py: -------------------------------------------------------------------------------- 1 | ''' 2 | searx is free software: you can redistribute it and/or modify 3 | it under the terms of the GNU Affero General Public License as published by 4 | the Free Software Foundation, either version 3 of the License, or 5 | (at your option) any later version. 6 | 7 | searx is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU Affero General Public License for more details. 11 | 12 | You should have received a copy of the GNU Affero General Public License 13 | along with searx. If not, see < http://www.gnu.org/licenses/ >. 14 | 15 | (C) 2016 by Adam Tauber, 16 | ''' 17 | from flask_babel import gettext 18 | name = gettext('Open result links on new browser tabs') 19 | description = gettext('Results are opened in the same window by default. ' 20 | 'This plugin overwrites the default behaviour to open links on new tabs/windows. ' 21 | '(JavaScript required)') 22 | default_on = False 23 | preference_section = 'ui' 24 | 25 | js_dependencies = ('plugins/js/open_results_on_new_tab.js',) 26 | -------------------------------------------------------------------------------- /searx/plugins/search_on_category_select.py: -------------------------------------------------------------------------------- 1 | ''' 2 | searx is free software: you can redistribute it and/or modify 3 | it under the terms of the GNU Affero General Public License as published by 4 | the Free Software Foundation, either version 3 of the License, or 5 | (at your option) any later version. 6 | 7 | searx is distributed in the hope that it will be useful, 8 | but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | GNU Affero General Public License for more details. 11 | 12 | You should have received a copy of the GNU Affero General Public License 13 | along with searx. If not, see < http://www.gnu.org/licenses/ >. 14 | 15 | (C) 2015 by Adam Tauber, 16 | ''' 17 | from flask_babel import gettext 18 | name = gettext('Search on category select') 19 | description = gettext('Perform search immediately if a category selected. ' 20 | 'Disable to select multiple categories. (JavaScript required)') 21 | default_on = True 22 | preference_section = 'ui' 23 | 24 | js_dependencies = ('plugins/js/search_on_category_select.js',) 25 | -------------------------------------------------------------------------------- /searx/plugins/vim_hotkeys.py: -------------------------------------------------------------------------------- 1 | from flask_babel import gettext 2 | 3 | name = gettext('Vim-like hotkeys') 4 | description = gettext('Navigate search results with Vim-like hotkeys ' 5 | '(JavaScript required). ' 6 | 'Press "h" key on main or result page to get help.') 7 | default_on = False 8 | preference_section = 'ui' 9 | 10 | js_dependencies = ('plugins/js/vim_hotkeys.js',) 11 | css_dependencies = ('plugins/css/vim_hotkeys.css',) 12 | -------------------------------------------------------------------------------- /searx/settings_robot.yml: -------------------------------------------------------------------------------- 1 | general: 2 | debug : False 3 | instance_name : "searx_test" 4 | 5 | search: 6 | language: "all" 7 | 8 | server: 9 | port : 11111 10 | bind_address : 127.0.0.1 11 | secret_key : "ultrasecretkey" # change this! 12 | base_url : False 13 | http_protocol_version : "1.0" 14 | 15 | ui: 16 | static_path : "" 17 | templates_path : "" 18 | default_theme : oscar 19 | 20 | outgoing: 21 | request_timeout : 1.0 # seconds 22 | useragent_suffix : "" 23 | 24 | engines: 25 | - name : general dummy 26 | engine : dummy 27 | categories : general 28 | shortcut : gd 29 | 30 | - name : dummy dummy 31 | engine : dummy 32 | categories : dummy 33 | shortcut : dd 34 | 35 | locales: 36 | en : English 37 | hu : Magyar 38 | 39 | doi_resolvers : 40 | oadoi.org : 'https://oadoi.org/' 41 | doi.org : 'https://doi.org/' 42 | doai.io : 'https://doai.io/' 43 | sci-hub.tw : 'https://sci-hub.tw/' 44 | 45 | default_doi_resolver : 'oadoi.org' 46 | -------------------------------------------------------------------------------- /searx/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /searx/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /searx/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /searx/static/less/bootstrap/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/close.less: -------------------------------------------------------------------------------- 1 | // 2 | // Close icons 3 | // -------------------------------------------------- 4 | 5 | 6 | .close { 7 | float: right; 8 | font-size: (@font-size-base * 1.5); 9 | font-weight: @close-font-weight; 10 | line-height: 1; 11 | color: @close-color; 12 | text-shadow: @close-text-shadow; 13 | .opacity(.2); 14 | 15 | &:hover, 16 | &:focus { 17 | color: @close-color; 18 | text-decoration: none; 19 | cursor: pointer; 20 | .opacity(.5); 21 | } 22 | 23 | // Additional properties for button version 24 | // iOS requires the button element instead of an anchor tag. 25 | // If you want the anchor version, it requires `href="#"`. 26 | button& { 27 | padding: 0; 28 | cursor: pointer; 29 | background: transparent; 30 | border: 0; 31 | -webkit-appearance: none; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/component-animations.less: -------------------------------------------------------------------------------- 1 | // 2 | // Component animations 3 | // -------------------------------------------------- 4 | 5 | // Heads up! 6 | // 7 | // We don't use the `.opacity()` mixin here since it causes a bug with text 8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. 9 | 10 | .fade { 11 | opacity: 0; 12 | .transition(opacity .15s linear); 13 | &.in { 14 | opacity: 1; 15 | } 16 | } 17 | 18 | .collapse { 19 | display: none; 20 | 21 | &.in { display: block; } 22 | tr&.in { display: table-row; } 23 | tbody&.in { display: table-row-group; } 24 | } 25 | 26 | .collapsing { 27 | position: relative; 28 | height: 0; 29 | overflow: hidden; 30 | .transition(height .35s ease); 31 | } 32 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/jumbotron.less: -------------------------------------------------------------------------------- 1 | // 2 | // Jumbotron 3 | // -------------------------------------------------- 4 | 5 | 6 | .jumbotron { 7 | padding: @jumbotron-padding; 8 | margin-bottom: @jumbotron-padding; 9 | color: @jumbotron-color; 10 | background-color: @jumbotron-bg; 11 | 12 | h1, 13 | .h1 { 14 | color: @jumbotron-heading-color; 15 | } 16 | p { 17 | margin-bottom: (@jumbotron-padding / 2); 18 | font-size: @jumbotron-font-size; 19 | font-weight: 200; 20 | } 21 | 22 | > hr { 23 | border-top-color: darken(@jumbotron-bg, 10%); 24 | } 25 | 26 | .container & { 27 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container 28 | } 29 | 30 | .container { 31 | max-width: 100%; 32 | } 33 | 34 | @media screen and (min-width: @screen-sm-min) { 35 | padding-top: (@jumbotron-padding * 1.6); 36 | padding-bottom: (@jumbotron-padding * 1.6); 37 | 38 | .container & { 39 | padding-left: (@jumbotron-padding * 2); 40 | padding-right: (@jumbotron-padding * 2); 41 | } 42 | 43 | h1, 44 | .h1 { 45 | font-size: (@font-size-base * 4.5); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/media.less: -------------------------------------------------------------------------------- 1 | // Media objects 2 | // Source: http://stubbornella.org/content/?p=497 3 | // -------------------------------------------------- 4 | 5 | 6 | // Common styles 7 | // ------------------------- 8 | 9 | // Clear the floats 10 | .media, 11 | .media-body { 12 | overflow: hidden; 13 | zoom: 1; 14 | } 15 | 16 | // Proper spacing between instances of .media 17 | .media, 18 | .media .media { 19 | margin-top: 15px; 20 | } 21 | .media:first-child { 22 | margin-top: 0; 23 | } 24 | 25 | // For images and videos, set to block 26 | .media-object { 27 | display: block; 28 | } 29 | 30 | // Reset margins on headings for tighter default spacing 31 | .media-heading { 32 | margin: 0 0 5px; 33 | } 34 | 35 | 36 | // Media image alignment 37 | // ------------------------- 38 | 39 | .media { 40 | > .pull-left { 41 | margin-right: 10px; 42 | } 43 | > .pull-right { 44 | margin-left: 10px; 45 | } 46 | } 47 | 48 | 49 | // Media list variation 50 | // ------------------------- 51 | 52 | // Undo default ul/ol styles 53 | .media-list { 54 | padding-left: 0; 55 | list-style: none; 56 | } 57 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------------------------------- 3 | 4 | // Utilities 5 | @import "mixins/hide-text.less"; 6 | @import "mixins/opacity.less"; 7 | @import "mixins/image.less"; 8 | @import "mixins/labels.less"; 9 | @import "mixins/reset-filter.less"; 10 | @import "mixins/resize.less"; 11 | @import "mixins/responsive-visibility.less"; 12 | @import "mixins/size.less"; 13 | @import "mixins/tab-focus.less"; 14 | @import "mixins/text-emphasis.less"; 15 | @import "mixins/text-overflow.less"; 16 | @import "mixins/vendor-prefixes.less"; 17 | 18 | // Components 19 | @import "mixins/alerts.less"; 20 | @import "mixins/buttons.less"; 21 | @import "mixins/panels.less"; 22 | @import "mixins/pagination.less"; 23 | @import "mixins/list-group.less"; 24 | @import "mixins/nav-divider.less"; 25 | @import "mixins/forms.less"; 26 | @import "mixins/progress-bar.less"; 27 | @import "mixins/table-row.less"; 28 | 29 | // Skins 30 | @import "mixins/background-variant.less"; 31 | @import "mixins/border-radius.less"; 32 | @import "mixins/gradients.less"; 33 | 34 | // Layout 35 | @import "mixins/clearfix.less"; 36 | @import "mixins/center-block.less"; 37 | @import "mixins/nav-vertical-align.less"; 38 | @import "mixins/grid-framework.less"; 39 | @import "mixins/grid.less"; 40 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (will be removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a& { 9 | color: @color; 10 | 11 | .list-group-item-heading { 12 | color: inherit; 13 | } 14 | 15 | &:hover, 16 | &:focus { 17 | color: @color; 18 | background-color: darken(@background, 5%); 19 | } 20 | &.active, 21 | &.active:hover, 22 | &.active:focus { 23 | color: #fff; 24 | background-color: @color; 25 | border-color: @color; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | } 10 | &:first-child { 11 | > a, 12 | > span { 13 | .border-left-radius(@border-radius); 14 | } 15 | } 16 | &:last-child { 17 | > a, 18 | > span { 19 | .border-right-radius(@border-radius); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/table-row.less: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | .table-row-variant(@state; @background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table > thead > tr, 7 | .table > tbody > tr, 8 | .table > tfoot > tr { 9 | > td.@{state}, 10 | > th.@{state}, 11 | &.@{state} > td, 12 | &.@{state} > th { 13 | background-color: @background; 14 | } 15 | } 16 | 17 | // Hover states for `.table-hover` 18 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 19 | .table-hover > tbody > tr { 20 | > td.@{state}:hover, 21 | > th.@{state}:hover, 22 | &.@{state}:hover > td, 23 | &:hover > .@{state}, 24 | &.@{state}:hover > th { 25 | background-color: darken(@background, 5%); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/pager.less: -------------------------------------------------------------------------------- 1 | // 2 | // Pager pagination 3 | // -------------------------------------------------- 4 | 5 | 6 | .pager { 7 | padding-left: 0; 8 | margin: @line-height-computed 0; 9 | list-style: none; 10 | text-align: center; 11 | &:extend(.clearfix all); 12 | li { 13 | display: inline; 14 | > a, 15 | > span { 16 | display: inline-block; 17 | padding: 5px 14px; 18 | background-color: @pager-bg; 19 | border: 1px solid @pager-border; 20 | border-radius: @pager-border-radius; 21 | } 22 | 23 | > a:hover, 24 | > a:focus { 25 | text-decoration: none; 26 | background-color: @pager-hover-bg; 27 | } 28 | } 29 | 30 | .next { 31 | > a, 32 | > span { 33 | float: right; 34 | } 35 | } 36 | 37 | .previous { 38 | > a, 39 | > span { 40 | float: left; 41 | } 42 | } 43 | 44 | .disabled { 45 | > a, 46 | > a:hover, 47 | > a:focus, 48 | > span { 49 | color: @pager-disabled-color; 50 | background-color: @pager-bg; 51 | cursor: not-allowed; 52 | } 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | bottom: 0; 20 | height: 100%; 21 | width: 100%; 22 | border: 0; 23 | } 24 | 25 | // Modifier class for 16:9 aspect ratio 26 | &.embed-responsive-16by9 { 27 | padding-bottom: 56.25%; 28 | } 29 | 30 | // Modifier class for 4:3 aspect ratio 31 | &.embed-responsive-4by3 { 32 | padding-bottom: 75%; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/thumbnails.less: -------------------------------------------------------------------------------- 1 | // 2 | // Thumbnails 3 | // -------------------------------------------------- 4 | 5 | 6 | // Mixin and adjust the regular image class 7 | .thumbnail { 8 | display: block; 9 | padding: @thumbnail-padding; 10 | margin-bottom: @line-height-computed; 11 | line-height: @line-height-base; 12 | background-color: @thumbnail-bg; 13 | border: 1px solid @thumbnail-border; 14 | border-radius: @thumbnail-border-radius; 15 | .transition(all .2s ease-in-out); 16 | 17 | > img, 18 | a > img { 19 | &:extend(.img-responsive); 20 | margin-left: auto; 21 | margin-right: auto; 22 | } 23 | 24 | // Add a hover state for linked versions only 25 | a&:hover, 26 | a&:focus, 27 | a&.active { 28 | border-color: @link-color; 29 | } 30 | 31 | // Image captions 32 | .caption { 33 | padding: @thumbnail-caption-padding; 34 | color: @thumbnail-caption-color; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/utilities.less: -------------------------------------------------------------------------------- 1 | // 2 | // Utility classes 3 | // -------------------------------------------------- 4 | 5 | 6 | // Floats 7 | // ------------------------- 8 | 9 | .clearfix { 10 | .clearfix(); 11 | } 12 | .center-block { 13 | .center-block(); 14 | } 15 | .pull-right { 16 | float: right !important; 17 | } 18 | .pull-left { 19 | float: left !important; 20 | } 21 | 22 | 23 | // Toggling content 24 | // ------------------------- 25 | 26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 27 | .hide { 28 | display: none !important; 29 | } 30 | .show { 31 | display: block !important; 32 | } 33 | .invisible { 34 | visibility: hidden; 35 | } 36 | .text-hide { 37 | .text-hide(); 38 | } 39 | 40 | 41 | // Hide from screenreaders and browsers 42 | // 43 | // Credit: HTML5 Boilerplate 44 | 45 | .hidden { 46 | display: none !important; 47 | visibility: hidden !important; 48 | } 49 | 50 | 51 | // For Affix plugin 52 | // ------------------------- 53 | 54 | .affix { 55 | position: fixed; 56 | .translate3d(0, 0, 0); 57 | } 58 | -------------------------------------------------------------------------------- /searx/static/less/bootstrap/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /searx/static/plugins/css/infinite_scroll.css: -------------------------------------------------------------------------------- 1 | @keyframes rotate-forever { 2 | 0% { transform: rotate(0deg) } 3 | 100% { transform: rotate(360deg) } 4 | } 5 | .loading-spinner { 6 | animation-duration: 0.75s; 7 | animation-iteration-count: infinite; 8 | animation-name: rotate-forever; 9 | animation-timing-function: linear; 10 | height: 30px; 11 | width: 30px; 12 | border: 8px solid #666; 13 | border-right-color: transparent; 14 | border-radius: 50% !important; 15 | margin: 0 auto; 16 | } 17 | #pagination button { 18 | visibility: hidden; 19 | } 20 | -------------------------------------------------------------------------------- /searx/static/plugins/css/vim_hotkeys.css: -------------------------------------------------------------------------------- 1 | .vim-hotkeys-help { 2 | position: fixed; 3 | top: 50%; 4 | left: 50%; 5 | transform: translate(-50%, -50%); 6 | z-index: 9999999; 7 | overflow-y: auto; 8 | max-height: 80%; 9 | box-shadow: 0 0 1em; 10 | } 11 | 12 | .dflex { 13 | display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ 14 | display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */ 15 | display: -ms-flexbox; /* TWEENER - IE 10 */ 16 | display: -webkit-flex; /* NEW - Chrome */ 17 | display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */ 18 | } 19 | 20 | .iflex { 21 | -webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */ 22 | -moz-box-flex: 1; /* OLD - Firefox 19- */ 23 | -webkit-flex: 1; /* Chrome */ 24 | -ms-flex: 1; /* IE 10 */ 25 | flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */ 26 | } 27 | -------------------------------------------------------------------------------- /searx/static/plugins/js/open_results_on_new_tab.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $('.result_header > a').attr('target', '_blank'); 3 | }); 4 | -------------------------------------------------------------------------------- /searx/static/themes/courgette/css/style-rtl.css: -------------------------------------------------------------------------------- 1 | #search_submit,#sidebar,.right{right:auto;left:0}.q{padding:.5em 1em .5em 3em}.result .favicon{float:right;margin-left:.5em;margin-right:0}#results{padding:0 32px 0 272px}.search.center{padding-right:0;padding-left:17em}#pagination form+form{float:left;margin-top:-2em}.engine-table{text-align:right} -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/bg-body-index.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/bg-body-index.jpg -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/favicon.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/github_ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/github_ribbon.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_500px.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_500px.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_bing.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_bing.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_dailymotion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_dailymotion.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_deezer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_deezer.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_deviantart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_deviantart.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_digg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_digg.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_duckduckgo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_duckduckgo.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_flickr.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_flickr.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_github.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_github.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_google play apps.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_google play apps.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_google play movies.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_google play movies.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_google play music.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_google play music.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_google.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_google.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_kickass.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_kickass.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_openstreetmap.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_openstreetmap.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_searchcode code.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_searchcode code.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_searchcode doc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_searchcode doc.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_searchcode.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_searchcode.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_soundcloud.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_soundcloud.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_stackoverflow.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_stackoverflow.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_startpage.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_startpage.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_subtitleseeker.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_subtitleseeker.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_twitter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_twitter.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_vimeo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_vimeo.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_wikipedia.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_wikipedia.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_yahoo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_yahoo.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/icons/icon_youtube.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/icons/icon_youtube.ico -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/preference-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/preference-icon.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/search-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/search-icon.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/searx-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/searx-mobile.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/img/searx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/courgette/img/searx.png -------------------------------------------------------------------------------- /searx/static/themes/courgette/less/style-rtl.less: -------------------------------------------------------------------------------- 1 | .q { 2 | padding: 0.5em 1em 0.5em 3em; 3 | } 4 | 5 | #search_submit { 6 | left: 0; 7 | right:auto; 8 | } 9 | 10 | .result .favicon { 11 | float: right; 12 | margin-left: 0.5em; 13 | margin-right: 0; 14 | } 15 | 16 | #sidebar { 17 | right: auto; 18 | left: 0; 19 | } 20 | 21 | #results { 22 | padding: 0px 32px 0px 272px; 23 | } 24 | 25 | .search.center { 26 | padding-right: 0; 27 | padding-left: 17em; 28 | } 29 | 30 | .right { 31 | right: auto; 32 | left: 0; 33 | } 34 | 35 | #pagination form + form { 36 | float: left; 37 | margin-top: -2em; 38 | } 39 | 40 | .engine-table { 41 | text-align:right; 42 | } -------------------------------------------------------------------------------- /searx/static/themes/legacy/css/style-rtl.css: -------------------------------------------------------------------------------- 1 | #search_submit{left:1px;right:auto}.result .favicon{float:right;margin-left:.5em;margin-right:0} -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/favicon.png -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/github_ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/github_ribbon.png -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_500px.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_500px.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_bing.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_bing.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_dailymotion.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_dailymotion.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_deezer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_deezer.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_deviantart.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_deviantart.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_digg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_digg.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_duckduckgo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_duckduckgo.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_flickr.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_flickr.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_github.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_github.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_google play apps.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_google play apps.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_google play movies.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_google play movies.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_google play music.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_google play music.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_google.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_google.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_kickass.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_kickass.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_openstreetmap.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_openstreetmap.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_searchcode code.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_searchcode code.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_searchcode doc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_searchcode doc.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_searchcode.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_searchcode.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_soundcloud.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_soundcloud.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_stackoverflow.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_stackoverflow.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_startpage.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_startpage.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_subtitleseeker.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_twitter.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_twitter.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_vimeo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_vimeo.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_wikipedia.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_wikipedia.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_yahoo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_yahoo.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/icons/icon_youtube.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/icons/icon_youtube.ico -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/preference-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/preference-icon.png -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/search-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/search-icon.png -------------------------------------------------------------------------------- /searx/static/themes/legacy/img/searx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/legacy/img/searx.png -------------------------------------------------------------------------------- /searx/static/themes/legacy/less/mixins.less: -------------------------------------------------------------------------------- 1 | /* 2 | * searx, A privacy-respecting, hackable metasearch engine 3 | */ 4 | 5 | // Mixins 6 | 7 | .text-size-adjust (@property: 100%) { 8 | -webkit-text-size-adjust: @property; 9 | -ms-text-size-adjust: @property; 10 | -moz-text-size-adjust: @property; 11 | text-size-adjust: @property; 12 | } 13 | 14 | .rounded-corners (@radius: 4px) { 15 | -webkit-border-radius: @radius; 16 | -moz-border-radius: @radius; 17 | border-radius: @radius; 18 | } 19 | 20 | .user-select () { 21 | -webkit-touch-callout: none; 22 | -webkit-user-select: none; 23 | -khtml-user-select: none; 24 | -moz-user-select: none; 25 | -ms-user-select: none; 26 | user-select: none; 27 | } 28 | -------------------------------------------------------------------------------- /searx/static/themes/legacy/less/style-rtl.less: -------------------------------------------------------------------------------- 1 | #search_submit { 2 | left: 1px; 3 | right:auto; 4 | } 5 | 6 | .result .favicon { 7 | float: right; 8 | margin-left: 0.5em; 9 | margin-right: 0; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/README.rst: -------------------------------------------------------------------------------- 1 | install dependencies 2 | ~~~~~~~~~~~~~~~~~~~~ 3 | 4 | run this command in the directory ``searx/static/themes/oscar`` 5 | 6 | ``npm install`` 7 | 8 | compile sources 9 | ~~~~~~~~~~~~~~~ 10 | 11 | run this command in the directory ``searx/static/themes/oscar`` 12 | 13 | ``grunt`` 14 | 15 | or in the root directory: 16 | 17 | ``make grunt`` 18 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/favicon.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/1337x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/1337x.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/README.md: -------------------------------------------------------------------------------- 1 | Source: http://www.iconspedia.com/pack/flat-gradient-social-icons-4384/ 2 | License: Free for non commercial use. 3 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/amazon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/amazon.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/dailymotion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/dailymotion.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/deviantart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/deviantart.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/facebook.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/flickr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/flickr.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/github.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/invidious.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/invidious.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/kickass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/kickass.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/openstreetmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/openstreetmap.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/photon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/photon.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/searchcode code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/searchcode code.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/searchcode doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/searchcode doc.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/soundcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/soundcloud.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/stackoverflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/stackoverflow.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/twitter.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/vimeo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/vimeo.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/wikipedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/wikipedia.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/icons/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/icons/youtube.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/loader.gif -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/logo_privacytools_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/logo_privacytools_a.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/logo_searx_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/logo_searx_a.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/logo_searx_a_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/logo_searx_a_n.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/layers-2x.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/layers.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-2x-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-2x-green.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-2x-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-2x-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-2x-red.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-2x.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-green.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-orange.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon-red.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-icon.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/map/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/map/marker-shadow.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/img/searx_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/oscar/img/searx_logo.png -------------------------------------------------------------------------------- /searx/static/themes/oscar/js/searx_src/00_requirejs_config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * searx is free software: you can redistribute it and/or modify 3 | * it under the terms of the GNU Affero General Public License as published by 4 | * the Free Software Foundation, either version 3 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * searx is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU Affero General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU Affero General Public License 13 | * along with searx. If not, see < http://www.gnu.org/licenses/ >. 14 | * 15 | * (C) 2014 by Thomas Pointhuber, 16 | */ 17 | 18 | requirejs.config({ 19 | baseUrl: './static/themes/oscar/js', 20 | paths: { 21 | app: '../app' 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/js/searx_src/01_init.js: -------------------------------------------------------------------------------- 1 | /** 2 | * searx is free software: you can redistribute it and/or modify 3 | * it under the terms of the GNU Affero General Public License as published by 4 | * the Free Software Foundation, either version 3 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * searx is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU Affero General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU Affero General Public License 13 | * along with searx. If not, see < http://www.gnu.org/licenses/ >. 14 | * 15 | * (C) 2019 by Alexandre Flament 16 | */ 17 | window.searx = (function(d) { 18 | 'use strict'; 19 | 20 | // add data- properties 21 | var script = d.currentScript || (function() { 22 | var scripts = d.getElementsByTagName('script'); 23 | return scripts[scripts.length - 1]; 24 | })(); 25 | 26 | return { 27 | autocompleter: script.getAttribute('data-autocompleter') === 'true', 28 | method: script.getAttribute('data-method') 29 | }; 30 | })(document); 31 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/js/searx_src/toggleall.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $("#allow-all-engines").click(function() { 3 | $(".onoffswitch-checkbox").each(function() { this.checked = false;}); 4 | }); 5 | 6 | $("#disable-all-engines").click(function() { 7 | $(".onoffswitch-checkbox").each(function() { this.checked = true;}); 8 | }); 9 | }); 10 | 11 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/advanced.less: -------------------------------------------------------------------------------- 1 | #advanced-search-container { 2 | display: none; 3 | text-align: left; 4 | margin-bottom: 1rem; 5 | clear: both; 6 | 7 | label, .input-group-addon { 8 | font-size: 1.2rem; 9 | font-weight:normal; 10 | background-color: white; 11 | border: @mild-gray 1px solid; 12 | border-right: none; 13 | color: @dark-gray; 14 | padding-bottom: 0.4rem; 15 | padding-right: 0.7rem; 16 | padding-left: 0.7rem; 17 | } 18 | 19 | label:last-child, .input-group-addon:last-child { 20 | border-right: @mild-gray 1px solid; 21 | } 22 | 23 | input[type="radio"] { 24 | display: none; 25 | } 26 | 27 | input[type="radio"]:checked + label{ 28 | color: @black; 29 | font-weight: bold; 30 | border-bottom: @light-green 5px solid; 31 | } 32 | } 33 | 34 | #check-advanced:focus + label { 35 | text-decoration: underline; 36 | } 37 | 38 | #check-advanced:checked ~ #advanced-search-container { 39 | display: block; 40 | } 41 | 42 | .advanced { 43 | padding: 0; 44 | margin-top: 0.3rem; 45 | text-align: right; 46 | label, select { 47 | cursor: pointer; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/checkbox.less: -------------------------------------------------------------------------------- 1 | // Hide element if checkbox is checked 2 | input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { 3 | display:none; 4 | } 5 | 6 | // Hide element if checkbox is not checked 7 | input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { 8 | display:none; 9 | } 10 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/cursor.less: -------------------------------------------------------------------------------- 1 | // display cursor 2 | .cursor-text { 3 | cursor: text !important; 4 | } 5 | 6 | .cursor-pointer { 7 | cursor: pointer !important; 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/footer.less: -------------------------------------------------------------------------------- 1 | // Sticky footer styles 2 | *{ 3 | border-radius: 0 !important; 4 | } 5 | html { 6 | position: relative; 7 | min-height: 100%; 8 | color: @black; 9 | } 10 | 11 | body { 12 | /* Margin bottom by footer height */ 13 | font-family: 'Roboto', Helvetica, Arial, sans-serif; 14 | margin-bottom: 80px; 15 | background-color: white; 16 | 17 | a{ 18 | color: @blue; 19 | } 20 | } 21 | 22 | .footer { 23 | position: absolute; 24 | bottom: 0; 25 | width: 100%; 26 | /* Set the fixed height of the footer here */ 27 | height: 60px; 28 | text-align: center; 29 | color: #999; 30 | } 31 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/infobox.less: -------------------------------------------------------------------------------- 1 | .infobox { 2 | 3 | .panel-heading{ 4 | background-color: @dim-gray; 5 | 6 | .panel-title{ 7 | font-weight: 700; 8 | } 9 | } 10 | 11 | 12 | p{ 13 | font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important; 14 | font-style: italic; 15 | } 16 | 17 | .btn{ 18 | background-color: @dark-blue; 19 | border: none; 20 | 21 | a{ 22 | color: white; 23 | margin: 5px; 24 | } 25 | } 26 | 27 | .infobox_part { 28 | margin-bottom: 20px; 29 | word-wrap: break-word; 30 | table-layout: fixed; 31 | 32 | } 33 | 34 | .infobox_part:last-child { 35 | margin-bottom: 0; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/navbar.less: -------------------------------------------------------------------------------- 1 | .searx-navbar { 2 | background: @black; 3 | height: 2.3rem; 4 | font-size: 1.3rem; 5 | line-height: 1.3rem; 6 | padding: 0.5rem; 7 | font-weight: bold; 8 | margin-bottom: 0.8rem; 9 | 10 | a, a:hover { 11 | margin-right: 2.0rem; 12 | color: white; 13 | text-decoration: none; 14 | } 15 | 16 | .instance a { 17 | color: @light-green; 18 | margin-left: 2.0rem; 19 | } 20 | } 21 | 22 | #main-logo { 23 | margin-top: 20vh; 24 | margin-bottom: 25px; 25 | 26 | & > img { 27 | max-width: 350px; 28 | width: 80%; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/oscar.less: -------------------------------------------------------------------------------- 1 | @import "variables.less"; 2 | 3 | @import "navbar.less"; 4 | 5 | @import "footer.less"; 6 | 7 | @import "checkbox.less"; 8 | 9 | @import "onoff.less"; 10 | 11 | @import "results.less"; 12 | 13 | @import "infobox.less"; 14 | 15 | @import "search.less"; 16 | 17 | @import "advanced.less"; 18 | 19 | @import "cursor.less"; 20 | 21 | @import "code.less"; 22 | 23 | @import "preferences.less"; 24 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/preferences.less: -------------------------------------------------------------------------------- 1 | .table > tbody > tr > td, .table > tbody > tr > th { 2 | vertical-align: middle !important; 3 | } 4 | 5 | .nav-tabs.nav-justified{ 6 | margin-bottom: 20px; 7 | } 8 | 9 | p { 10 | margin: 10px 0; 11 | } 12 | 13 | input.cursor-text { 14 | margin: 10px 0; 15 | } 16 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/logicodev/variables.less: -------------------------------------------------------------------------------- 1 | @black: #29314D; 2 | @gray: #A4A4A4; 3 | @dim-gray: #F6F9FA; 4 | @dark-gray: #666; 5 | @semidark-gray: #888; 6 | @middle-gray: #F5F5F5; 7 | @mild-gray: #DDD; 8 | @dark-blue: #007AB8; 9 | @blue: #0088CC; 10 | @red: #F35E77; 11 | @violet: #684898; 12 | @dark-green: #068922; 13 | @green: #2ecc71; 14 | @light-green: #01D7D4; 15 | @orange: #FFA92F; 16 | @dark-red: #c9432f; 17 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/advanced.less: -------------------------------------------------------------------------------- 1 | #advanced-search-container { 2 | display: none; 3 | text-align: center; 4 | margin-bottom: 1rem; 5 | clear: both; 6 | 7 | label, .input-group-addon { 8 | font-size: 1.3rem; 9 | font-weight:normal; 10 | background-color: white; 11 | border: #DDD 1px solid; 12 | border-right: none; 13 | color: #333; 14 | padding-bottom: 0.8rem; 15 | padding-left: 1.2rem; 16 | padding-right: 1.2rem; 17 | } 18 | 19 | label:last-child, .input-group-addon:last-child { 20 | border-right: #DDD 1px solid; 21 | } 22 | 23 | input[type="radio"] { 24 | display: none; 25 | } 26 | 27 | input[type="radio"]:checked + label { 28 | color: black; 29 | font-weight: bold; 30 | background-color: #EEE; 31 | } 32 | } 33 | 34 | #check-advanced { 35 | display: none; 36 | } 37 | 38 | #check-advanced:checked ~ #advanced-search-container { 39 | display: block; 40 | } 41 | 42 | .advanced { 43 | padding: 0; 44 | margin-top: 0.3rem; 45 | text-align: right; 46 | label, select { 47 | cursor: pointer; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/checkbox.less: -------------------------------------------------------------------------------- 1 | // Hide element if checkbox is checked 2 | input[type=checkbox]:checked + .label_hide_if_checked, input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked { 3 | display:none; 4 | } 5 | 6 | // Hide element if checkbox is not checked 7 | input[type=checkbox]:not(:checked) + .label_hide_if_not_checked, input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked { 8 | display:none; 9 | } 10 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/cursor.less: -------------------------------------------------------------------------------- 1 | // display cursor 2 | .cursor-text { 3 | cursor: text !important; 4 | } 5 | 6 | .cursor-pointer { 7 | cursor: pointer !important; 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/footer.less: -------------------------------------------------------------------------------- 1 | // Sticky footer styles 2 | 3 | html { 4 | position: relative; 5 | min-height: 100%; 6 | } 7 | 8 | body { 9 | /* Margin bottom by footer height */ 10 | margin-bottom: 80px; 11 | } 12 | 13 | .footer { 14 | position: absolute; 15 | bottom: 0; 16 | width: 100%; 17 | /* Set the fixed height of the footer here */ 18 | height: 60px; 19 | } 20 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/infobox.less: -------------------------------------------------------------------------------- 1 | .infobox { 2 | .infobox_part { 3 | margin-bottom: 20px; 4 | word-wrap: break-word; 5 | table-layout: fixed; 6 | } 7 | 8 | .infobox_part:last-child { 9 | margin-bottom: 0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/navbar.less: -------------------------------------------------------------------------------- 1 | .searx-navbar { 2 | background: #eee; 3 | color: #aaa; 4 | height: 2.3rem; 5 | font-size: 1.3rem; 6 | line-height: 1.3rem; 7 | padding: 0.5rem; 8 | font-weight: bold; 9 | margin-bottom: 1.3rem; 10 | 11 | a, a:hover { 12 | margin-right: 2.0rem; 13 | text-decoration: none; 14 | } 15 | 16 | .instance a { 17 | color: #444; 18 | margin-left: 2.0rem; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/oscar.less: -------------------------------------------------------------------------------- 1 | @import "footer.less"; 2 | 3 | @import "checkbox.less"; 4 | 5 | @import "onoff.less"; 6 | 7 | @import "results.less"; 8 | 9 | @import "infobox.less"; 10 | 11 | @import "search.less"; 12 | 13 | @import "advanced.less"; 14 | 15 | @import "cursor.less"; 16 | 17 | @import "code.less"; 18 | 19 | @import "navbar.less"; 20 | 21 | @import "preferences.less"; 22 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/preferences.less: -------------------------------------------------------------------------------- 1 | .table > tbody > tr > td, .table > tbody > tr > th { 2 | vertical-align: middle !important; 3 | } 4 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/less/pointhi/search.less: -------------------------------------------------------------------------------- 1 | .search_categories, #categories { 2 | text-transform: capitalize; 3 | margin-bottom: 1.5rem; 4 | margin-top: 1.5rem; 5 | display: flex; 6 | flex-wrap: wrap; 7 | align-content: stretch; 8 | 9 | label, .input-group-addon { 10 | flex-grow: 1; 11 | flex-basis: auto; 12 | font-size: 1.3rem; 13 | font-weight: normal; 14 | background-color: white; 15 | border: #DDD 1px solid; 16 | border-right: none; 17 | color: #333; 18 | padding-bottom: 0.8rem; 19 | padding-top: 0.8rem; 20 | text-align: center; 21 | min-width: 50px; 22 | } 23 | 24 | label:last-child, .input-group-addon:last-child { 25 | border-right: #DDD 1px solid; 26 | } 27 | 28 | input[type="checkbox"]:checked + label{ 29 | color: black; 30 | font-weight: bold; 31 | background-color: #EEE; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /searx/static/themes/oscar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "grunt": "^0.4.5", 4 | "grunt-contrib-concat": "~0.5.0", 5 | "grunt-contrib-jshint": "~0.10.0", 6 | "grunt-contrib-less": "~0.11.0", 7 | "grunt-contrib-uglify": "~0.6.0", 8 | "grunt-contrib-watch": "~0.6.1" 9 | }, 10 | "scripts": { 11 | "build": "npm install && grunt", 12 | "start": "grunt watch", 13 | "test": "grunt" 14 | }, 15 | "dependencies": { 16 | "grunt-cli": "^1.3.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /searx/static/themes/pix-art/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/pix-art/img/favicon.png -------------------------------------------------------------------------------- /searx/static/themes/pix-art/img/preference-icon-pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/pix-art/img/preference-icon-pixel.png -------------------------------------------------------------------------------- /searx/static/themes/pix-art/img/search-icon-pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/pix-art/img/search-icon-pixel.png -------------------------------------------------------------------------------- /searx/static/themes/pix-art/img/searx-pixel-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/pix-art/img/searx-pixel-small.png -------------------------------------------------------------------------------- /searx/static/themes/pix-art/img/searx-pixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/pix-art/img/searx-pixel.png -------------------------------------------------------------------------------- /searx/static/themes/pix-art/less/mixins.less: -------------------------------------------------------------------------------- 1 | /* 2 | * searx, A privacy-respecting, hackable metasearch engine 3 | */ 4 | 5 | // Mixins 6 | 7 | .text-size-adjust (@property: 100%) { 8 | -webkit-text-size-adjust: @property; 9 | -ms-text-size-adjust: @property; 10 | -moz-text-size-adjust: @property; 11 | text-size-adjust: @property; 12 | } 13 | 14 | .rounded-corners (@radius: 4px) { 15 | -webkit-border-radius: @radius; 16 | -moz-border-radius: @radius; 17 | border-radius: @radius; 18 | } 19 | 20 | .user-select () { 21 | -webkit-touch-callout: none; 22 | -webkit-user-select: none; 23 | -khtml-user-select: none; 24 | -moz-user-select: none; 25 | -ms-user-select: none; 26 | user-select: none; 27 | } 28 | -------------------------------------------------------------------------------- /searx/static/themes/pix-art/less/search.less: -------------------------------------------------------------------------------- 1 | /* 2 | * searx, A privacy-respecting, hackable metasearch engine 3 | */ 4 | 5 | .search { 6 | padding: 0; 7 | margin: 0; 8 | } 9 | 10 | #search_wrapper { 11 | position: relative; 12 | width: @results-width; 13 | padding: 10px; 14 | } 15 | 16 | .center #search_wrapper { 17 | margin-left: auto; 18 | margin-right: auto; 19 | } 20 | 21 | .q { 22 | background: none repeat scroll 0 0 @color-search-background; 23 | border: 1px solid @color-search-border; 24 | color: @color-search-font; 25 | font-size: 16px; 26 | font-family: "Courier New", Courier, monospace; 27 | height: 28px; 28 | margin: 0; 29 | outline: medium none; 30 | padding: 2px; 31 | padding-left: 8px; 32 | padding-right: 0px !important; 33 | width: 100%; 34 | z-index: 2; 35 | } 36 | 37 | #search_submit { 38 | position: absolute; 39 | top: 15px; 40 | right: 5px; 41 | padding: 0; 42 | border: 0; 43 | background: url('../img/search-icon-pixel.png') no-repeat; 44 | background-size: 24px 24px; 45 | opacity: 0.8; 46 | width: 24px; 47 | height: 24px; 48 | font-size: 0; 49 | } 50 | 51 | @media screen and (max-width: @results-width) { 52 | #search_wrapper { 53 | width: 90%; 54 | clear:both; 55 | overflow: hidden 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /searx/static/themes/simple/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /searx/static/themes/simple/.jshintignore: -------------------------------------------------------------------------------- 1 | js/searx_src/autocomplete.js 2 | -------------------------------------------------------------------------------- /searx/static/themes/simple/fonts/ion.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/fonts/ion.eot -------------------------------------------------------------------------------- /searx/static/themes/simple/fonts/ion.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/fonts/ion.ttf -------------------------------------------------------------------------------- /searx/static/themes/simple/fonts/ion.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/fonts/ion.woff -------------------------------------------------------------------------------- /searx/static/themes/simple/fonts/ion.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/fonts/ion.woff2 -------------------------------------------------------------------------------- /searx/static/themes/simple/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/img/favicon.png -------------------------------------------------------------------------------- /searx/static/themes/simple/img/logo_searx_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/img/logo_searx_a.png -------------------------------------------------------------------------------- /searx/static/themes/simple/img/searx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/img/searx.png -------------------------------------------------------------------------------- /searx/static/themes/simple/js/searx.head.min.js: -------------------------------------------------------------------------------- 1 | /*! simple/searx.min.js | 15-06-2020 | */ 2 | 3 | (function(t,e){"use strict";var a=e.currentScript||function(){var t=e.getElementsByTagName("script");return t[t.length-1]}();t.searx={touch:"ontouchstart"in t||t.DocumentTouch&&document instanceof DocumentTouch||false,method:a.getAttribute("data-method"),autocompleter:a.getAttribute("data-autocompleter")==="true",search_on_category_select:a.getAttribute("data-search-on-category-select")==="true",infinite_scroll:a.getAttribute("data-infinite-scroll")==="true",static_path:a.getAttribute("data-static-path"),no_item_found:a.getAttribute("data-no-item-found")};e.getElementsByTagName("html")[0].className=t.searx.touch?"js touch":"js"})(window,document); 4 | //# sourceMappingURL=searx.head.min.js.map -------------------------------------------------------------------------------- /searx/static/themes/simple/js/searx.head.min.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["searx.head.js"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searx","touch","DocumentTouch","document","method","getAttribute","autocompleter","search_on_category_select","infinite_scroll","static_path","no_item_found","className","window"],"mappings":";;CAiBA,SAAUA,EAAGC,GACT,aAGA,IAAIC,EAASD,EAAEE,eAAkB,WAC7B,IAAIC,EAAUH,EAAEI,qBAAqB,UACrC,OAAOD,EAAQA,EAAQE,OAAS,GAFH,GAMjCN,EAAEO,MAAQ,CACNC,MAAS,iBAAkBR,GAAMA,EAAES,eAAiBC,oBAAoBD,eAAkB,MAC1FE,OAAQT,EAAOU,aAAa,eAC5BC,cAAeX,EAAOU,aAAa,wBAA0B,OAC7DE,0BAA2BZ,EAAOU,aAAa,oCAAsC,OACrFG,gBAAiBb,EAAOU,aAAa,0BAA4B,OACjEI,YAAad,EAAOU,aAAa,oBACjCK,cAAef,EAAOU,aAAa,uBAIvCX,EAAEI,qBAAqB,QAAQ,GAAGa,UAAalB,EAAEO,MAAW,MAAE,WAAW,MArB7E,CAsBGY,OAAQT","file":"searx.head.min.js"} -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/layers-2x.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/layers.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-2x.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-green.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-orange.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon-red.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-icon.png -------------------------------------------------------------------------------- /searx/static/themes/simple/leaflet/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/privacytools/search/b4b6ce2b5779c612c4462ba31738cd8973a9e294/searx/static/themes/simple/leaflet/images/marker-shadow.png -------------------------------------------------------------------------------- /searx/static/themes/simple/less/index.less: -------------------------------------------------------------------------------- 1 | .index { 2 | 3 | text-align: center; 4 | 5 | .title { 6 | background: url('../img/searx.png') no-repeat; 7 | width: 100%; 8 | min-height: 80px; 9 | background-position: center; 10 | } 11 | 12 | h1 { 13 | font-size: 5em; 14 | visibility: hidden; 15 | } 16 | 17 | #search { 18 | margin: 0 auto; 19 | background: inherit; 20 | border: inherit; 21 | } 22 | 23 | .search_filters { 24 | display: block; 25 | margin: 1em 0; 26 | } 27 | 28 | .category label { 29 | padding: 6px 10px; 30 | border-bottom: initial !important; 31 | } 32 | 33 | } 34 | 35 | @media screen and (max-width: 75em) { 36 | 37 | div.title { 38 | h1 { 39 | font-size: 1em; 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /searx/static/themes/simple/less/stats.less: -------------------------------------------------------------------------------- 1 | .percentage { 2 | position: relative; 3 | width: 300px; 4 | 5 | div { 6 | background: @color-percentage-div-background; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /searx/static/themes/simple/less/style-rtl.less: -------------------------------------------------------------------------------- 1 | @import "style.less"; 2 | 3 | #search_submit { 4 | left: 1px; 5 | right:auto; 6 | } 7 | -------------------------------------------------------------------------------- /searx/static/themes/simple/less/toolkit_loader.less: -------------------------------------------------------------------------------- 1 | .loader, 2 | .loader:after { 3 | border-radius: 50%; 4 | width: 10em; 5 | height: 10em; 6 | } 7 | .loader { 8 | margin: 60px auto; 9 | font-size: 10px; 10 | position: relative; 11 | text-indent: -9999em; 12 | border-top: 1.1em solid rgba(255, 255, 255, 0.2); 13 | border-right: 1.1em solid rgba(255, 255, 255, 0.2); 14 | border-bottom: 1.1em solid rgba(255, 255, 255, 0.2); 15 | border-left: 1.1em solid #ffffff; 16 | -webkit-transform: translateZ(0); 17 | -ms-transform: translateZ(0); 18 | transform: translateZ(0); 19 | -webkit-animation: load8 1.1s infinite linear; 20 | animation: load8 1.1s infinite linear; 21 | } 22 | @-webkit-keyframes load8 { 23 | 0% { 24 | -webkit-transform: rotate(0deg); 25 | transform: rotate(0deg); 26 | } 27 | 100% { 28 | -webkit-transform: rotate(360deg); 29 | transform: rotate(360deg); 30 | } 31 | } 32 | @keyframes load8 { 33 | 0% { 34 | -webkit-transform: rotate(0deg); 35 | transform: rotate(0deg); 36 | } 37 | 100% { 38 | -webkit-transform: rotate(360deg); 39 | transform: rotate(360deg); 40 | } 41 | } -------------------------------------------------------------------------------- /searx/static/themes/simple/magnet.svg: -------------------------------------------------------------------------------- 1 | image/svg+xmlAlexandre Flament 2 | -------------------------------------------------------------------------------- /searx/static/themes/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "grunt": "~1.0.3", 4 | "grunt-contrib-concat": "~1.0.1", 5 | "grunt-contrib-cssmin": "^2.2.1", 6 | "grunt-contrib-jshint": "~1.1.0", 7 | "grunt-contrib-less": "^1.4.1", 8 | "grunt-contrib-uglify": "~3.4.0", 9 | "grunt-contrib-watch": "~1.1.0", 10 | "grunt-webfont": "^1.7.1", 11 | "ionicons-npm": "^2.0.1", 12 | "jslint": "^0.12.0", 13 | "less-plugin-clean-css": "^1.5.1" 14 | }, 15 | "scripts": { 16 | "build": "npm install && grunt", 17 | "start": "grunt watch", 18 | "test": "grunt" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /searx/templates/__common__/opensearch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ instance_name }} 4 | a privacy-respecting, hackable metasearch engine 5 | UTF-8 6 | {{ urljoin(host, url_for('static', filename='img/favicon.png')) }} 7 | searx metasearch 8 | {% if opensearch_method == 'get' %} 9 | 10 | {% else %} 11 | 12 | 13 | 14 | {% endif %} 15 | {% if autocomplete %} 16 | 17 | {% endif %} 18 | 19 | -------------------------------------------------------------------------------- /searx/templates/__common__/translations.js.tpl: -------------------------------------------------------------------------------- 1 | var could_not_load = '{{ _('could not load data') }}!'; 2 | -------------------------------------------------------------------------------- /searx/templates/courgette/404.html: -------------------------------------------------------------------------------- 1 | {% extends "courgette/base.html" %} 2 | {% block content %} 3 |
4 |

{{ _('Page not found') }}

5 | {% autoescape false %} 6 |

{{ _('Go to %(search_page)s.', search_page=unicode('{}').format(url_for('index'), _('search page'))) }}

7 | {% endautoescape %} 8 |
9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /searx/templates/courgette/about.html: -------------------------------------------------------------------------------- 1 | {% extends 'courgette/base.html' %} 2 | {% block content %} 3 | {% include 'courgette/github_ribbon.html' %} 4 | {% include '__common__/about.html' %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /searx/templates/courgette/categories.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% for category in categories %} 4 |
5 | 6 |
7 | {% endfor %} 8 |
9 |
-------------------------------------------------------------------------------- /searx/templates/courgette/color.css: -------------------------------------------------------------------------------- 1 | .autocompleter-choices li:hover, 2 | .checkbox_container label:hover, 3 | .checkbox_container input[type="checkbox"]:checked + label, 4 | #sidebar, 5 | #suggestions input[type="submit"]:hover, 6 | #suggestions input[type="submit"]:focus, 7 | input[type="submit"], 8 | .engine_checkbox label, 9 | .engine_checkbox .deny, 10 | #search_submit{ 11 | background-color: {{ cookies['courgette-color'].split()[0] }}; 12 | } 13 | 14 | .result_title a, 15 | .row a, 16 | .title h1{ 17 | color: {{ cookies['courgette-color'].split()[0] }}; 18 | } 19 | 20 | #answers { 21 | border-color: {{ cookies['courgette-color'].split()[0] }}; 22 | } 23 | 24 | #search_submit:hover, 25 | #search_submit:focus, 26 | #sidebar input[type="submit"]:hover, 27 | #sidebar input[type="submit"]:focus { 28 | background-color: {{ cookies['courgette-color'].split()[1] }}; 29 | } 30 | 31 | input[type="submit"]:hover, 32 | input[type="submit"]:focus { 33 | background: {{ cookies['courgette-color'].split()[1] }}; 34 | } -------------------------------------------------------------------------------- /searx/templates/courgette/github_ribbon.html: -------------------------------------------------------------------------------- 1 | 2 | Fork me on GitHub 3 | 4 | -------------------------------------------------------------------------------- /searx/templates/courgette/index.html: -------------------------------------------------------------------------------- 1 | {% extends "courgette/base.html" %} 2 | {% block content %} 3 | {% include 'courgette/github_ribbon.html' %} 4 |
5 |

searx

6 | {% include 'courgette/search.html' %} 7 |

8 | {% if rtl %} 9 | {{ _('preferences') }} 10 | {% endif %} 11 | {{ _('about') }} 12 | {% if not rtl %} 13 | {{ _('preferences') }} 14 | {% endif %} 15 |

16 |
17 | {% endblock %} -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/code.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ result.title|safe }}

3 | {% if result.publishedDate %}{{ result.publishedDate }}{% endif %} 4 |

{% if result.img_src %}{% endif %}{% if result.content %}{{ result.content|safe }}
{% endif %}

5 | {% if result.repository %}

{{ result.repository }}

{% endif %} 6 |
7 | {{ result.codelines|code_highlighter(result.code_language)|safe }} 8 |
9 | 10 |

{{ result.pretty_url }}‎

11 |
12 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/default.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% if "icon_"~result.engine~".ico" in favicons %} 4 | {{result.engine}} 5 | {% endif %} 6 | 7 |
8 |

{{ result.title|safe }}

9 | {% if result.publishedDate %}{{ result.publishedDate }}{% endif %} 10 |

{% if result.content %}{{ result.content|safe }}
{% endif %}

11 |

{{ result.pretty_url }}‎

12 |
13 |
14 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/images.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | {{ result.title|striptags }} 4 | {{ _('original context') }} 5 |

6 |
7 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/key-value.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% for key, value in result.items() %} 4 | {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %} 5 | {% continue %} 6 | {% endif %} 7 | 8 | 9 | 10 | {% endfor %} 11 |
{{ key|upper }}: {{ value|safe }}
12 |

{{ result.engines|join(', ') }}

13 |
14 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/map.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% if "icon_"~result.engine~".ico" in favicons %} 4 | {{result.engine}} 5 | {% endif %} 6 | 7 |
8 |

{{ result.title|safe }}

9 | {% if result.publishedDate %}{{ result.publishedDate }}{% endif %} 10 |

{% if result.content %}{{ result.content|safe }}
{% endif %}

11 |

{{ result.pretty_url }}‎

12 |
13 |
14 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/torrent.html: -------------------------------------------------------------------------------- 1 |
2 | {% if "icon_"~result.engine~".ico" in favicons %} 3 | {{result.engine}} 4 | {% endif %} 5 |

{{ result.title|safe }}

6 | {% if result.content %}{{ result.content|safe }}
{% endif %} 7 | {% if result.seed is defined %}{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}
{% endif %} 8 | 9 | {% if result.magnetlink %}{{ _('magnet link') }}{% endif %} 10 | {% if result.torrentfile %}{{ _('torrent file') }}{% endif %} 11 | 12 |

{{ result.pretty_url }}‎

13 |
14 | -------------------------------------------------------------------------------- /searx/templates/courgette/result_templates/videos.html: -------------------------------------------------------------------------------- 1 |
2 | {% if "icon_"~result.engine~".ico" in favicons %} 3 | {{result.engine}} 4 | {% endif %} 5 | 6 |

{{ result.title|safe }}

7 | {% if result.publishedDate %}{{ result.publishedDate }}
{% endif %} 8 | {{ result.title|striptags }} 9 |

{{ result.pretty_url }}‎

10 |
11 | -------------------------------------------------------------------------------- /searx/templates/courgette/search.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 | {% include 'courgette/categories.html' %} 7 |
-------------------------------------------------------------------------------- /searx/templates/courgette/stats.html: -------------------------------------------------------------------------------- 1 | {% extends "courgette/base.html" %} 2 | {% block head %} {% endblock %} 3 | {% block content %} 4 |

{{ _('Engine stats') }}

5 | 6 | {% for stat_name,stat_category in stats %} 7 |
8 | 9 | 10 | 11 | 12 | {% for engine in stat_category %} 13 | 14 | 15 | 16 | 17 | 18 | {% endfor %} 19 |
{{ stat_name }}
{{ engine.name }}{{ '%.02f'|format(engine.avg) }}
 
20 |
21 | {% endfor %} 22 | {% endblock %} -------------------------------------------------------------------------------- /searx/templates/legacy/404.html: -------------------------------------------------------------------------------- 1 | {% extends "legacy/base.html" %} 2 | {% block content %} 3 |
4 |

{{ _('Page not found') }}

5 | {% autoescape false %} 6 |

{{ _('Go to %(search_page)s.', search_page=unicode('{}').format(url_for('index'), _('search page'))) }}

7 | {% endautoescape %} 8 |
9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /searx/templates/legacy/about.html: -------------------------------------------------------------------------------- 1 | {% extends 'legacy/base.html' %} 2 | {% block content %} 3 | {% include 'legacy/github_ribbon.html' %} 4 | {% include '__common__/about.html' %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /searx/templates/legacy/categories.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {% for category in categories %} 4 |
5 | 6 |
7 | {% endfor %} 8 | {% if display_tooltip %}{% endif %} 9 |
10 |
11 | -------------------------------------------------------------------------------- /searx/templates/legacy/github_ribbon.html: -------------------------------------------------------------------------------- 1 | 2 | Fork me on GitHub 3 | 4 | -------------------------------------------------------------------------------- /searx/templates/legacy/index.html: -------------------------------------------------------------------------------- 1 | {% extends "legacy/base.html" %} 2 | {% block content %} 3 |
4 |

searx

5 | {% include 'legacy/search.html' %} 6 |

7 | {% if rtl %} 8 | {{ _('preferences') }} 9 | {% endif %} 10 | {{ _('about') }} 11 | {% if not rtl %} 12 | {{ _('preferences') }} 13 | {% endif %} 14 |

15 |
16 | {% include 'legacy/github_ribbon.html' %} 17 | {% endblock %} 18 | 19 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/code.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ result.title|safe }}

3 |

{{ result.pretty_url }}‎ {{ _('cached') }}

4 | {% if result.publishedDate %}

{{ result.publishedDate }}

{% endif %} 5 |

{% if result.img_src %}{% endif %}{% if result.content %}{{ result.content|safe }}
{% endif %}

6 | {% if result.repository %}

{{ result.repository }}

{% endif %} 7 | 8 |
9 | {{ result.codelines|code_highlighter(result.code_language)|safe }} 10 |
11 |
12 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/default.html: -------------------------------------------------------------------------------- 1 |
2 |

{% if "icon_"~result.engine~".ico" in favicons %}{{result.engine}}{% endif %}{{ result.title|safe }}

3 |

{{ result.pretty_url }}‎ {{ _('cached') }} 4 | {% if result.publishedDate %}{{ result.publishedDate }}{% endif %}

5 |

{% if result.img_src %}{% endif %}{% if result.content %}{{ result.content|safe }}
{% endif %}

6 |
7 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/images.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | {{ result.title|striptags }} 4 | {{ _('original context') }} 5 |

6 |
7 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/key-value.html: -------------------------------------------------------------------------------- 1 | 2 | {% for key, value in result.items() %} 3 | {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %} 4 | {% continue %} 5 | {% endif %} 6 | 7 | 8 | 9 | {% endfor %} 10 | 11 | 12 | 13 |
{{ key|upper }}: {{ value|safe }}
ENGINES: {{ result.engines|join(', ') }}
14 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/map.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% if "icon_"~result.engine~".ico" in favicons %} 4 | {{result.engine}} 5 | {% endif %} 6 | 7 |
8 |

{{ result.title|safe }}

9 |

{{ result.pretty_url }}‎ {{ _('cached') }} 10 | {% if result.publishedDate %}{{ result.publishedDate }}{% endif %}

11 |

{% if result.img_src %}{% endif %}{% if result.content %}{{ result.content|safe }}
{% endif %}

12 |
13 |
14 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/torrent.html: -------------------------------------------------------------------------------- 1 |
2 | {% if "icon_"~result.engine~".ico" in favicons %} 3 | {{result.engine}} 4 | {% endif %} 5 |

{{ result.title|safe }}

6 |

{{ result.pretty_url }}‎

7 | {% if result.content %}

{{ result.content|safe }}

{% endif %} 8 |

9 | {% if result.magnetlink %}{{ _('magnet link') }}{% endif %} 10 | {% if result.torrentfile %}{{ _('torrent file') }}{% endif %} - 11 | {% if result.seed is defined %}{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}{% endif %} 12 |

13 |
14 | -------------------------------------------------------------------------------- /searx/templates/legacy/result_templates/videos.html: -------------------------------------------------------------------------------- 1 |
2 |

{% if "icon_"~result.engine~".ico" in favicons %}{{result.engine}}{% endif %}{{ result.title|safe }}

3 | {% if result.publishedDate %}{{ result.publishedDate }}
{% endif %} 4 | {{ result.title|striptags }} 5 |

{{ result.url }}‎

6 |
7 | -------------------------------------------------------------------------------- /searx/templates/legacy/search.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 | {% set display_tooltip = true %} 7 | {% include 'legacy/categories.html' %} 8 |
9 | -------------------------------------------------------------------------------- /searx/templates/legacy/stats.html: -------------------------------------------------------------------------------- 1 | {% extends "legacy/base.html" %} 2 | {% block head %} {% endblock %} 3 | {% block content %} 4 |

{{ _('Engine stats') }}

5 | 6 | {% for stat_name,stat_category in stats %} 7 |
8 | 9 | 10 | 11 | 12 | {% for engine in stat_category %} 13 | 14 | 15 | 16 | 17 | 18 | {% endfor %} 19 |
{{ stat_name }}
{{ engine.name }}{{ '%.02f'|format(engine.avg) }}
 
20 |
21 | {% endfor %} 22 | {% endblock %} 23 | -------------------------------------------------------------------------------- /searx/templates/oscar/404.html: -------------------------------------------------------------------------------- 1 | {% extends "oscar/base.html" %} 2 | {% block content %} 3 |
4 |

{{ _('Page not found') }}

5 | {% autoescape false %} 6 |

{{ _('Go to %(search_page)s.', search_page=unicode('{}').format(url_for('index'), _('search page'))) }}

7 | {% endautoescape %} 8 |
9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /searx/templates/oscar/about.html: -------------------------------------------------------------------------------- 1 | {% extends "oscar/base.html" %} 2 | {% block title %}{{ _('about') }} - {% endblock %} 3 | {% block content %} 4 | {% include '__common__/about.html' %} 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /searx/templates/oscar/advanced.html: -------------------------------------------------------------------------------- 1 | 2 | 6 |
7 | {% include 'oscar/categories.html' %} 8 | 9 |
10 |
11 | {%- include 'oscar/time-range.html' -%} 12 |
13 |
14 | {%- include 'oscar/languages.html' -%} 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /searx/templates/oscar/categories.html: -------------------------------------------------------------------------------- 1 |
2 | {%- if rtl -%} 3 | {% for category in categories | reverse -%} 4 | {{- '' -}} 5 | 6 | {%- endfor %} 7 | {%- else -%} 8 | {% for category in categories -%} 9 | {{- '' -}} 10 | 11 | {%- endfor %} 12 | {%- endif -%} 13 |
14 | -------------------------------------------------------------------------------- /searx/templates/oscar/index.html: -------------------------------------------------------------------------------- 1 | {% extends "oscar/base.html" %} 2 | {% block content %} 3 |
4 |
5 |
6 | {% if cookies['oscar-style'] == 'pointhi' %} 7 |

searx logosearx

8 | {% else %} 9 |

10 | searx logo 11 | searx 12 |

13 | {% endif %} 14 |
15 |
16 |
17 |
18 | {% include 'oscar/search_full.html' %} 19 |
20 |
21 | 22 | {% endblock %} 23 | -------------------------------------------------------------------------------- /searx/templates/oscar/languages.html: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/first_time.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/no_cookies.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | 6 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/no_data_available.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | 6 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/no_results.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | {% if unresponsive_engines %} 3 | 12 | {% else %} 13 | 17 | {% endif %} 18 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/save_settings_successfull.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | 10 | -------------------------------------------------------------------------------- /searx/templates/oscar/messages/unknow_error.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | 10 | -------------------------------------------------------------------------------- /searx/templates/oscar/navbar.html: -------------------------------------------------------------------------------- 1 |
{{- "" -}} 2 | {{- "" -}} 3 | {{ instance_name }}{{- "" -}} 4 | {{- "" -}} 5 | {{- "" -}} 6 | {{ _('back to privacytools.io') }}{{- "" -}} 7 | {{ _('about') }}{{- "" -}} 8 | {{ _('preferences') }}{{- "" -}} 9 | {{- "" -}} 10 |
11 | -------------------------------------------------------------------------------- /searx/templates/oscar/result_templates/code.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon with context%} 2 | 3 | {{ result_header(result, favicons) }} 4 | {{ result_sub_header(result) }} 5 | 6 | {% if result.content %}

{{ result.content|safe }}

{% endif %} 7 | 8 | {% if result.repository %}

{{ icon('file') }} {{ result.repository }}

{% endif %} 9 | 10 |
11 | {{ result.codelines|code_highlighter(result.code_language)|safe }} 12 |
13 | 14 | {% if rtl %} 15 | {{ result_footer_rtl(result) }} 16 | {% else %} 17 | {{ result_footer(result) }} 18 | {% endif %} 19 | -------------------------------------------------------------------------------- /searx/templates/oscar/result_templates/key-value.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import result_footer, result_footer_rtl with context %} 2 |
3 | 4 | {% for key, value in result.items() %} 5 | {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %} 6 | {% continue %} 7 | {% endif %} 8 | 9 | 10 | 11 | {% endfor %} 12 |
{{ key|upper }}: {{ value }}
13 | 14 | {% if rtl %} 15 | {{ result_footer_rtl(result) }} 16 | {% else %} 17 | {{ result_footer(result) }} 18 | {% endif %} 19 |
20 | -------------------------------------------------------------------------------- /searx/templates/oscar/search_full.html: -------------------------------------------------------------------------------- 1 | {% from 'oscar/macros.html' import icon %} 2 | 3 |