├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── README.md
├── bin
├── build-linux-ia32.sh
├── build-linux-x64.sh
├── build-macos.sh
├── build-win.sh
└── install.sh
├── build
└── icons
│ ├── 128.png
│ ├── 16.png
│ ├── 24.png
│ ├── 32.png
│ ├── 48.png
│ └── 64.png
├── css
├── index.css
├── jquery-ui.min.css
└── jquery-ui.theme.min.css
├── images
├── adwaita.png
├── adwaita
│ ├── window-close-symbolic.svg
│ ├── window-maximize-symbolic.svg
│ └── window-minimize-symbolic.svg
├── ambiance.png
├── ambiance
│ ├── close.png
│ ├── close_focused_prelight.png
│ ├── maximize.png
│ ├── maximize_focused_prelight.png
│ ├── minimize.png
│ └── minimize_focused_prelight.png
├── arc-dark.png
├── arc-dark
│ ├── titlebutton-close-dark@2.png
│ ├── titlebutton-close-hover@2.png
│ ├── titlebutton-maximize-dark@2.png
│ ├── titlebutton-maximize-hover-dark@2.png
│ ├── titlebutton-minimize-dark@2.png
│ └── titlebutton-minimize-hover-dark@2.png
├── arc.png
├── arc
│ ├── titlebutton-close-hover@2.png
│ ├── titlebutton-close@2.png
│ ├── titlebutton-maximize-hover@2.png
│ ├── titlebutton-maximize@2.png
│ ├── titlebutton-minimize-hover@2.png
│ └── titlebutton-minimize@2.png
├── elementary
│ ├── close-symbolic.svg
│ ├── window-close-symbolic.svg
│ ├── window-maximize-symbolic-rtl.svg
│ ├── window-maximize-symbolic.svg
│ └── window-minimize-symbolic.svg
├── icon.png
├── settings-button.png
├── settings-panel.png
├── wunderlist.png
└── wunderlistux.png
├── index.html
├── js
├── browser.js
├── controls.js
├── indicator.js
├── jquery-3.1.0.min.js
├── jquery-ui.min.js
├── jquery.js
├── onload.js
├── utils.js
└── webview-load.js
├── main.js
├── package.json
├── themes
├── adwaita
│ ├── webview.css
│ └── window.css
├── ambiance
│ ├── webview.css
│ └── window.css
├── arc-dark
│ ├── webview.css
│ └── window.css
├── arc
│ ├── webview.css
│ └── window.css
├── elementary
│ ├── webview.css
│ └── window.css
└── vertex
│ ├── webview.css
│ └── window.css
├── wunderlistux.desktop
└── yarn.lock
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Wunderlistux
2 | An electron wrapper for wunderlist made with :heart: for Linux (specially for [elementary OS](http://elementary.io))
3 |
4 | #### Notice: We have some work done on [refactoring Wunderlistux](https://github.com/edipox/wunderlistux/tree/vala_webkit) on [Vala](https://valadoc.org/) and we have plans to add offline support. PRs are welcome! For more info check [this thread](https://github.com/edipox/wunderlistux/issues/18).
5 |
6 |
7 | ## Screenshots
8 | Screenshots taken in the most awesome indie OS ever: [elementary OS (Loki)](http://elementary.io)
9 |
10 | ### Elementary
11 |
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,n=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="
",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,l,h,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),l=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-o.width()/2,top:e.pageY-l.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),c["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](c,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})});
--------------------------------------------------------------------------------
/js/onload.js:
--------------------------------------------------------------------------------
1 | const onWebviewReady = function() {
2 | const onLoaded = function(){
3 | var theme = localStorage.getItem("theme") || "elementary";
4 | jq("option[value='"+theme+"']").attr('selected', 'selected');
5 | setCustomTheme(theme);
6 | checkEnableShareButton();
7 | }
8 | jq.wait = function(ms) {
9 | var defer = jq.Deferred();
10 | setTimeout(function() { defer.resolve(); }, ms);
11 | return defer;
12 | };
13 | jq.wait(100).then(onLoaded);
14 | jq.wait(1000).then(onLoaded);
15 | jq.wait(6000).then(onLoaded);
16 | jq.wait(15000).then(onLoaded);
17 | };
18 |
19 | const onDomReady = function(){
20 | const defaultConf = JSON.stringify({close: 0, min: 10, max: 20});
21 | var buttonConf = localStorage.getItem("window_buttons");
22 | if(!buttonConf){
23 | buttonConf = defaultConf;
24 | localStorage.setItem("window_buttons", defaultConf);
25 | }
26 | buttonConf = JSON.parse(buttonConf);
27 | for(var button in buttonConf){
28 | updateWindowButtons(button, buttonConf[button]);
29 | $(".slider-container[data-button='"+button+"'] .slider").slider("value", buttonConf[button]);
30 | }
31 | }
32 |
33 | getWebview().addEventListener('did-finish-load', onWebviewReady);
34 | getWebview().addEventListener("dom-ready", onWebviewReady);
35 | getWebview().addEventListener("dom-ready", onDomReady);
36 | getWebview().addEventListener("did-navigate-in-page", checkEnableShareButton);
37 | getWebview().addEventListener("new-window", handleExternalLinkClick);
38 |
--------------------------------------------------------------------------------
/js/utils.js:
--------------------------------------------------------------------------------
1 | const {shell, remote} = require('electron');
2 | window.jq = require('./js/jquery-3.1.0.min.js');
3 |
4 | window.setCustomTheme = function(theme){
5 | var THEME_CONTAINER_ID = "window_theme_container";
6 | fs = require('fs');
7 |
8 | var createOrUpdate = function(id, content, type, appender) {
9 | jq('#' + id).remove();
10 | jq('<' + type + ' id="' + id + '">' + content + '' + type + '>').appendTo(appender);
11 | }
12 | fs.readFile(process.resourcesPath+"/app/themes/"+theme+"/window.css", 'utf8', function (err, content) {
13 | if(err){
14 | fs.readFile("./themes/"+theme+"/window.css", 'utf8', function (err, content) {
15 | if(err){
16 | fs.readFile(process.resourcesPath+"/app.asar/themes/"+theme+"/window.css", 'utf8', function (err, content) {
17 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
18 | });
19 | }else{
20 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
21 | }
22 | });
23 | }else{
24 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
25 | }
26 | });
27 | localStorage.setItem("theme", theme);
28 | getWebview().send('change-theme', theme);
29 | }
30 |
31 | var getWebview = function(){
32 | return document.getElementById('webview');
33 | }
34 |
35 | var checkEnableShareButton = function(e){
36 | var url = (e || {}).url;
37 | var notSharableLists = [
38 | "#/lists/all",
39 | "#/lists/week",
40 | "#/lists/starred",
41 | "#/lists/inbox"
42 | ];
43 | var path = url || jq("webview").attr("src");
44 | path = path.substring(path.indexOf("#"), path.length);
45 | var isSharableList = true;
46 | for(var i = 0; i < notSharableLists.length; i++){
47 | var listPath = notSharableLists[i];
48 | if(listPath == path) isSharableList = false;
49 | }
50 | if(isSharableList){
51 | jq("#share").removeClass("disabled");
52 | }else{
53 | jq("#share").addClass("disabled");
54 | }
55 | }
56 |
57 |
58 | const storeButtonConfig = function(position, value){
59 | var conf = JSON.parse(localStorage.getItem("window_buttons"));
60 | conf[position] = value;
61 | localStorage.setItem("window_buttons", JSON.stringify(conf));
62 | }
63 |
64 | const updateWindowButtons = function(button, val){
65 | const slider = {
66 | LEFT: 0,
67 | HIDDEN: 10,
68 | RIGHT: 20
69 | };
70 | if(val == slider.LEFT){
71 | $(".window.left ."+button+"-btn").removeClass("hidden");
72 | $(".window.right ."+button+"-btn").addClass("hidden");
73 | storeButtonConfig(button, val);
74 | }else if(val == slider.RIGHT){
75 | $(".window.right ."+button+"-btn").removeClass("hidden");
76 | $(".window.left ."+button+"-btn").addClass("hidden");
77 | storeButtonConfig(button, val);
78 | }else if(val == slider.HIDDEN){
79 | $(".window ."+button+"-btn").addClass("hidden");
80 | storeButtonConfig(button, val);
81 | }
82 | }
83 |
84 | var handleExternalLinkClick = function(e){
85 | const protocol = require('url').parse(e.url).protocol;
86 | if(protocol === 'http:' || protocol === 'https:'){
87 | shell.openExternal(e.url);
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/js/webview-load.js:
--------------------------------------------------------------------------------
1 | const {ipcRenderer} = require('electron')
2 |
3 | var loadJQuery = function(){
4 | var file = "/jquery-3.1.0.min.js"
5 | if(window.$ === undefined)
6 | try {
7 | window.$ = window.jQuery = require(process.resourcesPath+
8 | file);
9 | } catch(err) {
10 | window.$ = window.jQuery = require("." + file);
11 | }
12 | }
13 |
14 | window.setCustomTheme = function(_, theme){
15 | loadJQuery()
16 | $('#headerbar').remove();
17 | $("body").prepend("");
18 | var THEME_CONTAINER_ID = "webview_theme_container";
19 | fs = require('fs');
20 | var createOrUpdate = function(id, content, type, appender){
21 | $('#'+id).remove();
22 | $('<'+type+' id="'+id+'">'+content+''+type+'>').appendTo(appender);
23 | }
24 | fs.readFile(process.resourcesPath+"/app/themes/"+theme+"/webview.css", 'utf8', function (err, content) {
25 | if(err){
26 | fs.readFile("./themes/"+theme+"/webview.css", 'utf8', function (errSecond, content) {
27 | if(errSecond){
28 | fs.readFile(process.resourcesPath+"/app.asar/themes/"+theme+"/webview.css", 'utf8', function (errThird, content) {
29 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
30 | });
31 | }else{
32 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
33 | }
34 | });
35 | }else{
36 | createOrUpdate(THEME_CONTAINER_ID, content, "style", "body")
37 | }
38 | });
39 | localStorage.setItem("custom_electron_theme", theme);
40 | }
41 |
42 | window.onload = function() {
43 | loadJQuery()
44 | var onReady = function() {
45 | setCustomTheme(null, localStorage.getItem("custom_electron_theme") || "elementary");
46 | };
47 | }
48 |
49 |
50 | ipcRenderer.on('change-theme', setCustomTheme);
51 | ipcRenderer.on("click-bell", function(){ $("a[data-path='activities']")[0].click() })
52 | ipcRenderer.on("click-conversations", function(){ $("a[data-path='conversations']")[0].click() })
53 | ipcRenderer.on("click-sort", function(){ $("[data-menu='sort']")[0].click() })
54 | ipcRenderer.on("click-more", function(){ $("[data-menu='more']")[0].click() })
55 | ipcRenderer.on("click-share", function(){ $("[data-menu='share']")[0].click() })
56 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 |
2 | const {app, BrowserWindow, dialog} = require('electron');
3 | const windowStateKeeper = require('electron-window-state');
4 |
5 | let win;
6 |
7 | app.on('window-all-closed', function() {
8 | app.quit();
9 | });
10 |
11 | let quitApp = function(){ app.quit() }
12 |
13 | app.on('ready', function() {
14 | var size = { width: 400, height: 500 };
15 |
16 | let winState = windowStateKeeper({
17 | defaultWidth: size.width,
18 | defaultHeight: size.height
19 | });
20 |
21 | win = new BrowserWindow({
22 | // Min size
23 | minWidth: size.width,
24 | minHeight: size.height,
25 | // Window style
26 | transparent: true,
27 | frame: false,
28 | radii: [10,10,10,10],
29 | // Window state
30 | x: winState.x,
31 | y: winState.y,
32 | icon: __dirname + '/images/icon.png',
33 | width: winState.width,
34 | height: winState.height
35 | });
36 |
37 | win.loadURL('file://' + __dirname + '/index.html');
38 | // win.openDevTools();
39 | winState.manage(win);
40 | });
41 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Wunderlistux",
3 | "version": "1.6.2",
4 | "description": "An electron wrapper for wunderlist made with :heart: for Linux",
5 | "icon": "images/icon.png",
6 | "build": {
7 | "appId": "com.electron.wunderlistux",
8 | "icon": "images/icon.png",
9 | "linux": {
10 | "category": "utility",
11 | "target": [
12 | "AppImage"
13 | ]
14 | }
15 | },
16 | "main": "main.js",
17 | "scripts": {
18 | "start": "electron .",
19 | "pack": "build --dir",
20 | "dist": "build"
21 | },
22 | "contributors": [
23 | {
24 | "name": "Wunderlistux team (?)",
25 | "url": "https://github.com/edipox/wunderlistux/graphs/contributors"
26 | }
27 | ],
28 | "author": {
29 | "name": "Edipo da Silva",
30 | "url": "https://github.com/edipox",
31 | "email": "edipo@openmailbox.org"
32 | },
33 | "dependencies": {
34 | "electron-window-state": "5.0.3"
35 | },
36 | "devDependencies": {
37 | "electron": "^7.2.4",
38 | "electron-builder": "^20.38.2",
39 | "electron-packager": "^13.0.0"
40 | },
41 | "keywords": [
42 | "wunderlist"
43 | ],
44 | "bugs": "https://github.com/edipox/wunderlistux/issues",
45 | "license": "MIT",
46 | "repository": "https://github.com/edipox/wunderlistux",
47 | "homepage": "https://github.com/edipox/wunderlistux",
48 | "engines": {}
49 | }
50 |
--------------------------------------------------------------------------------
/themes/adwaita/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/adwaita/window.css:
--------------------------------------------------------------------------------
1 | html, body , #controls-container{
2 | background: #dcdfe3;
3 | }
4 |
5 | #controls {
6 | z-index: 99;
7 | position: absolute;
8 | -webkit-app-region: drag;
9 | -webkit-user-select: none;
10 | padding: 0 3px 3px;
11 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
12 | top: 1px;
13 | border-radius: 3px;
14 | background: linear-gradient(#f8f8f8, #dcdfe3);
15 | border-width: 0 0 1px 0;
16 | border: 1px solid #efefef;
17 | border-bottom: 1px #d2d2d2 ridge;
18 | height: 41px!important;
19 | position: relative;
20 | width: 100%;
21 | box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);
22 | }
23 |
24 | #controls button, #controls * .button {
25 | border-radius: 99px;
26 | padding: 7px;
27 | border: none;
28 | margin: 3px;
29 | margin-top: 0;
30 | }
31 |
32 | webview {
33 | height: 100%;
34 | width: 100%;
35 | -webkit-app-region: no-drag;
36 | z-index: 80;
37 | position: absolute;
38 | top: 48px!important;
39 | }
40 |
41 | .stars, .min-btn, .max-btn {
42 | display: none;
43 | }
44 |
45 | #share, #sort, #more, .close-btn{
46 | float: right;
47 | }
48 |
49 | #conv, #bell{
50 | float: left;
51 | }
52 |
53 | #controls #bell{
54 | margin: 0!important;
55 | height: 22px!important;
56 | width: 23px!important;
57 | padding-top: 12px;
58 | }
59 |
60 | #controls .button.last{
61 | margin-right: 8px!important;
62 | }
63 |
64 | #controls #buttons{
65 | border: 1px solid rgba(128, 128, 128, 0.82);
66 | position: absolute;
67 | right: 70px;
68 | margin: 6px;
69 | border-radius: 3px;
70 | }
71 | #controls #buttons .button:last-child{
72 | border-left: none;
73 | }
74 |
75 |
76 | #controls #buttons .button{
77 | padding: 6px;
78 | margin: 0;
79 | padding-right: 9px;
80 | padding-left: 9px;
81 | border-radius: 0;
82 | /*box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);*/
83 | background: linear-gradient(#f8f8f8, #dcdfe3);
84 | box-shadow: none;
85 | border-top: 1px solid #efefef;
86 | border-top-right-radius: 3px;
87 | border-top-left-radius: 3px;
88 | border-radius: 3px;
89 | padding-bottom: 8px;
90 | padding-top: 4px;
91 | }
92 |
93 | #controls #buttons .button:hover{
94 | background: linear-gradient(#fff, #e2e5e9);
95 | }
96 |
97 | #controls #buttons .button#share{
98 | border-radius: 0px;
99 | border-right: 1px solid rgba(128, 128, 128, 0.82);
100 | border-left: 1px solid rgba(128, 128, 128, 0.82);
101 | }
102 |
103 | #controls .max-btn{
104 | background-image: url(images/adwaita/window-maximize-symbolic.svg);
105 | }
106 | #controls .min-btn{
107 | background-image: url(images/adwaita/window-minimize-symbolic.svg);
108 | }
109 |
110 | #controls .close-btn {
111 | background-image: url(images/adwaita/window-close-symbolic.svg);
112 | }
113 |
114 | #controls .close-btn, #controls .max-btn, #controls .min-btn{
115 | background-repeat: no-repeat;
116 | background-size: 17px;
117 | background-position: 7px;
118 | }
119 |
120 |
121 | #controls #conv{
122 | padding-top: 12px;
123 | }
124 | #controls #bell{
125 | padding-top: 11px;
126 | }
127 |
128 | html, body , #controls-container{
129 | background: rgb(177, 177, 177);
130 | }
131 |
132 | svg *{
133 | fill: #585858!important;
134 | color: #585858!important;
135 | }
136 |
137 | #settings-btn{
138 | right: 54px;
139 | top: 15px;
140 | }
141 |
142 | #settings-btn:hover{
143 | background: #585858;
144 | }
145 |
146 | .window.right{
147 | box-shadow: -10px 0px 1px -10px rgba(0,0,0,1);
148 | }
149 |
150 | .window.left{
151 | box-shadow: 10px 0px 1px -10px rgba(0,0,0,1);
152 | }
153 |
154 |
155 | #settings-panel {
156 | background: linear-gradient(#f8f8f8, #dcdfe3);
157 | border: 1px solid #efefef;
158 | }
159 |
--------------------------------------------------------------------------------
/themes/ambiance/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/ambiance/window.css:
--------------------------------------------------------------------------------
1 | html, body , #controls-container{
2 | background: #5c5950!important;
3 | }
4 |
5 | #controls {
6 | z-index: 99;
7 | position: absolute;
8 | -webkit-app-region: drag;
9 | -webkit-user-select: none;
10 | padding: 0 3px 3px;
11 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
12 | top: 1px;
13 | border-radius: 3px;
14 | background: linear-gradient(#55534b, #42413c);
15 | border-width: 0 0 1px 0;
16 | border: 1px solid #636159;
17 | border-bottom: 1px #353431 ridge;
18 | height: 36px!important;
19 | position: relative;
20 | width: 100%;
21 | box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);
22 | }
23 | #settings-panel{
24 | background: linear-gradient(#55534b, #42413c);
25 | border: 1px solid #636159;
26 | }
27 | #settings-panel label{
28 | color: #ddd;
29 | }
30 |
31 | #controls button, #controls * .button {
32 | border-radius: 99px;
33 | padding: 7px;
34 | border: none;
35 | margin: 3px;
36 | margin-top: 0;
37 | }
38 |
39 | webview {
40 | height: 100%;
41 | width: 100%;
42 | -webkit-app-region: no-drag;
43 | z-index: 80;
44 | position: absolute;
45 | top: 43px!important;
46 | }
47 |
48 | .stars {
49 | display: none;
50 | }
51 |
52 | #share, #sort, #more, .max-btn{
53 | float: right;
54 | }
55 |
56 | #conv, #bell{
57 | float: left;
58 | }
59 |
60 | #controls #bell{
61 | margin: 0!important;
62 | height: 22px!important;
63 | width: 23px!important;
64 | padding-top: 12px;
65 | padding-right: 5px;
66 | }
67 |
68 | #controls .button.last{
69 | margin-right: 8px!important;
70 | }
71 |
72 | #controls #buttons{
73 | border-top: /1px solid #636159;
74 | border: 1px solid #363632;
75 | position: absolute;
76 | right: 28px;
77 | margin: 6px;
78 | border-radius: 3px;
79 | margin-top: 4px;
80 | }
81 | #controls #buttons .button:last-child{
82 | border-left: none;
83 | }
84 |
85 |
86 | #controls #buttons .button{
87 | padding: 6px;
88 | margin: 0;
89 | padding-right: 9px;
90 | padding-left: 9px;
91 | border-radius: 0;
92 | background: linear-gradient(#55534b, #42413c);
93 | /*box-shadow: none;*/
94 | box-shadow: inset 0px 0px 1px 1px rgba(99,97,89,1);
95 | border-top-right-radius: 3px;
96 | border-top-left-radius: 3px;
97 | border-radius: 3px;
98 | padding-bottom: 8px;
99 | padding-top: 4px;
100 | }
101 |
102 | #controls #buttons .button:hover{
103 | background: linear-gradient(#42413c, #33322e);
104 | }
105 |
106 | #controls #buttons .button#share{
107 | border-radius: 0px;
108 | border-right: 1px solid #363632;
109 | border-left: 1px solid #363632;
110 | }
111 |
112 | #controls .max-btn{
113 | background-image: url(images/ambiance/maximize.png);
114 | }
115 | #controls .max-btn:hover{
116 | background-image: url(images/ambiance/maximize_focused_prelight.png);
117 | }
118 | #controls .close-btn {
119 | background-image: url(images/ambiance/close.png);
120 | }
121 |
122 | #controls .close-btn:hover {
123 | background-image: url(images/ambiance/close_focused_prelight.png);
124 | }
125 | #controls .min-btn{
126 | background-image: url(images/ambiance/minimize.png);
127 | }
128 | #controls .min-btn:hover {
129 | background-image: url(images/ambiance/minimize_focused_prelight.png);
130 | }
131 | #controls .close-btn, #controls .max-btn, #controls .min-btn{
132 | background-repeat: no-repeat;
133 | background-size: 19px;
134 | padding: 0!important;
135 | height: 20px;
136 | width: 20px;
137 | background-position: 0;
138 | margin-top: 4px!important;
139 | }
140 | #controls .window .button, #controls .window .button.close-btn, #controls .window .button.max-btn, #controls .window .button.min-btn{
141 | margin-left:1px!important;
142 | margin-right: 1px!important;
143 | }
144 |
145 | #controls #conv{
146 | padding-top: 8px;
147 | }
148 | #controls #bell{
149 | padding-top: 7px;
150 | }
151 | #controls-container{
152 | height: 42px;
153 | }
154 |
155 | svg *{
156 | fill: #b5b1a8!important;
157 | color: #b5b1a8!important;
158 | }
159 |
160 | .disabled svg *{
161 | fill: #7a7874!important;
162 | color: #7a7874!important;
163 | }
164 |
165 | #settings-btn{
166 | right: 8px;
167 | top: 12px;
168 | }
169 |
170 | #settings-btn:hover{
171 | background: #fff;
172 | }
173 |
--------------------------------------------------------------------------------
/themes/arc-dark/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/arc-dark/window.css:
--------------------------------------------------------------------------------
1 | html, body , #controls-container{
2 | background: #22242d;
3 | }
4 |
5 | #controls-container, #controls{
6 | border-color: #22242d !important;
7 | border-radius: 3px;
8 | }
9 |
10 | #controls #buttons .button, #controls{
11 | background: #2F343F;
12 | }
13 |
14 | #controls {
15 | z-index: 99;
16 | position: absolute;
17 | -webkit-app-region: drag;
18 | -webkit-user-select: none;
19 | padding: 0 3px 3px;
20 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
21 | top: 1px;
22 |
23 | height: 41px;
24 | position: relative;
25 | width: 100%;
26 | border:none;
27 | }
28 | #settings-panel{
29 | background: #2F343F;
30 | border: 1px solid #22242d;
31 | }
32 | #settings-panel label{
33 | color: #ddd;
34 | }
35 | #controls button, #controls * .button {
36 | border-radius: 99px;
37 | padding: 7px;
38 | border: none;
39 | margin: 3px;
40 | margin-top: 0;
41 | }
42 |
43 | webview {
44 | height: 100%;
45 | width: 100%;
46 | -webkit-app-region: no-drag;
47 | z-index: 80;
48 | position: absolute;
49 | top: 46px;
50 | }
51 |
52 | .stars, .min-btn {
53 | display: none;
54 | }
55 |
56 | #share, #sort, #more, .max-btn{
57 | float: right;
58 | }
59 |
60 | #conv, #bell{
61 | float: left;
62 | }
63 |
64 | #controls #bell{
65 | margin: 0!important;
66 | height: 22px!important;
67 | width: 23px!important;
68 | padding-top: 12px;
69 | }
70 |
71 | #controls .button.last{
72 | margin-right: 8px!important;
73 | }
74 |
75 | #controls #buttons{
76 | position: absolute;
77 | right: 60px;
78 | margin: 6px;
79 | }
80 | #controls #buttons .button:last-child{
81 | border-left: none;
82 | }
83 |
84 |
85 | #controls #buttons .button{
86 | padding: 6px;
87 | margin: 0;
88 | padding-right: 9px;
89 | padding-left: 9px;
90 | border-radius: 0;
91 | box-shadow: none;
92 | border-radius: 3px;
93 | padding-bottom: 8px;
94 | padding-top: 4px;
95 | border: 1px solid #2F343F;
96 | }
97 |
98 |
99 | #controls .max-btn{
100 | background-image: url(images/arc-dark/titlebutton-maximize-dark@2.png);
101 | }
102 | #controls .max-btn:hover{
103 | background-image: url(images/arc-dark/titlebutton-maximize-hover-dark@2.png);
104 | }
105 |
106 | #controls .min-btn{
107 | background-image: url(images/arc-dark/titlebutton-minimize-dark@2.png);
108 | }
109 | #controls .min-btn:hover{
110 | background-image: url(images/arc-dark/titlebutton-minimize-hover-dark@2.png);
111 | }
112 |
113 | #controls .window .button, #controls .window .button.close-btn, #controls .window .button.max-btn, #controls .window .button.min-btn{
114 | margin-left:1px!important;
115 | margin-right: 1px!important;
116 | }
117 | #controls .close-btn {
118 | background-image: url(images/arc-dark/titlebutton-close-dark@2.png);
119 | }
120 | #controls .close-btn:hover{
121 | background-image: url(images/arc-dark/titlebutton-close-hover@2.png);
122 | }
123 | #controls .close-btn, #controls .max-btn, #controls .min-btn{
124 | background-size: 17px;
125 | background-repeat: no-repeat;
126 | background-position: 7px;
127 | }
128 |
129 | #controls #buttons .button:hover{
130 | background-color: #505666;
131 | border: 1px solid #2b2e39;
132 | }
133 | #controls #buttons .button:hover svg *{
134 | color: #D3DAE3;
135 | fill: #D3DAE3;
136 | }
137 |
138 |
139 | #controls #conv{
140 | padding-top: 12px;
141 | }
142 | #controls #bell{
143 | padding-top: 11px;
144 | }
145 |
146 | svg *{
147 | fill: #D3DAE3!important;
148 | color: #D3DAE3!important;
149 | }
150 |
151 | #settings-btn{
152 | right: 46px;
153 | }
154 |
155 | #settings-btn:hover{
156 | background:#fff;
157 | }
158 |
159 | .window{
160 | padding-top: 0!important;
161 | padding-bottom: 0!important;
162 | margin-top: 5px;
163 | }
164 | .window.right{
165 | box-shadow: -10px 0px 1px -10px #a7b3d4;
166 | }
167 |
168 | .window.left{
169 | box-shadow: 10px 0px 1px -10px #a7b3d4;
170 | }
171 |
--------------------------------------------------------------------------------
/themes/arc/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/arc/window.css:
--------------------------------------------------------------------------------
1 | html, body , #controls-container{
2 | background: #d4d5db;
3 | }
4 |
5 | #controls-container, #controls{
6 | border-color: #d4d5db !important;
7 | border-radius: 3px;
8 | }
9 |
10 | #controls #buttons .button, #controls{
11 | background: #e7e8eb;
12 | }
13 |
14 | #controls {
15 | z-index: 99;
16 | position: absolute;
17 | -webkit-app-region: drag;
18 | -webkit-user-select: none;
19 | padding: 0 3px 3px;
20 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
21 | top: 1px;
22 |
23 | height: 41px;
24 | position: relative;
25 | width: 100%;
26 | border:none;
27 | }
28 |
29 | #controls button, #controls * .button {
30 | border-radius: 99px;
31 | padding: 7px;
32 | border: none;
33 | margin: 3px;
34 | margin-top: 0;
35 | }
36 |
37 | webview {
38 | height: 100%;
39 | width: 100%;
40 | -webkit-app-region: no-drag;
41 | z-index: 80;
42 | position: absolute;
43 | top: 46px;
44 | }
45 |
46 | .stars, .min-btn {
47 | display: none;
48 | }
49 |
50 | #share, #sort, #more, .max-btn{
51 | float: right;
52 | }
53 |
54 | #conv, #bell{
55 | float: left;
56 | }
57 |
58 | #controls #bell{
59 | margin: 0!important;
60 | height: 22px!important;
61 | width: 23px!important;
62 | padding-top: 12px;
63 | }
64 |
65 | #controls .button.last{
66 | margin-right: 8px!important;
67 | }
68 |
69 | #controls #buttons{
70 | position: absolute;
71 | right: 60px;
72 | margin: 6px;
73 | }
74 | #controls #buttons .button:last-child{
75 | border-left: none;
76 | }
77 |
78 |
79 | #controls #buttons .button{
80 | padding: 6px;
81 | margin: 0;
82 | padding-right: 9px;
83 | padding-left: 9px;
84 | border-radius: 0;
85 | box-shadow: none;
86 | border-radius: 3px;
87 | padding-bottom: 8px;
88 | padding-top: 4px;
89 | border: 1px solid #e7e8eb;
90 | }
91 |
92 |
93 | #controls .max-btn{
94 | background-image: url(images/arc/titlebutton-maximize@2.png);
95 | }
96 | #controls .max-btn:hover{
97 | background-image: url(images/arc/titlebutton-maximize-hover@2.png);
98 | }
99 |
100 | #controls .min-btn{
101 | background-image: url(images/arc/titlebutton-minimize@2.png);
102 |
103 | }
104 | #controls .min-btn:hover{
105 | background-image: url(images/arc/titlebutton-minimize-hover@2.png);
106 | }
107 |
108 | #controls .window .button, #controls .window .button.close-btn, #controls .window .button.max-btn, #controls .window .button.min-btn{
109 | margin-left:1px!important;
110 | margin-right: 1px!important;
111 | }
112 | #controls .close-btn {
113 | background-image: url(images/arc/titlebutton-close@2.png);
114 | }
115 | #controls .close-btn:hover{
116 | background-image: url(images/arc/titlebutton-close-hover@2.png);
117 | }
118 | #controls .close-btn, #controls .max-btn, #controls .min-btn{
119 | background-size: 17px;
120 | background-repeat: no-repeat;
121 | background-position: 7px;
122 | }
123 | #controls #buttons .button:hover{
124 | /*background-color: #505666;*/
125 | /*border: 1px solid #fbfbf;*/
126 | border: 1px solid #dcdfe3;
127 | background-color: #f5f6f7;
128 | }
129 | #controls #buttons .button:hover svg *{
130 | color: #7d8189;
131 | fill: #7d8189;
132 | }
133 |
134 |
135 | #controls #conv{
136 | padding-top: 12px;
137 | }
138 | #controls #bell{
139 | padding-top: 11px;
140 | }
141 |
142 | svg *{
143 | fill: #939aa9!important;
144 | color: #939aa9!important;
145 | }
146 |
147 | .disabled svg *{
148 | fill: #c3c7d4!important;
149 | color: #c3c7d4!important;
150 | }
151 | #settings-panel{
152 | box-shadow: none;
153 | }
154 |
155 | #settings-btn{
156 | right: 46px;
157 | }
158 | .window{
159 | padding-top: 0!important;
160 | padding-bottom: 0!important;
161 | margin-top: 5px;
162 | }
163 | .window.right{
164 | box-shadow: -10px 0px 1px -10px rgb(105, 105, 105);
165 | }
166 |
167 | .window.left{
168 | box-shadow: 10px 0px 1px -10px rgb(105, 105, 105);
169 | }
170 |
--------------------------------------------------------------------------------
/themes/elementary/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/elementary/window.css:
--------------------------------------------------------------------------------
1 | html, body , #controls-container{
2 | background: rgba(140, 140, 140, 0.5);
3 | }
4 |
5 | #controls {
6 | z-index: 99;
7 | position: absolute;
8 | -webkit-app-region: drag;
9 | -webkit-user-select: none;
10 | padding: 0 3px 3px;
11 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
12 | top: 1px;
13 | border-radius: 3px;
14 | background: rgba(222, 222, 222, 1);
15 | border-width: 0 0 1px 0;
16 | border: 1px solid #efefef;
17 | border-bottom: 1px #d2d2d2 ridge;
18 | height: 41px!important;
19 | position: relative;
20 | width: 100%;
21 | background: linear-gradient(to bottom, rgba(222, 222, 222, 1) 0%, rgb(177, 177, 177) 100%);
22 | box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);
23 | }
24 |
25 | #controls button, #controls * .button {
26 | border-radius: 99px;
27 | padding: 7px;
28 | border: none;
29 | margin: 3px;
30 | margin-top: 0;
31 | }
32 |
33 | webview {
34 | height: 100%;
35 | width: 100%;
36 | -webkit-app-region: no-drag;
37 | z-index: 80;
38 | position: absolute;
39 | top: 48px!important;
40 | }
41 |
42 | .stars, .min-btn {
43 | display: none;
44 | }
45 |
46 | #share, #sort, #more, .max-btn{
47 | float: right;
48 | }
49 |
50 | #conv, #bell{
51 | float: left;
52 | }
53 |
54 | #controls #bell{
55 | margin: 0!important;
56 | height: 22px!important;
57 | width: 23px!important;
58 | padding-top: 12px;
59 | }
60 |
61 | #controls .button.last{
62 | margin-right: 8px!important;
63 | }
64 |
65 | #controls #buttons{
66 | border: 1px solid rgba(128, 128, 128, 0.82);
67 | position: absolute;
68 | right: 60px;
69 | margin: 6px;
70 | border-radius: 3px;
71 | }
72 | #controls #buttons .button:last-child{
73 | border-left: none;
74 | }
75 |
76 |
77 | #controls #buttons .button{
78 | padding: 6px;
79 | margin: 0;
80 | padding-right: 9px;
81 | padding-left: 9px;
82 | border-radius: 0;
83 | /*box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);*/
84 | background: linear-gradient(to bottom, rgba(222, 222, 222, 1) 0%, rgb(177, 177, 177) 100%);
85 | box-shadow: none;
86 | border-top: 1px solid #efefef;
87 | border-top-right-radius: 3px;
88 | border-top-left-radius: 3px;
89 | border-radius: 3px;
90 | padding-bottom: 8px;
91 | padding-top: 4px;
92 | }
93 |
94 | #controls #buttons .button#share{
95 | border-radius: 0px;
96 | border-right: 1px solid rgba(128, 128, 128, 0.82);
97 | border-left: 1px solid rgba(128, 128, 128, 0.82);
98 | }
99 |
100 | #controls .window.left .max-btn{
101 | background-image: url(images/elementary/window-maximize-symbolic-rtl.svg);
102 | }
103 |
104 | #controls .window.right .max-btn{
105 | background-image: url(images/elementary/window-maximize-symbolic.svg);
106 | }
107 |
108 |
109 | #controls .min-btn{
110 | background-image: url(images/elementary/window-minimize-symbolic.svg);
111 | }
112 |
113 | #controls .close-btn {
114 | background: none;
115 | background-image: url(images/elementary/close-symbolic.svg);
116 | }
117 | #controls .close-btn, #controls .max-btn, #controls .min-btn{
118 | background-repeat: no-repeat;
119 | background-size: 17px;
120 | background-position: 10px;
121 | }
122 |
123 |
124 | #controls #conv{
125 | padding-top: 12px;
126 | }
127 | #controls #bell{
128 | padding-top: 11px;
129 | }
130 |
131 | html, body , #controls-container{
132 | background: rgb(177, 177, 177);
133 | }
134 |
135 | svg *{
136 | fill: #585858!important;
137 | color: #585858!important;
138 | }
139 |
140 | #settings-btn{
141 | right: 38px;
142 | top: 15px;
143 | }
144 | #settings-btn:hover{
145 | background: #585858;
146 | }
147 |
148 | #settings-panel{
149 | background: rgba(222, 222, 222, 1);
150 | border: 1px solid #efefef;
151 | }
152 | #settings-panel label{
153 | color: #585858;
154 | }
155 |
--------------------------------------------------------------------------------
/themes/vertex/webview.css:
--------------------------------------------------------------------------------
1 | a, input, textarea, button {
2 | -webkit-app-region: no-drag!important;
3 | }
4 |
5 | body {
6 | -webkit-app-region: drag!important;
7 | }
8 | #user-toolbar .stream-counts{
9 | position: absolute!important;
10 | top: -5%!important;
11 | left: 47%!important;
12 | }
13 | #list-toolbar{
14 | position: absolute!important;
15 | top: -48px!important;
16 | right: 32px!important;
17 | }
18 | .popover{
19 | left: 20px!important;
20 | top: 4px!important;
21 | }
22 | #wunderlist-base .popover.bottom .arrow{
23 | display: none!important;
24 | }
25 | #detail {
26 | box-shadow: -4px 18px 33px -6px rgba(0,0,0,0.55)!important;
27 | border-radius: 0px 0px 0px 3px!important;
28 | }
29 | #detail, #detail .inner{
30 | height: 91vh!important;
31 | }
32 | #lists .sidebarActions{
33 | margin-bottom: 48px!important;
34 | }
35 |
--------------------------------------------------------------------------------
/themes/vertex/window.css:
--------------------------------------------------------------------------------
1 | html, body {
2 | background: rgba(140, 140, 140, 0.5);
3 | }
4 |
5 | #controls {
6 | z-index: 99;
7 | /* width: 98.85%; */
8 | position: absolute;
9 | -webkit-app-region: drag;
10 | -webkit-user-select: none;
11 | padding: 0 3px 3px;
12 | text-shadow: 0 1px rgba(0, 0, 0, 0.4);
13 | top: 1px;
14 | /* height: 42px; */
15 | border-radius: 3px;
16 | /* border-top: 1px solid #eaeaea; */
17 | background: rgba(222, 222, 222, 1);
18 | /* border: 1px solid #cccccc; */
19 | border-width: 0 0 1px 0;
20 | /*background: linear-gradient(to bottom, rgba(222, 222, 222, 1) 0%, rgba(184, 184, 184, 1) 100%);*/
21 | border: 1px solid #efefef;
22 | border-bottom: 1px #d2d2d2 ridge;
23 | /* box-shadow: none; */
24 | height: 41px;
25 | position: relative;
26 | width: 100%;
27 | background: linear-gradient(to bottom, rgba(222, 222, 222, 1) 0%, rgb(177, 177, 177) 100%);
28 | box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);
29 | }
30 |
31 | #controls button, #controls * .button {
32 | border-radius: 99px;
33 | padding: 7px;
34 | border: none;
35 | margin: 3px;
36 | margin-top: 0;
37 | }
38 |
39 | webview {
40 | height: 100%;
41 | width: 100%;
42 | -webkit-app-region: no-drag;
43 | z-index: 80;
44 | position: absolute;
45 | top: 48px;
46 | }
47 |
48 | .stars, .min-btn {
49 | display: none;
50 | }
51 |
52 | #share, #sort, #more, .max-btn{
53 | float: right;
54 | }
55 |
56 | #conv, #bell{
57 | float: left;
58 | }
59 |
60 | #controls #bell{
61 | margin: 0!important;
62 | height: 22px!important;
63 | width: 23px!important;
64 | padding-top: 12px;
65 | }
66 |
67 | #controls .button.last{
68 | margin-right: 8px!important;
69 | }
70 |
71 | #controls #buttons{
72 | border: 1px solid rgba(128, 128, 128, 0.82);
73 | position: absolute;
74 | right: 60px;
75 | margin: 6px;
76 | border-radius: 3px;
77 | }
78 | #controls #buttons .button:last-child{
79 | border-left: none;
80 | }
81 |
82 | #controls #buttons .button{
83 | padding: 6px;
84 | margin: 0;
85 | padding-right: 9px;
86 | padding-left: 9px;
87 | border-radius: 0;
88 | /*box-shadow: inset 0px 0px 20px -8px rgba(132, 114, 114, 0.45);*/
89 | background: linear-gradient(to bottom, rgba(222, 222, 222, 1) 0%, rgb(177, 177, 177) 100%);
90 | box-shadow: none;
91 | border-top: 1px solid #efefef;
92 | border-top-right-radius: 3px;
93 | border-top-left-radius: 3px;
94 | border-radius: 3px;
95 | }
96 |
97 | #controls #buttons .button#share{
98 | border-radius: 0px;
99 | border-right: 1px solid rgba(128, 128, 128, 0.82);
100 | border-left: 1px solid rgba(128, 128, 128, 0.82);
101 | }
102 |
103 | #controls .max-btn{
104 | transform: scaleX(-1);
105 | right: 0;
106 | float: right;
107 | margin-right: 0!important;
108 | padding-left: 12px;
109 | }
110 |
111 | #controls .close-btn {
112 | background: none;
113 | position: absolute;
114 | left: 0;
115 | top: 0;
116 | margin-left: 0!important;
117 | padding-left: 12px;
118 | }
119 |
--------------------------------------------------------------------------------
/wunderlistux.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=Wunderlistux
3 | Exec=/path/to/Wunderlistux-linux-x64/Wunderlistux
4 | Terminal=false
5 | Type=Application
6 | Icon=/path/to/Wunderlistux-linux-x64/resources/app/images/wunderlist.png
7 |
--------------------------------------------------------------------------------