diff --git a/system/boot/plymouth/actions.py b/system/boot/plymouth/actions.py index 57a094fbcc..06d9abf4ef 100644 --- a/system/boot/plymouth/actions.py +++ b/system/boot/plymouth/actions.py @@ -16,6 +16,8 @@ def setup(): # /var/run => /run pisitools.dosed("configure.ac", "^(\s+plymouthruntimedir=)\$localstatedir(\/run\/plymouth)", r"\1\2") pisitools.dosed("src/Makefile.am", "^(plymouthdrundir\s=\s)\$\(localstatedir\)(\/run\/plymouth)", r"\1\2") + + shelltools.export("LDFLAGS","%s -ludev" % get.LDFLAGS()) autotools.autoreconf("-fis") @@ -30,13 +32,11 @@ def setup(): --with-system-root-install \ --with-boot-tty=/dev/tty7 \ --with-shutdown-tty=/dev/tty1 \ - --with-log-viewer \ - --disable-libdrm_nouveau \ - --disable-tests \ --disable-static \ + --enable-drm \ + --enable-pango \ --enable-gdm-transition \ - --without-rhgb-compat-link \ - --without-gdm-autostart-file" % LOGO_FILE) + --without-rhgb-compat-link" % LOGO_FILE) def build(): autotools.make() diff --git a/system/boot/plymouth/files/fedora/fix-crash.patch b/system/boot/plymouth/files/fedora/fix-crash.patch index 66fbaad628..4cf7220e5d 100644 --- a/system/boot/plymouth/files/fedora/fix-crash.patch +++ b/system/boot/plymouth/files/fedora/fix-crash.patch @@ -1,137 +1,244 @@ -From 6ccedf7b6ecdc8314ed97355cfe5499fffb13a1e Mon Sep 17 00:00:00 2001 +From fceb77c9dffd6644944bfd26e77ace64aba3f96f Mon Sep 17 00:00:00 2001 From: Ray Strode -Date: Thu, 1 Nov 2012 17:04:33 -0400 -Subject: [PATCH 1/3] main: if deactivate when already deactivated return - immediately +Date: Mon, 26 Oct 2015 13:20:18 -0400 +Subject: [PATCH 1/2] two-step: don't tank in updates mode when there's no + progress animations -We were trying to ignore second deactivate requests, but -were instead crashing because we're trying to use a nullified -trigger. - -This commit makes sure things don't go crashy when a user -does "plymouth deactivate" on an already deactivated plymouthd. +Right now we try to use the progress animation in updates mode, even +if there's not one. This commit makes the progress animation truely +optional. --- - src/main.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/src/main.c b/src/main.c -index 88e5002..60ca28f 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -1135,7 +1135,13 @@ static void - on_deactivate (state_t *state, - ply_trigger_t *deactivate_trigger) - { -- if ((state->deactivate_trigger != NULL) || state->is_inactive) -+ if (state->is_inactive) -+ { -+ ply_trigger_pull (deactivate_trigger, NULL); -+ return; -+ } -+ -+ if (state->deactivate_trigger != NULL) - { - ply_trigger_add_handler (state->deactivate_trigger, - (ply_trigger_handler_t) --- -1.7.12.1 - - -From b3548ebaf76d222f56d6a7b34c5940b930d47609 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 1 Nov 2012 17:16:07 -0400 -Subject: [PATCH 2/3] two-step: don't update progress when idle - -We've already reach a state where we aren't drawing anymore, etc, -so don't update progress and potentially fire off animations -that won't be seen. ---- - src/plugins/splash/two-step/plugin.c | 3 +++ - 1 file changed, 3 insertions(+) + src/plugins/splash/two-step/plugin.c | 22 +++++++++++++++------- + 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/plugins/splash/two-step/plugin.c b/src/plugins/splash/two-step/plugin.c -index 2998beb..541a108 100644 +index 541a108..ceca101 100644 --- a/src/plugins/splash/two-step/plugin.c +++ b/src/plugins/splash/two-step/plugin.c -@@ -1067,6 +1067,9 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin, - if (plugin->state != PLY_BOOT_SPLASH_DISPLAY_NORMAL) - return; - -+ if (plugin->is_idle) -+ return; -+ - if (percent_done >= SHOW_ANIMATION_PERCENT) - { - if (plugin->stop_trigger == NULL) --- -1.7.12.1 - - -From a6129abfc527ac247685d80fc5c20144be1badca Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 2 Nov 2012 17:26:41 -0400 -Subject: [PATCH 3/3] main: make plymouth show-splash idempotent - -plymouth show-splash causes hairy things, that should only happen once, -like activating renderers to happen. - -This commit makes subsequent show-splash calls be no-ops. ---- - src/main.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/src/main.c b/src/main.c -index 60ca28f..ff06163 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -113,6 +113,7 @@ typedef struct - uint32_t should_be_attached : 1; - uint32_t should_retain_splash : 1; - uint32_t is_inactive : 1; -+ uint32_t is_shown : 1; - uint32_t should_force_details : 1; - - char *kernel_console_tty; -@@ -871,6 +872,12 @@ on_show_splash (state_t *state) - { - bool has_display; - -+ if (state->is_shown) -+ { -+ ply_trace ("show splash called while already shown"); -+ return; -+ } -+ - if (state->is_inactive) - { - ply_trace ("show splash called while inactive"); -@@ -884,6 +891,8 @@ on_show_splash (state_t *state) - return; - } - -+ state->is_shown = true; -+ - check_for_consoles (state, state->default_tty, true); - - has_display = ply_list_get_length (state->pixel_displays) > 0 || -@@ -1012,6 +1021,8 @@ dump_details_and_quit_splash (state_t *state) - if (state->boot_splash != NULL) - ply_boot_splash_hide (state->boot_splash); - -+ state->is_shown = false; -+ - quit_splash (state); +@@ -180,66 +180,73 @@ view_free (view_t *view) } -@@ -1116,6 +1127,8 @@ on_boot_splash_idle (state_t *state) - ply_renderer_deactivate (state->renderer); - if (state->boot_splash != NULL) - ply_boot_splash_hide (state->boot_splash); -+ -+ state->is_shown = false; + static bool + view_load (view_t *view) + { + ply_trace ("loading entry"); + if (!ply_entry_load (view->entry)) + return false; + + ply_trace ("loading animation"); + if (!ply_animation_load (view->end_animation)) + { + ply_trace ("Default animation wouldn't load, " + "falling back to old naming scheme"); + + /* fallback to throbber- for compatibility + */ + ply_animation_free (view->end_animation); + view->end_animation = ply_animation_new (view->plugin->animation_dir, + "throbber-"); + if (!ply_animation_load (view->end_animation)) + { + ply_trace ("old naming scheme didn't work either"); + return false; } - ply_trace ("quitting splash"); + ply_throbber_free (view->throbber); + view->throbber = NULL; + } + +- ply_trace ("loading progress animation"); +- if (!ply_progress_animation_load (view->progress_animation)) ++ if (view->progress_animation != NULL) ++ { ++ ply_trace ("loading progress animation"); ++ if (!ply_progress_animation_load (view->progress_animation)) ++ { ++ ply_trace ("optional progress animation wouldn't load"); ++ ply_progress_animation_free (view->progress_animation); ++ view->progress_animation = NULL; ++ } ++ } ++ else + { +- ply_trace ("optional progress animation wouldn't load"); +- ply_progress_animation_free (view->progress_animation); +- view->progress_animation = NULL; ++ ply_trace ("this theme has no progress animation\n"); + } + + if (view->throbber != NULL) + { + ply_trace ("loading throbber"); + if (!ply_throbber_load (view->throbber)) + { + ply_trace ("optional throbber was not loaded"); + ply_throbber_free (view->throbber); + view->throbber = NULL; + } + } + else + { + ply_trace ("this theme has no throbber\n"); + } + + return true; + } + + static bool + load_views (ply_boot_splash_plugin_t *plugin) + { + ply_list_node_t *node; + bool view_loaded; + + view_loaded = false; + node = ply_list_get_first_node (plugin->views); + + while (node != NULL) +@@ -1249,62 +1256,63 @@ show_message (ply_boot_splash_plugin_t *plugin, + view = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (plugin->views, node); + + ply_label_set_text (view->message_label, message); + ply_label_show (view->message_label, view->display, 10, 10); + + ply_pixel_display_draw_area (view->display, 10, 10, + ply_label_get_width (view->message_label), + ply_label_get_height(view->message_label)); + node = next_node; + } + } + + static void + system_update (ply_boot_splash_plugin_t *plugin, + int progress) + { + ply_list_node_t *node; + + if (plugin->mode != PLY_BOOT_SPLASH_MODE_UPDATES) + return; + + node = ply_list_get_first_node (plugin->views); + while (node != NULL) + { + ply_list_node_t *next_node; + view_t *view; + + view = ply_list_node_get_data (node); + next_node = ply_list_get_next_node (plugin->views, node); +- ply_progress_animation_set_percent_done (view->progress_animation, +- (double) progress / 100.f); ++ if (view->progress_animation != NULL) ++ ply_progress_animation_set_percent_done (view->progress_animation, ++ (double) progress / 100.f); + node = next_node; + } + } + + static void + display_normal (ply_boot_splash_plugin_t *plugin) + { + pause_views (plugin); + if (plugin->state != PLY_BOOT_SPLASH_DISPLAY_NORMAL) + hide_prompt (plugin); + + plugin->state = PLY_BOOT_SPLASH_DISPLAY_NORMAL; + start_progress_animation (plugin); + redraw_views (plugin); + unpause_views (plugin); + } + + static void + display_password (ply_boot_splash_plugin_t *plugin, + const char *prompt, + int bullets) + { + pause_views (plugin); + if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_NORMAL) + stop_animation (plugin, NULL); + + plugin->state = PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY; + show_password_prompt (plugin, prompt, bullets); + redraw_views (plugin); + unpause_views (plugin); -- -1.7.12.1 +2.5.0 + +From 5de88b84ee949aaa80fafbf9e794bc2b9eddb6a6 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 26 Oct 2015 13:28:33 -0400 +Subject: [PATCH 2/2] script: only support one message at a time + +That's the other themes do, and callers +expect it. +--- + themes/script/script.script | 18 +++++------------- + 1 file changed, 5 insertions(+), 13 deletions(-) + +diff --git a/themes/script/script.script b/themes/script/script.script +index 7ea9d5e..25a2f2b 100644 +--- a/themes/script/script.script ++++ b/themes/script/script.script +@@ -125,55 +125,47 @@ progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); + + progress_bar.original_image = Image("progress_bar.png"); + progress_bar.sprite = Sprite(); + + progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; + progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5 - progress_box.image.GetHeight() / 2 + (progress_box.image.GetHeight() - progress_bar.original_image.GetHeight()) / 2; + progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); + + fun progress_callback (duration, progress) + { + if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress)) + { + progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth(progress_bar.original_image) * progress, progress_bar.original_image.GetHeight()); + progress_bar.sprite.SetImage (progress_bar.image); + } + } + + Plymouth.SetBootProgressFunction(progress_callback); + + #----------------------------------------- Quit -------------------------------- + + fun quit_callback () + { + logo.sprite.SetOpacity (1); + } + + Plymouth.SetQuitFunction(quit_callback); + + #----------------------------------------- Message -------------------------------- + +-message_sprites = []; +-message_sprite_count = 0; +-message_sprite_y = 10; ++message_sprite = Sprite(); ++message_sprite.SetPosition(10, 10, 10000); + + fun display_message_callback (text) + { + my_image = Image.Text(text, 1, 1, 1); +- message_sprites[message_sprite_count] = Sprite(my_image); +- message_sprites[message_sprite_count].SetPosition(10, message_sprite_y, 10000); +- message_sprites[message_sprite_count].text = text; +- message_sprite_count++; +- message_sprite_y += my_image.GetHeight(); ++ message_sprite.SetImage(my_image); + } + + fun hide_message_callback (text) + { +- for (i = 0; i < message_sprite_count; i++) +- { +- if (message_sprites[i].text == text) +- message_sprites[i] = NULL; +- } ++ message_sprite = Sprite(); ++ message_sprite.SetPosition(10, 10, 10000); + } + + Plymouth.SetDisplayMessageFunction (display_message_callback); + Plymouth.SetHideMessageFunction (hide_message_callback); +-- +2.5.0 diff --git a/system/boot/plymouth/files/mageia/plymouth-restore-suspend.patch b/system/boot/plymouth/files/mageia/plymouth-restore-suspend.patch index 166ffceb3b..6743048945 100644 --- a/system/boot/plymouth/files/mageia/plymouth-restore-suspend.patch +++ b/system/boot/plymouth/files/mageia/plymouth-restore-suspend.patch @@ -20,30 +20,30 @@ index 2d73d66..1a67526 100644 +++ b/src/libply-splash-core/ply-boot-splash-plugin.h @@ -38,6 +38,8 @@ typedef enum { - PLY_BOOT_SPLASH_MODE_BOOT_UP, - PLY_BOOT_SPLASH_MODE_SHUTDOWN, -+ PLY_BOOT_SPLASH_MODE_SUSPEND, -+ PLY_BOOT_SPLASH_MODE_RESUME, - PLY_BOOT_SPLASH_MODE_UPDATES, - PLY_BOOT_SPLASH_MODE_INVALID + PLY_BOOT_SPLASH_MODE_BOOT_UP, + PLY_BOOT_SPLASH_MODE_SHUTDOWN, ++ PLY_BOOT_SPLASH_MODE_SUSPEND, ++ PLY_BOOT_SPLASH_MODE_RESUME, + PLY_BOOT_SPLASH_MODE_UPDATES, + PLY_BOOT_SPLASH_MODE_INVALID } ply_boot_splash_mode_t; diff --git a/src/plugins/splash/script/script-lib-plymouth.c b/src/plugins/splash/script/script-lib-plymouth.c index 5c648a6..eb7791e 100644 --- a/src/plugins/splash/script/script-lib-plymouth.c +++ b/src/plugins/splash/script/script-lib-plymouth.c -@@ -61,6 +61,12 @@ static script_return_t plymouth_get_mode (script_state_t *state, - case PLY_BOOT_SPLASH_MODE_SHUTDOWN: - obj = script_obj_new_string ("shutdown"); - break; -+ case PLY_BOOT_SPLASH_MODE_SUSPEND: -+ obj = script_obj_new_string ("suspend"); -+ break; -+ case PLY_BOOT_SPLASH_MODE_RESUME: -+ obj = script_obj_new_string ("resume"); -+ break; - case PLY_BOOT_SPLASH_MODE_UPDATES: - obj = script_obj_new_string ("updates"); - break; +@@ -70,6 +70,12 @@ + case PLY_BOOT_SPLASH_MODE_SHUTDOWN: + obj = script_obj_new_string ("shutdown"); + break; ++ case PLY_BOOT_SPLASH_MODE_SUSPEND: ++ obj = script_obj_new_string ("suspend"); ++ break; ++ case PLY_BOOT_SPLASH_MODE_RESUME: ++ obj = script_obj_new_string ("resume"); ++ break; + case PLY_BOOT_SPLASH_MODE_UPDATES: + obj = script_obj_new_string ("updates"); + break; -- 1.7.10.4 diff --git a/system/boot/plymouth/files/pisilinux/add-pisilinux-theme.patch b/system/boot/plymouth/files/pisilinux/add-pisilinux-theme.patch index fa38debbe9..9662a89925 100644 --- a/system/boot/plymouth/files/pisilinux/add-pisilinux-theme.patch +++ b/system/boot/plymouth/files/pisilinux/add-pisilinux-theme.patch @@ -1,7 +1,7 @@ --- plymouth-0.8.8/themes/Makefile.am 2012-10-26 18:01:45.000000000 +0300 +++ plymouth-0.8.8-esk/themes/Makefile.am 2013-01-15 05:00:46.920416669 +0200 @@ -1,2 +1,2 @@ --SUBDIRS = spinfinity fade-in text details solar glow script spinner +-SUBDIRS = spinfinity fade-in text details solar glow script spinner tribar +SUBDIRS = spinfinity fade-in text details solar glow script spinner pisilinux MAINTAINERCLEANFILES = Makefile.in --- plymouth-0.8.8/src/plymouthd.conf 2012-10-26 18:01:45.000000000 +0300 @@ -13,15 +13,16 @@ +#Theme=pisilinux --- plymouth-0.8.8/src/plymouthd.defaults 2012-10-26 18:01:45.000000000 +0300 +++ plymouth-0.8.8-esk/src/plymouthd.defaults 2013-01-15 05:06:37.681404525 +0200 -@@ -1,4 +1,4 @@ +@@ -1,5 +1,5 @@ # Distribution defaults. Changes to this file will get overwritten during # upgrades. [Daemon] -Theme=spinner +Theme=pisilinux + ShowDelay=5 --- plymouth-0.8.8/configure.ac 2012-10-26 18:01:45.000000000 +0300 +++ plymouth-0.8.8-esk/configure.ac 2013-01-15 05:08:54.923399773 +0200 -@@ -451,6 +451,7 @@ +@@ -306,6 +306,7 @@ themes/glow/Makefile themes/spinner/Makefile themes/script/Makefile diff --git a/system/boot/plymouth/files/pisilinux/disable-source-code-tracing.patch b/system/boot/plymouth/files/pisilinux/disable-source-code-tracing.patch index edeb238523..b9dc7e79f8 100644 --- a/system/boot/plymouth/files/pisilinux/disable-source-code-tracing.patch +++ b/system/boot/plymouth/files/pisilinux/disable-source-code-tracing.patch @@ -6,8 +6,8 @@ Index: plymouth-0.8.3_20100929/src/libply/ply-logger.h ply_logger_flush (logger); \ errno = _old_errno; \ ply_logger_inject (logger, \ -- "[%s] %45.45s:" format "\r\n", \ -- __FILE__, __func__, ##args); \ +- "[%s:%d] %45.45s:" format "\r\n", \ +- __FILE__, __LINE__, __func__, ## args); \ + "" format "\n", \ + ##args); \ ply_logger_flush (logger); \ diff --git a/system/boot/plymouth/files/pisilinux/initramfs.files b/system/boot/plymouth/files/pisilinux/initramfs.files index 122ea6db4e..eaf3217db8 100644 --- a/system/boot/plymouth/files/pisilinux/initramfs.files +++ b/system/boot/plymouth/files/pisilinux/initramfs.files @@ -5,19 +5,20 @@ /lib/libc.so.6 /lib/libdl.so.2 /lib/libm.so.6 -/lib/libply-splash-core.so.2 -/lib/libply.so.2 +/lib/libply-splash-core.so.4 +/lib/libply.so.4 /lib/libpthread.so.0 /lib/librt.so.1 /lib/libz.so.1 /sbin/plymouthd /usr/lib/libdrm.so.2 +/usr/lib/libdrm_amdgpu.so.1 /usr/lib/libdrm_intel.so.1 /usr/lib/libdrm_nouveau.so.2 /usr/lib/libdrm_radeon.so.1 /usr/lib/libkms.so.1 -/usr/lib/libply-boot-client.so.2 -/usr/lib/libply-splash-graphics.so.2 +/usr/lib/libply-boot-client.so.4 +/usr/lib/libply-splash-graphics.so.4 /usr/lib/libpng16.so.16 /usr/lib/liblzo2.so.2 /usr/lib/plymouth/details.so diff --git a/system/boot/plymouth/pspec.xml b/system/boot/plymouth/pspec.xml index d37405803c..c79bad50f4 100644 --- a/system/boot/plymouth/pspec.xml +++ b/system/boot/plymouth/pspec.xml @@ -14,38 +14,41 @@ library Graphical Boot Animation and Logger plymouth provides an attractive graphical boot animation in place of the text messages that normally get shown. Text messages are instead redirected to a log file for viewing after boot. - http://source.pisilinux.org/1.0/plymouth-0.8.8.tar.gz - http://source.pisilinux.org/1.0/plymouth-theme-pisilinux-0.2.tar.xz + https://www.freedesktop.org/software/plymouth/releases/plymouth-0.9.2.tar.bz2 + https://sourceforge.net/projects/pisilinux/files/source/plymouth-theme-pisilinux-0.3.tar.xz pisilinux/generate-flist.py - kernel-headers libdrm-devel - libpng-devel - cairo-devel pango-devel - gtk2-devel + libpng-devel + harfbuzz-devel + graphite2-devel + gtk3-devel + libxslt-devel + docbook-xsl - pisilinux/disable-source-code-tracing.patch + pisilinux/adapt-theme-script.patch pisilinux/add-pisilinux-theme.patch mageia/plymouth-restore-suspend.patch - fedora/fix-crash.patch + plymouth + eudev libdrm - plymouth-core-libs mkinitramfs + plymouth-core-libs /bin @@ -84,6 +87,9 @@ plymouth-core-libs Plymouth core libraries plymouth-core-libs contains the libply and libply-splash-core libraries used by Plymouth. + + eudev + /lib/libply-splash-core.so* /lib/libply.so* @@ -95,8 +101,9 @@ Plymouth graphics libraries plymouth-graphics-libs contains the libply-splash-graphics library used by graphics Plymouth splashes. - plymouth-core-libs + eudev libpng + plymouth-core-libs /usr/lib/libply-splash-graphics.so* @@ -119,19 +126,20 @@ plymouth-renderer-x11 An X11 renderer for debugging purposes - plymouth-core-libs - freetype - gtk2 atk + gtk3 + eudev + glib2 + pango gdk-pixbuf - fontconfig + plymouth-core-libs /usr/lib/plymouth/renderers/x11* - + plymouth-plugin-label @@ -150,8 +158,10 @@ plymouth-plugin-label contains the label control plugin for Plymouth. It provides the ability to render text on graphical boot splashes using pango and cairo. cairo + eudev glib2 pango + libpng plymouth-core-libs plymouth-graphics-libs @@ -165,8 +175,11 @@ Plymouth Fade-Throbber plugin plymouth-plugin-fade-throbber contains the "Fade-In" boot splash plugin for Plymouth. It features a centered image that fades in and out while other images pulsate around during system boot up. - plymouth-graphics-libs + eudev + libpng plymouth-core-libs + plymouth-graphics-libs + /usr/lib/plymouth/fade-throbber.so @@ -202,9 +215,11 @@ Plymouth Throbgress plugin plymouth-plugin-throbgress contains the "throbgress" boot splash plugin for Plymouth. It features a centered logo and animated spinner that spins repeatedly while a progress bar advances at the bottom of the screen. + eudev + libpng + plymouth-core-libs plymouth-plugin-label plymouth-graphics-libs - plymouth-core-libs /usr/lib/plymouth/throbgress.so @@ -228,9 +243,11 @@ Plymouth space-flares plugin plymouth-plugin-space-flares contains the "space-flares" boot splash plugin for Plymouth. It features a corner image with animated flares. + eudev + libpng + plymouth-core-libs plymouth-plugin-label plymouth-graphics-libs - plymouth-core-libs /usr/lib/plymouth/space-flares.so @@ -254,9 +271,11 @@ Plymouth Two-Step plugin plymouth-plugin-two-step contains the "two-step" boot splash plugin for Plymouth. It features a two phased boot process that starts with a progressing animation synced to boot time and finishes with a short, fast one-shot animation. + eudev + libpng + plymouth-core-libs plymouth-plugin-label plymouth-graphics-libs - plymouth-core-libs /usr/lib/plymouth/two-step.so @@ -280,8 +299,10 @@ Plymouth script plugin plymouth-plugin-script contains "script" boot splash plugin for Plymouth. It features an extensible, scriptable boot splash language that simplifies the process of designing custom boot splash themes. - plymouth-graphics-libs + eudev + libpng plymouth-core-libs + plymouth-graphics-libs /usr/lib/plymouth/script.so @@ -314,11 +335,11 @@ - 2014-08-04 - 0.8.8 + 2016-04-18 + 0.9.2 First release - marcin bojara - marcin@pisilinux.org + Alihan Öztürk + alihan@pisilinux.org