diff --git a/linux-live/minioslib b/linux-live/minioslib
index c7f5f40..ba0d7b3 100644
--- a/linux-live/minioslib
+++ b/linux-live/minioslib
@@ -1423,7 +1423,9 @@ StandardOutput=journal
[Install]
WantedBy=multi-user.target
EOF
- dpkg-reconfigure openssh-server >>$OUTPUT 2>&1
+ #dpkg-reconfigure openssh-server >>$OUTPUT 2>&1
+ systemctl enable ssh-keygen >>$OUTPUT 2>&1
+ systemctl enable ssh >>$OUTPUT 2>&1
fi
fi
@@ -1460,8 +1462,6 @@ EOF
ln -s /usr/share/backgrounds/MiniOS.png /usr/share/xfce4/backdrops/xubuntu-wallpaper.png
fi
- systemctl enable ssh-keygen >>$OUTPUT 2>&1
- systemctl enable ssh >>$OUTPUT 2>&1
}
function chroot_finish_up() {
@@ -1775,7 +1775,7 @@ function build_modules() {
module_chroot_finish_up
if [ $MODULE = "02-xubuntu" ]; then
- (cd $SCRIPT_DIR/linux-live/rootcopy-modules/02-xubuntu && cp --parents -afr * $MODULE_MERGED_DIR/)
+ #(cd $SCRIPT_DIR/linux-live/rootcopy-modules/02-xubuntu && cp --parents -afr * $MODULE_MERGED_DIR/)
if cat $MODULE_MERGED_DIR/etc/passwd | grep /home/live; then
chroot $MODULE_MERGED_DIR userdel live >>$OUTPUT 2>&1
diff --git a/linux-live/rootcopy-casper/etc/ssh/sshd_config b/linux-live/rootcopy-casper/etc/ssh/sshd_config
deleted file mode 100644
index 4f30d4a..0000000
--- a/linux-live/rootcopy-casper/etc/ssh/sshd_config
+++ /dev/null
@@ -1,123 +0,0 @@
-# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
-
-# This is the sshd server system-wide configuration file. See
-# sshd_config(5) for more information.
-
-# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
-
-# The strategy used for options in the default sshd_config shipped with
-# OpenSSH is to specify options with their default value where
-# possible, but leave them commented. Uncommented options override the
-# default value.
-
-Include /etc/ssh/sshd_config.d/*.conf
-
-#Port 22
-#AddressFamily any
-#ListenAddress 0.0.0.0
-#ListenAddress ::
-
-#HostKey /etc/ssh/ssh_host_rsa_key
-#HostKey /etc/ssh/ssh_host_ecdsa_key
-#HostKey /etc/ssh/ssh_host_ed25519_key
-
-# Ciphers and keying
-#RekeyLimit default none
-
-# Logging
-#SyslogFacility AUTH
-#LogLevel INFO
-
-# Authentication:
-
-#LoginGraceTime 2m
-PermitRootLogin yes
-#StrictModes yes
-#MaxAuthTries 6
-#MaxSessions 10
-
-#PubkeyAuthentication yes
-
-# Expect .ssh/authorized_keys2 to be disregarded by default in future.
-#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
-
-#AuthorizedPrincipalsFile none
-
-#AuthorizedKeysCommand none
-#AuthorizedKeysCommandUser nobody
-
-# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
-#HostbasedAuthentication no
-# Change to yes if you don't trust ~/.ssh/known_hosts for
-# HostbasedAuthentication
-#IgnoreUserKnownHosts no
-# Don't read the user's ~/.rhosts and ~/.shosts files
-#IgnoreRhosts yes
-
-# To disable tunneled clear text passwords, change to no here!
-PasswordAuthentication yes
-#PermitEmptyPasswords no
-
-# Change to yes to enable challenge-response passwords (beware issues with
-# some PAM modules and threads)
-ChallengeResponseAuthentication no
-
-# Kerberos options
-#KerberosAuthentication no
-#KerberosOrLocalPasswd yes
-#KerberosTicketCleanup yes
-#KerberosGetAFSToken no
-
-# GSSAPI options
-#GSSAPIAuthentication no
-#GSSAPICleanupCredentials yes
-#GSSAPIStrictAcceptorCheck yes
-#GSSAPIKeyExchange no
-
-# Set this to 'yes' to enable PAM authentication, account processing,
-# and session processing. If this is enabled, PAM authentication will
-# be allowed through the ChallengeResponseAuthentication and
-# PasswordAuthentication. Depending on your PAM configuration,
-# PAM authentication via ChallengeResponseAuthentication may bypass
-# the setting of "PermitRootLogin without-password".
-# If you just want the PAM account and session checks to run without
-# PAM authentication, then enable this but set PasswordAuthentication
-# and ChallengeResponseAuthentication to 'no'.
-UsePAM yes
-
-#AllowAgentForwarding yes
-#AllowTcpForwarding yes
-#GatewayPorts no
-X11Forwarding yes
-#X11DisplayOffset 10
-#X11UseLocalhost yes
-#PermitTTY yes
-PrintMotd no
-#PrintLastLog yes
-#TCPKeepAlive yes
-#PermitUserEnvironment no
-#Compression delayed
-#ClientAliveInterval 0
-#ClientAliveCountMax 3
-#UseDNS no
-#PidFile /var/run/sshd.pid
-#MaxStartups 10:30:100
-#PermitTunnel no
-#ChrootDirectory none
-#VersionAddendum none
-
-# no default banner path
-#Banner none
-
-# Allow client to pass locale environment variables
-AcceptEnv LANG LC_*
-
-# override default of no subsystems
-Subsystem sftp /usr/lib/openssh/sftp-server
-
-# Example of overriding settings on a per-user basis
-#Match User anoncvs
-# X11Forwarding no
-# AllowTcpForwarding no
-# PermitTTY no
-# ForceCommand cvs server
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/helpers.rc b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/helpers.rc
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/helpers.rc
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/helpers.rc
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-19/16093657651.desktop b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-19/16093657651.desktop
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-19/16093657651.desktop
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-19/16093657651.desktop
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-23/16093659533.desktop b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-23/16093659533.desktop
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-23/16093659533.desktop
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-23/16093659533.desktop
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-24/16093659584.desktop b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-24/16093659584.desktop
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/launcher-24/16093659584.desktop
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/launcher-24/16093659584.desktop
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/whiskermenu-1.rc b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/whiskermenu-1.rc
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/panel/whiskermenu-1.rc
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/panel/whiskermenu-1.rc
diff --git a/linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/linux-live/rootcopy-livekit/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
similarity index 100%
rename from linux-live/rootcopy-modules/02-xubuntu/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
rename to linux-live/rootcopy-livekit/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
diff --git a/linux-live/rootcopy-livekit/etc/ssh/sshd_config b/linux-live/rootcopy-livekit/etc/ssh/sshd_config
deleted file mode 100644
index 4f30d4a..0000000
--- a/linux-live/rootcopy-livekit/etc/ssh/sshd_config
+++ /dev/null
@@ -1,123 +0,0 @@
-# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
-
-# This is the sshd server system-wide configuration file. See
-# sshd_config(5) for more information.
-
-# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
-
-# The strategy used for options in the default sshd_config shipped with
-# OpenSSH is to specify options with their default value where
-# possible, but leave them commented. Uncommented options override the
-# default value.
-
-Include /etc/ssh/sshd_config.d/*.conf
-
-#Port 22
-#AddressFamily any
-#ListenAddress 0.0.0.0
-#ListenAddress ::
-
-#HostKey /etc/ssh/ssh_host_rsa_key
-#HostKey /etc/ssh/ssh_host_ecdsa_key
-#HostKey /etc/ssh/ssh_host_ed25519_key
-
-# Ciphers and keying
-#RekeyLimit default none
-
-# Logging
-#SyslogFacility AUTH
-#LogLevel INFO
-
-# Authentication:
-
-#LoginGraceTime 2m
-PermitRootLogin yes
-#StrictModes yes
-#MaxAuthTries 6
-#MaxSessions 10
-
-#PubkeyAuthentication yes
-
-# Expect .ssh/authorized_keys2 to be disregarded by default in future.
-#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
-
-#AuthorizedPrincipalsFile none
-
-#AuthorizedKeysCommand none
-#AuthorizedKeysCommandUser nobody
-
-# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
-#HostbasedAuthentication no
-# Change to yes if you don't trust ~/.ssh/known_hosts for
-# HostbasedAuthentication
-#IgnoreUserKnownHosts no
-# Don't read the user's ~/.rhosts and ~/.shosts files
-#IgnoreRhosts yes
-
-# To disable tunneled clear text passwords, change to no here!
-PasswordAuthentication yes
-#PermitEmptyPasswords no
-
-# Change to yes to enable challenge-response passwords (beware issues with
-# some PAM modules and threads)
-ChallengeResponseAuthentication no
-
-# Kerberos options
-#KerberosAuthentication no
-#KerberosOrLocalPasswd yes
-#KerberosTicketCleanup yes
-#KerberosGetAFSToken no
-
-# GSSAPI options
-#GSSAPIAuthentication no
-#GSSAPICleanupCredentials yes
-#GSSAPIStrictAcceptorCheck yes
-#GSSAPIKeyExchange no
-
-# Set this to 'yes' to enable PAM authentication, account processing,
-# and session processing. If this is enabled, PAM authentication will
-# be allowed through the ChallengeResponseAuthentication and
-# PasswordAuthentication. Depending on your PAM configuration,
-# PAM authentication via ChallengeResponseAuthentication may bypass
-# the setting of "PermitRootLogin without-password".
-# If you just want the PAM account and session checks to run without
-# PAM authentication, then enable this but set PasswordAuthentication
-# and ChallengeResponseAuthentication to 'no'.
-UsePAM yes
-
-#AllowAgentForwarding yes
-#AllowTcpForwarding yes
-#GatewayPorts no
-X11Forwarding yes
-#X11DisplayOffset 10
-#X11UseLocalhost yes
-#PermitTTY yes
-PrintMotd no
-#PrintLastLog yes
-#TCPKeepAlive yes
-#PermitUserEnvironment no
-#Compression delayed
-#ClientAliveInterval 0
-#ClientAliveCountMax 3
-#UseDNS no
-#PidFile /var/run/sshd.pid
-#MaxStartups 10:30:100
-#PermitTunnel no
-#ChrootDirectory none
-#VersionAddendum none
-
-# no default banner path
-#Banner none
-
-# Allow client to pass locale environment variables
-AcceptEnv LANG LC_*
-
-# override default of no subsystems
-Subsystem sftp /usr/lib/openssh/sftp-server
-
-# Example of overriding settings on a per-user basis
-#Match User anoncvs
-# X11Forwarding no
-# AllowTcpForwarding no
-# PermitTTY no
-# ForceCommand cvs server
diff --git a/linux-live/rootcopy-livekit/etc/ssh/sshd_config.d/90-minios.conf b/linux-live/rootcopy-livekit/etc/ssh/sshd_config.d/90-minios.conf
new file mode 100644
index 0000000..33d8862
--- /dev/null
+++ b/linux-live/rootcopy-livekit/etc/ssh/sshd_config.d/90-minios.conf
@@ -0,0 +1,2 @@
+PermitRootLogin yes
+PasswordAuthentication yes
\ No newline at end of file
diff --git a/linux-live/rootcopy-livekit/usr/share/backgrounds/MiniOS.png b/linux-live/rootcopy-livekit/usr/share/backgrounds/MiniOS.png
new file mode 100644
index 0000000..5716d76
Binary files /dev/null and b/linux-live/rootcopy-livekit/usr/share/backgrounds/MiniOS.png differ
diff --git a/linux-live/rootcopy-livekit/usr/share/pixmaps/MiniOS-white.svg b/linux-live/rootcopy-livekit/usr/share/pixmaps/MiniOS-white.svg
new file mode 100644
index 0000000..ca13046
--- /dev/null
+++ b/linux-live/rootcopy-livekit/usr/share/pixmaps/MiniOS-white.svg
@@ -0,0 +1,149 @@
+
+
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/default.plymouth b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/default.plymouth
new file mode 120000
index 0000000..b251b32
--- /dev/null
+++ b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/default.plymouth
@@ -0,0 +1 @@
+/usr/share/plymouth/themes/minios-logo/minios-logo.plymouth
\ No newline at end of file
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/details/details.plymouth b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/details/details.plymouth
new file mode 100644
index 0000000..bd84964
--- /dev/null
+++ b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/details/details.plymouth
@@ -0,0 +1,4 @@
+[Plymouth Theme]
+Name=Details
+Description=Verbose fallback theme
+ModuleName=details
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade.png b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade.png
new file mode 100644
index 0000000..3ef161a
Binary files /dev/null and b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade.png differ
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade_16bit.png b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade_16bit.png
new file mode 100644
index 0000000..3ada9e0
Binary files /dev/null and b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/fsck-fade_16bit.png differ
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo.png b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo.png
new file mode 100644
index 0000000..cb8af2d
Binary files /dev/null and b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo.png differ
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo_16bit.png b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo_16bit.png
new file mode 100644
index 0000000..fbae9b3
Binary files /dev/null and b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/logo_16bit.png differ
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.plymouth b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.plymouth
new file mode 100644
index 0000000..db7715b
--- /dev/null
+++ b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.plymouth
@@ -0,0 +1,8 @@
+[Plymouth Theme]
+Name=MiniOS Logo
+Description=A theme that features a background with a logo.
+ModuleName=script
+
+[script]
+ImageDir=/usr/share/plymouth/themes/minios-logo
+ScriptFile=/usr/share/plymouth/themes/minios-logo/minios-logo.script
diff --git a/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.script b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.script
new file mode 100644
index 0000000..0f0c1e1
--- /dev/null
+++ b/linux-live/rootcopy-livekit/usr/share/plymouth/themes/minios-logo/minios-logo.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) + 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::