From d740e7384a95c6a7d80e5f492f4dd7edb312175e Mon Sep 17 00:00:00 2001 From: Cqoicebordel Date: Sun, 15 Feb 2015 19:09:17 +0100 Subject: [PATCH] New Theme, Pix-art. First commit --- Makefile | 1 + searx/static/themes/pix-art/css/style.css | 1 + searx/static/themes/pix-art/img/favicon.png | Bin 0 -> 3064 bytes .../pix-art/img/preference-icon-pixel.png | Bin 0 -> 242 bytes .../themes/pix-art/img/search-icon-pixel.png | Bin 0 -> 204 bytes .../static/themes/pix-art/img/searx-pixel.png | Bin 0 -> 439 bytes .../static/themes/pix-art/img/searx_logo.svg | 203 ++++++++ searx/static/themes/pix-art/js/searx.js | 49 ++ .../themes/pix-art/less/definitions.less | 119 +++++ searx/static/themes/pix-art/less/mixins.less | 27 ++ searx/static/themes/pix-art/less/search.less | 56 +++ searx/static/themes/pix-art/less/style.less | 438 ++++++++++++++++++ searx/templates/pix-art/about.html | 65 +++ searx/templates/pix-art/base.html | 28 ++ searx/templates/pix-art/index.html | 12 + searx/templates/pix-art/preferences.html | 82 ++++ .../pix-art/result_templates/default.html | 13 + .../pix-art/result_templates/images.html | 6 + searx/templates/pix-art/results.html | 44 ++ searx/templates/pix-art/search.html | 9 + searx/templates/pix-art/stats.html | 22 + searx/webapp.py | 7 + 22 files changed, 1182 insertions(+) create mode 100644 searx/static/themes/pix-art/css/style.css create mode 100644 searx/static/themes/pix-art/img/favicon.png create mode 100644 searx/static/themes/pix-art/img/preference-icon-pixel.png create mode 100644 searx/static/themes/pix-art/img/search-icon-pixel.png create mode 100644 searx/static/themes/pix-art/img/searx-pixel.png create mode 100644 searx/static/themes/pix-art/img/searx_logo.svg create mode 100644 searx/static/themes/pix-art/js/searx.js create mode 100644 searx/static/themes/pix-art/less/definitions.less create mode 100644 searx/static/themes/pix-art/less/mixins.less create mode 100644 searx/static/themes/pix-art/less/search.less create mode 100644 searx/static/themes/pix-art/less/style.less create mode 100644 searx/templates/pix-art/about.html create mode 100644 searx/templates/pix-art/base.html create mode 100644 searx/templates/pix-art/index.html create mode 100644 searx/templates/pix-art/preferences.html create mode 100644 searx/templates/pix-art/result_templates/default.html create mode 100644 searx/templates/pix-art/result_templates/images.html create mode 100644 searx/templates/pix-art/results.html create mode 100644 searx/templates/pix-art/search.html create mode 100644 searx/templates/pix-art/stats.html diff --git a/Makefile b/Makefile index 9f4cf2ec..05685554 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,7 @@ styles: @lessc -x searx/static/themes/courgette/less/style-rtl.less > searx/static/themes/courgette/css/style-rtl.css @lessc -x searx/static/less/bootstrap/bootstrap.less > searx/static/css/bootstrap.min.css @lessc -x searx/static/themes/oscar/less/oscar/oscar.less > searx/static/themes/oscar/css/oscar.min.css + @lessc -x searx/static/themes/pix-art/less/style.less > searx/static/themes/pix-art/css/style.css grunt: @grunt --gruntfile searx/static/themes/oscar/gruntfile.js diff --git a/searx/static/themes/pix-art/css/style.css b/searx/static/themes/pix-art/css/style.css new file mode 100644 index 00000000..a173f542 --- /dev/null +++ b/searx/static/themes/pix-art/css/style.css @@ -0,0 +1 @@ +html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:#444;padding:0;margin:0}body,#container{padding:0;margin:0}canvas{image-rendering:optimizeSpeed;image-rendering:-moz-crisp-edges;image-rendering:-webkit-optimize-contrast;image-rendering:optimize-contrast;image-rendering:pixelated;-ms-interpolation-mode:nearest-neighbor;width:32px;height:32px}#container{width:100%;position:absolute;top:0}.search{padding:0;margin:0}#search_wrapper{position:relative;width:50em;padding:10px}.center #search_wrapper{margin-left:auto;margin-right:auto}.q{background:none repeat scroll 0 0 #fff;border:1px solid #3498db;color:#222;font-size:16px;height:28px;margin:0;outline:medium none;padding:2px;padding-left:8px;padding-right:0 !important;width:100%;z-index:2}#search_submit{position:absolute;top:13px;right:1px;padding:0;border:0;background:url('../img/search-icon-pixel2.png') no-repeat;background-size:24px 24px;opacity:.8;width:24px;height:30px;font-size:0}@media screen and (max-width:50em){#search_wrapper{width:90%;clear:both;overflow:hidden}}.row{max-width:800px;margin:20px auto;text-align:justify}.row h1{font-size:3em;margin-top:50px}.row p{padding:0 10px;max-width:700px}.row h3,.row ul{margin:4px 8px}.hmarg{margin:0 20px;border:1px solid #3498db;padding:4px 10px}a:link.hmarg{color:#3498db}a:visited.hmarg{color:#3498db}a:active.hmarg{color:#3498db}a:hover.hmarg{color:#3498db}.top_margin{margin-top:60px}.center{text-align:center}h1{font-size:5em}div.title{background:url('../img/searx-pixel.png') no-repeat;width:100%;min-height:80px;background-position:center}div.title h1{visibility:hidden}input[type="submit"]{padding:2px 6px;margin:2px 4px;display:inline-block;background:#3498db;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0;cursor:pointer}input[type="checkbox"]{visibility:hidden}fieldset{margin:8px;border:1px solid #3498db}#categories{margin:0 10px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container{display:inline-block;position:relative;margin:0 3px;padding:0}.checkbox_container input{display:none}.checkbox_container label,.engine_checkbox label{cursor:pointer;padding:4px 10px;margin:0;display:block;text-transform:capitalize;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox_container input[type="checkbox"]:checked+label{background:#3498db;color:#fff}.engine_checkbox{padding:4px}label.allow{background:#e74c3c;padding:4px 8px;color:#fff;display:none}label.deny{background:#2ecc71;padding:4px 8px;color:#444;display:inline}.engine_checkbox input[type="checkbox"]:checked+label:nth-child(2)+label{display:none}.engine_checkbox input[type="checkbox"]:checked+label.allow{display:inline}a{text-decoration:none;color:#1a11be}a:visited{color:#8e44ad}.engines{color:#888}.small_font{font-size:.8em}.small p{margin:2px 0}.right{float:right}.invisible{display:none}.left{float:left}.highlight{color:#094089}.content .highlight{color:#000}.percentage{position:relative;width:300px}.percentage div{background:#444}table{width:100%}td{padding:0 4px}tr:hover{background:#ddd}#results{margin:auto;padding:0;width:50em;margin-bottom:20px}#search_url{margin-top:8px}#search_url input{border:1px solid #888;padding:4px;color:#444;width:14em;display:block;margin:4px;font-size:.8em}#preferences{top:10px;padding:0;border:0;background:url('../img/preference-icon-pixel.png') no-repeat;background-size:28px 28px;opacity:.8;width:28px;height:30px;display:block}#preferences *{display:none}#pagination{clear:both}#pagination br{clear:both}#apis{margin-top:8px;clear:both}#categories_container{position:relative}@media screen and (max-width:50em){#results{margin:auto;padding:0;width:90%}.checkbox_container{display:block;width:90%}.checkbox_container label{border-bottom:0}.preferences_container{display:none;postion:fixed !important;top:100px;right:0}}@media screen and (max-width:75em){div.title h1{font-size:1em}html.touch #categories{width:95%;height:30px;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}html.touch #categories #categories_container{width:1000px;width:-moz-max-content;width:-webkit-max-content;width:max-content}html.touch #categories #categories_container .checkbox_container{display:inline-block;width:auto}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin-top:2px;margin:auto}#apis{display:none}#search_url{display:none}}.favicon{float:left;margin-right:4px;margin-top:2px}.preferences_back{background:none repeat scroll 0 0 #3498db;border:0 none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;cursor:pointer;display:inline-block;margin:2px 4px;padding:4px 6px}.preferences_back a{color:#fff}.hidden{opacity:0;overflow:hidden;font-size:.8em;position:absolute;bottom:-20px;width:100%;text-position:center;background:white;transition:opacity 1s ease}#categories_container:hover .hidden{transition:opacity 1s ease;opacity:.8} \ No newline at end of file diff --git a/searx/static/themes/pix-art/img/favicon.png b/searx/static/themes/pix-art/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..28afb0111a770843148d90a669267af2323a44ff GIT binary patch literal 3064 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/pix-art/img/searx_logo.svg b/searx/static/themes/pix-art/img/searx_logo.svg new file mode 100644 index 00000000..67a2d458 --- /dev/null +++ b/searx/static/themes/pix-art/img/searx_logo.svg @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/searx/static/themes/pix-art/js/searx.js b/searx/static/themes/pix-art/js/searx.js new file mode 100644 index 00000000..9be969bb --- /dev/null +++ b/searx/static/themes/pix-art/js/searx.js @@ -0,0 +1,49 @@ +if(searx.autocompleter) { + window.addEvent('domready', function() { + new Autocompleter.Request.JSON('q', '/autocompleter', { + postVar:'q', + postData:{ + 'format': 'json' + }, + ajaxOptions:{ + timeout: 5 // Correct option? + }, + 'minLength': 4, + 'selectMode': false, + cache: true, + delay: 300 + }); + }); +} + +(function (w, d) { + 'use strict'; + function addListener(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, false); + } else { + el.attachEvent('on' + type, fn); + } + } + + function placeCursorAtEnd() { + if (this.setSelectionRange) { + var len = this.value.length * 2; + this.setSelectionRange(len, len); + } + } + + addListener(w, 'load', function () { + var qinput = d.getElementById('q'); + if (qinput !== null && qinput.value === "") { + addListener(qinput, 'focus', placeCursorAtEnd); + qinput.focus(); + } + }); + + if (!!('ontouchstart' in window)) { + document.getElementsByTagName("html")[0].className += " touch"; + } + +})(window, document); + diff --git a/searx/static/themes/pix-art/less/definitions.less b/searx/static/themes/pix-art/less/definitions.less new file mode 100644 index 00000000..0ac0cc90 --- /dev/null +++ b/searx/static/themes/pix-art/less/definitions.less @@ -0,0 +1,119 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ + +/// Basic Colors + +@color-base: #3498DB; +@color-base-dark: #2980B9; +@color-base-light: #ECF0F1; +@color-highlight: #094089; +@color-black: #000000; + +/// General + +@color-font: #444; +@color-font-light: #888; + +@color-red: #C0392B; + +@color-url-font: #1a11be; +@color-url-visited-font: #8E44AD; +@results-width: 50em; + + +/// Start-Screen + +// hmarg +@color-hmarg-border: @color-base; +@color-hmarg-font: @color-base; +@color-hmarg-font-hover: @color-base; + + +/// Search-Input + +@color-search-border: @color-base; +@color-search-background: #FFF; +@color-search-font: #222; + +/// Autocompleter + +@color-autocompleter-choices-background: #FFF; +@color-autocompleter-choices-border: @color-base; +@color-autocompleter-choices-border-left-right: @color-base; +@color-autocompleter-choices-border-bottom: @color-base; + +@color-autocompleter-choices-font: #444; + +/// Answers +@color-answers-border: @color-base-dark; + +// Selected +@color-autocompleter-selected-background: #444; +@color-autocompleter-selected-font: #FFF; +@color-autocompleter-selected-queried-font: #9FCFFF; + +/// Categories + +@color-categories-item-selected: @color-base; +@color-categories-item-selected-font: #FFF; + +@color-categories-item-border-selected: @color-base-dark; +@color-categories-item-border-unselected: #E8E7E6; +@color-categories-item-border-unselected-hover: @color-base; + + +/// Results + +@color-suggestions-button-background: @color-base; +@color-suggestions-button-font: #FFF; + +@color-download-button-background: @color-base; +@color-download-button-font: #FFF; + +@color-result-search-background: @color-base-light; + +@color-result-definition-border: gray; +@color-result-torrent-border: lightgray; +@color-result-top-border: #E8E7E6; + +// Link to result +@color-result-link-font: @color-base-dark; +@color-result-link-visited-font: @color-url-visited-font; + +// Url to result +@color-result-url-font: @color-red; + +// Publish Date +@color-result-publishdate-font: @color-font-light; + +// Images +@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6); +@color-result-image-span-font: #FFF; + +// Search-URL +@color-result-search-url-border: #888; +@color-result-search-url-font: #444; + + +/// Settings + +@color-settings-fieldset: @color-base; +@color-settings-tr-hover: #DDD; + +// Labels +@color-settings-label-allowed-background: #E74C3C; +@color-settings-label-allowed-font: #FFF; + +@color-settings-label-deny-background: #2ECC71; +@color-settings-label-deny-font: @color-font; + +@color-settings-return-background: @color-base; +@color-settings-return-font: #FFF; + +/// Other + +@color-engines-font: @color-font-light; +@color-percentage-div-background: #444; diff --git a/searx/static/themes/pix-art/less/mixins.less b/searx/static/themes/pix-art/less/mixins.less new file mode 100644 index 00000000..dbccce6e --- /dev/null +++ b/searx/static/themes/pix-art/less/mixins.less @@ -0,0 +1,27 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +// Mixins + +.text-size-adjust (@property: 100%) { + -webkit-text-size-adjust: @property; + -ms-text-size-adjust: @property; + -moz-text-size-adjust: @property; + text-size-adjust: @property; +} + +.rounded-corners (@radius: 4px) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +.user-select () { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} diff --git a/searx/static/themes/pix-art/less/search.less b/searx/static/themes/pix-art/less/search.less new file mode 100644 index 00000000..62e5a6a1 --- /dev/null +++ b/searx/static/themes/pix-art/less/search.less @@ -0,0 +1,56 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + */ + +.search { + padding: 0; + margin: 0; +} + +#search_wrapper { + position: relative; + width: @results-width; + padding: 10px; +} + +.center #search_wrapper { + margin-left: auto; + margin-right: auto; +} + +.q { + background: none repeat scroll 0 0 @color-search-background; + border: 1px solid @color-search-border; + color: @color-search-font; + font-size: 16px; + height: 28px; + margin: 0; + outline: medium none; + padding: 2px; + padding-left: 8px; + padding-right: 0px !important; + width: 100%; + z-index: 2; +} + +#search_submit { + position: absolute; + top: 13px; + right: 1px; + padding: 0; + border: 0; + background: url('../img/search-icon-pixel.png') no-repeat; + background-size: 24px 24px; + opacity: 0.8; + width: 24px; + height: 30px; + font-size: 0; +} + +@media screen and (max-width: @results-width) { + #search_wrapper { + width: 90%; + clear:both; + overflow: hidden + } +} diff --git a/searx/static/themes/pix-art/less/style.less b/searx/static/themes/pix-art/less/style.less new file mode 100644 index 00000000..db487184 --- /dev/null +++ b/searx/static/themes/pix-art/less/style.less @@ -0,0 +1,438 @@ +/* + * searx, A privacy-respecting, hackable metasearch engine + * + * To convert "style.less" to "style.css" run: $make styles + */ + +@import "definitions.less"; + +@import "mixins.less"; + + +// Main LESS-Code + +html { + font-family: sans-serif; + font-size: 0.9em; + .text-size-adjust; + color: @color-font; + padding: 0; + margin: 0; +} + +body, #container { + padding: 0; + margin: 0; +} + +canvas { + image-rendering: optimizeSpeed; + image-rendering: -moz-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: optimize-contrast; + image-rendering: pixelated; + -ms-interpolation-mode: nearest-neighbor; + width:32px; + height:32px; +} + +#container { + width: 100%; + position: absolute; + top: 0; +} + +// Search-Field + +@import "search.less"; + +// Autocompleter + + +.row { + max-width: 800px; + margin: 20px auto; + text-align: justify; + + h1 { + font-size: 3em; + margin-top: 50px; + } + + p { + padding: 0 10px; + max-width: 700px; + } + + h3,ul { + margin: 4px 8px; + } +} + +.hmarg { + margin: 0 20px; + border: 1px solid @color-hmarg-border; + padding: 4px 10px; +} + +a { + &:link.hmarg { + color: @color-hmarg-font; + } + + &:visited.hmarg { + color: @color-hmarg-font; + } + + &:active.hmarg { + color: @color-hmarg-font-hover; + } + + &:hover.hmarg { + color: @color-hmarg-font-hover; + } +} + +.top_margin { + margin-top: 60px; +} + +.center { + text-align: center; +} + +h1 { + font-size: 5em; +} + +div.title { + background: url('../img/searx-pixel.png') no-repeat; + width: 100%; + min-height: 80px; + background-position: center; + + h1 { + visibility: hidden; + } +} + +input[type="submit"] { + padding: 2px 6px; + margin: 2px 4px; + display: inline-block; + background: @color-download-button-background; + color: @color-download-button-font; + .rounded-corners; + border: 0; + cursor: pointer; +} + +input[type="checkbox"] { + visibility: hidden; +} + +fieldset { + margin: 8px; + border: 1px solid @color-settings-fieldset; +} + +#categories { + margin: 0 10px; + .user-select; +} + +.checkbox_container { + display: inline-block; + position: relative; + margin: 0 3px; + padding: 0px; + + input { + display: none; + } +} + +.checkbox_container label, .engine_checkbox label { + cursor: pointer; + padding: 4px 10px; + margin: 0; + display: block; + text-transform: capitalize; + .user-select; +} + +.checkbox_container input[type="checkbox"]:checked + label { + background: @color-categories-item-selected; + color: @color-categories-item-selected-font; +} + +.engine_checkbox { + padding: 4px; +} + +label { + &.allow { + background: @color-settings-label-allowed-background; + padding: 4px 8px; + color: @color-settings-label-allowed-font; + display: none; + } + + &.deny { + background: @color-settings-label-deny-background; + padding: 4px 8px; + color: @color-settings-label-deny-font; + display: inline; + } +} + +.engine_checkbox input[type="checkbox"]:checked + label { + &:nth-child(2) + label { + display: none; + } + + &.allow { + display: inline; + } +} + +a { + text-decoration: none; + color: @color-url-font; + + &:visited { + color: @color-url-visited-font; + } +} + +.engines { + color: @color-engines-font; +} + +.small_font { + font-size: 0.8em; +} + +.small p { + margin: 2px 0; +} + +.right { + float: right; +} + +.invisible { + display: none; +} + +.left { + float: left; +} + +.highlight { + color: @color-highlight; +} + +.content .highlight { + color: @color-black; +} + +.percentage { + position: relative; + width: 300px; + + div { + background: @color-percentage-div-background; + } +} + +table { + width: 100%; +} + +td { + padding: 0 4px; +} + +tr { + &:hover { + background: @color-settings-tr-hover; + } +} + +#results { + margin: auto; + padding: 0; + width: @results-width; + margin-bottom: 20px; +} + +#search_url { + margin-top: 8px; + + input { + border: 1px solid @color-result-search-url-border; + padding: 4px; + color: @color-result-search-url-font; + width: 14em; + display: block; + margin: 4px; + font-size: 0.8em; + } +} + +#preferences { + top: 10px; + padding: 0; + border: 0; + background: url('../img/preference-icon-pixel.png') no-repeat; + background-size: 28px 28px; + opacity: 0.8; + width: 28px; + height: 30px; + display: block; + + * { + display: none; + } +} + +#pagination { + clear: both; + + br { + clear: both; + } +} + +#apis { + margin-top: 8px; + clear: both; +} + +#categories_container { + position: relative; +} + +@media screen and (max-width: @results-width) { + + #results { + margin: auto; + padding: 0; + width: 90%; + } + + .checkbox_container { + display: block; + width: 90%; + //float: left; + + label { + border-bottom: 0; + } + } + + .preferences_container { + display: none; + postion: fixed !important; + top: 100px; + right: 0px; + } + +} + +@media screen and (max-width: 75em) { + + div.title { + + h1 { + font-size: 1em; + } + } + + html.touch #categories { + width: 95%; + height: 30px; + text-align: left; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + + #categories_container { + width: 1000px; + width: -moz-max-content; + width: -webkit-max-content; + width: max-content; + + .checkbox_container { + display: inline-block; + width: auto; + } + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin-top: 2px; + margin: auto; + } + } + + #apis { + display: none; + } + + #search_url { + display: none; + } +} + +.favicon { + float: left; + margin-right: 4px; + margin-top: 2px; +} + +.preferences_back { + background: none repeat scroll 0 0 @color-settings-return-background; + border: 0 none; + .rounded-corners; + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 4px 6px; + + a { + color: @color-settings-return-font; + } +} + +.hidden { + opacity: 0; + overflow: hidden; + font-size: 0.8em; + position: absolute; + bottom: -20px; + width: 100%; + text-position: center; + background: white; + transition: opacity 1s ease; +} + +#categories_container:hover .hidden { + transition: opacity 1s ease; + opacity: 0.8; +} diff --git a/searx/templates/pix-art/about.html b/searx/templates/pix-art/about.html new file mode 100644 index 00000000..cb4b351f --- /dev/null +++ b/searx/templates/pix-art/about.html @@ -0,0 +1,65 @@ +{% extends 'pix-art/base.html' %} +{% block content %} +
+

