diff --git a/searx/static/courgette/css/style.css b/searx/static/themes/courgette/css/style.css similarity index 100% rename from searx/static/courgette/css/style.css rename to searx/static/themes/courgette/css/style.css diff --git a/searx/static/courgette/img/bg-body-index.jpg b/searx/static/themes/courgette/img/bg-body-index.jpg similarity index 100% rename from searx/static/courgette/img/bg-body-index.jpg rename to searx/static/themes/courgette/img/bg-body-index.jpg diff --git a/searx/static/courgette/img/favicon.png b/searx/static/themes/courgette/img/favicon.png similarity index 100% rename from searx/static/courgette/img/favicon.png rename to searx/static/themes/courgette/img/favicon.png diff --git a/searx/static/courgette/img/github_ribbon.png b/searx/static/themes/courgette/img/github_ribbon.png similarity index 100% rename from searx/static/courgette/img/github_ribbon.png rename to searx/static/themes/courgette/img/github_ribbon.png diff --git a/searx/static/courgette/img/icons/icon_dailymotion.ico b/searx/static/themes/courgette/img/icons/icon_dailymotion.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_dailymotion.ico rename to searx/static/themes/courgette/img/icons/icon_dailymotion.ico diff --git a/searx/static/courgette/img/icons/icon_deviantart.ico b/searx/static/themes/courgette/img/icons/icon_deviantart.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_deviantart.ico rename to searx/static/themes/courgette/img/icons/icon_deviantart.ico diff --git a/searx/static/courgette/img/icons/icon_github.ico b/searx/static/themes/courgette/img/icons/icon_github.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_github.ico rename to searx/static/themes/courgette/img/icons/icon_github.ico diff --git a/searx/static/courgette/img/icons/icon_kickass.ico b/searx/static/themes/courgette/img/icons/icon_kickass.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_kickass.ico rename to searx/static/themes/courgette/img/icons/icon_kickass.ico diff --git a/searx/static/courgette/img/icons/icon_soundcloud.ico b/searx/static/themes/courgette/img/icons/icon_soundcloud.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_soundcloud.ico rename to searx/static/themes/courgette/img/icons/icon_soundcloud.ico diff --git a/searx/static/courgette/img/icons/icon_stackoverflow.ico b/searx/static/themes/courgette/img/icons/icon_stackoverflow.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_stackoverflow.ico rename to searx/static/themes/courgette/img/icons/icon_stackoverflow.ico diff --git a/searx/static/courgette/img/icons/icon_twitter.ico b/searx/static/themes/courgette/img/icons/icon_twitter.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_twitter.ico rename to searx/static/themes/courgette/img/icons/icon_twitter.ico diff --git a/searx/static/courgette/img/icons/icon_vimeo.ico b/searx/static/themes/courgette/img/icons/icon_vimeo.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_vimeo.ico rename to searx/static/themes/courgette/img/icons/icon_vimeo.ico diff --git a/searx/static/courgette/img/icons/icon_wikipedia.ico b/searx/static/themes/courgette/img/icons/icon_wikipedia.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_wikipedia.ico rename to searx/static/themes/courgette/img/icons/icon_wikipedia.ico diff --git a/searx/static/courgette/img/icons/icon_youtube.ico b/searx/static/themes/courgette/img/icons/icon_youtube.ico similarity index 100% rename from searx/static/courgette/img/icons/icon_youtube.ico rename to searx/static/themes/courgette/img/icons/icon_youtube.ico diff --git a/searx/static/courgette/img/preference-icon.png b/searx/static/themes/courgette/img/preference-icon.png similarity index 100% rename from searx/static/courgette/img/preference-icon.png rename to searx/static/themes/courgette/img/preference-icon.png diff --git a/searx/static/courgette/img/search-icon.png b/searx/static/themes/courgette/img/search-icon.png similarity index 100% rename from searx/static/courgette/img/search-icon.png rename to searx/static/themes/courgette/img/search-icon.png diff --git a/searx/static/courgette/img/searx-mobile.png b/searx/static/themes/courgette/img/searx-mobile.png similarity index 100% rename from searx/static/courgette/img/searx-mobile.png rename to searx/static/themes/courgette/img/searx-mobile.png diff --git a/searx/static/courgette/img/searx.png b/searx/static/themes/courgette/img/searx.png similarity index 100% rename from searx/static/courgette/img/searx.png rename to searx/static/themes/courgette/img/searx.png diff --git a/searx/static/courgette/img/searx_logo.svg b/searx/static/themes/courgette/img/searx_logo.svg similarity index 100% rename from searx/static/courgette/img/searx_logo.svg rename to searx/static/themes/courgette/img/searx_logo.svg diff --git a/searx/static/courgette/js/mootools-autocompleter-1.1.2-min.js b/searx/static/themes/courgette/js/mootools-autocompleter-1.1.2-min.js similarity index 100% rename from searx/static/courgette/js/mootools-autocompleter-1.1.2-min.js rename to searx/static/themes/courgette/js/mootools-autocompleter-1.1.2-min.js diff --git a/searx/static/courgette/js/mootools-core-1.4.5-min.js b/searx/static/themes/courgette/js/mootools-core-1.4.5-min.js similarity index 100% rename from searx/static/courgette/js/mootools-core-1.4.5-min.js rename to searx/static/themes/courgette/js/mootools-core-1.4.5-min.js diff --git a/searx/static/courgette/js/searx.js b/searx/static/themes/courgette/js/searx.js similarity index 100% rename from searx/static/courgette/js/searx.js rename to searx/static/themes/courgette/js/searx.js diff --git a/searx/static/default/css/style.css b/searx/static/themes/default/css/style.css similarity index 100% rename from searx/static/default/css/style.css rename to searx/static/themes/default/css/style.css diff --git a/searx/static/default/img/favicon.png b/searx/static/themes/default/img/favicon.png similarity index 100% rename from searx/static/default/img/favicon.png rename to searx/static/themes/default/img/favicon.png diff --git a/searx/static/default/img/github_ribbon.png b/searx/static/themes/default/img/github_ribbon.png similarity index 100% rename from searx/static/default/img/github_ribbon.png rename to searx/static/themes/default/img/github_ribbon.png diff --git a/searx/static/default/img/icons/icon_dailymotion.ico b/searx/static/themes/default/img/icons/icon_dailymotion.ico similarity index 100% rename from searx/static/default/img/icons/icon_dailymotion.ico rename to searx/static/themes/default/img/icons/icon_dailymotion.ico diff --git a/searx/static/default/img/icons/icon_deviantart.ico b/searx/static/themes/default/img/icons/icon_deviantart.ico similarity index 100% rename from searx/static/default/img/icons/icon_deviantart.ico rename to searx/static/themes/default/img/icons/icon_deviantart.ico diff --git a/searx/static/default/img/icons/icon_github.ico b/searx/static/themes/default/img/icons/icon_github.ico similarity index 100% rename from searx/static/default/img/icons/icon_github.ico rename to searx/static/themes/default/img/icons/icon_github.ico diff --git a/searx/static/default/img/icons/icon_kickass.ico b/searx/static/themes/default/img/icons/icon_kickass.ico similarity index 100% rename from searx/static/default/img/icons/icon_kickass.ico rename to searx/static/themes/default/img/icons/icon_kickass.ico diff --git a/searx/static/default/img/icons/icon_soundcloud.ico b/searx/static/themes/default/img/icons/icon_soundcloud.ico similarity index 100% rename from searx/static/default/img/icons/icon_soundcloud.ico rename to searx/static/themes/default/img/icons/icon_soundcloud.ico diff --git a/searx/static/default/img/icons/icon_stackoverflow.ico b/searx/static/themes/default/img/icons/icon_stackoverflow.ico similarity index 100% rename from searx/static/default/img/icons/icon_stackoverflow.ico rename to searx/static/themes/default/img/icons/icon_stackoverflow.ico diff --git a/searx/static/default/img/icons/icon_twitter.ico b/searx/static/themes/default/img/icons/icon_twitter.ico similarity index 100% rename from searx/static/default/img/icons/icon_twitter.ico rename to searx/static/themes/default/img/icons/icon_twitter.ico diff --git a/searx/static/default/img/icons/icon_vimeo.ico b/searx/static/themes/default/img/icons/icon_vimeo.ico similarity index 100% rename from searx/static/default/img/icons/icon_vimeo.ico rename to searx/static/themes/default/img/icons/icon_vimeo.ico diff --git a/searx/static/default/img/icons/icon_wikipedia.ico b/searx/static/themes/default/img/icons/icon_wikipedia.ico similarity index 100% rename from searx/static/default/img/icons/icon_wikipedia.ico rename to searx/static/themes/default/img/icons/icon_wikipedia.ico diff --git a/searx/static/default/img/icons/icon_youtube.ico b/searx/static/themes/default/img/icons/icon_youtube.ico similarity index 100% rename from searx/static/default/img/icons/icon_youtube.ico rename to searx/static/themes/default/img/icons/icon_youtube.ico diff --git a/searx/static/default/img/preference-icon.png b/searx/static/themes/default/img/preference-icon.png similarity index 100% rename from searx/static/default/img/preference-icon.png rename to searx/static/themes/default/img/preference-icon.png diff --git a/searx/static/default/img/search-icon.png b/searx/static/themes/default/img/search-icon.png similarity index 100% rename from searx/static/default/img/search-icon.png rename to searx/static/themes/default/img/search-icon.png diff --git a/searx/static/default/img/searx.png b/searx/static/themes/default/img/searx.png similarity index 100% rename from searx/static/default/img/searx.png rename to searx/static/themes/default/img/searx.png diff --git a/searx/static/default/img/searx_logo.svg b/searx/static/themes/default/img/searx_logo.svg similarity index 100% rename from searx/static/default/img/searx_logo.svg rename to searx/static/themes/default/img/searx_logo.svg diff --git a/searx/static/default/js/mootools-autocompleter-1.1.2-min.js b/searx/static/themes/default/js/mootools-autocompleter-1.1.2-min.js similarity index 100% rename from searx/static/default/js/mootools-autocompleter-1.1.2-min.js rename to searx/static/themes/default/js/mootools-autocompleter-1.1.2-min.js diff --git a/searx/static/default/js/mootools-core-1.4.5-min.js b/searx/static/themes/default/js/mootools-core-1.4.5-min.js similarity index 100% rename from searx/static/default/js/mootools-core-1.4.5-min.js rename to searx/static/themes/default/js/mootools-core-1.4.5-min.js diff --git a/searx/static/default/js/searx.js b/searx/static/themes/default/js/searx.js similarity index 100% rename from searx/static/default/js/searx.js rename to searx/static/themes/default/js/searx.js diff --git a/searx/static/default/less/autocompleter.less b/searx/static/themes/default/less/autocompleter.less similarity index 100% rename from searx/static/default/less/autocompleter.less rename to searx/static/themes/default/less/autocompleter.less diff --git a/searx/static/default/less/definitions.less b/searx/static/themes/default/less/definitions.less similarity index 100% rename from searx/static/default/less/definitions.less rename to searx/static/themes/default/less/definitions.less diff --git a/searx/static/default/less/mixins.less b/searx/static/themes/default/less/mixins.less similarity index 100% rename from searx/static/default/less/mixins.less rename to searx/static/themes/default/less/mixins.less diff --git a/searx/static/default/less/search.less b/searx/static/themes/default/less/search.less similarity index 100% rename from searx/static/default/less/search.less rename to searx/static/themes/default/less/search.less diff --git a/searx/static/default/less/style.less b/searx/static/themes/default/less/style.less similarity index 100% rename from searx/static/default/less/style.less rename to searx/static/themes/default/less/style.less diff --git a/searx/static/oscar/.gitignore b/searx/static/themes/oscar/.gitignore similarity index 100% rename from searx/static/oscar/.gitignore rename to searx/static/themes/oscar/.gitignore diff --git a/searx/static/oscar/README.rst b/searx/static/themes/oscar/README.rst similarity index 100% rename from searx/static/oscar/README.rst rename to searx/static/themes/oscar/README.rst diff --git a/searx/static/oscar/css/bootstrap.min.css b/searx/static/themes/oscar/css/bootstrap.min.css similarity index 100% rename from searx/static/oscar/css/bootstrap.min.css rename to searx/static/themes/oscar/css/bootstrap.min.css diff --git a/searx/static/oscar/css/leaflet.min.css b/searx/static/themes/oscar/css/leaflet.min.css similarity index 100% rename from searx/static/oscar/css/leaflet.min.css rename to searx/static/themes/oscar/css/leaflet.min.css diff --git a/searx/static/oscar/css/oscar.min.css b/searx/static/themes/oscar/css/oscar.min.css similarity index 100% rename from searx/static/oscar/css/oscar.min.css rename to searx/static/themes/oscar/css/oscar.min.css diff --git a/searx/static/oscar/fonts/glyphicons-halflings-regular.eot b/searx/static/themes/oscar/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from searx/static/oscar/fonts/glyphicons-halflings-regular.eot rename to searx/static/themes/oscar/fonts/glyphicons-halflings-regular.eot diff --git a/searx/static/oscar/fonts/glyphicons-halflings-regular.svg b/searx/static/themes/oscar/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from searx/static/oscar/fonts/glyphicons-halflings-regular.svg rename to searx/static/themes/oscar/fonts/glyphicons-halflings-regular.svg diff --git a/searx/static/oscar/fonts/glyphicons-halflings-regular.ttf b/searx/static/themes/oscar/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from searx/static/oscar/fonts/glyphicons-halflings-regular.ttf rename to searx/static/themes/oscar/fonts/glyphicons-halflings-regular.ttf diff --git a/searx/static/oscar/fonts/glyphicons-halflings-regular.woff b/searx/static/themes/oscar/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from searx/static/oscar/fonts/glyphicons-halflings-regular.woff rename to searx/static/themes/oscar/fonts/glyphicons-halflings-regular.woff diff --git a/searx/static/oscar/gruntfile.js b/searx/static/themes/oscar/gruntfile.js similarity index 100% rename from searx/static/oscar/gruntfile.js rename to searx/static/themes/oscar/gruntfile.js diff --git a/searx/static/oscar/img/favicon.png b/searx/static/themes/oscar/img/favicon.png similarity index 100% rename from searx/static/oscar/img/favicon.png rename to searx/static/themes/oscar/img/favicon.png diff --git a/searx/static/oscar/img/icons/README.md b/searx/static/themes/oscar/img/icons/README.md similarity index 100% rename from searx/static/oscar/img/icons/README.md rename to searx/static/themes/oscar/img/icons/README.md diff --git a/searx/static/oscar/img/icons/amazon.png b/searx/static/themes/oscar/img/icons/amazon.png similarity index 100% rename from searx/static/oscar/img/icons/amazon.png rename to searx/static/themes/oscar/img/icons/amazon.png diff --git a/searx/static/oscar/img/icons/dailymotion.png b/searx/static/themes/oscar/img/icons/dailymotion.png similarity index 100% rename from searx/static/oscar/img/icons/dailymotion.png rename to searx/static/themes/oscar/img/icons/dailymotion.png diff --git a/searx/static/oscar/img/icons/deviantart.png b/searx/static/themes/oscar/img/icons/deviantart.png similarity index 100% rename from searx/static/oscar/img/icons/deviantart.png rename to searx/static/themes/oscar/img/icons/deviantart.png diff --git a/searx/static/oscar/img/icons/facebook.png b/searx/static/themes/oscar/img/icons/facebook.png similarity index 100% rename from searx/static/oscar/img/icons/facebook.png rename to searx/static/themes/oscar/img/icons/facebook.png diff --git a/searx/static/oscar/img/icons/flickr.png b/searx/static/themes/oscar/img/icons/flickr.png similarity index 100% rename from searx/static/oscar/img/icons/flickr.png rename to searx/static/themes/oscar/img/icons/flickr.png diff --git a/searx/static/oscar/img/icons/github.png b/searx/static/themes/oscar/img/icons/github.png similarity index 100% rename from searx/static/oscar/img/icons/github.png rename to searx/static/themes/oscar/img/icons/github.png diff --git a/searx/static/oscar/img/icons/kickass.png b/searx/static/themes/oscar/img/icons/kickass.png similarity index 100% rename from searx/static/oscar/img/icons/kickass.png rename to searx/static/themes/oscar/img/icons/kickass.png diff --git a/searx/static/oscar/img/icons/openstreetmap.png b/searx/static/themes/oscar/img/icons/openstreetmap.png similarity index 100% rename from searx/static/oscar/img/icons/openstreetmap.png rename to searx/static/themes/oscar/img/icons/openstreetmap.png diff --git a/searx/static/oscar/img/icons/photon.png b/searx/static/themes/oscar/img/icons/photon.png similarity index 100% rename from searx/static/oscar/img/icons/photon.png rename to searx/static/themes/oscar/img/icons/photon.png diff --git a/searx/static/oscar/img/icons/searchcode code.png b/searx/static/themes/oscar/img/icons/searchcode code.png similarity index 100% rename from searx/static/oscar/img/icons/searchcode code.png rename to searx/static/themes/oscar/img/icons/searchcode code.png diff --git a/searx/static/oscar/img/icons/searchcode doc.png b/searx/static/themes/oscar/img/icons/searchcode doc.png similarity index 100% rename from searx/static/oscar/img/icons/searchcode doc.png rename to searx/static/themes/oscar/img/icons/searchcode doc.png diff --git a/searx/static/oscar/img/icons/soundcloud.png b/searx/static/themes/oscar/img/icons/soundcloud.png similarity index 100% rename from searx/static/oscar/img/icons/soundcloud.png rename to searx/static/themes/oscar/img/icons/soundcloud.png diff --git a/searx/static/oscar/img/icons/stackoverflow.png b/searx/static/themes/oscar/img/icons/stackoverflow.png similarity index 100% rename from searx/static/oscar/img/icons/stackoverflow.png rename to searx/static/themes/oscar/img/icons/stackoverflow.png diff --git a/searx/static/oscar/img/icons/twitter.png b/searx/static/themes/oscar/img/icons/twitter.png similarity index 100% rename from searx/static/oscar/img/icons/twitter.png rename to searx/static/themes/oscar/img/icons/twitter.png diff --git a/searx/static/oscar/img/icons/vimeo.png b/searx/static/themes/oscar/img/icons/vimeo.png similarity index 100% rename from searx/static/oscar/img/icons/vimeo.png rename to searx/static/themes/oscar/img/icons/vimeo.png diff --git a/searx/static/oscar/img/icons/wikipedia.png b/searx/static/themes/oscar/img/icons/wikipedia.png similarity index 100% rename from searx/static/oscar/img/icons/wikipedia.png rename to searx/static/themes/oscar/img/icons/wikipedia.png diff --git a/searx/static/oscar/img/icons/youtube.png b/searx/static/themes/oscar/img/icons/youtube.png similarity index 100% rename from searx/static/oscar/img/icons/youtube.png rename to searx/static/themes/oscar/img/icons/youtube.png diff --git a/searx/static/oscar/img/loader.gif b/searx/static/themes/oscar/img/loader.gif similarity index 100% rename from searx/static/oscar/img/loader.gif rename to searx/static/themes/oscar/img/loader.gif diff --git a/searx/static/oscar/img/map/layers-2x.png b/searx/static/themes/oscar/img/map/layers-2x.png similarity index 100% rename from searx/static/oscar/img/map/layers-2x.png rename to searx/static/themes/oscar/img/map/layers-2x.png diff --git a/searx/static/oscar/img/map/layers.png b/searx/static/themes/oscar/img/map/layers.png similarity index 100% rename from searx/static/oscar/img/map/layers.png rename to searx/static/themes/oscar/img/map/layers.png diff --git a/searx/static/oscar/img/map/marker-icon-2x-green.png b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-2x-green.png rename to searx/static/themes/oscar/img/map/marker-icon-2x-green.png diff --git a/searx/static/oscar/img/map/marker-icon-2x-orange.png b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-2x-orange.png rename to searx/static/themes/oscar/img/map/marker-icon-2x-orange.png diff --git a/searx/static/oscar/img/map/marker-icon-2x-red.png b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-2x-red.png rename to searx/static/themes/oscar/img/map/marker-icon-2x-red.png diff --git a/searx/static/oscar/img/map/marker-icon-2x.png b/searx/static/themes/oscar/img/map/marker-icon-2x.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-2x.png rename to searx/static/themes/oscar/img/map/marker-icon-2x.png diff --git a/searx/static/oscar/img/map/marker-icon-green.png b/searx/static/themes/oscar/img/map/marker-icon-green.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-green.png rename to searx/static/themes/oscar/img/map/marker-icon-green.png diff --git a/searx/static/oscar/img/map/marker-icon-orange.png b/searx/static/themes/oscar/img/map/marker-icon-orange.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-orange.png rename to searx/static/themes/oscar/img/map/marker-icon-orange.png diff --git a/searx/static/oscar/img/map/marker-icon-red.png b/searx/static/themes/oscar/img/map/marker-icon-red.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon-red.png rename to searx/static/themes/oscar/img/map/marker-icon-red.png diff --git a/searx/static/oscar/img/map/marker-icon.png b/searx/static/themes/oscar/img/map/marker-icon.png similarity index 100% rename from searx/static/oscar/img/map/marker-icon.png rename to searx/static/themes/oscar/img/map/marker-icon.png diff --git a/searx/static/oscar/img/map/marker-shadow.png b/searx/static/themes/oscar/img/map/marker-shadow.png similarity index 100% rename from searx/static/oscar/img/map/marker-shadow.png rename to searx/static/themes/oscar/img/map/marker-shadow.png diff --git a/searx/static/oscar/img/searx_logo.png b/searx/static/themes/oscar/img/searx_logo.png similarity index 100% rename from searx/static/oscar/img/searx_logo.png rename to searx/static/themes/oscar/img/searx_logo.png diff --git a/searx/static/oscar/js/bootstrap.min.js b/searx/static/themes/oscar/js/bootstrap.min.js similarity index 100% rename from searx/static/oscar/js/bootstrap.min.js rename to searx/static/themes/oscar/js/bootstrap.min.js diff --git a/searx/static/oscar/js/html5shiv.min.js b/searx/static/themes/oscar/js/html5shiv.min.js similarity index 100% rename from searx/static/oscar/js/html5shiv.min.js rename to searx/static/themes/oscar/js/html5shiv.min.js diff --git a/searx/static/oscar/js/jquery-1.11.1.min.js b/searx/static/themes/oscar/js/jquery-1.11.1.min.js similarity index 100% rename from searx/static/oscar/js/jquery-1.11.1.min.js rename to searx/static/themes/oscar/js/jquery-1.11.1.min.js diff --git a/searx/static/oscar/js/leaflet-0.7.3.min.js b/searx/static/themes/oscar/js/leaflet-0.7.3.min.js similarity index 100% rename from searx/static/oscar/js/leaflet-0.7.3.min.js rename to searx/static/themes/oscar/js/leaflet-0.7.3.min.js diff --git a/searx/static/oscar/js/require-2.1.15.min.js b/searx/static/themes/oscar/js/require-2.1.15.min.js similarity index 100% rename from searx/static/oscar/js/require-2.1.15.min.js rename to searx/static/themes/oscar/js/require-2.1.15.min.js diff --git a/searx/static/oscar/js/respond.min.js b/searx/static/themes/oscar/js/respond.min.js similarity index 100% rename from searx/static/oscar/js/respond.min.js rename to searx/static/themes/oscar/js/respond.min.js diff --git a/searx/static/oscar/js/searx.min.js b/searx/static/themes/oscar/js/searx.min.js similarity index 100% rename from searx/static/oscar/js/searx.min.js rename to searx/static/themes/oscar/js/searx.min.js diff --git a/searx/static/oscar/js/searx_src/00_requirejs_config.js b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js similarity index 100% rename from searx/static/oscar/js/searx_src/00_requirejs_config.js rename to searx/static/themes/oscar/js/searx_src/00_requirejs_config.js diff --git a/searx/static/oscar/js/searx_src/autocompleter.js b/searx/static/themes/oscar/js/searx_src/autocompleter.js similarity index 100% rename from searx/static/oscar/js/searx_src/autocompleter.js rename to searx/static/themes/oscar/js/searx_src/autocompleter.js diff --git a/searx/static/oscar/js/searx_src/element_modifiers.js b/searx/static/themes/oscar/js/searx_src/element_modifiers.js similarity index 100% rename from searx/static/oscar/js/searx_src/element_modifiers.js rename to searx/static/themes/oscar/js/searx_src/element_modifiers.js diff --git a/searx/static/oscar/js/searx_src/leaflet_map.js b/searx/static/themes/oscar/js/searx_src/leaflet_map.js similarity index 100% rename from searx/static/oscar/js/searx_src/leaflet_map.js rename to searx/static/themes/oscar/js/searx_src/leaflet_map.js diff --git a/searx/static/oscar/js/typeahead.bundle.min.js b/searx/static/themes/oscar/js/typeahead.bundle.min.js similarity index 100% rename from searx/static/oscar/js/typeahead.bundle.min.js rename to searx/static/themes/oscar/js/typeahead.bundle.min.js diff --git a/searx/static/oscar/less/bootstrap/.csscomb.json b/searx/static/themes/oscar/less/bootstrap/.csscomb.json similarity index 100% rename from searx/static/oscar/less/bootstrap/.csscomb.json rename to searx/static/themes/oscar/less/bootstrap/.csscomb.json diff --git a/searx/static/oscar/less/bootstrap/.csslintrc b/searx/static/themes/oscar/less/bootstrap/.csslintrc similarity index 100% rename from searx/static/oscar/less/bootstrap/.csslintrc rename to searx/static/themes/oscar/less/bootstrap/.csslintrc diff --git a/searx/static/oscar/less/bootstrap/alerts.less b/searx/static/themes/oscar/less/bootstrap/alerts.less similarity index 100% rename from searx/static/oscar/less/bootstrap/alerts.less rename to searx/static/themes/oscar/less/bootstrap/alerts.less diff --git a/searx/static/oscar/less/bootstrap/badges.less b/searx/static/themes/oscar/less/bootstrap/badges.less similarity index 100% rename from searx/static/oscar/less/bootstrap/badges.less rename to searx/static/themes/oscar/less/bootstrap/badges.less diff --git a/searx/static/oscar/less/bootstrap/bootstrap.less b/searx/static/themes/oscar/less/bootstrap/bootstrap.less similarity index 100% rename from searx/static/oscar/less/bootstrap/bootstrap.less rename to searx/static/themes/oscar/less/bootstrap/bootstrap.less diff --git a/searx/static/oscar/less/bootstrap/breadcrumbs.less b/searx/static/themes/oscar/less/bootstrap/breadcrumbs.less similarity index 100% rename from searx/static/oscar/less/bootstrap/breadcrumbs.less rename to searx/static/themes/oscar/less/bootstrap/breadcrumbs.less diff --git a/searx/static/oscar/less/bootstrap/button-groups.less b/searx/static/themes/oscar/less/bootstrap/button-groups.less similarity index 100% rename from searx/static/oscar/less/bootstrap/button-groups.less rename to searx/static/themes/oscar/less/bootstrap/button-groups.less diff --git a/searx/static/oscar/less/bootstrap/buttons.less b/searx/static/themes/oscar/less/bootstrap/buttons.less similarity index 100% rename from searx/static/oscar/less/bootstrap/buttons.less rename to searx/static/themes/oscar/less/bootstrap/buttons.less diff --git a/searx/static/oscar/less/bootstrap/carousel.less b/searx/static/themes/oscar/less/bootstrap/carousel.less similarity index 100% rename from searx/static/oscar/less/bootstrap/carousel.less rename to searx/static/themes/oscar/less/bootstrap/carousel.less diff --git a/searx/static/oscar/less/bootstrap/close.less b/searx/static/themes/oscar/less/bootstrap/close.less similarity index 100% rename from searx/static/oscar/less/bootstrap/close.less rename to searx/static/themes/oscar/less/bootstrap/close.less diff --git a/searx/static/oscar/less/bootstrap/code.less b/searx/static/themes/oscar/less/bootstrap/code.less similarity index 100% rename from searx/static/oscar/less/bootstrap/code.less rename to searx/static/themes/oscar/less/bootstrap/code.less diff --git a/searx/static/oscar/less/bootstrap/component-animations.less b/searx/static/themes/oscar/less/bootstrap/component-animations.less similarity index 100% rename from searx/static/oscar/less/bootstrap/component-animations.less rename to searx/static/themes/oscar/less/bootstrap/component-animations.less diff --git a/searx/static/oscar/less/bootstrap/dropdowns.less b/searx/static/themes/oscar/less/bootstrap/dropdowns.less similarity index 100% rename from searx/static/oscar/less/bootstrap/dropdowns.less rename to searx/static/themes/oscar/less/bootstrap/dropdowns.less diff --git a/searx/static/oscar/less/bootstrap/forms.less b/searx/static/themes/oscar/less/bootstrap/forms.less similarity index 100% rename from searx/static/oscar/less/bootstrap/forms.less rename to searx/static/themes/oscar/less/bootstrap/forms.less diff --git a/searx/static/oscar/less/bootstrap/glyphicons.less b/searx/static/themes/oscar/less/bootstrap/glyphicons.less similarity index 100% rename from searx/static/oscar/less/bootstrap/glyphicons.less rename to searx/static/themes/oscar/less/bootstrap/glyphicons.less diff --git a/searx/static/oscar/less/bootstrap/grid.less b/searx/static/themes/oscar/less/bootstrap/grid.less similarity index 100% rename from searx/static/oscar/less/bootstrap/grid.less rename to searx/static/themes/oscar/less/bootstrap/grid.less diff --git a/searx/static/oscar/less/bootstrap/input-groups.less b/searx/static/themes/oscar/less/bootstrap/input-groups.less similarity index 100% rename from searx/static/oscar/less/bootstrap/input-groups.less rename to searx/static/themes/oscar/less/bootstrap/input-groups.less diff --git a/searx/static/oscar/less/bootstrap/jumbotron.less b/searx/static/themes/oscar/less/bootstrap/jumbotron.less similarity index 100% rename from searx/static/oscar/less/bootstrap/jumbotron.less rename to searx/static/themes/oscar/less/bootstrap/jumbotron.less diff --git a/searx/static/oscar/less/bootstrap/labels.less b/searx/static/themes/oscar/less/bootstrap/labels.less similarity index 100% rename from searx/static/oscar/less/bootstrap/labels.less rename to searx/static/themes/oscar/less/bootstrap/labels.less diff --git a/searx/static/oscar/less/bootstrap/list-group.less b/searx/static/themes/oscar/less/bootstrap/list-group.less similarity index 100% rename from searx/static/oscar/less/bootstrap/list-group.less rename to searx/static/themes/oscar/less/bootstrap/list-group.less diff --git a/searx/static/oscar/less/bootstrap/media.less b/searx/static/themes/oscar/less/bootstrap/media.less similarity index 100% rename from searx/static/oscar/less/bootstrap/media.less rename to searx/static/themes/oscar/less/bootstrap/media.less diff --git a/searx/static/oscar/less/bootstrap/mixins.less b/searx/static/themes/oscar/less/bootstrap/mixins.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins.less rename to searx/static/themes/oscar/less/bootstrap/mixins.less diff --git a/searx/static/oscar/less/bootstrap/mixins/alerts.less b/searx/static/themes/oscar/less/bootstrap/mixins/alerts.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/alerts.less rename to searx/static/themes/oscar/less/bootstrap/mixins/alerts.less diff --git a/searx/static/oscar/less/bootstrap/mixins/background-variant.less b/searx/static/themes/oscar/less/bootstrap/mixins/background-variant.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/background-variant.less rename to searx/static/themes/oscar/less/bootstrap/mixins/background-variant.less diff --git a/searx/static/oscar/less/bootstrap/mixins/border-radius.less b/searx/static/themes/oscar/less/bootstrap/mixins/border-radius.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/border-radius.less rename to searx/static/themes/oscar/less/bootstrap/mixins/border-radius.less diff --git a/searx/static/oscar/less/bootstrap/mixins/buttons.less b/searx/static/themes/oscar/less/bootstrap/mixins/buttons.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/buttons.less rename to searx/static/themes/oscar/less/bootstrap/mixins/buttons.less diff --git a/searx/static/oscar/less/bootstrap/mixins/center-block.less b/searx/static/themes/oscar/less/bootstrap/mixins/center-block.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/center-block.less rename to searx/static/themes/oscar/less/bootstrap/mixins/center-block.less diff --git a/searx/static/oscar/less/bootstrap/mixins/clearfix.less b/searx/static/themes/oscar/less/bootstrap/mixins/clearfix.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/clearfix.less rename to searx/static/themes/oscar/less/bootstrap/mixins/clearfix.less diff --git a/searx/static/oscar/less/bootstrap/mixins/forms.less b/searx/static/themes/oscar/less/bootstrap/mixins/forms.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/forms.less rename to searx/static/themes/oscar/less/bootstrap/mixins/forms.less diff --git a/searx/static/oscar/less/bootstrap/mixins/gradients.less b/searx/static/themes/oscar/less/bootstrap/mixins/gradients.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/gradients.less rename to searx/static/themes/oscar/less/bootstrap/mixins/gradients.less diff --git a/searx/static/oscar/less/bootstrap/mixins/grid-framework.less b/searx/static/themes/oscar/less/bootstrap/mixins/grid-framework.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/grid-framework.less rename to searx/static/themes/oscar/less/bootstrap/mixins/grid-framework.less diff --git a/searx/static/oscar/less/bootstrap/mixins/grid.less b/searx/static/themes/oscar/less/bootstrap/mixins/grid.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/grid.less rename to searx/static/themes/oscar/less/bootstrap/mixins/grid.less diff --git a/searx/static/oscar/less/bootstrap/mixins/hide-text.less b/searx/static/themes/oscar/less/bootstrap/mixins/hide-text.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/hide-text.less rename to searx/static/themes/oscar/less/bootstrap/mixins/hide-text.less diff --git a/searx/static/oscar/less/bootstrap/mixins/image.less b/searx/static/themes/oscar/less/bootstrap/mixins/image.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/image.less rename to searx/static/themes/oscar/less/bootstrap/mixins/image.less diff --git a/searx/static/oscar/less/bootstrap/mixins/labels.less b/searx/static/themes/oscar/less/bootstrap/mixins/labels.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/labels.less rename to searx/static/themes/oscar/less/bootstrap/mixins/labels.less diff --git a/searx/static/oscar/less/bootstrap/mixins/list-group.less b/searx/static/themes/oscar/less/bootstrap/mixins/list-group.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/list-group.less rename to searx/static/themes/oscar/less/bootstrap/mixins/list-group.less diff --git a/searx/static/oscar/less/bootstrap/mixins/nav-divider.less b/searx/static/themes/oscar/less/bootstrap/mixins/nav-divider.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/nav-divider.less rename to searx/static/themes/oscar/less/bootstrap/mixins/nav-divider.less diff --git a/searx/static/oscar/less/bootstrap/mixins/nav-vertical-align.less b/searx/static/themes/oscar/less/bootstrap/mixins/nav-vertical-align.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/nav-vertical-align.less rename to searx/static/themes/oscar/less/bootstrap/mixins/nav-vertical-align.less diff --git a/searx/static/oscar/less/bootstrap/mixins/opacity.less b/searx/static/themes/oscar/less/bootstrap/mixins/opacity.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/opacity.less rename to searx/static/themes/oscar/less/bootstrap/mixins/opacity.less diff --git a/searx/static/oscar/less/bootstrap/mixins/pagination.less b/searx/static/themes/oscar/less/bootstrap/mixins/pagination.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/pagination.less rename to searx/static/themes/oscar/less/bootstrap/mixins/pagination.less diff --git a/searx/static/oscar/less/bootstrap/mixins/panels.less b/searx/static/themes/oscar/less/bootstrap/mixins/panels.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/panels.less rename to searx/static/themes/oscar/less/bootstrap/mixins/panels.less diff --git a/searx/static/oscar/less/bootstrap/mixins/progress-bar.less b/searx/static/themes/oscar/less/bootstrap/mixins/progress-bar.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/progress-bar.less rename to searx/static/themes/oscar/less/bootstrap/mixins/progress-bar.less diff --git a/searx/static/oscar/less/bootstrap/mixins/reset-filter.less b/searx/static/themes/oscar/less/bootstrap/mixins/reset-filter.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/reset-filter.less rename to searx/static/themes/oscar/less/bootstrap/mixins/reset-filter.less diff --git a/searx/static/oscar/less/bootstrap/mixins/resize.less b/searx/static/themes/oscar/less/bootstrap/mixins/resize.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/resize.less rename to searx/static/themes/oscar/less/bootstrap/mixins/resize.less diff --git a/searx/static/oscar/less/bootstrap/mixins/responsive-visibility.less b/searx/static/themes/oscar/less/bootstrap/mixins/responsive-visibility.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/responsive-visibility.less rename to searx/static/themes/oscar/less/bootstrap/mixins/responsive-visibility.less diff --git a/searx/static/oscar/less/bootstrap/mixins/size.less b/searx/static/themes/oscar/less/bootstrap/mixins/size.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/size.less rename to searx/static/themes/oscar/less/bootstrap/mixins/size.less diff --git a/searx/static/oscar/less/bootstrap/mixins/tab-focus.less b/searx/static/themes/oscar/less/bootstrap/mixins/tab-focus.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/tab-focus.less rename to searx/static/themes/oscar/less/bootstrap/mixins/tab-focus.less diff --git a/searx/static/oscar/less/bootstrap/mixins/table-row.less b/searx/static/themes/oscar/less/bootstrap/mixins/table-row.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/table-row.less rename to searx/static/themes/oscar/less/bootstrap/mixins/table-row.less diff --git a/searx/static/oscar/less/bootstrap/mixins/text-emphasis.less b/searx/static/themes/oscar/less/bootstrap/mixins/text-emphasis.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/text-emphasis.less rename to searx/static/themes/oscar/less/bootstrap/mixins/text-emphasis.less diff --git a/searx/static/oscar/less/bootstrap/mixins/text-overflow.less b/searx/static/themes/oscar/less/bootstrap/mixins/text-overflow.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/text-overflow.less rename to searx/static/themes/oscar/less/bootstrap/mixins/text-overflow.less diff --git a/searx/static/oscar/less/bootstrap/mixins/vendor-prefixes.less b/searx/static/themes/oscar/less/bootstrap/mixins/vendor-prefixes.less similarity index 100% rename from searx/static/oscar/less/bootstrap/mixins/vendor-prefixes.less rename to searx/static/themes/oscar/less/bootstrap/mixins/vendor-prefixes.less diff --git a/searx/static/oscar/less/bootstrap/modals.less b/searx/static/themes/oscar/less/bootstrap/modals.less similarity index 100% rename from searx/static/oscar/less/bootstrap/modals.less rename to searx/static/themes/oscar/less/bootstrap/modals.less diff --git a/searx/static/oscar/less/bootstrap/navbar.less b/searx/static/themes/oscar/less/bootstrap/navbar.less similarity index 100% rename from searx/static/oscar/less/bootstrap/navbar.less rename to searx/static/themes/oscar/less/bootstrap/navbar.less diff --git a/searx/static/oscar/less/bootstrap/navs.less b/searx/static/themes/oscar/less/bootstrap/navs.less similarity index 100% rename from searx/static/oscar/less/bootstrap/navs.less rename to searx/static/themes/oscar/less/bootstrap/navs.less diff --git a/searx/static/oscar/less/bootstrap/normalize.less b/searx/static/themes/oscar/less/bootstrap/normalize.less similarity index 100% rename from searx/static/oscar/less/bootstrap/normalize.less rename to searx/static/themes/oscar/less/bootstrap/normalize.less diff --git a/searx/static/oscar/less/bootstrap/pager.less b/searx/static/themes/oscar/less/bootstrap/pager.less similarity index 100% rename from searx/static/oscar/less/bootstrap/pager.less rename to searx/static/themes/oscar/less/bootstrap/pager.less diff --git a/searx/static/oscar/less/bootstrap/pagination.less b/searx/static/themes/oscar/less/bootstrap/pagination.less similarity index 100% rename from searx/static/oscar/less/bootstrap/pagination.less rename to searx/static/themes/oscar/less/bootstrap/pagination.less diff --git a/searx/static/oscar/less/bootstrap/panels.less b/searx/static/themes/oscar/less/bootstrap/panels.less similarity index 100% rename from searx/static/oscar/less/bootstrap/panels.less rename to searx/static/themes/oscar/less/bootstrap/panels.less diff --git a/searx/static/oscar/less/bootstrap/popovers.less b/searx/static/themes/oscar/less/bootstrap/popovers.less similarity index 100% rename from searx/static/oscar/less/bootstrap/popovers.less rename to searx/static/themes/oscar/less/bootstrap/popovers.less diff --git a/searx/static/oscar/less/bootstrap/print.less b/searx/static/themes/oscar/less/bootstrap/print.less similarity index 100% rename from searx/static/oscar/less/bootstrap/print.less rename to searx/static/themes/oscar/less/bootstrap/print.less diff --git a/searx/static/oscar/less/bootstrap/progress-bars.less b/searx/static/themes/oscar/less/bootstrap/progress-bars.less similarity index 100% rename from searx/static/oscar/less/bootstrap/progress-bars.less rename to searx/static/themes/oscar/less/bootstrap/progress-bars.less diff --git a/searx/static/oscar/less/bootstrap/responsive-embed.less b/searx/static/themes/oscar/less/bootstrap/responsive-embed.less similarity index 100% rename from searx/static/oscar/less/bootstrap/responsive-embed.less rename to searx/static/themes/oscar/less/bootstrap/responsive-embed.less diff --git a/searx/static/oscar/less/bootstrap/responsive-utilities.less b/searx/static/themes/oscar/less/bootstrap/responsive-utilities.less similarity index 100% rename from searx/static/oscar/less/bootstrap/responsive-utilities.less rename to searx/static/themes/oscar/less/bootstrap/responsive-utilities.less diff --git a/searx/static/oscar/less/bootstrap/scaffolding.less b/searx/static/themes/oscar/less/bootstrap/scaffolding.less similarity index 100% rename from searx/static/oscar/less/bootstrap/scaffolding.less rename to searx/static/themes/oscar/less/bootstrap/scaffolding.less diff --git a/searx/static/oscar/less/bootstrap/tables.less b/searx/static/themes/oscar/less/bootstrap/tables.less similarity index 100% rename from searx/static/oscar/less/bootstrap/tables.less rename to searx/static/themes/oscar/less/bootstrap/tables.less diff --git a/searx/static/oscar/less/bootstrap/theme.less b/searx/static/themes/oscar/less/bootstrap/theme.less similarity index 100% rename from searx/static/oscar/less/bootstrap/theme.less rename to searx/static/themes/oscar/less/bootstrap/theme.less diff --git a/searx/static/oscar/less/bootstrap/thumbnails.less b/searx/static/themes/oscar/less/bootstrap/thumbnails.less similarity index 100% rename from searx/static/oscar/less/bootstrap/thumbnails.less rename to searx/static/themes/oscar/less/bootstrap/thumbnails.less diff --git a/searx/static/oscar/less/bootstrap/tooltip.less b/searx/static/themes/oscar/less/bootstrap/tooltip.less similarity index 100% rename from searx/static/oscar/less/bootstrap/tooltip.less rename to searx/static/themes/oscar/less/bootstrap/tooltip.less diff --git a/searx/static/oscar/less/bootstrap/type.less b/searx/static/themes/oscar/less/bootstrap/type.less similarity index 100% rename from searx/static/oscar/less/bootstrap/type.less rename to searx/static/themes/oscar/less/bootstrap/type.less diff --git a/searx/static/oscar/less/bootstrap/typeahead.less b/searx/static/themes/oscar/less/bootstrap/typeahead.less similarity index 100% rename from searx/static/oscar/less/bootstrap/typeahead.less rename to searx/static/themes/oscar/less/bootstrap/typeahead.less diff --git a/searx/static/oscar/less/bootstrap/utilities.less b/searx/static/themes/oscar/less/bootstrap/utilities.less similarity index 100% rename from searx/static/oscar/less/bootstrap/utilities.less rename to searx/static/themes/oscar/less/bootstrap/utilities.less diff --git a/searx/static/oscar/less/bootstrap/variables.less b/searx/static/themes/oscar/less/bootstrap/variables.less similarity index 100% rename from searx/static/oscar/less/bootstrap/variables.less rename to searx/static/themes/oscar/less/bootstrap/variables.less diff --git a/searx/static/oscar/less/bootstrap/wells.less b/searx/static/themes/oscar/less/bootstrap/wells.less similarity index 100% rename from searx/static/oscar/less/bootstrap/wells.less rename to searx/static/themes/oscar/less/bootstrap/wells.less diff --git a/searx/static/oscar/less/oscar/checkbox.less b/searx/static/themes/oscar/less/oscar/checkbox.less similarity index 100% rename from searx/static/oscar/less/oscar/checkbox.less rename to searx/static/themes/oscar/less/oscar/checkbox.less diff --git a/searx/static/oscar/less/oscar/cursor.less b/searx/static/themes/oscar/less/oscar/cursor.less similarity index 100% rename from searx/static/oscar/less/oscar/cursor.less rename to searx/static/themes/oscar/less/oscar/cursor.less diff --git a/searx/static/oscar/less/oscar/footer.less b/searx/static/themes/oscar/less/oscar/footer.less similarity index 100% rename from searx/static/oscar/less/oscar/footer.less rename to searx/static/themes/oscar/less/oscar/footer.less diff --git a/searx/static/oscar/less/oscar/infobox.less b/searx/static/themes/oscar/less/oscar/infobox.less similarity index 100% rename from searx/static/oscar/less/oscar/infobox.less rename to searx/static/themes/oscar/less/oscar/infobox.less diff --git a/searx/static/oscar/less/oscar/oscar.less b/searx/static/themes/oscar/less/oscar/oscar.less similarity index 100% rename from searx/static/oscar/less/oscar/oscar.less rename to searx/static/themes/oscar/less/oscar/oscar.less diff --git a/searx/static/oscar/less/oscar/results.less b/searx/static/themes/oscar/less/oscar/results.less similarity index 100% rename from searx/static/oscar/less/oscar/results.less rename to searx/static/themes/oscar/less/oscar/results.less diff --git a/searx/static/oscar/less/oscar/search.less b/searx/static/themes/oscar/less/oscar/search.less similarity index 100% rename from searx/static/oscar/less/oscar/search.less rename to searx/static/themes/oscar/less/oscar/search.less diff --git a/searx/static/oscar/package.json b/searx/static/themes/oscar/package.json similarity index 100% rename from searx/static/oscar/package.json rename to searx/static/themes/oscar/package.json diff --git a/searx/utils.py b/searx/utils.py index 8a3f35531..0594339d5 100644 --- a/searx/utils.py +++ b/searx/utils.py @@ -73,11 +73,9 @@ class HTMLTextExtractor(HTMLParser): self.tags = [] def handle_starttag(self, tag, attrs): - print tag self.tags.append(tag) def handle_endtag(self, tag): - print tag,tag if tag != self.tags[-1]: raise Exception("invalid html") self.tags.pop() @@ -156,11 +154,17 @@ def get_themes(root): """Returns available themes list.""" static_path = os.path.join(root, 'static') - static_names = set(os.listdir(static_path)) templates_path = os.path.join(root, 'templates') - templates_names = set(os.listdir(templates_path)) - themes = [] - for name in static_names.intersection(templates_names): - themes += [name] + themes = os.listdir(os.path.join(static_path, 'themes')) return static_path, templates_path, themes + + +def get_static_files(base_path): + static_files = set() + base_path_length = len(base_path+'/static') + 1 + for directory, _, files in os.walk(os.path.join(base_path, 'static')): + for filename in files: + f = os.path.join(directory[base_path_length:], filename) + static_files.add(f) + return static_files diff --git a/searx/webapp.py b/searx/webapp.py index be7feee82..2e3c2c119 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -38,7 +38,8 @@ from searx.engines import ( categories, engines, get_engines_stats, engine_shortcuts ) from searx.utils import ( - UnicodeWriter, highlight_content, html_to_text, get_themes + UnicodeWriter, highlight_content, html_to_text, get_themes, + get_static_files ) from searx.version import VERSION_STRING from searx.languages import language_codes @@ -55,6 +56,8 @@ static_path, templates_path, themes =\ default_theme = settings['server'].get('default_theme', 'default') +static_files = get_static_files(searx_dir) + app = Flask( __name__, static_folder=static_path, @@ -123,9 +126,11 @@ def get_current_theme_name(override=None): def url_for_theme(endpoint, override_theme=None, **values): - if endpoint == 'static' and values.get('filename', None): + if endpoint == 'static' and values.get('filename'): theme_name = get_current_theme_name(override=override_theme) - values['filename'] = "{}/{}".format(theme_name, values['filename']) + filename_with_theme = "themes/{}/{}".format(theme_name, values['filename']) + if filename_with_theme in static_files: + values['filename'] = filename_with_theme return url_for(endpoint, **values)