From 3fa332024d3c43c303deb86da6460a22cb6c74f9 Mon Sep 17 00:00:00 2001 From: DWW Date: Tue, 1 Dec 2020 19:26:20 +0200 Subject: [PATCH] Added Elysian Archives Theme --- elysian-archives/elysian-archives.plymouth | 8 + elysian-archives/elysian-archives.script | 512 +++++++++++++++++++++ elysian-archives/fsck-fade.png | Bin 0 -> 326 bytes elysian-archives/fsck-fade_16bit.png | Bin 0 -> 98 bytes elysian-archives/logo.png | Bin 0 -> 5913 bytes elysian-archives/logo_16bit.png | Bin 0 -> 5299 bytes elysian-archives/passw-dialog.png | Bin 0 -> 101 bytes elysian-archives/progress-fade.png | Bin 0 -> 267 bytes elysian-archives/progress-fade_16bit.png | Bin 0 -> 88 bytes elysian-archives/progress-meter.png | Bin 0 -> 236 bytes elysian-archives/progress-meter_16bit.png | Bin 0 -> 88 bytes elysian-archives/spinner.png | Bin 0 -> 981 bytes elysian-archives/test.png | Bin 0 -> 136 bytes elysian-archives/wallpaper.png | Bin 0 -> 2015 bytes 14 files changed, 520 insertions(+) create mode 100644 elysian-archives/elysian-archives.plymouth create mode 100644 elysian-archives/elysian-archives.script create mode 100644 elysian-archives/fsck-fade.png create mode 100644 elysian-archives/fsck-fade_16bit.png create mode 100644 elysian-archives/logo.png create mode 100644 elysian-archives/logo_16bit.png create mode 100644 elysian-archives/passw-dialog.png create mode 100644 elysian-archives/progress-fade.png create mode 100644 elysian-archives/progress-fade_16bit.png create mode 100644 elysian-archives/progress-meter.png create mode 100644 elysian-archives/progress-meter_16bit.png create mode 100644 elysian-archives/spinner.png create mode 100644 elysian-archives/test.png create mode 100644 elysian-archives/wallpaper.png diff --git a/elysian-archives/elysian-archives.plymouth b/elysian-archives/elysian-archives.plymouth new file mode 100644 index 0000000..381bf0e --- /dev/null +++ b/elysian-archives/elysian-archives.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=Elysian Archives +Description=Elysian Archives Logo +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/elysian-archives +ScriptFile=/usr/share/plymouth/themes/xubuntu-logo/elysian-archives.script diff --git a/elysian-archives/elysian-archives.script b/elysian-archives/elysian-archives.script new file mode 100644 index 0000000..b5fc201 --- /dev/null +++ b/elysian-archives/elysian-archives.script @@ -0,0 +1,512 @@ + /************************************************************************** + * + * Copyright (C) 2011 The Xubuntu Community + * Copyright (C) 2009 Canonical Ltd. + * + * 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 3 of the License, 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, see . + * + * Written by: Mad Nick + * + **************************************************************************/ + +/* + * Related to the screen */ + +screen_width = Window.GetWidth(); +screen_height = Window.GetHeight(); +screen_x = Window.GetX(); +screen_y = Window.GetY(); + +/**/ + +/* + * Images, check bits per pixel + * and load images accordingly */ + +background_image = Image("wallpaper.png"); +passw_dialog_input_image = Image("passw-dialog.png"); +bullet_image = Image("test.png"); + +bpp = Window.GetBitsPerPixel(); + +if (bpp == 4) { + + logotype_image = Image("logo_16bit.png"); + progress_meter_image = Image("progress-meter_16bit.png"); + progress_fade_image = Image("progress-fade_16bit.png"); + fsck_progress_meter_image = Image("progress-meter_16bit.png"); + fsck_progress_fade_image = Image("fsck-fade_16bit.png"); + +} +else { + + logotype_image = Image("logo.png"); + progress_meter_image = Image("progress-meter.png"); + progress_fade_image = Image("progress-fade.png"); + fsck_progress_meter_image = Image("progress-meter.png"); + fsck_progress_fade_image = Image("fsck-fade.png"); + +} + +/**/ + +/* + * Sprites */ + +ratio = screen_height / screen_width; +background_ratio = background_image.GetHeight() / background_image.GetWidth(); +factor = 0; + +if (ratio > background_ratio) { + + factor = screen_height / background_image.GetHeight(); + +} +else { + + factor = screen_width / background_image.GetWidth(); + +} + +scaled = background_image.Scale(background_image.GetWidth() * factor, background_image.GetHeight() * factor); +background_sprite = Sprite(scaled); +background_sprite.SetX(screen_x + screen_width / 2 - scaled.GetWidth() / 2); +background_sprite.SetY(screen_y + screen_height / 2 - scaled.GetHeight() / 2); + +logotype_sprite = Sprite(logotype_image); + +fsck_progress_meter_sprite = Sprite(fsck_progress_meter_image); +fsck_progress_fade_sprite = Sprite(fsck_progress_fade_image.Scale(1, fsck_progress_fade_image.GetHeight())); + +passw_dialog_input_sprite = Sprite(passw_dialog_input_image); +passw_lbl_sprite = Sprite(); + +msg_label_sprite = Sprite(); + +/**/ + +/* + * Misc */ + +counter = 0; + +fade_pos_x = (screen_width / 2) - (progress_meter_image.GetWidth() / 2); +fade_dir = 0; /* 0 = right, 1 = left */ + +fsck_running = 0; +fsck_dev_array; +fsck_dev_counter = 0; +fsck_fade_in_counter = 0; +fsck_done_fading = 0; + +stars_array; +stars_n = 0; + +//full_msg = ""; +msgs_line = [NULL,NULL,NULL,NULL,NULL]; + +/**/ + +/* + * Debug related */ + +debug = 0; +debug_sprite = Sprite(); + +fun debugOutput(str) { + + /* + * This will print to the top left corner */ + debug_sprite.SetImage(Image.Text(str)); + +} + +/**/ + +/* + * Setup the graphics properties */ +logotype_sprite.SetPosition(screen_x + (screen_width / 2) - (logotype_image.GetWidth() / 2), screen_y + (screen_height / 2) - (logotype_image.GetHeight() / 2)); +fsck_progress_meter_sprite.SetPosition(screen_x + (screen_width / 2) - (progress_meter_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 25); +fsck_progress_fade_sprite.SetPosition(screen_x + (screen_width / 2) - (progress_meter_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 25); +fsck_progress_meter_sprite.SetOpacity(0); +fsck_progress_fade_sprite.SetOpacity(0); +passw_dialog_input_sprite.SetPosition(screen_x + (screen_width / 2) - (passw_dialog_input_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 70); +passw_dialog_input_sprite.SetOpacity(0); +passw_lbl_sprite.SetOpacity(0); + +spin = 0; + +/* + * this function only goes up to 100 + * because thats all thats needed for + * the progress meter bar */ +fun atoi(str) { + + int = -1; + + for (i = 0; i <= 100; i++) { + + if (i + "" == str) { + + int = i; + + break; + + } + + } + + return int; + +} + +/* + * This handler will/can be invoked + * 50 times per second. + * + * According to the previous author of the + * splash script, without this callback + * the screen is not updated correctly */ +spinner_sprite; +spinner; + +fun refreshHandler() { + + if (spin < 3.14 * 2) { + + spin = spin + 0.1; + + } + else { + + spin = 0; + + } + + /* if fsck is running or the password is prompted, hide the spinner */ + if (fsck_running == 1 || passw_dialog_input_sprite.GetOpacity() == 1) { + + spinner_sprite.SetOpacity(0); + + } else { + + spinner = Image("spinner.png"); + spinner = spinner.Rotate(spin); + spinner_sprite = Sprite(spinner); + spinner_sprite.SetPosition(screen_x + (screen_width / 2) - (spinner.GetWidth() / 2), screen_y + (screen_height / 2) - (spinner.GetHeight() / 2) + (logotype_image.GetHeight() / 2) + 80); + + } + + if (fade_dir == 0) { + + counter++; + + if (counter >= 200) { + + fade_dir = 1; + + } + + } + else { + + counter--; + + if (counter <= 0) { + + fade_dir = 0; + + } + + } + + if ((fsck_running == 1) && (fsck_done_fading == 0)) { + + + fsck_progress_meter_sprite.SetOpacity(fsck_fade_in_counter); + fsck_progress_fade_sprite.SetOpacity(fsck_fade_in_counter); + + if (fsck_fade_in_counter < 1) { + + fsck_fade_in_counter+= 0.025; + + } + else { + + fsck_done_fading = 1; + + } + + } + +} + +Plymouth.SetRefreshFunction (refreshHandler); + +/**/ + +/* + * This function will display the password related information + * when being prompt with entering a password */ +fun showPasswordHandler(prompt, stars) { + + if (passw_dialog_input_sprite.GetOpacity() == 0 && passw_lbl_sprite.GetOpacity() == 0) { + + passw_dialog_input_sprite.SetOpacity(1); + passw_lbl_sprite.SetOpacity(1); + + } + + tmp_prompt_image = Image.Text(prompt, 1, 1, 1); + + passw_lbl_sprite.SetImage(tmp_prompt_image); + passw_lbl_sprite.SetPosition(screen_x + (screen_width / 2) - (tmp_prompt_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 50); + + for(i = 0; i < stars_n; i++) { + + stars_array[i] = NULL; + + } + + stars_n = 0; + + for(i = 0; (i < stars) && (i < 15); i++) { + + stars_array[i] = Sprite(bullet_image); + stars_array[i].SetPosition(screen_x + (((screen_width / 2) - (passw_dialog_input_image.GetWidth() / 2)) + (18 * i)) + 2, screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 75); + stars_n++; + + } + +} + +Plymouth.SetDisplayPasswordFunction(showPasswordHandler); + +/**/ + +fun displayNormalHandler() { + + /* + * Hide the password dialog and the bullets */ + + if (passw_dialog_input_sprite.GetOpacity() == 1) { + + passw_dialog_input_sprite.SetOpacity(0); + + } + + if (passw_lbl_sprite.GetOpacity() == 1) { + + passw_lbl_sprite.SetOpacity(0); + + } + + for(i = 0; i < stars_n; i++) { + + stars_array[i] = NULL; + + } + +} + +Plymouth.SetDisplayNormalFunction(displayNormalHandler); + +fun strlen(string) { + + i = 0; + + while (String(string).CharAt(i)) { + + i++; + + } + + return i; + +} + +/* + * This function will display the most current message */ +fun messageHandler(msg) { + + if ((msg == "") || !msg) { + + return 0; + + } + + if (msg.SubString(0, 5) == "keys:") { + + msg = msg.SubString(5, strlen(msg)); + + } + + # Get the message without the "fsckd-cancel-msg" prefix as we don't support i18n + if (msg.SubString(0, 17) == "fsckd-cancel-msg:") + msg = msg.SubString(17, strlen(msg)); + + //full_msg += msg + " "; + for(i = 4; i > 0; i--) { + + msgs_line[i] = msgs_line[i - 1]; + + } + + msgs_line[0] = Sprite(Image.Text(msg, 1, 1, 1)); + + dist = 1; + + for(i = 0; i < 5; i++) { + + if (msgs_line[i] != NULL) { + + msgs_line[i].SetPosition(screen_x + (screen_width / 2) - (msgs_line[i].GetImage().GetWidth() / 2), screen_y + (screen_height - msgs_line[i].GetImage().GetHeight()) - 20*dist); + dist++; + + } + + } + +} + +Plymouth.SetMessageFunction(messageHandler); + +/**/ + +/* + * Handles the updates passed to the plymouth daemon + * for example the FSCK data */ +fun statusHandler(status) { + + tmp_char; + status_array[0] = ""; + elem_count = 0; + + for (i = 0; String(status).CharAt(i) != ""; i++) { + + tmp_char = String(status).CharAt(i); + + if (tmp_char != ":") { + + status_array[elem_count] += tmp_char; + + } + else { + + elem_count++; + status_array[elem_count] = ""; + + } + + } + + if (status_array[0] == "fsck") { + + already_added = 0; + + if (fsck_running == 0) { + + /* + * use the dedicated message handler for this + * since there is no messages about fsck checks + * currently... */ + messageHandler("Routine disk drive check."); + + fsck_running = 1; + + } + + for(i = 0; i < fsck_dev_counter; i++) { + + /* + * check if the device already exist and update + * the progress only in that case */ + if (fsck_dev_array[i][0] == status_array[1]) { + + fsck_dev_array[i][1] = status_array[2]; /* progress */ + already_added = 1; + + } + + } + + /* + * if the device is not added, then add it */ + if (already_added == 0) { + + fsck_dev_array[fsck_dev_counter][0] = status_array[1]; /* device */ + fsck_dev_array[fsck_dev_counter][1] = status_array[2]; /* progress */ + fsck_dev_counter++; + + } + + /* + * update the progress */ + + total = 0; + + for(i = 0; i < fsck_dev_counter; i++) { + + total += atoi(fsck_dev_array[i][1]); + + } + + if (fsck_dev_counter > 0) { + + /* + * display the total percentage */ + fsck_progress_fade_sprite.SetImage(fsck_progress_fade_image.Scale((fsck_progress_meter_image.GetWidth() / 100) * (total / fsck_dev_counter), fsck_progress_fade_image.GetHeight())); + + } + + /**/ + + /* + * if the total progress is at maximum, + * make the progress meter go away, + * we might want to fade this out... */ + if (total == (100 * fsck_dev_counter)) { + + fsck_progress_meter_sprite.SetOpacity(0); + fsck_progress_fade_sprite.SetOpacity(0); + + } + + } + + # systemd-fsckd pass fsckd::: + if (status_array[0] == "fsckd") { + fsck_running = 1; + + # remove ",x" as we only care about integers + progress_str = status_array[2]; + progress = atoi(progress_str.SubString(0, strlen(progress_str) - 2)); + + fsck_progress_fade_sprite.SetImage(fsck_progress_fade_image.Scale((fsck_progress_meter_image.GetWidth() / 100) * progress, fsck_progress_fade_image.GetHeight())); + + /* + * if the total progress is at maximum, + * make the progress meter go away, + * we might want to fade this out... */ + if (progress == 100) { + fsck_progress_meter_sprite.SetOpacity(0); + fsck_progress_fade_sprite.SetOpacity(0); + } + } + +} + +Plymouth.SetUpdateStatusFunction(statusHandler); + +/**/ diff --git a/elysian-archives/fsck-fade.png b/elysian-archives/fsck-fade.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef161ad306eb1bdcd1b848be0b9b33713793ec8 GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^6M>kEgBeIRFZTg)iUNE>T!AzL!+(bVAkfh8zv2J? z&{eBKSN(U`zrSJs|Fkn_($4(P-F7?l*yF7IucEizj^6e*ZTH=@-S6V|JW1I4DrNuM zg#FJG4!%m=^EzSwo0Q$pQg**d*!?bL&#T0JFBA8_PTKb(arcYFJ+G31Xz#0}JumbB z2U-K|R4WPc3ua(sWMpDuW@cewWo75&;p5}y7nYDwP*u~=)YP?g_wn<;^ZWN73%7e9 z55#)9IEGl9K0Bpbu)%=CnN#%j&i`xXiTcVg8y(#JC*fHE`gTe~DWM4f@Q{&1 literal 0 HcmV?d00001 diff --git a/elysian-archives/fsck-fade_16bit.png b/elysian-archives/fsck-fade_16bit.png new file mode 100644 index 0000000000000000000000000000000000000000..3ada9e0d9ae97a50e6236cc50bc64bbadaacc0b7 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^6M>kEgAGV-sob*|NNIYyIEGZ*dV9uDkU@dxz<~@` x^)3TP*OI^cPtW3D=qSEF-E6C@2P?w?hSdpqG6x)DY=N2>JYD@<);T3K0RY$s9IgNW literal 0 HcmV?d00001 diff --git a/elysian-archives/logo.png b/elysian-archives/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..80f63828098592ad4e1831eed69e2e941c64f7fb GIT binary patch literal 5913 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 literal 0 HcmV?d00001 diff --git a/elysian-archives/logo_16bit.png b/elysian-archives/logo_16bit.png new file mode 100644 index 0000000000000000000000000000000000000000..145c6a2a36daa7b5403bac8f86c90e29dff6f854 GIT binary patch literal 5299 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 LBaI3*hlu|ILdsoT literal 0 HcmV?d00001 diff --git a/elysian-archives/passw-dialog.png b/elysian-archives/passw-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6a504c5287cd1c8dfae67b82f7724e286fe31a GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0y~yVB`a`ML3v&q<5(DJs`yv;1l8sr2qf_zx3w(yFiwd ur;B4q#jUpo8-W~#h6R6Dimzk>F&8k3>M$_cL`i-C@jPAqT-G@yGywpFQ5l#3 literal 0 HcmV?d00001 diff --git a/elysian-archives/progress-fade.png b/elysian-archives/progress-fade.png new file mode 100644 index 0000000000000000000000000000000000000000..ec475f41012a13c94a14c2c6180e364fd1ab7b92 GIT binary patch literal 267 zcmV+m0rdWfP)s0Uq#{+RNga)psH4V)3Y-4f_{C;N9Kv{_eDk0( zPu!KEjAbe_nWxN*_daGzmu+RXe!Joj<`wVM`=e@GMzWNhoa8EZd8Evp_kLo_l5K6a z{;~bt?h*8DDM;RK1?RUWE{q8i{8KVNrQknb^XF?0*Ul)2JHaz2crcd)wkOaYdduj; RR*C=s002ovPDHLkV1l(*dUpT- literal 0 HcmV?d00001 diff --git a/elysian-archives/progress-fade_16bit.png b/elysian-archives/progress-fade_16bit.png new file mode 100644 index 0000000000000000000000000000000000000000..878aec6abbff09c8131da4771b50c3c2d67480b2 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^HbBh7!3HGl+V0&4Qu3ZIjv*Dd-kxXV1ZACr&$0qPVg z3GxeOU}R!uVP#|I;NsyI5*3q_lD_TGqydx-_H=O!k&t|Q@F4F21D+!WCr|#9K7L*4 z#bW0fA`?Ce3+PNNY%LMEt|dADi{;IT)l&*pmu=pvGxg)C)g|h&YkRak)n|X{?D5~# koY2{$y`;IJXZ`_ZmxEdY`yNcJ0vgZY>FVdQ&MBb@0Cy#BumAu6 literal 0 HcmV?d00001 diff --git a/elysian-archives/progress-meter_16bit.png b/elysian-archives/progress-meter_16bit.png new file mode 100644 index 0000000000000000000000000000000000000000..75f8713580e78642a5a38348fa544f06b148ecf9 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0y~yVB`a`nK;;hEaktaVz=9|Nr|9H7i8= n9|hWUdFolXebkUUx>$mt+-c`*k*xuGK&1?xu6{1-oD!MjDhc#F8MtU@beFH-yV-r&|a|=r=Ya2UzH;>5l?A*fgs`|$6sY{k^*|Yb=nX?xz zUB2<~(Ua%zK7ar5TlosVD=>Ptc)B=-L>zv5^|s$32LZMRH-lT%c;jZws7QY#{o|ki zLu-k>f>%V2l$GC^c~`FEMqcN1>nQ?Ee}ANxMT?x7`Xc+0ch)rtnIE%frLi~{u^g=Q z^wn+&(A13N{$SKrKZkRv#NK)fe5B-_lrg_1)UV-!0Z$J)_qa_b|)u*4CKN zS7&cswzzzKO8q5^iMI+w4qiJR^zyyA`ytbl()^6TVB0QGqFqur>!U2c_}`z)!qSW;&peZ&W<2wx f4~SWxT*t8OyvXsa=h@M~#KPd|>gTe~DWM4fGuAxM literal 0 HcmV?d00001 diff --git a/elysian-archives/test.png b/elysian-archives/test.png new file mode 100644 index 0000000000000000000000000000000000000000..3d641282ad6779b0dcd8dac3a886f5654b0ee777 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4`FpxJhE&{2ZfN}f|Nm{qk1h)L zSPlhj({&MBs3G0){qX_G6KZeO8*(KMgb9S*;1Aj{m!mbhGt6Vs)i4(gllGrBg8hpu jCP?Kl?h|gg$SlJ!*TJz+h;5}Y&}arvS3j3^P6^X_+~x z3MG{VsS2qTnQ06R6}R3_^PMEE$kY0Lj*`2Bkkcaz6O+)Lj(zjldu_L+8-@OiOfd{# zi_&G;!=KUq`S^FieToy8$xNE{d{VKCm#XNxjEX&%LW6x)?^(KWt^cSAKhF?@y(;-tVe*nc}a% zO-R>tI&)ibf5w)#OZ2}*A6R+eanFluPo9fACw29|blh#YtG_UA^=eJ$l``KJOgPRVXG0i+^hLqsCm|mq(_r^O^cHw&BPxc z%60TKzMQ~3PwvRU#f`HLocX@1O0*S}WH%|IYKhwv0ts+K|Z|U~Es@ zZ|^L9{Nwu_-IDi9uTS>NS!z7D>e*#K`_qx^-)>Eq*w$y0^Fw3ty_LDE&R==adgu9- zjNsWvE`8c;o@FrmuG57*ekDfChJGxM%s3OAKc|Sz4SM96XVl$Vs4>N{x8%@Elg`Ej ztIpC3bMH#;^xw(qyZ>l!y{n#2$^WL9886Ise!pY4;M(h7i%u|^_&>a2a_YcQw)V@~ z)pPGJv0r!iKHCqjFQPBBFN81nuXN!+Z|DE(57l>NUp2Y!+;|O??h8C3iy0X7ltGxW zVyS%@P>{XE)7O>#2@AU@H