About searx

+ +

Searx is a metasearch engine, aggregating the results of other search engines while not storing information about its users. +

+

Why use Searx?

+
    +
  • Searx may not offer you as personalised results as Google, but it doesn't generate a profile about you
  • +
  • Searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you
  • +
  • Searx is free software, the code is 100% open and you can help to make it better. See more on github
  • +
+

If you do care about privacy, want to be a conscious user, or otherwise believe + in digital freedom, make Searx your default search engine or run it on your own server

+ +

Technical details - How does it work?

+ +

Searx is a metasearch engine, +inspired by the seeks project.
+It provides basic privacy by mixing your queries with searches on other platforms without storing search data. Queries are made using a POST request on every browser (except chrome*). Therefore they show up in neither our logs, nor your url history. In case of Chrome* users there is an exception, if Searx used from the search bar it performs GET requests.
+Searx can be added to your browser's search bar; moreover, it can be set as the default search engine. +

+ +

How can I make it my own?

+ +

Searx appreciates your concern regarding logs, so take the code and run it yourself!
Add your Searx to this list to help other people reclaim their privacy and make the Internet freer! +
The more decentralized Internet is the more freedom we have!

+ + +

More about searx

+ + + + +
+ +

FAQ

+ +

How to add to firefox?

+

Install searx as a search engine on any version of Firefox! (javascript required)

