From ac30b5b31a21a183fb175e6ed7a8f1afd52e8637 Mon Sep 17 00:00:00 2001 From: Sunderland93 Date: Mon, 11 Dec 2023 23:42:44 +0400 Subject: [PATCH] Update Plymouth theme --- debian/changelog | 6 + .../plymouth/themes/tileos/animation-0001.png | Bin 0 -> 177 bytes .../plymouth/themes/tileos/animation-0002.png | Bin 0 -> 198 bytes .../plymouth/themes/tileos/animation-0003.png | Bin 0 -> 208 bytes .../plymouth/themes/tileos/animation-0004.png | Bin 0 -> 192 bytes .../plymouth/themes/tileos/animation-0005.png | Bin 0 -> 176 bytes .../plymouth/themes/tileos/animation-0006.png | Bin 0 -> 177 bytes .../plymouth/themes/tileos/animation-0007.png | Bin 0 -> 177 bytes .../plymouth/themes/tileos/background.png | Bin 6224 -> 0 bytes usr/share/plymouth/themes/tileos/bullet.png | Bin 0 -> 616 bytes usr/share/plymouth/themes/tileos/capslock.png | Bin 0 -> 960 bytes usr/share/plymouth/themes/tileos/entry.png | Bin 0 -> 14922 bytes usr/share/plymouth/themes/tileos/keyboard.png | Bin 0 -> 946 bytes .../plymouth/themes/tileos/keymap-render.png | Bin 0 -> 26362 bytes usr/share/plymouth/themes/tileos/lock.png | Bin 0 -> 11030 bytes usr/share/plymouth/themes/tileos/logo.png | Bin 11201 -> 0 bytes .../plymouth/themes/tileos/password_dot.png | Bin 2929 -> 0 bytes .../plymouth/themes/tileos/password_dot16.png | Bin 1075 -> 0 bytes .../plymouth/themes/tileos/password_field.png | Bin 17401 -> 0 bytes .../themes/tileos/password_field16.png | Bin 230 -> 0 bytes .../plymouth/themes/tileos/progress_bar.png | Bin 4211 -> 0 bytes .../plymouth/themes/tileos/progress_box.png | Bin 4212 -> 0 bytes .../plymouth/themes/tileos/throbber-0001.png | Bin 0 -> 194 bytes .../plymouth/themes/tileos/throbber-0002.png | Bin 0 -> 208 bytes .../plymouth/themes/tileos/throbber-0003.png | Bin 0 -> 208 bytes .../plymouth/themes/tileos/throbber-0004.png | Bin 0 -> 195 bytes .../plymouth/themes/tileos/throbber-0005.png | Bin 0 -> 177 bytes .../plymouth/themes/tileos/tileos.plymouth | 60 +- .../plymouth/themes/tileos/tileos.script | 1022 ----------------- .../plymouth/themes/tileos/watermark.png | Bin 0 -> 4306 bytes 30 files changed, 61 insertions(+), 1027 deletions(-) create mode 100644 usr/share/plymouth/themes/tileos/animation-0001.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0002.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0003.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0004.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0005.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0006.png create mode 100644 usr/share/plymouth/themes/tileos/animation-0007.png delete mode 100755 usr/share/plymouth/themes/tileos/background.png create mode 100644 usr/share/plymouth/themes/tileos/bullet.png create mode 100644 usr/share/plymouth/themes/tileos/capslock.png create mode 100644 usr/share/plymouth/themes/tileos/entry.png create mode 100644 usr/share/plymouth/themes/tileos/keyboard.png create mode 100644 usr/share/plymouth/themes/tileos/keymap-render.png create mode 100644 usr/share/plymouth/themes/tileos/lock.png delete mode 100644 usr/share/plymouth/themes/tileos/logo.png delete mode 100755 usr/share/plymouth/themes/tileos/password_dot.png delete mode 100755 usr/share/plymouth/themes/tileos/password_dot16.png delete mode 100755 usr/share/plymouth/themes/tileos/password_field.png delete mode 100755 usr/share/plymouth/themes/tileos/password_field16.png delete mode 100755 usr/share/plymouth/themes/tileos/progress_bar.png delete mode 100755 usr/share/plymouth/themes/tileos/progress_box.png create mode 100644 usr/share/plymouth/themes/tileos/throbber-0001.png create mode 100644 usr/share/plymouth/themes/tileos/throbber-0002.png create mode 100644 usr/share/plymouth/themes/tileos/throbber-0003.png create mode 100644 usr/share/plymouth/themes/tileos/throbber-0004.png create mode 100644 usr/share/plymouth/themes/tileos/throbber-0005.png mode change 100755 => 100644 usr/share/plymouth/themes/tileos/tileos.plymouth delete mode 100755 usr/share/plymouth/themes/tileos/tileos.script create mode 100644 usr/share/plymouth/themes/tileos/watermark.png diff --git a/debian/changelog b/debian/changelog index 61ea3ae..9c4e9f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +tileos-artwork (1.0~tileos) unstable; urgency=medium + + * Update Plymouth theme + + -- Aleksey Samoilov Mon, 11 Dec 2023 23:41:56 +0400 + tileos-artwork (0.16~tileos) unstable; urgency=medium * Set Catppuccin as default cursor theme diff --git a/usr/share/plymouth/themes/tileos/animation-0001.png b/usr/share/plymouth/themes/tileos/animation-0001.png new file mode 100644 index 0000000000000000000000000000000000000000..dc26b2c9ca9bd0e3a4248ef689aed0d4654b1934 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!3HEx>&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W+*9 z)5S3)qw(!EL#_h~JPv`ke?Q$Kw_z@epjYPN2OsV|d!U|j5o8(=G;HmQT-dSWSMgfY ztM~R^_v!38Y+B!bXYX}y_IYjD`}lTN=a;1EB{yb@&3Gc{`Kgx?tn0y5-iaq|cx);H PUxWCbu6{1-oD!M&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>TT z)5S3)qw(#vgS@Q@0xSVr?O!cWd$r)efB)GUorb$+R8+h_*65k0w?PM}7zhsRz82}Y zcI*9rG1f&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>Ta z)5S3)qw(#vjl72yL|g+W|DDl1b4D|xXRGRjfRy@6b1(l^ywA3d8>kcreylIaTJinf z@`qELZg0Joxqgb!t<#qN)oZsZ|F26)=`HWy-?QVG^gXwj$GqxFZR}+q-!aR%-8m{f u4@4{yw4c~7Xy9`|VY&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>TZ z)5S3)qw(#vjl2y8Jg$z1HqF$$JWFe$gA+&2uHEz6|483311bZ82k~pQL<9@Dwol6n z|9(tjdEEQGPrgk$@%4u2|B8~*_g42p43n%1%HLESJiT~zb@^l8n}XlZ9F{OR+u&)Z f&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W+)^ z)5S3)qw(!EL#_h~JPv_x|GuA-*VHt{Ow4G{_TRjbTTFq9fZ##=-w+L@B(CrCvcli@ zp6fheb*H0VW>ZyuRtod(hsRj;+t=KSj-7cpB4HM*TBXaRnq-K+iV|kOYc@Pw_tc+& O1Uy~+T-G@yGywqk12^^n literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/animation-0006.png b/usr/share/plymouth/themes/tileos/animation-0006.png new file mode 100644 index 0000000000000000000000000000000000000000..51fba48d78d04f0283143e79d36311fbbd0a915c GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!3HEx>&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W+*9 z)5S3)qw(!EL#_h~JPv`kPe1dSw{0$qpjYPN2OsV|d!U|j5o8(=G;HmQTp0EG>U?FT ztM~R^_v!38Y+B!bXYX}y_IYjD`}lTN=a;1EB{yb@&3Gc{`Kgx?tn0y5-n|kwJS}T_ P9)kFuu6{1-oD!M<6Z|}7 literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/animation-0007.png b/usr/share/plymouth/themes/tileos/animation-0007.png new file mode 100644 index 0000000000000000000000000000000000000000..dc26b2c9ca9bd0e3a4248ef689aed0d4654b1934 GIT binary patch literal 177 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 Ls){$tf3oCXH1-4d diff --git a/usr/share/plymouth/themes/tileos/bullet.png b/usr/share/plymouth/themes/tileos/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..5799dda51fa02c12c6895faaf846bca64a232859 GIT binary patch literal 616 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 U0p3St#Q*>R07*qoM6N<$f>XG!@Bjb+ literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/keymap-render.png b/usr/share/plymouth/themes/tileos/keymap-render.png new file mode 100644 index 0000000000000000000000000000000000000000..4aaed5abb487524c3a2ac064cbeba1eb6656a89a GIT binary patch literal 26362 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 literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/lock.png b/usr/share/plymouth/themes/tileos/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..4c61459392a4ed7a56d55ff41712786775fa177c GIT binary patch literal 11030 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 diff --git a/usr/share/plymouth/themes/tileos/password_dot.png b/usr/share/plymouth/themes/tileos/password_dot.png deleted file mode 100755 index f1103d1087f2d160c4b2f673592ef656999b4c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2929 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 diff --git a/usr/share/plymouth/themes/tileos/password_field.png b/usr/share/plymouth/themes/tileos/password_field.png deleted file mode 100755 index 46e899df8c674599082d3733842b287d5498693c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17401 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 CIQt*~ diff --git a/usr/share/plymouth/themes/tileos/password_field16.png b/usr/share/plymouth/themes/tileos/password_field16.png deleted file mode 100755 index 2617fc93ee361c89ea02dd2454a9f06fa9abdc83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0y~yVB`g|^;npJ5}D^2Q9H6k|z{UoeBivm0q3PLj8~3quF1tOt<8S>O>_%)r1c48n{Iv*t(u1=&kH zeO=ifv+#3@$Z1VqvKS~7;OXKR5^?zL4MV{L1_I2E;*1F%Gyi-({^XRznu>1%Z&qB9 zxMW}TD`Tr{?G8yp_wUk=RtOwFeh?WHHZI;&*FHsF?b-B6m!kJ{UYMzRzQrDBHiM_D KpUXO@geCx-U`%=d diff --git a/usr/share/plymouth/themes/tileos/progress_bar.png b/usr/share/plymouth/themes/tileos/progress_bar.png deleted file mode 100755 index 6a34aae21e79112c73d9f77ef15b9d33ee2de83f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4211 zcmeHKYj6`)6kcp?YXOI%KzXkVBBGmpC7Wbz2qg(^u&E^t2!aDQyEp05BpY_OOi#nwBfiU7{Cu^$`dnwp;~%fuVXHhja+_k`v~ynb z*^Ywa?%8eY0^28rTzN&q+gI^hMrp0;%Dpc)U#Gu#=n^Pxx#Hj}mp}IPqucX-7=CBf zuzfLXOFOT7W{-ERMG4Ad~{*D_jjKr`ZYh{n8!te2PCxp^y zSh>+v+B9oI^U}qy5%Y_$Tj$8$US8WmYvPSLJV@>ZL-8ubW`^;Z|{Aqssw5(e%TG4RwF5j;5qTTYz zhF{k=#XP}v2iIRU>@ED4DM#VvZyaMLo;&-|OB?+M3+`UOHavcR{3CwYLykEU=7sKS z|6|eSQ6DdEXjLDwwSBO(@Wbl;*Drb2xn}CW*MnSJQ@@RyUtS;;X~pTs&lKYM-rRkOYw z`{v=BF3g?y@b6Q1e|nfGne`{1TygC1ao4wMZeji5D?REqEO7gi*sd)t_7kfb7jKQW zo_=A+{YP?f&&|&yR^8!QwyX5>>Pc;95^bly;SOB54Ljmi4_x*oy8v}wT1FkVFi<9l zO56e@B@8X;coMZ9h84NfNg!539S_5(oNy6sJKrI2S#l9K+5&VS>48;pX}t<7>&ru8 zeYNP62=~nVqO^br;!p>8Ivz`CLfS=`yaIYQ%oKr}5WU((EDTiO9z}(?)nc{Kq%SSk zvc$}MyhxQILeM*>ivo>YM3t^51&T_gQkE2FQPe2KIGs+4W+|2>5rWj}5;{ne32ll& zk>T({O;qKiE-MM#-~?f%Mt2ben#a52izfqt9{PmVr2^7}N`oZDSZFF9r}}zmx~~?I zbOrQ}9$E-(R4NEHrA8H@uNEfsDSas4n7Zht%aruUP$JGiJ@LBFf}M zO}cj?B*$T;4h%IJ-oe{>2g5P6jbS;i7qkGX8tO!Ylc6nKCL5zH0!ju63yeNR1f~bd zMewK)=!zOrl$eV!Lc$Htp6LMEP7=_87w8a?(kv&?yuesPEGt-9fnlzptpeQ#uSjyF z?%&YH=D~|HB`=jVw0@mw%Iv60xFR#k3}dpnm2lkL6ao-4DQKV;N@kphD>EflfkYId z)1#|hyY2Env;yn2MQl8S3dS-v(rV`*2}IFOvQ|C}M4L^DfJ`^_uxm<0PXQGcN0E+5 zE7YE*R`_(YP*?YlB~=BDDj>l~nkWA*7}b?9WtkO^Ve02|8of(A6#TW`VPu9DA#}#7!Y`{y9VVNkOBh&4|dmoCRcv%=M+q! zx1bdISh9Y2s1=VvluP_S37~#1L#oI*XoDH>C}sFu$+d K`{L|nYyJYX@!>=O diff --git a/usr/share/plymouth/themes/tileos/progress_box.png b/usr/share/plymouth/themes/tileos/progress_box.png deleted file mode 100755 index 697671f5116a660941209eb316259b6e02abc777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4212 zcmeHKYj6`)6kY^ctW*Sq7NxQ-SU}nAW_O!p*Mv}#Kq5^oZ9tGB?Bga~npbzXZCXWn zh@~ozjtY)b6@2nToI0b9N{e6t2LX{*sE7!TfHEr8I#?L+ad*>}c67$+jQ(q8lHEP$ zJKsI$yXT(C))wT?PEWff4MC7}pVwUouS?)}@URs4dl6}^f|q^OfdyJ2Ux~(*SWpfF zRI7>u6eQ#zf+W6-6r4zJMu%VRyg6%-6QS3)PAas1e<|m*+xNLEQw?S9Ygq2QyOA3< zbkcqJ_NUKm%wBhJw12b(%N|#Twr~CB`Ip)iMpMx1s7&M z^>bUzT>GA;i5*h<%VTHd740G$E^iM!ckG9ZP58;Js%u1XO{d(^IOpQ|?ZHae7~%n*7Vutw``#Y9zRk$;>@Y~8+VPMA6e*2v^+^6$e=Z{%T?fWxwhP;tqaRgicPMT-iP0QBI&&o4Ja7OkP7LOm=wrcf+ zC+4MQgcfHN56%5~@SdZ4eMda^TwPLFGVmCbogir)(Knzx{f!q0V=BWKHcF;no9@gO=gX*k+BN8(7!z z`@+p*K3!CQRCy++egBfoPf8EWDSn+@HEC?au#wkEfw?osjeY6uWv@KzZGHHoX6KKW zJj(tvcdo1xZyU31<9O$#30E&1o0jMQz_)eCXP1Q&6T}(ujFQj8SFU{V?yZw&oF4aH z%l&`cllAQ7NlnLEu-P;Iw8YC!ww!UCR#G#oTkdcvuOR+Mwjzx$9$(9xf^ zzrUe16?H9sHM(N8YiXnRcFNRB$N_8lK$s4O|K`*QrGKkfo0vbS0RMb-HMvAR@b zCCoWJ&7R;OK?G<#nuvs>Dwl9z1}_Kibu)pX21F}$U<>>Os4J!blrb?T689wJ3JRN^ zhT0V=$Q8P0by2`42UenKagHD=D=STvv?->92s6vF1W6GTg+m0cRz)>Ffk)MeIz^Jh z4OCH)`W80yS2yh`>_;qT0mX6q48zA1_zJMmds5fG~(as0vp#_gQkb&tK3Jp-T{w zBXJ`NirojP$-!%4^~p{580GX%1cvwU_Ca^oZh#@m@8{exv0P8j=XPNF`kWLKWr;Ix zEmo3Y88(R1q(#6PAm!jJYqjDc#ge?05d=|WdQthJs>Vk}pi@C|lMH!S3nkeElEH0s zP=pjV78iJ0#BDa(0%$;58D8i`ajzo7uH?hLv(l*~NClB}jsPg!Op6T8h^z(YZHxtH zMVew6iI*teW>85YH!G$@c(|Q%gbx8C9t{}|U2rb9z~{gy6M4;25azWY3~*q1ax z31613WW4nne9=k~=FD~@naDUKyJTwhbZEIg?p>%N$PJ_Q?;zy4`b=m{)qH+W>USwO zj+!zd^n05Znr`vAa|5;m;?o-gR}PbDDMQG0DZ5KfZ-Blbi9y9HRyNc?6yo#byWgC- Gbk$!DUf@6g diff --git a/usr/share/plymouth/themes/tileos/throbber-0001.png b/usr/share/plymouth/themes/tileos/throbber-0001.png new file mode 100644 index 0000000000000000000000000000000000000000..388d5eb689adf2860676eae569e82a365ea2ae62 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!3HEx>&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>TV z)5S3)qw(!EL%s$D0awS5b#taMC$$O+C6yR%obj?Yt$y)skQqQwqrH~vYE-tkpXQZw zmgRecPOYyxJL!bQJ;{2@M-@4rzrDD+cXdI6*}b1l?aJr+a_7nI-DQ4DnLqh}0W;gr h4wj$2j9_CPTw|=Ru;F2L@?i$?Jzf1=);T3K0RUQUKt2Ef literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/throbber-0002.png b/usr/share/plymouth/themes/tileos/throbber-0002.png new file mode 100644 index 0000000000000000000000000000000000000000..efd6627494dd0fa66ceb30245a0f2e731a98e3c8 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!3HEx>&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>Ta z)5S3)qw(#vjl4$`1Y8}9{|2&~2DWn_x#*RyQnG3K=`&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>Ta z)5S3)qw(#vjl4$`1Y8}9{|2&~2DWn_x#*RyQnG3K=`&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W>Tl z)5S3)qw(#vjl2yCA}j%=_RkX3o+UV}^_X%*;_v-;d;6Na-$_M?0hI#5gZS*Q0L@hU z`PJ_izIn6f+AY=f*JfR^RZY>euF;)4*Sz06rALBqhqm<|Ag|o~o`7s&cg(SdL^hsJ g9V|bOK@9oug5hhY4UfFugnW>Ir>mdKI;Vst0No2ftN;K2 literal 0 HcmV?d00001 diff --git a/usr/share/plymouth/themes/tileos/throbber-0005.png b/usr/share/plymouth/themes/tileos/throbber-0005.png new file mode 100644 index 0000000000000000000000000000000000000000..dc26b2c9ca9bd0e3a4248ef689aed0d4654b1934 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0YGfT!3HEx>&E;6Qk(@Ik;M!Q+`=Ht$S`Y;1W+*9 z)5S3)qw(!EL#_h~JPv`ke?Q$Kw_z@epjYPN2OsV|d!U|j5o8(=G;HmQT-dSWSMgfY ztM~R^_v!38Y+B!bXYX}y_IYjD`}lTN=a;1EB{yb@&3Gc{`Kgx?tn0y5-iaq|cx);H PUxWCbu6{1-oD!M -# Copyright © 2014-2016 Juliette Taka -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. -# -# Written by: Alberto Milone -# -# Based on the example provided with the "script plugin" written by: -# Charlie Brej -# - - -#------------------------------- Constants ----------------------------------------- -NB_ROTATION_STEPS = 70; -NB_REFRESHS_BETWEEN_ANIMS = 3; - -# Initial position of the center of the logo in % of background -DEBIAN_POS_PCT.y = 0.7; # Debian image position in % of screen height -DEBIAN_HEIGHT_PCT = 0.07; # Debian image height in % of smallest screen dimension -LOGO_CENTER_PCT.x = 0.5; # Debian swirl image position in % of screen height & width -LOGO_CENTER_PCT.y = 0.5; -LOGO_SIZE_PCT = 0.18; # Debian swirl image size in % of smallest screen dimension -PROGRESS_POS_PCT.y = 0.65; -PROGRESS_HEIGHT_PCT = 0.005; - -#------------------------------- Globals ------------------------------------------- -# are we currently prompting for a password? -prompt_active = 0; - -# Globals to share progress time / percent with intersted functions -progress_time = 0; -progress_pct = 0; - -# Variables for glow rotation animation -anim_start_time = NULL; -anim_status = "stopped"; -refresh_iter = 0; -anim_iter = 0; - -#-----------------------------Text-image functions---------------------------- - -# Set the text colour in (rgb / 256) -text_colour.red = 1.0; -text_colour.green = 1.0; -text_colour.blue = 1.0; - -# Tinted text #988592 -tinted_text_colour.red = 1.0; -tinted_text_colour.green = 1.0; -tinted_text_colour.blue = 1.0; - -# Action Text - #ffffff - RGB 255 255 255 -action_text_colour.red = 1.0; -action_text_colour.green = 1.0; -action_text_colour.blue = 1.0; - -# Orange - #ff4012 - RGB 255 64 18 -debugsprite = Sprite(); -debugsprite_bottom = Sprite(); -debugsprite_bottom.SetPosition(0, (Window.GetHeight (0) - 20), 1); -debugsprite_medium = Sprite(); -debugsprite_medium.SetPosition(0, (Window.GetHeight (0) - 100), 1); - -# General purpose function to create text -fun WriteText (text, colour) { - image = Image.Text (text, colour.red, colour.green, colour.blue); - return image; -} - -fun ImageFromText (text) { - image = WriteText (text, text_colour); - return image; -} - -fun ImageFromTintedText (text) { - image = WriteText (text, tinted_text_colour); - return image; -} - -fun ImageFromActionText (text) { - image = WriteText (text, action_text_colour); - return image; -} - -fun Debug(text) { - debugsprite.SetImage(ImageFromText (text)); -} - -fun DebugBottom(text) { - debugsprite_bottom.SetImage(ImageFromText (text)); -} - -fun DebugMedium(text) { - debugsprite_medium.SetImage(ImageFromText (text)); -} - -#Debug("Window.GetHeight(0) = " + Window.GetHeight(0)); -fun TextYOffset() { - local.y; - local.text_height; - local.min_height; - - # Put the 1st line below the logo + some spacing - y = debian_sprite.GetY() + debian.GetHeight(); - #Debug("y = " + y); - - text_height = first_line_height * 7.5; - min_height = Window.GetHeight(); - #Debug("text_height=" + text_height + "; min_height=" + min_height); - - if (y + text_height > min_height) - y = min_height - text_height; - - return y; -} - - -#----------------------------- Screen/window setup --------------------------- -# Compute screen/image ratio and scale the background accordingly -window_max.width = Window.GetX() * 2 + Window.GetWidth(); -window_max.height = Window.GetY() * 2 + Window.GetHeight(); -screen_ratio = window_max.width / window_max.height; -small_dimension = Math.Min(window_max.width, window_max.height); -#Debug("Window.GetX():" + Window.GetX() + ", Window.GetY():" + Window.GetY()); -#Debug("Window is [" + window_max.width + ";" + window_max.height + "], ratio=" + screen_ratio); - -debian_height = small_dimension * DEBIAN_HEIGHT_PCT; -debian_pos.y = window_max.height * DEBIAN_POS_PCT.y - debian_height/2; -logo_size = small_dimension * LOGO_SIZE_PCT; -logo_center.x = window_max.width * LOGO_CENTER_PCT.x; -logo_center.y = window_max.height * LOGO_CENTER_PCT.y; -#Debug("Logo center at [" + logo_center.x + ";" + logo_center.y + "], size=" + logo_size + "px"); - -logo_pos.x = logo_center.x - logo_size/2; -logo_pos.y = logo_center.y - logo_size/2; - -progress_height = small_dimension * PROGRESS_HEIGHT_PCT; -progress_pos.y = window_max.height * PROGRESS_POS_PCT.y - progress_height/2; - -#------------------------------- Background ---------------------------------------- -bg_image = Image("background.png"); -bg_image_ratio = bg_image.GetWidth() / bg_image.GetHeight(); -if (screen_ratio > bg_image_ratio) - bg_scale_factor = window_max.width / bg_image.GetWidth(); -else - bg_scale_factor = window_max.height / bg_image.GetHeight(); -scaled_bg_image = bg_image.Scale(bg_image.GetWidth() * bg_scale_factor, - bg_image.GetHeight() * bg_scale_factor); - -# Display background -bg_sprite = Sprite(scaled_bg_image); -bg_sprite.SetPosition(Window.GetX() + Window.GetWidth() / 2 - scaled_bg_image.GetWidth() / 2, - Window.GetY() + Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, - -1000); - - -#------------------------------- Logo ---------------------------------------------- -logo = Image("logo.png"); -logo_scale_factor = logo_size / logo.GetWidth(); -logo = logo.Scale(logo.GetWidth() * logo_scale_factor, - logo.GetHeight() * logo_scale_factor); -logo_to_top_edge = Window.GetHeight() * 0.3; -logo_sprite = Sprite(logo); -logo_sprite.SetPosition(logo_pos.x, logo_pos.y, -50); - - -#------------------------------String functions------------------------------- - -# This is the equivalent for strstr() -fun StringString(string, substring) { - start = 0; - while (String(string).CharAt (start)) { - walk = 0; - while (String(substring).CharAt (walk) == String(string).CharAt (start + walk) ) { - walk++; - if (!String(substring).CharAt (walk)) return start; - } - start++; - } - - return NULL; -} - -fun StringLength (string) { - index = 0; - while (String(string).CharAt(index)) index++; - return index; -} - -fun StringCopy (source, beginning, end) { - local.destination = ""; - for (index = beginning; ( ( (end == NULL) || (index <= end) ) && (String(source).CharAt(index)) ); index++) { - local.destination += String(source).CharAt(index); - } - - return local.destination; -} - -fun StringReplace (source, pattern, replacement) { - local.found = StringString(source, pattern); - if (local.found == NULL) - return source; - - local.new_string = StringCopy (source, 0, local.found - 1) + - replacement + - StringCopy (source, local.found + StringLength(pattern), NULL); - - return local.new_string; -} - -# it makes sense to use it only for -# numbers up to 100 -fun StringToInteger (str) { - int = -1; - for (i=0; i<=100; i++) { - if (i+"" == str) { - int = i; - break; - } - } - return int; -} - -#----------------------------------------------------------------------------- - -bits_per_pixel = Window.GetBitsPerPixel (); -# TODO need to handle 16 colors ? -#if (bits_per_pixel == 4) { -# logo_filename = "debian_logo16.png"; -# progress_dot_off_filename = "progress_dot_off16.png"; -# progress_dot_on_filename = "progress_dot_on16.png"; -# password_dot_filename = "password_dot.png"; -# password_field_filename = "password_field16.png"; -#} else { -# logo_filename = "debian_logo.png"; -# progress_dot_off_filename = "progress_dot_off.png"; -# progress_dot_on_filename = "progress_dot_on.png"; - password_dot_filename = "password_dot.png"; - password_field_filename = "password_field.png"; -#} - -message_notification[0].image = ImageFromTintedText (""); -message_notification[1].image = ImageFromTintedText (""); -fsck_notification.image = ImageFromActionText (""); - -status = "normal"; - -# use a fixed string with ascending and descending stems to calibrate the -# bounding box for the first message, so the messages below don't move up -# and down according to *their* height. -first_line_height = ImageFromTintedText ("AfpqtM").GetHeight(); - -# if the user has a 640x480 or 800x600 display, we can't quite fit everything -# (including passphrase prompts) with the target spacing, so scoot the text up -# a bit if needed. -top_of_the_text = TextYOffset(); - - -#-------------------------------Progress Indicator----------------------------- -# Implement in boot progress callback -fun animate_progress_indicator (time, progress) { - progress_time = time; - progress_pct = progress; - - #Debug ("mode = " + Plymouth.GetMode() + ", progress_time = " + progress_time + ", progress_pct = " + progress_pct); - -} - -#----------------------------------------- Progress Callback -------------------------------- -if (Plymouth.GetMode () == "boot") -{ - progress = Image("progress_box.png"); - progress_scale_factor = progress_height / progress.GetHeight(); - progress = progress.Scale(progress.GetWidth() * progress_scale_factor, progress.GetHeight() * progress_scale_factor); - - progress_sprite = Sprite(progress); - progress_sprite.SetPosition(window_max.width / 2 - progress.GetWidth() / 2, progress_pos.y, 0); - - - progress_bar = Image("progress_bar.png"); - progress_bar = progress_bar.Scale(progress_bar.GetWidth() * progress_scale_factor, progress_bar.GetHeight() * progress_scale_factor); - - progress_bar_sprite = Sprite(); - progress_bar_sprite.SetPosition(window_max.width / 2 - progress_bar.GetWidth() / 2, progress_pos.y, 1); -} - -fun progress_callback (duration, progress) -{ - if (Plymouth.GetMode () == "boot") - { - if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) - { - progress = progress_bar.Scale(progress_bar.GetWidth() * progress, progress_bar.GetHeight()); - progress_bar_sprite.SetImage(progress); - } - } - - animate_progress_indicator(duration, progress); -} - - -#-----------------------------------------Label utility functions--------------------- - -# label should be either a string or NULL -# Images for n lines will be created and returned as items of the -# message_label array -# -fun get_message_label (label, is_fake, is_action_line) { - #Debug("Get Label position"); - local.message_label; - - if (is_fake) - # Create a fake label so as to get the y coordinate of - # a standard-length label. - local.message_image = ImageFromTintedText ("This is a fake message"); - else - local.message_image = (is_action_line) && ImageFromActionText (label) || ImageFromTintedText (label); - - message_label.width = message_image.GetWidth (); - message_label.height = message_image.GetHeight (); - - # Center the line horizontally - message_label.x = Window.GetX () + Window.GetWidth () / 2 - message_label.width / 2; - - message_label.y = top_of_the_text; - - # Put the 2nd line below the fsck line - if (is_action_line) { - local.fsck_label.y = message_label.y + (first_line_height + first_line_height / 2); - message_label.y = local.fsck_label.y + (first_line_height * 1.5); - } - - #Debug("action label x = " + message_label.x + " y = " + message_label.y ); - -# message_debug = "msg_x = " + message_label.x + " msg_y = " + message_label.y + -# "msg_width = " + message_label.width + " msg_height = " + -# message_label.height + " message = " + label; -# Debug(message_debug); - - return message_label; - -} - -# Create an fsck label and/or get its position -fun get_fsck_label (label, is_fake) { - # Debug("Get Label position"); - local.fsck_label = global.progress_label; - - if (is_fake) - fsck_label.image = ImageFromTintedText ("This is a fake message"); - else - fsck_label.image = ImageFromTintedText (label); - - fsck_label.width = fsck_label.image.GetWidth (); - fsck_label.height = fsck_label.image.GetHeight (); - - # Centre the label horizontally - fsck_label.x = Window.GetX () + Window.GetWidth () / 2 - fsck_label.width / 2; - - local.first_label = get_message_label (label, 1, 0); - - # Place the label below the 1st message line - fsck_label.y = local.first_label.y + local.first_label.height + (local.first_label.height / 2); - -# message_debug = "msg_x = " + fsck_label.x + " msg_y = " + fsck_label.y + -# "msg_width = " + fsck_label.width + " msg_height = " + -# fsck_label.height + " message = " + label; -# Debug(message_debug); - - return fsck_label; -} - -#-----------------------------------------Message stuff -------------------------------- -# - -# Set up a message label -# -# NOTE: this is called when doing something like 'plymouth message "hello world"' -# -fun setup_message (message_text, x, y, z, index) { - #DebugMedium("Message setup: " + message_text); - global.message_notification[index].image = (index) && ImageFromActionText (message_text) || ImageFromTintedText (message_text); - - # Set up the text message, if any - message_notification[index].x = x; - message_notification[index].y = y; - message_notification[index].z = z; - - message_notification[index].sprite = Sprite (); - message_notification[index].sprite.SetImage (message_notification[index].image); - message_notification[index].sprite.SetX (message_notification[index].x); - message_notification[index].sprite.SetY (message_notification[index].y); - message_notification[index].sprite.SetZ (message_notification[index].z); - -} - -fun show_message (index) { - if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(1); -} - -fun hide_message (index) { - if (global.message_notification[index].sprite) global.message_notification[index].sprite.SetOpacity(0); -} - - - - -# the callback function is called when new message should be displayed. -# First arg is message to display. -fun message_callback (message) -{ - # Debug("Message callback"); - is_fake = 0; - if (!message || (message == "")) is_fake = 1; - - local.substring = "keys:"; - - # Look for the "keys:" prefix - local.keys = StringString(message, local.substring); - - local.is_action_line = (keys != NULL); - #Debug("keys " + local.keys + " substring length = " + StringLength(local.substring)); - - # Get the message without the "keys:" prefix - if (keys != NULL) - message = StringCopy (message, keys + StringLength(local.substring), NULL); - - # Get the message without the "fsckd-cancel-msg" prefix as we don't support i18n - substring = "fsckd-cancel-msg:"; - keys = StringString(message, substring); - if (keys != NULL) - message = StringCopy(message, keys + StringLength(substring), NULL); - - local.label.is_fake = is_fake; - label = get_message_label(message, is_fake, is_action_line); - label.z = 10000; - - setup_message (message, label.x, label.y, label.z, is_action_line); - if (prompt_active && local.is_action_line) - hide_message (is_action_line); - else - show_message (is_action_line); - -} - - -#-----------------------------------------Display Password stuff ----------------------- -# - -fun password_dialogue_setup (message_label) { - #Debug("Password dialog setup"); - - local.entry; - local.bullet_image; - - bullet_image = Image (password_dot_filename); - entry.image = Image (password_field_filename); - - # Hide the normal labels - prompt_active = 1; - if (message_notification[1].sprite) hide_message (1); - - # Set the prompt label - label = get_message_label(message_label, 0, 1); - label.z = 10000; - - setup_message (message_label, label.x, label.y, label.z, 2); - show_message (2); - - # Set up the text entry which contains the bullets - entry.sprite = Sprite (); - entry.sprite.SetImage (entry.image); - - # Centre the box horizontally - entry.x = Window.GetX () + Window.GetWidth () / 2 - entry.image.GetWidth () / 2; - - # Put the entry below the second label. - entry.y = message_notification[2].y + label.height * 1.5; - - #DebugMedium("entry x = " + entry.x + ", y = " + entry.y); - entry.z = 10000; - entry.sprite.SetX (entry.x); - entry.sprite.SetY (entry.y); - entry.sprite.SetZ (entry.z); - - global.password_dialogue = local; -} - -fun password_dialogue_opacity (opacity) { - #Debug("Setting password dialog opacity to " + opacity); - global.password_dialogue.opacity = opacity; - local = global.password_dialogue; - - # You can make the box translucent with a float - # entry.sprite.SetOpacity (0.3); - entry.sprite.SetOpacity (opacity); - label.sprite.SetOpacity (opacity); - - if (bullets) { - for (index = 0; bullets[index]; index++) { - bullets[index].sprite.SetOpacity (opacity); - } - } -} - - -# The callback function is called when the display should display a password dialogue. -# First arg is prompt string, the second is the number of bullets. -fun display_password_callback (prompt, bullets) { - #Debug("Password dialog setup"); - - global.status = "password"; - if (!global.password_dialogue) password_dialogue_setup(prompt); - password_dialogue_opacity (1); - bullet_width = password_dialogue.bullet_image.GetWidth(); - bullet_y = password_dialogue.entry.y + - password_dialogue.entry.image.GetHeight () / 2 - - password_dialogue.bullet_image.GetHeight () / 2; - margin = bullet_width; - spaces = Math.Int( (password_dialogue.entry.image.GetWidth () - (margin * 2)) / (bullet_width / 2 ) ); - #DebugMedium ("spaces = " + spaces + ", bullets = " + bullets); - bullets_area.width = margin + spaces * (bullet_width / 2); - bullets_area.x = Window.GetX () + Window.GetWidth () / 2 - bullets_area.width / 2; - #DebugBottom ("pwd_entry (x,y) = " + password_dialogue.entry.x + "," + password_dialogue.entry.y - # + "), bullets_area.x = " + bullets_area.x + ", bullets_area.width = " + bullets_area.width); - if (bullets > spaces) - bullets = spaces; - for (index = 0; password_dialogue.bullets[index] || index < bullets; index++){ - if (!password_dialogue.bullets[index]) { - password_dialogue.bullets[index].sprite = Sprite (); - password_dialogue.bullets[index].sprite.SetImage (password_dialogue.bullet_image); - password_dialogue.bullets[index].x = bullets_area.x + # password_dialogue.entry.x + margin + - index * bullet_width / 2; - password_dialogue.bullets[index].sprite.SetX (password_dialogue.bullets[index].x); - password_dialogue.bullets[index].y = bullet_y; - password_dialogue.bullets[index].sprite.SetY (password_dialogue.bullets[index].y); - password_dialogue.bullets[index].z = password_dialogue.entry.z + 1; - password_dialogue.bullets[index].sprite.SetZ (password_dialogue.bullets[index].z); - } - - password_dialogue.bullets[index].sprite.SetOpacity (0); - - if (index < bullets) { - password_dialogue.bullets[index].sprite.SetOpacity (1); - } - } -} - -Plymouth.SetDisplayPasswordFunction (display_password_callback); - -Plymouth.SetMessageFunction (message_callback); - -Plymouth.SetBootProgressFunction (progress_callback); - -# Plymouth.SetBootProgressFunction: the callback function is called with two numbers, the progress (between 0 and 1) and the time spent booting so far -# Plymouth.SetRootMountedFunction: the callback function is called when a new root is mounted -# Plymouth.SetKeyboardInputFunction: the callback function is called with a string containing a new character entered on the keyboard - -#----------------------------------------- FSCK Counter -------------------------------- - -# Initialise the counter -fun init_fsck_count () { - # The number of fsck checks in this cycle - global.counter.total = 0; - # The number of fsck checks already performed + the current one - global.counter.current = 1; - # The previous fsck - global.counter.last = 0; -} - -# Increase the total counter -fun increase_fsck_count () { - global.counter.total++; -} - -fun increase_current_fsck_count () { - global.counter.last = global.counter.current++; -} - -# Clear the counter -fun clear_fsck_count () { - global.counter = NULL; - init_fsck_count (); -} - -#----------------------------------------- Progress Label ------------------------------ - - -# Change the opacity level of a progress label -# -# opacity = 1 -> show -# opacity = 0 -> hide -# opacity = 0.3 (or any other float) -> translucent -# -fun set_progress_label_opacity (opacity) { - # the label - progress_label.sprite.SetOpacity (opacity); - - # Make the slot available again when hiding the bar - # So that another bar can take its place - if (opacity == 0) { - progress_label.is_available = 1; - progress_label.device = ""; - } -} - -# Set up a new Progress Bar -# -# TODO: Make it possible to reuse (rather than recreate) a bar -# if .is_available = 1. Ideally this would just reset the -# label, the associated -# device and the image size of the sprite. - -fun init_progress_label (device, status_string) { - # Make the slot unavailable - global.progress_label.is_available = 0; - progress_label.progress = 0; - progress_label.device = device; - progress_label.status_string = status_string; -} - -# See if the progress label is keeping track of the fsck -# of "device" -# -fun device_has_progress_label (device) { - #DebugBottom ("label device = " + progress_label.device + " checking device " + device); - return (progress_label.device == device); -} - -# Update the Progress bar which corresponds to index -# -fun update_progress_label (progress) { - # If progress is NULL then we just refresh the label. - # This happens when only counter.total has changed. - if (progress != NULL) { - progress_label.progress = progress; - - #Debug("device " + progress_label.device + " progress " + progress); - - # If progress >= 100% hide the label and make it available again - if (progress >= 100) { - set_progress_label_opacity (0); - - # See if we any other fsck check is complete - # and, if so, hide the progress bars and the labels - on_fsck_completed (); - - return 0; - } - } - # Update progress label here - # - # FIXME: the queue logic from this theme should really be moved into mountall - # instead of using string replacement to deal with localised strings. - label = StringReplace (progress_label.status_string[0], "%1$d", global.counter.current); - label = StringReplace (label, "%2$d", global.counter.total); - label = StringReplace (label, "%3$d", progress_label.progress); - label = StringReplace (label, "%%", "%"); - - progress_label = get_fsck_label (label, 0); - #progress_label.progress = progress; - - progress_label.sprite = Sprite (progress_label.image); - - # Set up the bar - progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1); - - set_progress_label_opacity (1); - -} - -# Refresh the label so as to update counters -fun refresh_progress_label () { - update_progress_label (NULL); -} - -#----------------------------------------- FSCK Queue ---------------------------------- - -# Initialise the fsck queue -fun init_queue () { - global.fsck_queue[0].device; - global.fsck_queue[0].progress; - global.fsck_queue.counter = 0; - global.fsck_queue.biggest_item = 0; -} - -fun clear_queue () { - global.fsck_queue = NULL; - init_queue (); -} - -# Return either the device index in the queue or -1 -fun queue_look_up_by_device (device) { - for (i=0; i <= fsck_queue.biggest_item; i++) { - if ((fsck_queue[i]) && (fsck_queue[i].device == device)) - return i; - } - return -1; -} - -# Keep track of an fsck process in the queue -fun add_fsck_to_queue (device, progress) { - # Look for an empty slot in the queue - for (i=0; global.fsck_queue[i].device; i++) { - continue; - } - local.index = i; - - # Set device and progress - global.fsck_queue[local.index].device = device; - global.fsck_queue[local.index].progress = progress; - - # Increase the queue counter - global.fsck_queue.counter++; - - # Update the max index of the array for iterations - if (local.index > global.fsck_queue.biggest_item) - global.fsck_queue.biggest_item = local.index; - - #DebugMedium ("Adding " + device + " at " + local.index); -} - -fun is_queue_empty () { - return (fsck_queue.counter == 0); -} - -fun is_progress_label_available () { - return (progress_label.is_available == 1); -} - - -# This should cover the case in which the fsck checks in -# the queue are completed before the ones showed in the -# progress label -fun on_queued_fsck_completed () { - if (!is_queue_empty ()) - return; - - # Hide the extra label, if any - #if (progress_bar.extra_label.sprite) - # progress_bar.extra_label.sprite.SetOpacity(0); -} - -fun remove_fsck_from_queue (index) { - # Free memory which was previously allocated for - # device and progress - global.fsck_queue[index].device = NULL; - global.fsck_queue[index].progress = NULL; - - # Decrease the queue counter - global.fsck_queue.counter--; - - # See if there are other processes in the queue - # if not, clear the extra_label - on_queued_fsck_completed (); -} - -fun on_fsck_completed () { - # We have moved on to tracking the next fsck - increase_current_fsck_count (); - - if (!is_progress_label_available ()) - return; - - if (!is_queue_empty ()) - return; - - # Hide the progress label - if (progress_label.sprite) - progress_label.sprite.SetOpacity (0); - - # Clear the queue - clear_queue (); - - # Clear the fsck counter - clear_fsck_count (); -} - -# Update an fsck process that we keep track of in the queue -fun update_progress_in_queue (index, device, progress) { - # If the fsck is complete, remove it from the queue - if (progress >= 100) { - remove_fsck_from_queue (index); - on_queued_fsck_completed (); - return; - } - - global.fsck_queue[index].device = device; - global.fsck_queue[index].progress = progress; - -} - -# TODO: Move it to some function -# Create an empty queue -#init_queue (); - - -#----------------------------------------- FSCK Functions ------------------------------ - - -# Either add a new bar for fsck checks or update an existing bar -# -# NOTE: no more than "progress_bar.max_number" bars are allowed -# -fun fsck_check (device, progress, status_string) { - - # The 1st time this will take place - if (!global.progress_label) { - # Increase the fsck counter - increase_fsck_count (); - - # Set up a new label for the check - init_progress_label (device, status_string); - update_progress_label (progress); - - return; - } - - - if (device_has_progress_label (device)) { - # Update the progress of the existing label - update_progress_label (progress); - } - else { - # See if there's already a slot in the queue for the device - local.queue_device_index = queue_look_up_by_device(device); - - # See if the progress_label is available - if (progress_label.is_available) { - -# local.my_string = "available index " + local.available_index + " progress_bar counter is " + progress_bar.counter; -# Debug(local.my_string); - - - # If the fsck check for the device was in the queue, then - # remove it from the queue - if (local.queue_device_index >= 0) { - remove_fsck_from_queue (index); - } - else { - # Increase the fsck counter - increase_fsck_count (); - } - -# local.my_string += local.message; - #Debug("setting new label for device " + device + " progress " + progress); - - # Set up a new label for the check - init_progress_label (device, status_string); - update_progress_label (progress); - - } - # If the progress_label is not available - else { - - # If the fsck check for the device is already in the queue - # just update its progress in the queue - if (local.queue_device_index >= 0) { - #DebugMedium("Updating queue at " + local.queue_device_index + " for device " + device); - update_progress_in_queue (local.queue_device_index, device, progress); - } - # Otherwise add the check to the queue - else { - #DebugMedium("Adding device " + device + " to queue at " + local.queue_device_index); - add_fsck_to_queue (device, progress); - - # Increase the fsck counter - increase_fsck_count (); - - refresh_progress_label (); - } - - } - } - -# if (!is_queue_empty ()) { -# DebugBottom("Extra label for "+ device); - #} -# else { -# DebugBottom("No extra label for " + device + ". 1st Device in the queue "+ fsck_queue[0].device + " counter = " + global.fsck_queue.counter); -# } -} - - -#-----------------------------------------Update Status stuff -------------------------- -# -# The update_status_callback is what we can use to pass plymouth whatever we want so -# as to make use of features which are available only in this program (as opposed to -# being available for any theme for the script plugin). -# -# Example: -# -# Thanks to the current implementation, some scripts can call "plymouth --update=fsck:sda1:40" -# and this program will know that 1) we're performing and fsck check, 2) we're checking sda1, -# 3) the program should set the label progress to 40% -# -# Other features can be easily added by parsing the string that we pass plymouth with "--update" -# -fun update_status_callback (status) { -# Debug(status); - if (!status) return; - - string_it = 0; - update_strings[string_it] = ""; - - for (i=0; (String(status).CharAt(i) != ""); i++) { - local.temp_char = String(status).CharAt(i); - if (temp_char != ":") - update_strings[string_it] += temp_char; - else - update_strings[++string_it] = ""; - } - -# my_string = update_strings[0] + " " + update_strings[1] + " " + update_strings[2]; -# Debug(my_string); - # Let's assume that we're dealing with these strings fsck:sda1:40 - if ((string_it >= 2) && (update_strings[0] == "fsck")) { - - device = update_strings[1]; - progress = update_strings[2]; - status_string[0] = update_strings[3]; # "Checking disk %1$d of %2$d (%3$d %% complete)" - if (!status_string[0]) - status_string[0] = "Checking disk %1$d of %2$d (%3$d %% complete)"; - - if ((device != "") && (progress != "")) { - progress = StringToInteger (progress); - - # Make sure that the fsck_queue is initialised - if (!global.fsck_queue) - init_queue (); - - # Make sure that the fsck counter is initialised - if (!global.counter) - init_fsck_count (); - -# if (!global.progress_bar.extra_label.sprite) -# create_extra_fsck_label (); - - # Keep track of the fsck check - fsck_check (device, progress, status_string); - } - - } - - # systemd-fsckd pass fsckd::: - if (update_strings[0] == "fsckd") { - number_devices = StringToInteger(update_strings[1]); - - if (number_devices > 0) { - label = update_strings[3]; - - progress_label = get_fsck_label (label, 0); - progress_label.sprite = Sprite (progress_label.image); - progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1); - progress_label.sprite.SetOpacity (1); - } else { - if (progress_label.sprite) - progress_label.sprite.SetOpacity (0); - } - } - -} -Plymouth.SetUpdateStatusFunction (update_status_callback); - -#-----------------------------------------Display Question stuff ----------------------- -# -# TODO: Implement this if needed -# -# The callback function is called when the display should display a question dialogue. -# First arg is prompt string, the second is the entry contents. -#fun display_question_callback (prompt_string, entry_contents) -#{ -# time++; -#} -# -#Plymouth.SetDisplayQuestionFunction (display_question_callback); - -#-----------------------------------------Display Normal stuff ----------------------- -# -# The callback function is called when the display should return to normal -fun display_normal_callback () -{ - global.status = "normal"; - if (global.password_dialogue) { - password_dialogue_opacity (0); - global.password_dialogue = NULL; - if (message_notification[2].sprite) hide_message(2); - prompt_active = 0; - } - - if (message_notification[1].sprite) { - show_message (1); - } - -} - -Plymouth.SetDisplayNormalFunction (display_normal_callback); - - -#----------------------------------------- Quit -------------------------------- - -fun quit_callback () -{ -} - -Plymouth.SetQuitFunction(quit_callback); diff --git a/usr/share/plymouth/themes/tileos/watermark.png b/usr/share/plymouth/themes/tileos/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..41d8aeb944282bf9cd8ca1aaa29e98a05cca4666 GIT binary patch literal 4306 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