From 38991ff6189e58613b8ff91beaab80f88791f57b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 27 Nov 2012 15:32:23 +0000 Subject: [PATCH] theme - did cpufreq tacho. oh NOW i'm happy with that look. i think i'll fix the analog clock to be similar. :) SVN revision: 79747 --- data/themes/Makefile.am | 10 + data/themes/default.edc | 3 +- data/themes/edc/cpufreq.edc | 357 ++++++++++++++++++++ data/themes/img/inset_round_hilight.png | Bin 0 -> 1367 bytes data/themes/img/inset_round_shading.png | Bin 0 -> 6785 bytes data/themes/img/inset_round_shadow.png | Bin 0 -> 2034 bytes data/themes/img/tacho_base.png | Bin 0 -> 19096 bytes data/themes/img/tacho_hand_big.png | Bin 0 -> 473 bytes data/themes/img/tacho_hand_big2.png | Bin 0 -> 259 bytes data/themes/img/tacho_hand_big3.png | Bin 0 -> 167 bytes data/themes/img/tacho_hand_big4.png | Bin 0 -> 113 bytes data/themes/img/tacho_hand_big_shadow.png | Bin 0 -> 1342 bytes data/themes/img/tacho_hand_small_max.png | Bin 0 -> 523 bytes data/themes/img/tacho_hand_small_max2.png | Bin 0 -> 304 bytes data/themes/img/tacho_hand_small_max3.png | Bin 0 -> 182 bytes data/themes/img/tacho_hand_small_max4.png | Bin 0 -> 116 bytes data/themes/img/tacho_hand_small_min.png | Bin 0 -> 523 bytes data/themes/img/tacho_hand_small_min2.png | Bin 0 -> 304 bytes data/themes/img/tacho_hand_small_min3.png | Bin 0 -> 182 bytes data/themes/img/tacho_hand_small_min4.png | Bin 0 -> 116 bytes data/themes/img/tacho_hand_small_shadow.png | Bin 0 -> 1182 bytes 21 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 data/themes/edc/cpufreq.edc create mode 100644 data/themes/img/inset_round_hilight.png create mode 100644 data/themes/img/inset_round_shading.png create mode 100644 data/themes/img/inset_round_shadow.png create mode 100644 data/themes/img/tacho_base.png create mode 100644 data/themes/img/tacho_hand_big.png create mode 100644 data/themes/img/tacho_hand_big2.png create mode 100644 data/themes/img/tacho_hand_big3.png create mode 100644 data/themes/img/tacho_hand_big4.png create mode 100644 data/themes/img/tacho_hand_big_shadow.png create mode 100644 data/themes/img/tacho_hand_small_max.png create mode 100644 data/themes/img/tacho_hand_small_max2.png create mode 100644 data/themes/img/tacho_hand_small_max3.png create mode 100644 data/themes/img/tacho_hand_small_max4.png create mode 100644 data/themes/img/tacho_hand_small_min.png create mode 100644 data/themes/img/tacho_hand_small_min2.png create mode 100644 data/themes/img/tacho_hand_small_min3.png create mode 100644 data/themes/img/tacho_hand_small_min4.png create mode 100644 data/themes/img/tacho_hand_small_shadow.png diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am index 7538b1248..ce07153ec 100644 --- a/data/themes/Makefile.am +++ b/data/themes/Makefile.am @@ -28,6 +28,7 @@ edc/colorwell.edc \ edc/comp.edc \ edc/conf.edc \ edc/connman.edc \ +edc/cpufreq.edc \ edc/cslider.edc \ edc/desklock.edc \ edc/deskpreview.edc \ @@ -209,6 +210,9 @@ img/horizontal_separated_bar_small_glow.png \ img/ic_win_move.png \ img/ic_win_resize.png \ img/inset_circle_tiny.png \ +img/inset_round_hilight.png \ +img/inset_round_shading.png \ +img/inset_round_shadow.png \ img/inset_shadow_circle_tiny.png \ img/inset_shadow.png \ img/inset_shadow_tiny.png \ @@ -300,6 +304,12 @@ img/sym_up_dark_selected.png \ img/sym_up_glow_normal.png \ img/sym_up_light_normal.png \ img/sym_up_light_selected.png \ +img/tacho_base.png \ +img/tacho_hand_big.png \ +img/tacho_hand_big_shadow.png \ +img/tacho_hand_small_max.png \ +img/tacho_hand_small_min.png \ +img/tacho_hand_small_shadow.png \ img/vert_bar_inset.png \ img/vert_glow_run.png \ img/vertical_separated_bar_glow.png \ diff --git a/data/themes/default.edc b/data/themes/default.edc index a0943afd4..8cf8c40d6 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -52,13 +52,13 @@ collections { #include "edc/edgebindings.edc" #include "edc/randr.edc" #include "edc/notification.edc" +#include "edc/cpufreq.edc" // port unchanged stuff so this can work as a replacement #include "edc/O/backlight.edc" #include "edc/O/battery.edc" #include "edc/O/border_icons.edc" #include "edc/O/conf_gad.edc" -#include "edc/O/cpufreq.edc" #include "edc/O/efm_icons.edc" #include "edc/O/evrything.edc" #include "edc/O/icons.edc" @@ -66,6 +66,7 @@ collections { #include "edc/O/mixer.edc" #include "edc/O/temperature.edc" #include "edc/O/wallpaper.edc" +//#include "edc/O/cpufreq.edc" //#include "edc/O/gadman.edc" //#include "edc/O/randr.edc" //#include "edc/O/edgebindings.edc" diff --git a/data/themes/edc/cpufreq.edc b/data/themes/edc/cpufreq.edc new file mode 100644 index 000000000..41ba5f231 --- /dev/null +++ b/data/themes/edc/cpufreq.edc @@ -0,0 +1,357 @@ +group { name: "e/modules/cpufreq/main"; + images.image: "tacho_base.png" COMP; + images.image: "inset_round_hilight.png" COMP; + images.image: "inset_round_shadow.png" COMP; + images.image: "inset_round_shading.png" COMP; + set { name: "tacho_hand_big"; + image { image: "tacho_hand_big.png" COMP; size: 73 73 99999 99999; } + image { image: "tacho_hand_big2.png" COMP; size: 37 37 72 72; } + image { image: "tacho_hand_big3.png" COMP; size: 19 19 36 36; } + image { image: "tacho_hand_big4.png" COMP; size: 0 0 18 18; } + } + images.image: "tacho_hand_big_shadow.png" COMP; + set { name: "tacho_hand_small_max"; + image { image: "tacho_hand_small_max.png" COMP; size: 73 73 99999 99999; } + image { image: "tacho_hand_small_max2.png" COMP; size: 37 37 72 72; } + image { image: "tacho_hand_small_max3.png" COMP; size: 19 19 36 36; } + image { image: "tacho_hand_small_max4.png" COMP; size: 0 0 18 18; } + } + set { name: "tacho_hand_small_min"; + image { image: "tacho_hand_small_min.png" COMP; size: 73 73 99999 99999; } + image { image: "tacho_hand_small_min2.png" COMP; size: 37 37 72 72; } + image { image: "tacho_hand_small_min3.png" COMP; size: 19 19 36 36; } + image { image: "tacho_hand_small_min4.png" COMP; size: 0 0 18 18; } + } + images.image: "tacho_hand_small_shadow.png" COMP; + set { name: "knob"; + image { image: "knob_sz_24.png" COMP; size: 31 31 32 32; } + image { image: "knob_sz_22.png" COMP; size: 29 29 30 30; } + image { image: "knob_sz_20.png" COMP; size: 27 27 28 28; } + image { image: "knob_sz_18.png" COMP; size: 25 25 26 26; } + image { image: "knob_sz_16.png" COMP; size: 23 23 24 24; } + image { image: "knob_sz_14.png" COMP; size: 21 21 22 22; } + image { image: "knob_sz_12.png" COMP; size: 19 19 20 20; } + image { image: "knob_sz_10.png" COMP; size: 17 17 18 18; } + image { image: "knob_sz_08.png" COMP; size: 15 15 16 16; } + image { image: "knob_sz_06.png" COMP; size: 13 13 14 14; } + image { image: "knob_sz_04.png" COMP; size: 0 0 12 12; } + } + min: 16 16; + max: 160 160; + script { + public available_frequencies; + public available_governors; + + public cur_freq_old; + public cur_freq_new; + public cur_freq_now; + public cur_freq_anim; + + public min_freq_old; + public min_freq_new; + public min_freq_now; + + public max_freq_old; + public max_freq_new; + public max_freq_now; + + public slide_cur_freq(val, Float:v) { + new Float:freq, Float:min_freq, Float:max_freq, Float:tf; + new f, f0, f1; + + v = (1.0 - cos(v * 3.141592654)) / 2.0; + + min_freq = fetch_int(available_frequencies, 0); + max_freq = fetch_int(available_frequencies, + count(available_frequencies) - 1); + + f0 = get_int(cur_freq_old); + f1 = get_int(cur_freq_new); + f = f1 - f0; + freq = float(f) * v; + f = round(freq); + f = f + f0; + set_int(cur_freq_now, f); + + freq = (float(f) - min_freq) / (max_freq - min_freq); + tf = (freq * 225.0) - 135.0; + custom_state(PART:"meter", "default", 0.0); + set_state_val(PART:"meter", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter", "custom", 0.0); + custom_state(PART:"meter_sh", "default", 0.0); + set_state_val(PART:"meter_sh", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter_sh", "custom", 0.0); + + f0 = get_int(min_freq_old); + f1 = get_int(min_freq_new); + f = f1 - f0; + freq = float(f) * v; + f = round(freq); + f = f + f0; + set_int(min_freq_now, f); + + freq = (float(f) - min_freq) / (max_freq - min_freq); + tf = (freq * 225.0) - 135.0; + custom_state(PART:"meter_min", "default", 0.0); + set_state_val(PART:"meter_min", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter_min", "custom", 0.0); + custom_state(PART:"meter_min_sh", "default", 0.0); + set_state_val(PART:"meter_min_sh", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter_min_sh", "custom", 0.0); + + f0 = get_int(max_freq_old); + f1 = get_int(max_freq_new); + f = f1 - f0; + freq = float(f) * v; + f = round(freq); + f = f + f0; + set_int(max_freq_now, f); + + freq = (float(f) - min_freq) / (max_freq - min_freq); + tf = (freq * 225.0) - 135.0; + custom_state(PART:"meter_max", "default", 0.0); + set_state_val(PART:"meter_max", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter_max", "custom", 0.0); + custom_state(PART:"meter_max_sh", "default", 0.0); + set_state_val(PART:"meter_max_sh", STATE_MAP_ROT_Z, tf); + set_state(PART:"meter_max_sh", "custom", 0.0); + + if (v >= 1.0) { + set_int(cur_freq_anim, 0); + return 0; + } + return 1; + } + + public message(Msg_Type:type, id, ...) { + if ((type == MSG_INT_SET) && (id == 1)) { // add an available freq + while (count(available_frequencies) > 0) { + remove(available_frequencies, 0); + } + for (new i = 2; i < numargs(); i++) { + append_int(available_frequencies, getarg(i)); + } + } + else if ((type == MSG_STRING_SET) && (id == 2)) { // add a governor + new text[100]; + while (count(available_governors) > 0) { + remove(available_governors, 0); + } + for (new i = 2; i < numargs(); i++) { + snprintf(text, 100, "%s", getarg(i)); + append_str(available_governors, text); + } + } else if ((type == MSG_INT_SET) && (id == 3)) { // avg freq + new f; + new ani, curf, minf, maxf; + new text[100]; + + f = getarg(2); + if (f < 1000000) { + f += 500; + snprintf(text, 100, "%i", f / 1000); + } else { + f += 50000; + snprintf(text, 100, "%i.%i", f / 1000000, + (f % 1000000) / 100000); + } + set_text(PART:"readout", text); + + ani = get_int(cur_freq_anim); + if (ani > 0) cancel_anim(ani); + ani = anim(1.0, "slide_cur_freq", 0); + set_int(cur_freq_anim, ani); + + f = getarg(2); + curf = get_int(cur_freq_now); + set_int(cur_freq_old, curf); + set_int(cur_freq_new, f); + + f = getarg(4); + minf = get_int(min_freq_now); + set_int(min_freq_old, minf); + set_int(min_freq_new, f); + + f = getarg(5); + maxf = get_int(max_freq_now); + set_int(max_freq_old, maxf); + set_int(max_freq_new, f); + } else if ((type == MSG_STRING) && (id == 4)) { + new text[100]; + snprintf(text, 100, "%s", getarg(2)); + } + } + } + parts { + part { name: "fade_clip"; type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + description { state: "faded" 0.0; + color: 255 255 255 128; + } + } + part { name: "base-sh"; + description { state: "default" 0.0; + rel1.to: "base"; + rel1.offset: 0 -1; + rel2.to: "base"; + rel2.offset: -1 -2; + image.normal: "inset_round_shadow.png"; + } + } + part { name: "base-hi"; + description { state: "default" 0.0; + rel1.to: "base"; + rel1.offset: 0 1; + rel2.to: "base"; + rel2.offset: -1 0; + image.normal: "inset_round_hilight.png"; + } + } + part { name: "base"; + description { state: "default" 0.0; + rel1.relative: (25/380) (25/380); + rel2.relative: (365/380) (365/380); + aspect: 1.0 1.0; aspect_preference: BOTH; + image.normal: "tacho_base.png"; + } + } + part { name: "readout"; type: TEXT; mouse_events: 0; + scale: 1; + effect: SHADOW BOTTOM; + clip_to: "fade_clip"; + description { state: "default" 0.0; + rel1.to: "knob2"; + rel1.relative: 1.0 1.0; + rel1.offset: -2 -2; + rel2.relative: 0.75 0.75; + color: 255 255 255 255; + color3: 0 0 0 128; + color_class: "module_label"; + text { font: "Sans:style=Bold"; size: 6; + min: 1 1; + text_class: "module_small"; + } + } + } + part { name: "meter_min_sh"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0; + image.normal: "tacho_hand_small_shadow.png"; + rel1.to: "meter_sh"; + rel2.to: "meter_sh"; + map { + on: 1; + rotation.center: "meter_min_sh"; + } + } + } + part { name: "meter_min"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0; + image.normal: "tacho_hand_small_min"; + rel1.to: "base"; + rel2.to: "base"; + map { + on: 1; + rotation.center: "base"; + } + } + } + part { name: "meter_max_sh"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0; + image.normal: "tacho_hand_small_shadow.png"; + rel1.to: "meter_sh"; + rel2.to: "meter_sh"; + rel2.relative: 1.0+(2.0/64.0) 1.0+(2.0/64.0); + map { + on: 1; + rotation.center: "meter_max_sh"; + } + } + } + part { name: "meter_max"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0; + image.normal: "tacho_hand_small_max"; + rel1.to: "base"; + rel2.to: "base"; + map { + on: 1; + rotation.center: "base"; + } + } + } + part { name: "meter_sh"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0; + image.normal: "tacho_hand_big_shadow.png"; + rel1.to: "meter"; + rel1.relative: 0.0 (15/380); + rel1.offset: 0 1; + rel2.to: "meter"; + rel2.relative: 1.0 (395/380); + rel2.offset: -1 0; + map { + on: 1; + rotation.center: "meter_sh"; + } + } + } + part { name: "meter"; mouse_events: 0; + clip_to: "fade_clip"; + description { state: "default" 0.0000; + image.normal: "tacho_hand_big"; + rel1.to: "base"; + rel2.to: "base"; + map { + on: 1; + rotation.center: "base"; + } + } + } + part { name: "over"; mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + image.normal: "inset_round_shading.png"; + } + } + part { name: "knob"; type: SPACER; + description { state: "default" 0.0; + rel1.relative: (140/340) (140/340); + rel1.to: "base"; + rel2.relative: (205/340) (205/340); + rel2.to: "base"; + min: 4 4; + step: 2 2; + max: 24 24; + } + } + part { name: "knob2"; + description { state: "default" 0.0; + rel1.offset: -4 -4; + rel1.to: "knob"; + rel2.offset: 3 3; + rel2.to: "knob"; + min: 12 12; + max: 32 32; + image.normal: "knob"; + } + } + } + programs { + program { + signal: "e,state,enabled"; source: "e"; + action: STATE_SET "default" 0.0; + target: "fade_clip"; + } + program { + signal: "e,state,disabled"; source: "e"; + action: STATE_SET "faded" 0.0; + target: "fade_clip"; + } + } +} diff --git a/data/themes/img/inset_round_hilight.png b/data/themes/img/inset_round_hilight.png new file mode 100644 index 0000000000000000000000000000000000000000..76961750884724385921d1a19c975e772e8673a0 GIT binary patch literal 1367 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 O4sdjEwQsQXzx_W)5U1M! literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_base.png b/data/themes/img/tacho_base.png new file mode 100644 index 0000000000000000000000000000000000000000..268f83ebeb01a6da693b0b47f0b3a2f0de0770d6 GIT binary patch literal 19096 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 A5C8xG literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_big2.png b/data/themes/img/tacho_hand_big2.png new file mode 100644 index 0000000000000000000000000000000000000000..b62751c3aa3d1b070889f5a9f3d8a2427062d3d1 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!r#xL8Ln>~)y>^hZ*+HP~VxlKw z*@m(#?w41D&Kz~-Gwhh~VfFh)@x3RG>sW^}goIuVGSvxnzGT03gWKa@93|5n`VTm$ zUf8BLfm7&3SmUL#1*x@3WedfuY!^E)aeg^1yMjBVX`P_P%USd9ulpG}@vW>zmUvd< zaqU+#I8`o~GJT!<-e&@*Rpf#rvM2PmB(rzjY>j&HvCA@ziL>ON!`}zy!YNID0ve?t z2_dx?l^<@eU6%37z;?3H?TJTz3VF%^y#NLe^y9Wpj^D%Q5xoP%_jL7hS?83{1OR0H BXQ2Q9 literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_big3.png b/data/themes/img/tacho_hand_big3.png new file mode 100644 index 0000000000000000000000000000000000000000..8d468b07e55497be091fbed430aebde7d69ef721 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB@;qG}Ln02powkwlfB_H7{0WSE z8uzXYKe0^CF*9aK;ZyanLU#UDXFe(Ns+B`zm6etW$6o3gX>`6RnrLHsK}hq40gy78Q~bG6ueizUDB P0C^0au6{1-oD!M<|8+h! literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_big4.png b/data/themes/img/tacho_hand_big4.png new file mode 100644 index 0000000000000000000000000000000000000000..50ac689337de80e17e9c3a9149ac181aff843c8a GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|3r`ov5R22v2@Ax3oIjxOVSb}y z!vrfar8AS-FUfz%*0g?U_l*TtnyF-*E5qyzl$d`@X-uWk-*M>@v17HZU;QMJ5rW zww?1I!8^BA75t&cz`)RuO!SYwtX!%e`{_36yP&D?g)P5)=UIadz=IAq&-2R@7vz#g z?PHYW%xHqd&?|L2Nq1reep)*?jU|Ft>1-n?Qt|1ql$<*kv_4oLb+h`}xY;#ObEUt| zdO}=4M9j5YcDZn7IHk}v$78N2WyYO6%W+jut$kPIfgxusWYvvPBfbVwCTOxzW&jrD zW!3fjsi}+SsDX&F1*~gQETBFhg$+gt3ExN}AxiO4=pB<`rtUS;v{vXnrV?!!J%lMu zR&G2@9VRLwp=M0Dgf@>Dh}3zw01D2fP)Aj&4jR_JbJ~oT{wMt8zNiS4hcnp@o%$#( z1R;ZIlHt`5=`XbTVe9apX*PR}rLnYvz^)33DYO$7_bW)LrQ#J>NW?k{R)4v9@6haOgJ$Kq&pMi5j#vztLoGnHDc)UHPfL45b*@_~Hr_W(%g zSzh=mKD{xVx<3NIvbfu~ie#9nQ*`r>UX};@EHZlMmyxs4J0aJPG+GsI1r&mygbAQ;Uw=%hS@ap*C*G%6V1e$`BhpqrQZjTPk7j7XKJ?LlFC_XDfT*+6b&axi| zifr5Z-N+63q1HK{&C$sxzD0zBGA(GF1mlbE$761^9S3_TRR@+x2rm4UGmf)LX)zJY zr>;>_QZiE;v^g9?G41H4Qmen6pr)%C=;0UHfCv7@T!JG;6q#pdaaVcblI7$Rri60R z9V+3&W16xTa(D!9EiD*hFL)KwWfhfBGR=h1IKHyhnWpCl!mjLuZ3tX%)e_6)S6i!9 zm_hPrF-cT_b!a+m6K)zkdR2KY&$rX@wh^>`2MbTj?mAH=FuaIN4#tS`*BgFs;PDM5 z1MQ!VA@SywAgEx6tmSDhYdO=!+a$`j&c_Gnr^#ABP2V>*a`l}Mc+kXSv?Q?}cHUyw zVF>CC(9^adxx2AUh_#iY;~vp4?2aoueX2=o^oe zv+Hn`XFt?vej}(B*|XGrW8!LJ(wP-vSy8d|DTE0CSGBaMZ7VI-K9yl`J5A zSga%6sU^^NXB71vTERuW04|{vxMMDbBhM4U9NZNyG?K{HdtwnO+k3tBZP}NYmcfVh zM?0EA+soE4drY9QE;*01`czld-wtSQqwlnbP)_QX5b+ru|EMFu(q5tJeSt)_GU0$y zuu6P*YG?CjGw=3`Co=U2?#9#dCXRbryPu|nP*jjuZ;NrNgSDkd(8jj1k`JK5?t+zm zSNpJ(vJuVV%})3mm)uKJK#3c7TIY1{b1wqZ&OicW<%fLGvE!tq=&rxy@mt)r@;2-R kJ2smL*#4ydfv=_X9lQ%w_TcRJ-T&2)gN_he15OwJ3q8MDVgLXD literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_max.png b/data/themes/img/tacho_hand_small_max.png new file mode 100644 index 0000000000000000000000000000000000000000..b014d15407b5f9b04967eade4297c7dc6e234e55 GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farf$@^3i(^Q|t+%%f{g@mj+8*Zj zE>zz3rNqR+LgctW|G|Y8JqtG!TUl z<9gP(>}K~axU}bw!UC<$pPakhy)W!!R#ag8JMEaz7QPFIRn|YfzC3N`%_vdh3#!YW z@~_eC7Yz9N@u`OJga#HB1?Mkwc`h`o+*WD+bR~LH;^sShB4w>FSgOT8@~pJksKd0% za-U2xlMqmCO2@v*jJr<$lYa5=p!e-J`zPLuRJFdK`B?em5*zbvHVBpfj;;A*%9zM5 z6tLevVX?|`y^Fh3^cTFkdt6UtLEPtlOAm)K1xC&n%YK9(d(QB;uybFwZ&~5VdweBF zzMQewnEr+}K_m_WlwZvuQhXt?^EUc}G;M8UG%b_(THc{;BLQ zwm}uBX6|>ne-x~)y>7^L$U&g>;dZ5$ zBB#H+yfkA&`zgaK$!``Gi5t#68)ebjmA9}%_>X;rN7?KTGbGJ~fO>&opX&06=OWqu z_qP;G3rz2BhOG!_sz2aP9GsT)|mLu!m8jt59 z&36}E=XY1%9r(O{{eown7Mu3AiD_>S@^^Tect=n`)P=QHYj5SZ@c&8Hp1<4Q)=C^> rX0+u$>1y%riAcGa2*kNivgR)9g3VfIZ)))7gG4-C{an^LB{Ts5j)-`= literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_max3.png b/data/themes/img/tacho_hand_small_max3.png new file mode 100644 index 0000000000000000000000000000000000000000..9a00182843e405a337f67a76b9dbc0f6884b4e47 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBYCT;XLn02py?T)IfC3Neg?vpp z@A41VCO-<0U0iGtQvQb;b;m zVbO{@9Cp}2t?8f>J43(S_kw#y)hV0@mQA&J6Y%cKWhT+nvAmdKI;Vst0CA*7?f?J) literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_max4.png b/data/themes/img/tacho_hand_small_max4.png new file mode 100644 index 0000000000000000000000000000000000000000..08b60047db3f7fda82abaadbd5c27e706378e610 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|Yfl%)5R22v2@*RW{P#&d_TRWy zl5=IU(jlExjbq#q9R?>DyzVc&;@TGAV=5k)GeL1H&#aRMTyBhW85lNru|zz3rNqR+LgctW|G|Y8JqtG$@2n z@Aa;6+0E`ZD?r}Yp1#zGIEj=8{6c{;QEc+3D>^Z~V!p?o!zGa0c@9~u! z`EtfyWBMD`E59>}dN@5CfYvJha$|dO*!xRt%%<(kwZ=OY<{eS3X8e0#;u8s&`=_$M z*alUgnz`TQ{!yTUuXbI}n4BD#UZs{T{mylQF9qnBP5UlY*Y^B(mwy`WIZwal_UW{n uYgk--T^FdS?2zbey(Lo7AO)VTelF{r5}E*5$~)y>7^L$U&g>;dZ5$ zBB#H+yfkA&`zgaK$!``Gi5t#68)ebjmA9}%_>X;rN7?KTGbGJ~fO>&opX#!h<5RNz z?{6uX7MR}M5ceW?=f;ulZxpwAi$_O-y@xkiWyz#5;llqAskpT6-(Mh5t{o_Wa%c_OC?? rGovm4Nmq+^N2ZjEi9nnSC2Q`o&I;B#%k}*2Wsr!ctDnm{r-UW|8<~3P literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_min3.png b/data/themes/img/tacho_hand_small_min3.png new file mode 100644 index 0000000000000000000000000000000000000000..2e11a0dc0e1f796a24e6cdca95dfbd5fc02eb2d0 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBYCT;XLn02py?T)IfC3Neg?vpp z@A41VCO-<0U0iGtQvQ+IP9>4TGK%%c7}et@4tDBs#7=*ESqZcCg9zd%S@uDV}GS8lq+Y?t$U@rJ8N=x g_}q?;j*L6poQ;BO{bwI-1v-Sm)78&qol`;+07`yE*8l(j literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_min4.png b/data/themes/img/tacho_hand_small_min4.png new file mode 100644 index 0000000000000000000000000000000000000000..3700d5c056132c47fc70f2e3c9ab27c88a510b29 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|Yfl%)5R22v2@*RGR6MJ9dpz^M zB!k#kDQK$5cEpXM*BZo>?aixZD`$GBB)_VvDw_tvm@d OhQZU-&t;ucLK6TRoFel8 literal 0 HcmV?d00001 diff --git a/data/themes/img/tacho_hand_small_shadow.png b/data/themes/img/tacho_hand_small_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4e379cf818932af4c37c9deb3860eaf7c6e32d GIT binary patch literal 1182 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farfhE<`#WAGf*4w$aC(SkxU{!Ve z_rJXSur9yj*2f<`4(&eKYL9BWII|M{z=@Jzw`1gK6O5(kMHXzshewEXmsg6BeH;frkAsl z{&_#PU#DHZR!&$t=XOfmbjRq)>z=$4)tI!LOC(g`wBLklq8jEdt3LTG`=oMt+ZuzL zos&gfm6(sdJ-uy1RPG`h6-{2r6?3bXeYT(aH!|jEQq6KE)8*?mCmau7@b?avP$t(D z>!~NWOxT&O>TH?$Jx6+ScIGKjjq<2Sl>nnpF0WlDUG31+Ip?^ocWLk}WsV!x!4f~! zXa5QI`MQzm=C`f$-mlNxbD+b)>8JWBhqwi2Ll>->*F57;oNxv&OA?o|gS~HJ*rHwk z=gkXW`Lubf{ZkjONjf1N5xT*BNJG{1@qzJ1;GUuTs= zk+Lm!XQA}wMN5L)c3$4ML(U^$&i{*tPB=K_t}$=i8g-*&Ve3Xdm5^4i4V8ge+}*3r zU-ga?^icWjBhE65EwV#Q&7jdWG^5IK!AqyF6DMRY`(-o7W9$7B8^ovl{Qjo(`=wBi zQrQ*dN>{y8v;$s-D4bMSJFn4AaTkklgucsZ)|Zhn^X_doe6!uC?_6D=^x{@dwinm3 zwF9#4Zz|Y!ht0po@&2iYqn=dnrxb-ohPy)PTv0cs)~YsdsbbSwS?kPNJ@56aeMOE@ zg+21ViHiklQ@Iwm-ZgRfzUuty;E45HCs{I&3cPilr583O?soULsS5-a>2F;c{_VZ4 zyutkIxQ zG)wK+L``?`r9AB0-{kR_5k+JzZgV)QC%YrVJmHd-q*|pFkZrZN3 zFJH59l`&qZ+qUa|@_!x4LJ`)ks41f9mfK&POPT$1Pu}XuC$?L#?3!qCGgVyw-1{k) z)_?h$dT7^v(UtGg&Gmy`M@n&&D0gPBj- zKkDWf=W6asyiyjnWCc?#i_p(7HQ{BVc_wmmqh9Dr{n83O`qSi7MdLI->BUTUH*n=X zulBC0Tj7-(Zs)UJ?RU?UiIPvRE;F!?4DH+#^DVBUOg6(%G?Vj|c<>B|j%~SFxla}^ zRlJba^f@Wzwy3(nRxXjJb4s`#ux8o5JK6U?@aaV7wXHu-d;c{)kj1Ud+xX_ySGg^^ zJJo+`+`GK2)U$2>0Uh&c3{mP~s`AWBtMd2XyF4pe{J8weTDQ1wl1Zn^qx$tqd*iAd z7hRw9X$AKcp_Sz^Df+iF3?H8N{y(wr;Cjmfng0Av791I#NZ}8<{}^`5^h;_m@q7Vk N@pScbS?83{1OV6={X75w literal 0 HcmV?d00001