+ +

Developer FAQ

+ +

New engines?

+ +

Don't forget to restart searx after config edit!

+ +

Installation/WSGI support?

+

See the installation and setup wiki page

+ +

How to debug engines?

+

Stats page contains some useful data about the engines used.

+ +
+{% endblock %} diff --git a/searx/templates/pix-art/base.html b/searx/templates/pix-art/base.html new file mode 100644 index 00000000..2a3870e5 --- /dev/null +++ b/searx/templates/pix-art/base.html @@ -0,0 +1,28 @@ + + + + + + + + + {% block title %}{% endblock %}searx + + + {% block styles %} + {% endblock %} + {% block meta %}{% endblock %} + {% block head %} + {% endblock %} + + +
+ {% block content %} + {% endblock %} + + +
+ + diff --git a/searx/templates/pix-art/index.html b/searx/templates/pix-art/index.html new file mode 100644 index 00000000..d398cc82 --- /dev/null +++ b/searx/templates/pix-art/index.html @@ -0,0 +1,12 @@ +{% extends "pix-art/base.html" %} +{% block content %} +
+

Searx Logo

+ {% include 'pix-art/search.html' %} +

+ {{ _('about') }} + {{ _('preferences') }} +

+
+{% endblock %} + diff --git a/searx/templates/pix-art/preferences.html b/searx/templates/pix-art/preferences.html new file mode 100644 index 00000000..0caf31b4 --- /dev/null +++ b/searx/templates/pix-art/preferences.html @@ -0,0 +1,82 @@ +{% extends "default/base.html" %} +{% block head %} {% endblock %} +{% block content %} +
+

{{ _('Preferences') }}

+ +
+
+ {{ _('Search language') }} +

+ +

+
+
+ {{ _('Interface language') }} +

+ +

+
+
+ {{ _('Method') }} +

+ +

+
+
+ {{ _('Themes') }} +

+ +

+
+
+ {{ _('Currently used search engines') }} + + + + + + + {% for (categ,search_engines) in categs %} + {% for search_engine in search_engines %} + + {% if not search_engine.private %} + + + + + {% endif %} + {% endfor %} + {% endfor %} +
{{ _('Engine name') }}{{ _('Allow') }} / {{ _('Block') }}
{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})‎ + + + +
+
+

{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }} +
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }} +

+ + + +
+
+{% endblock %} diff --git a/searx/templates/pix-art/result_templates/default.html b/searx/templates/pix-art/result_templates/default.html new file mode 100644 index 00000000..b9cbca34 --- /dev/null +++ b/searx/templates/pix-art/result_templates/default.html @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/searx/templates/pix-art/result_templates/images.html b/searx/templates/pix-art/result_templates/images.html new file mode 100644 index 00000000..e06dcc19 --- /dev/null +++ b/searx/templates/pix-art/result_templates/images.html @@ -0,0 +1,6 @@ + diff --git a/searx/templates/pix-art/results.html b/searx/templates/pix-art/results.html new file mode 100644 index 00000000..b01b7cb0 --- /dev/null +++ b/searx/templates/pix-art/results.html @@ -0,0 +1,44 @@ +{% extends "pix-art/base.html" %} +{% block title %}{{ q }} - {% endblock %} +{% block meta %}{% endblock %} +{% block content %} + + +
+ {% for result in results %} + {% set index = loop.index %} + {% include 'pix-art/result_templates/default.html' %} + {% endfor %} + + {% if paging %} + + {% endif %} +
+{% endblock %} diff --git a/searx/templates/pix-art/search.html b/searx/templates/pix-art/search.html new file mode 100644 index 00000000..678ab11e --- /dev/null +++ b/searx/templates/pix-art/search.html @@ -0,0 +1,9 @@ +
+
+ + + {% for category in categories %} + + {% endfor %} +
+
diff --git a/searx/templates/pix-art/stats.html b/searx/templates/pix-art/stats.html new file mode 100644 index 00000000..70fe98ac --- /dev/null +++ b/searx/templates/pix-art/stats.html @@ -0,0 +1,22 @@ +{% extends "default/base.html" %} +{% block head %} {% endblock %} +{% block content %} +

{{ _('Engine stats') }}

+ +{% for stat_name,stat_category in stats %} +
+ + + + + {% for engine in stat_category %} + + + + + + {% endfor %} +
{{ stat_name }}
{{ engine.name }}{{ '%.02f'|format(engine.avg) }}
 
+
+{% endfor %} +{% endblock %} diff --git a/searx/webapp.py b/searx/webapp.py index b12a08db..d2aa9191 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -29,6 +29,7 @@ import hashlib from datetime import datetime, timedelta from urllib import urlencode +from urlparse import urlparse from werkzeug.contrib.fixers import ProxyFix from flask import ( Flask, request, render_template, url_for, Response, make_response, @@ -178,6 +179,12 @@ def code_highlighter(codelines, language=None): return html_code +# Extract domain from url +@app.template_filter('extract_domain') +def extract_domain(url): + return urlparse(url)[1] + + def get_base_url(): if settings['server']['base_url']: hostname = settings['server']['base_url']