Compare commits

...

133 Commits

Author SHA1 Message Date
Хирецкий Михаил 7fa1397627 Добавлено описание как получить патч на plymouth, исключая плагин
2 years ago
Хирецкий Михаил 000c8253f1 Добавлена возможность указать запуск splash только для shutdown
2 years ago
Хирецкий Михаил 9a23ff66ea Изменён порядок инициализации framebuffer для plymouth
2 years ago
Хирецкий Михаил 00ceac5d5a Добавлена возможность указывать WatermarkImage в calculate секции
2 years ago
Хирецкий Михаил f3adbf132b Изменёна секция параметров two-step на calculate
2 years ago
Хирецкий Михаил bdcc97b36c Добавлено описание как проводить отладку плагина
2 years ago
Хирецкий Михаил 5ae36ae6eb Изменён plugin two-step
2 years ago
Хирецкий Михаил ce6beeedcc Изменён plugin two-step
2 years ago
Хирецкий Михаил c06e6cbe84 Изменён plugin two-step
2 years ago
Ray Strode 716b5bd9e2 Merge branch 'fix-buffer' into 'main'
2 years ago
Oleg Solovyov 5d75819462 drm: Retry setting scanout buffer on failure
2 years ago
Ray Strode 27764b2a2c Merge branch 'version-naming-change' into 'main'
2 years ago
Ray Strode 7b203e49b9 autogoo: Determine project version from date
2 years ago
Ray Strode a3dcafa8b2 Merge branch 'wip/use-logo-file' into 'main'
2 years ago
Ray Strode 729869f5c0 spinfinity: use logo file passed to configure
2 years ago
Ray Strode 3e75dda9e6 Merge branch 'weblate-plymouth-master' into 'main'
2 years ago
Yauhen Bugamol d70a7e3d38 Translated using Weblate (Belarusian)
2 years ago
Ray Strode 39d374d8ec Merge branch 'add_croatian_language' into 'main'
2 years ago
muzena 48cbafd4b1 Add Croatian language
2 years ago
Ray Strode 202646d2fb Merge branch 'fix-configure-help-string' into 'main'
2 years ago
João Paulo Rechi Vita df10062109 configure: Fix help string for --with-background-end-color-stop
2 years ago
Ray Strode 1906f04428 Merge branch 'fix-twostep-comments' into 'main'
2 years ago
João Paulo Rechi Vita 315dc61851 two-step: Fix typos and missing words in comments
2 years ago
Ray Strode 5b91b9ed84 Merge branch 'configurable-show-animation-fraction' into 'main'
3 years ago
Jasper St. Pierre 4d3f553efc two-step: Make SHOW_ANIMATION_FRACTION configurable
3 years ago
Ray Strode 18363cd887 Merge branch 'honour-rotation' into 'main'
3 years ago
Emil Velikov a76fe9a069 drm: Honour screen rotation when detecting HiDPI
3 years ago
Ray Strode bad6d41504 Merge branch 'themepath-cfg' into 'master'
3 years ago
Alfonso Sánchez-Beato 3003cabf96 scripts: support populating from configurable theme dir
3 years ago
Alfonso Sánchez-Beato 3fa05404b0 main: add ThemeDir configuration option
3 years ago
Alfonso Sánchez-Beato a3607d7ad4 main: refactor code for searching the theme path
3 years ago
Alfonso Sánchez-Beato a4a1afc83f ply-utils: add macro to count the number of elements in an array
3 years ago
Alfonso Sánchez-Beato 4bf060c5dd main: free path variables before exiting
3 years ago
Ray Strode dae14773bd Merge branch 'weblate-plymouth-master' into 'master'
3 years ago
Pavel Borecki 4ddeccb8cb Translated using Weblate (Czech)
3 years ago
Ray Strode 1297d4c3ee Merge branch 'crash_on_hide_message' into 'master'
3 years ago
i.Dark_Templar 6f480678a6 Fix crash when hiding message in details splash mode
3 years ago
Ray Strode ea99a2e140 Merge branch 'ignore-serial-option' into 'master'
3 years ago
Alfonso Sánchez-Beato 0c503db27e main: add ignore-serial-consoles option
3 years ago
Ray Strode 2a4fbd8978 Merge branch 'weblate-plymouth-master' into 'master'
3 years ago
Jan Kuparinen 12b4608b8a Translated using Weblate (Finnish)
3 years ago
Hela Basa 5c1aa0aaf6 Translated using Weblate (Sinhala)
3 years ago
Liu Tao 4075ea7521 Translated using Weblate (Chinese (Simplified) (zh_CN))
3 years ago
Danial Behzadi ece1074efe Translated using Weblate (Persian)
3 years ago
Fabio Tomat f9577dbc15 Translated using Weblate (Friulian)
3 years ago
Yauhen Bugamol c5da4acab2 Translated using Weblate (Belarusian)
3 years ago
Emilio Herrera e9cb6294d6 Translated using Weblate (Spanish)
3 years ago
Ray Strode 8ff8a78a35 Merge branch 'master' into 'master'
3 years ago
Robin Ebert 07458698b1
main: Ensure that doubles in config files are parsed with '.'
3 years ago
Hans de Goede e55447500f Merge branch 'rework-shutdown-handling' into 'master'
3 years ago
Ray Strode 2a7755febb systemd: Add plymouth-switch-root-initramfs.service to switch back to initramfs on shutdown
3 years ago
Ray Strode a0c743c76a main: Add a plymouthd-fd-escrow helper
3 years ago
Hans de Goede a4bb4c146b main: Dump debug log to plymouth-shutdown-debug.log on shutdown/reboot
3 years ago
Hans de Goede eb5227b474 main: Cleanly quit on SIGTERM
3 years ago
Hans de Goede 156ae7437e main: Only mark plymouthd as unkillable when running from the initrd
3 years ago
Hans de Goede 630ca2e18f ply-device-manager: Don't deactivate renderers from ply_device_manager_free ()
3 years ago
Hans de Goede fbe2b79da5 Merge branch 'text-n-details-splash-fixes' into 'master'
3 years ago
Hans de Goede 0e59dde83a details: Clear newly added text-display before replaying log messages
3 years ago
Hans de Goede c6a8cf9dad text/tribar: Fix ply_boot_splash_hide () not clearing the terminal
3 years ago
Hans de Goede 9b9d7e1b3a ply-text-display: Fix bottom pixels of fbcon not getting cleared
3 years ago
Hans de Goede 9ef171f733 ply-text-display: Only skip clearing the screen when tracing to a terminal
3 years ago
Hans de Goede 8291d668ae main: Redirect stdio/stderr to null when tracing to a file
3 years ago
Hans de Goede ca869a3fff ply-logger: Add a ply_is_tracing_to_terminal () helper
3 years ago
Hans de Goede cf1ca1945c Merge branch 'gportay/plymouth-do-not-close-vt-on-show-hide-splash'
3 years ago
Gaël PORTAY e733f2b41d main: Retain splash on on_show_splash() and on_hide_splash()
3 years ago
Hans de Goede 8a3c9bbf24 Merge branch 'gportay/plymouth-fix-another-bad-assertion'
3 years ago
Gaël PORTAY 7dcd1f645d ply-device-manager: Fix bad assertion
3 years ago
Hans de Goede 0b9148a0ed Merge branch 'gportay/plymouth-two-step-link-libintl-if-nls'
3 years ago
Gaël PORTAY bd273d2703 two-step: Links against libintl.so if LNS
3 years ago
Hans de Goede a2dcb19d8d Merge branch 'weblate/plymouth-weblate-plymouth-master'
3 years ago
Hela Basa 29891c8e2e Added translation using Weblate (Sinhala)
3 years ago
Марко Костић (Marko Kostić) 2a9484def9 Translated using Weblate (Serbian)
3 years ago
Geert Warrink 949b5dc26c Translated using Weblate (Dutch)
3 years ago
Mikel Olasagasti 5167defc4a Translated using Weblate (Basque)
3 years ago
Igor Gorbounov d7d72a8163 Translated using Weblate (Russian)
3 years ago
Balázs Meskó 07213a7de5 Translated using Weblate (Hungarian)
3 years ago
Yaron Shahrabani e30739bf64 Translated using Weblate (Hebrew)
3 years ago
玉堂白鹤 7b7a79384a Translated using Weblate (Chinese (Simplified) (zh_CN))
3 years ago
Carmen Bianca Bakker c8f4a84cdc Translated using Weblate (Esperanto)
3 years ago
Robbi Nespu c0fab8c43b Translated using Weblate (Malay)
3 years ago
A S Alam 5925eeae12 Translated using Weblate (Punjabi)
3 years ago
Andika Triwidada 1770a17c9d Translated using Weblate (Indonesian)
3 years ago
scootergrisen 7fa9b2c403 Translated using Weblate (Danish)
3 years ago
Julien Humbert 0d1da54a51 Translated using Weblate (French)
3 years ago
Göran Uddeborg 96267b676a Translated using Weblate (Swedish)
3 years ago
Milo Casagrande 3b12d4d375 Translated using Weblate (Italian)
3 years ago
Jean-Baptiste Holcroft b1b94b88b6 Translated using Weblate (French)
3 years ago
Tobias Weise f410c906ab Translated using Weblate (German)
3 years ago
Ray Strode 5784567544 Merge branch 'fix-compile-gettext-mismatch' into 'master'
3 years ago
Wolfgang Haupt 1e00a7a0ce The use of AM_GNU_GETTEXT_VERSION in configure.ac instructs autopoint to
3 years ago
Hans de Goede 9773f3e513 Merge branch 'drm_probe_speedup' into 'master'
3 years ago
Hans de Goede 42ee6809b0 ply-device-manager: Speed up DRM-connector probing
3 years ago
Hans de Goede dc8dc20b26 ply-device-manager: add a verify_add_or_change() helper
3 years ago
Hans de Goede a649b55108 ply-device-manager: push udev_device_get_devnode call up into on_udev_event
3 years ago
Hans de Goede 9a3899c0ab two-step: Fix unused variable compiler warning
3 years ago
Hans de Goede 8c249a46f2 Merge branch 'remove_new_object_sh' into 'master'
3 years ago
Hans de Goede ba1a1e28d3 scripts: Remove new-object.sh
3 years ago
Hans de Goede 5c4b4012da Merge branch 'bgrt_fallback_image_fixes' into 'master'
3 years ago
Hans de Goede c5db6cf2d1 two-step: Only create background_bgrt_fallback_image if use_firmware_background is set
3 years ago
Hans de Goede 9cb47b71cb two-step: Always load the BGRT fallback image
3 years ago
Hans de Goede 6bd905e5e8 Merge branch 'fix-bgrt-fallback' into 'master'
3 years ago
Adrian Vovk 64522226f4 Fix BGRT fallback rendering
3 years ago
Ray Strode c74b3aef9c Merge branch 'kill-mode-change' into 'master'
3 years ago
Ray Strode 9d0f8b2e7b systemd: switch to KillMode=mixed
3 years ago
Ray Strode c4ced2a2d7 Merge branch 'use-fallback-image-if-bgrt-is-not-supported' into 'master'
3 years ago
Marius Meisenzahl 3ed2a1a92c Use fallback image if BGRT is not supported
3 years ago
Brian Murray 53c83cc8d6 client: Don't wait forever for a ping reply
4 years ago
Ray Strode 03e7789503 Revert "Don't wait forever for a ping reply."
4 years ago
Ray Strode a3798ec4c5 Merge branch 'timeout-on-pings' into 'master'
4 years ago
Brian Murray 55902cedde Don't wait forever for a ping reply.
4 years ago
Rafael Fontenelle 1253f7a2cb Translated using Weblate (Portuguese (Brazil))
4 years ago
Charles Lee bb2a3fbdd8 Translated using Weblate (Chinese (Simplified))
4 years ago
Yuri Chornoivan 1f0846089c Translated using Weblate (Ukrainian)
4 years ago
Piotr Drąg 23cafb1a08 Translated using Weblate (Polish)
4 years ago
Oğuz Ersen 97ef6c3d48 Translated using Weblate (Turkish)
4 years ago
Hans de Goede 20778f2efa Merge remote-tracking branch 'weblate/master' into master
4 years ago
Weblate bec341ae2d Update translation files
4 years ago
Ray Strode f28deaefdc Merge branch 'wip/fix-client-disconnect-crash' into 'master'
4 years ago
Ray Strode 9f89239367 boot-server: Handle client disconnecting while trigger pending
4 years ago
Ray Strode 104d83d5f5 boot-server: Ref count the connections
4 years ago
Ray Strode 5ee1aa665e Merge branch 'update-l10n' into 'master'
4 years ago
Rafael Fontenelle 85b72d61e5 Update translations from Zanata
4 years ago
Hans de Goede 15d80bd115 Merge branch 'drm-usermode' into 'master'
4 years ago
Hans de Goede 8dba434b2d NL translation update
4 years ago
Hans de Goede 18f87e81aa drm: Honor modes selected by the user through video= kernel cmdline argument
4 years ago
Ray Strode 9a55f5866e Merge branch 'patch-mismatched-monitors' into 'master'
4 years ago
Kayran Schmidt b2bf5d5cc9 use resolution of higher res monitor for window size
4 years ago
Hans de Goede 8176dc59b7 Merge branch 'translations-set-locale' into 'master'
4 years ago
Sebastien f33e2014a8 Initialize the translations on start if they are available
4 years ago
Ray Strode 6465e779c6 Merge branch 'master' into 'master'
4 years ago
Sebastien 66bf171eae Use the correct key name for title and subtitle
4 years ago
Ray Strode ab986a9582 autogoo: use /proc/self/fd/0 instead of /dev/stdin
4 years ago
Ray Strode e3a2cb9566 configure: bump to 0.9.6
4 years ago

28
DEBUG

@ -0,0 +1,28 @@
Отладка плагина
Развернуть plymouth через ebuild
USE="debug" ebuild /usr/portage/sys-boot/plymouth/plymouth-0.9.5-r1.ebuild install
Перейти в каталог /var/calculate/tmp/portage/sys-boot/plymouth-0.9.5-r1/work/plymouth-0.9.5
Изменить src/plugins/splash/two-step/plugin.c
Пересобрать плагин: make
Скопировать в систему
cp ./src/plugins/splash/two-step/.libs/two-step.so /usr/lib64/plymouth/
Запустить демон
plymouthd --debug --no-daemon --mode=boot
plymouthd --debug --no-daemon --mode=shutdown
plymouthd --debug --no-daemon --mode=updates
Отобразить splash
plymouth show-splash
plymouth quit
plymouth system-update --progress=80
---
Для того, чтобы получить патчи на сам plymouth (исключая плагин) нужно
либо использовать git show конкретный коммит, либо
git diff 0.9.5 ':!DEBUG' ':!src/plugins/splash/two-step'

@ -0,0 +1 @@
0.9.6

@ -1,4 +1,6 @@
AC_INIT([plymouth],[0.9.5],[https://gitlab.freedesktop.org/plymouth/plymouth/issues])
AC_INIT([plymouth],
m4_esyscmd_s([date +%y.%V.$(git rev-list $(git describe --abbrev=0)..HEAD --count) || echo 0]),
[https://gitlab.freedesktop.org/plymouth/plymouth/issues])
AC_CONFIG_SRCDIR(src/main.c)
AC_CONFIG_HEADER(config.h)
AC_CONFIG_AUX_DIR(build-tools)
@ -16,6 +18,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
AM_MAINTAINER_MODE([enable])
AM_GNU_GETTEXT_VERSION([0.19.8])
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.8])
AM_GNU_GETTEXT([external])
PKG_PROG_PKG_CONFIG
@ -180,7 +183,7 @@ AC_SUBST(background_color)
AC_ARG_WITH(background-start-color-stop, AS_HELP_STRING([--with-background-start-color-stop],[first color stop in background gradients used by boot splash plugins]),background_start_color=${withval},background_start_color=0x807c71)
AC_SUBST(background_start_color)
AC_ARG_WITH(background-end-color-stop, AS_HELP_STRING([--with-background-end-color-stop],[first color end in background gradients used by boot splash plugins]),background_end_color=${withval},background_end_color=0x3a362f)
AC_ARG_WITH(background-end-color-stop, AS_HELP_STRING([--with-background-end-color-stop],[last color end in background gradients used by boot splash plugins]),background_end_color=${withval},background_end_color=0x3a362f)
AC_SUBST(background_end_color)
AC_ARG_WITH(release-file, AS_HELP_STRING([--with-release-file=<path_to_release_file>],[Release File to use to detect distribution (by default /etc/system-release)]),RELEASE_FILE=${withval},RELEASE_FILE=/etc/system-release)
@ -341,6 +344,7 @@ AC_CONFIG_FILES([Makefile po/Makefile.in
systemd-units/plymouth-reboot.service
systemd-units/plymouth-start.service
systemd-units/plymouth-switch-root.service
systemd-units/plymouth-switch-root-initramfs.service
systemd-units/systemd-ask-password-plymouth.path
systemd-units/systemd-ask-password-plymouth.service
systemd-units/Makefile

@ -1,16 +1,33 @@
be
cs
da
de
eo
es
eu
fr
fur
hr
hu
id
it
lt
nl
pa
pl
uk
tr
pt_BR
pt
ru
sk
sr
sv
tr
uk
zh_CN
zh_HK
zh_TW
ms
he
si
fa
fi

@ -1,40 +1,55 @@
# Viktar Siarheichyk <veq@fedoraproject.org>, 2019. #zanata
# Yauhen Bugamol <3abac@3a.by>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-03-01 08:51+0000\n"
"Last-Translator: Viktar Siarheichyk <veq@fedoraproject.org>\n"
"Language-Team: Belarusian\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-09-25 19:05+0000\n"
"Last-Translator: Yauhen Bugamol <3abac@3a.by>\n"
"Language-Team: Belarusian <https://translate.fedoraproject.org/projects/"
"plymouth/master/be/>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.8\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "Зроблена %d%% "
msgstr "Завершана %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Інсталяцыя абнаўленняў..."
msgstr "Усталяванне абнаўленняў..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Не выключайце кампутар"
msgstr "Не выключайце камптар"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Сістэма абнаўляецца..."
msgstr "Абнаўленне сістэмы..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Сістэма абнаўляецца..."
msgstr "Абнаўленне ўбудаванага ПЗ..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Круцёлка"

@ -1,40 +1,55 @@
# Daniel Rusek <mail@asciiwolf.com>, 2019. #zanata
# Michal Konečný <michalkonec666@gmail.com>, 2019. #zanata
# Pavel Borecki <pavel.borecki@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-26 06:08+0000\n"
"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
"Language-Team: Czech\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-09-23 09:05+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language-Team: Czech <https://translate.fedoraproject.org/projects/plymouth/"
"master/cs/>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.8\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% dokončeno"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalace aktualizací..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Nevypínejte počítač"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Aktualizace systému..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Aktualizace systému..."
msgstr "Aktualizace firmwaru..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Točítko"

@ -0,0 +1,53 @@
# scootergrisen <scootergrisen@gmail.com>, 2019. #zanata, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-11-17 03:35+0000\n"
"Last-Translator: scootergrisen <scootergrisen@gmail.com>\n"
"Language-Team: Danish <https://translate.fedoraproject.org/projects/plymouth/"
"master/da/>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% færdig"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Installerer opdateringer ..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Sluk ikke for din computer"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Opgraderer system ..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Opgraderer firmware ..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Snurre"

@ -1,39 +1,54 @@
# Thomas Eichhorn <tomislav@posteo.de>, 2019. #zanata
# Tobias Weise <tobias.weise@web.de>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-03-02 08:34+0000\n"
"Last-Translator: Thomas Eichhorn <tomislav@posteo.de>\n"
"Language-Team: German\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-09-26 23:29+0000\n"
"Last-Translator: Tobias Weise <tobias.weise@web.de>\n"
"Language-Team: German <https://translate.fedoraproject.org/projects/plymouth/"
"master/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% abgeschlossen"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Updates werden installiert..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Schalten Sie den Computer nicht aus"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Systemupgrade wird durchgeführt..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Systemupgrade wird durchgeführt..."
msgstr "Upgrade der Firmware wird durchgeführt..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,54 @@
# Carmen Bianca Bakker <carmen@carmenbianca.eu>, 2019. #zanata, 2021.
# Carmen Bianca Bakker <carmen@carmenbianca.eu>, 2020. #zanata, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-05 13:40+0000\n"
"Last-Translator: Carmen Bianca Bakker <carmen@carmenbianca.eu>\n"
"Language-Team: Esperanto <https://translate.fedoraproject.org/projects/"
"plymouth/master/eo/>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% plenumita"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalante ĝisdatigojn..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Ne malŝaltu vian komputilon"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Altgradigante sistemon..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Altgradigante mikroprogramaron..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Turnilo"

@ -1,39 +1,54 @@
# Máximo Castañeda Riloba <mcrcctm@gmail.com>, 2019. #zanata
# Emilio Herrera <ehespinosa57@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-26 08:21+0000\n"
"Last-Translator: Máximo Castañeda Riloba <mcrcctm@gmail.com>\n"
"Language-Team: Spanish\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-04-26 15:02+0000\n"
"Last-Translator: Emilio Herrera <ehespinosa57@gmail.com>\n"
"Language-Team: Spanish <https://translate.fedoraproject.org/projects/"
"plymouth/master/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.6\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% completado"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalando actualizaciones..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "No apague su equipo"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Actualizando el sistema..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Actualizando el sistema..."
msgstr "Actualización de Firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,53 @@
# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2019. #zanata, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-23 22:40+0000\n"
"Last-Translator: Mikel Olasagasti <mikel@olasagasti.info>\n"
"Language-Team: Basque <https://translate.fedoraproject.org/projects/plymouth/"
"master/eu/>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% eginda"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Eguneraketak instalatzen..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Ez itzali zure ordenagailua"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Sistema bertsio-berritzen..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Firmwarea bertsio-berritzen..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,56 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Danial Behzadi <dani.behzi@ubuntu.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-07-16 15:04+0000\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <https://translate.fedoraproject.org/projects/"
"plymouth/master/fa/>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.7.1\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d٪ کامل"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "در حال نصب به روز رسانی‌ها…"
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "رایانه‌تان را خاموش نکنید"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "در حال ارتقای سامانه…"
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "در حال ارتقای ثابت‌افزار…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "چرخنده"

@ -0,0 +1,56 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Jan Kuparinen <copper_fin@hotmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-08-26 19:04+0000\n"
"Last-Translator: Jan Kuparinen <copper_fin@hotmail.com>\n"
"Language-Team: Finnish <https://translate.fedoraproject.org/projects/"
"plymouth/master/fi/>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% valmis"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Asennetaan päivityksiä ..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Älä sammuta tietokonettasi"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Päivitetään järjestelmää ..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Päivitetään laiteohjelmistoa ..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinneri"

@ -1,39 +1,54 @@
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata, 2020.
# Julien Humbert <julroy67@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-27 09:41+0000\n"
"Last-Translator: Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>\n"
"Language-Team: French\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-10-17 07:15+0000\n"
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
"Language-Team: French <https://translate.fedoraproject.org/projects/plymouth/"
"master/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.3\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Installation des mises à jour…"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Néteignez pas votre ordinateur"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Mise à jour du système…"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Mise à jour du système…"
msgstr "Mise à jour du micrologiciel…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Roulette"

@ -1,39 +1,53 @@
# Fabio Tomat <f.t.public@gmail.com>, 2019. #zanata
# Fabio Tomat <f.t.public@gmail.com>, 2019. #zanata, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-03-19 08:14+0000\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-07-11 19:04+0000\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian\n"
"Language-Team: Friulian <https://translate.fedoraproject.org/projects/"
"plymouth/master/fur/>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.7.1\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% completât"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Daûr a instalâ i inzornaments..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "No sta distudâ il computer"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Inzornament dal sisteme..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Inzornament dal sisteme..."
msgstr "Inzornament dal firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Roulette"

@ -0,0 +1,57 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-09 16:40+0000\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <https://translate.fedoraproject.org/projects/plymouth/"
"master/he/>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% הושלמו"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "העדכונים מותקנים…"
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "נא לא לכבות את המחשב"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "המערכת משתדרגת…"
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "הקושחה משתדרגת…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "שבשבת טעינה"

@ -0,0 +1,54 @@
# gogo <trebelnik2@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-10-29 17:02+0200\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <https://translate.fedoraproject.org/projects/\n"
"plymouth/master/hr/>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% završeno"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalacija nadopuna..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Ne isključujte svoje računalo"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Nadogradnja sustava..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Nadogradnja firmvera..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Puls okretanja"

@ -1,39 +1,54 @@
# Meskó Balázs <meskobalazs@gmail.com>, 2019. #zanata
# Balázs Meskó <meskobalazs@mailbox.org>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-28 03:07+0000\n"
"Last-Translator: Meskó Balázs <meskobalazs@gmail.com>\n"
"Language-Team: Hungarian\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-10 19:40+0000\n"
"Last-Translator: Balázs Meskó <meskobalazs@mailbox.org>\n"
"Language-Team: Hungarian <https://translate.fedoraproject.org/projects/"
"plymouth/master/hu/>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% kész"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Frissítések telepítése…"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Ne kapcsolja ki a számítógépet"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Rendszer frissítése…"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Rendszer frissítése…"
msgstr "Firmware frissítése…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Forgó"

@ -1,39 +1,54 @@
# Andika Triwidada <andika@gmail.com>, 2019. #zanata
# Andika Triwidada <andika@gmail.com>, 2019. #zanata, 2020.
# Andika Triwidada <andika@gmail.com>, 2020. #zanata
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-12-17 08:36+0000\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian <https://translate.fedoraproject.org/projects/"
"plymouth/master/id/>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2020-03-31 11:27+0000\n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=1; plural=0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.3.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% selesai"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Memasang Pemutakhiran..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Jangan matikan komputer Anda"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Meningkatkan Sistem..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Meningkatkan Firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,53 @@
# Milo Casagrande <milo@milo.name>, 2019. #zanata, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-10-01 09:30+0000\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italian <https://translate.fedoraproject.org/projects/"
"plymouth/master/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% completato"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Installazione aggiornamenti..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Non spegnere il computer"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Aggiornamento del sistema..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Aggiornamento del firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,53 @@
# Moo <hazap@hotmail.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2019-04-03 08:52-0400\n"
"Last-Translator: Moo <hazap@hotmail.com>\n"
"Language-Team: Lithuanian\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Zanata 4.6.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% užbaigta"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Diegiami atnaujinimai..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Neišjunkite kompiuterio"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Naujinama sistema..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr ""
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -0,0 +1,56 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Robbi Nespu <robbinespu@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-01-09 10:36+0000\n"
"Last-Translator: Robbi Nespu <robbinespu@gmail.com>\n"
"Language-Team: Malay <https://translate.fedoraproject.org/projects/plymouth/"
"master/ms/>\n"
"Language: ms\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.4\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% siap"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Memasang kemaskini..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Jangan tutup komputer anda"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Menaiktaraf sistem..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Mengemaskini Firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -3,41 +3,57 @@
# Copyright (C) 2019 Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Hans de Goede <hdegoede@redhat.com>, 2019.
#
# Geert Warrink <geert.warrink@onsnet.nu>, 2019. #zanata, 2021.
# Hans de Goede <hdegoede@redhat.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-26 11:19+0100\n"
"Last-Translator: Hans de Goede <hdegoede@redhat.com>\n"
"Language-Team: Dutch\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-28 12:40+0000\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: Dutch <https://translate.fedoraproject.org/projects/plymouth/"
"master/nl/>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% voltooid"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Updates worden uitgevoerd..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Schakel de computer niet uit"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Besturingssysteem upgrade wordt uitgevoerd..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Besturingssysteem upgrade wordt uitgevoerd..."
msgstr "Firmware upgrade wordt uitgevoerd..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,54 @@
# A S Alam <aalam@fedoraproject.org>, 2019. #zanata
# A S Alam <amanpreet.alam@gmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-12-21 07:36+0000\n"
"Last-Translator: A S Alam <amanpreet.alam@gmail.com>\n"
"Language-Team: Punjabi <https://translate.fedoraproject.org/projects/"
"plymouth/master/pa/>\n"
"Language: pa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.3.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% ਪੂਰਾ"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "...ਅੱਪਡੇਟ ਇੰਸਟਾਲ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ"
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "ਆਪਣੇ ਕੰਪਿਊਟਰ ਨੂੰ ਬੰਦ ਨਾ ਕਰੋ"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "...ਸਿਸਟਮ ਅੱਪਗਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "...ਫਿਰਮਵੇਅਰ ਅੱਪਗਰੇਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "ਸਪਿੱਨਰ"

@ -1,40 +1,54 @@
# Piotr Drąg <piotrdrag@gmail.com>, 2019. #zanata
# Piotr Drąg <piotrdrag@gmail.com>, 2019. #zanata, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-26 04:45+0000\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-09-21 16:22+0000\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish\n"
"Language-Team: Polish <https://translate.fedoraproject.org/projects/plymouth/"
"master/pl/>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "Ukończono %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalowanie aktualizacji…"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Nie należy wyłączać komputera"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Aktualizowanie systemu…"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Aktualizowanie systemu…"
msgstr "Aktualizowanie oprogramowania sprzętowego…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,52 @@
# Manuela Silva <mmsrs@sky.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2019-09-12 10:53-0400\n"
"Last-Translator: Manuela Silva <mmsrs@sky.com>\n"
"Language-Team: Portuguese\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Zanata 4.6.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% concluído"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "A instalar as atualizações..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Não desligue o computador"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "A atualizar o sistema..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "A atualizar o \"firmware\""
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -0,0 +1,54 @@
# Itamar Reis Peixoto <itamar@ispbrasil.com.br>, 2019. #zanata
# Rafael Fontenelle <rafaelff@gnome.org>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-09-25 11:29+0000\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Portuguese (Brazil) <https://translate.fedoraproject.org/"
"projects/plymouth/master/pt_BR/>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% concluído"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Instalando as atualizações..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Não desligue seu computador"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Atualizando o sistema..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Atualizando o firmware..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -0,0 +1,54 @@
# Igor Gorbounov <igor.gorbounov@gmail.com>, 2019. #zanata, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-18 19:40+0000\n"
"Last-Translator: Igor Gorbounov <igor.gorbounov@gmail.com>\n"
"Language-Team: Russian <https://translate.fedoraproject.org/projects/"
"plymouth/master/ru/>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "завершено %d%%"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Установка обновлений..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Не выключайте компьютер"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Обновление системы..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Обновление микропрограммы..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Числовое поле с кнопками"

@ -0,0 +1,56 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Plymouth contributors
# This file is distributed under the same license as the plymouth package.
# Hela Basa <r45xveza@pm.me>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-08-19 07:04+0000\n"
"Last-Translator: Hela Basa <r45xveza@pm.me>\n"
"Language-Team: Sinhala <https://translate.fedoraproject.org/projects/"
"plymouth/master/si/>\n"
"Language: si\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.7.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% සම්පූර්ණයි"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr ""
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -0,0 +1,52 @@
# Dusan Kazik <prescott66@gmail.com>, 2020. #zanata
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-04-07 11:25-0400\n"
"Last-Translator: Dusan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
"X-Generator: Zanata 4.6.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "Dokončené na %d%%"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Inštalujú sa aktualizácie..."
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Nevypínajte váš počítač"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Aktualizuje sa systém..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Aktualizuje sa firmvér..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -1,40 +1,55 @@
# Marko Kostic <marko.m.kostic@gmail.com>, 2019. #zanata
# Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-03-11 09:03+0000\n"
"Last-Translator: Marko Kostic <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-02-28 12:40+0000\n"
"Last-Translator: Марко Костић (Marko Kostić) <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian <https://translate.fedoraproject.org/projects/"
"plymouth/master/sr/>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.4.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% завршено"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Инсталирам ажурирања..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Не искључујте ваш рачунар"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Надограђујем систем..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Надограђујем систем..."
msgstr "Надограђујем фирмвер..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Предилица"

@ -0,0 +1,53 @@
# Göran Uddeborg <goeran@uddeborg.se>, 2019. #zanata, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-10-12 02:37+0000\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/"
"plymouth/master/sv/>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d %% färdig"
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Installerar uppdateringar …"
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Stäng inte av datorn"
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Uppgraderar systemet …"
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Uppgraderar fast programvara …"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinnare"

@ -1,42 +1,55 @@
# Turkish translation for plymouth.
# Copyright (C) 2019 plymouth's COPYRIGHT HOLDER
# This file is distributed under the same license as the plymouth package.
#
# Sabri Ünal <libreajans@gmail.com>, 2019.
#
# Sabri Ünal <libreajans@gmail.com>, 2019. #zanata
# Serdar Sağlam <teknomobil@msn.com>, 2019. #zanata
# Oğuz Ersen <oguzersen@protonmail.com>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth master\n"
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-09-07 23:16+0300\n"
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-09-21 15:29+0000\n"
"Last-Translator: Oğuz Ersen <oguzersen@protonmail.com>\n"
"Language-Team: Turkish <https://translate.fedoraproject.org/projects/"
"plymouth/master/tr/>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.6\n"
"Plural-Forms: nplurals=2; plural=(n>1);\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "%d%% tamamlandı"
msgstr "%%%d tamamlandı"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Güncellemeler Kuruluyor..."
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Bilgisayarınızı kapatmayın"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Sistem Güncelleniyor..."
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Aygıt Yazılımı Güncelleniyor..."
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -1,40 +1,54 @@
# Yuri Chornoivan <yurchor@ukr.net>, 2019. #zanata
# Yuri Chornoivan <yurchor@ukr.net>, 2019. #zanata, 2020.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-26 04:44+0000\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2020-09-22 16:29+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian\n"
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/"
"plymouth/master/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.2.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "Виконано на %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "Встановлюємо оновлення…"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "Не вимикайте комп'ютер"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "Оновлюємо систему…"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "Оновлюємо систему…"
msgstr "Оновлюємо мікропрограму…"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Крутний індикатор"

@ -1,39 +1,56 @@
# Pany <pany@fedoraproject.org>, 2019. #zanata
# Charles Lee <lchopn@gmail.com>, 2020.
# 玉堂白鹤 <yjwork@qq.com>, 2021.
# Liu Tao <lyuutau@outlook.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"PO-Revision-Date: 2019-02-27 08:56+0000\n"
"Last-Translator: Pany <pany@fedoraproject.org>\n"
"Language-Team: Chinese (China)\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2021-07-22 14:04+0000\n"
"Last-Translator: Liu Tao <lyuutau@outlook.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/"
"projects/plymouth/master/zh_CN/>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=1; plural=0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.7.2\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "当前进度 %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr "BGRT"
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "正在安装更新……"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "请不要关机"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "正在升级系统……"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#, fuzzy
#| msgid "Upgrading System..."
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
msgid "Upgrading Firmware..."
msgstr "正在升级系统……"
msgstr "正在升级固件……"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr "Spinner"

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2019-07-12 10:35+0800\n"
"Last-Translator: zhaoqiang <zhaoqiang@gnome.org>\n"
"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
@ -14,25 +14,40 @@ msgstr ""
"X-Generator: Gtranslator 3.30.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "目前的進度 %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "正在安裝更新……"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "請不要關機"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "正在升級系統……"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
#, fuzzy
#| msgid "Upgrading System..."
msgid "Upgrading Firmware..."
msgstr "正在升級系統……"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: plymouth 0.9.5\n"
"Report-Msgid-Bugs-To: https://gitlab.freedesktop.org/plymouth/plymouth/"
"issues\n"
"POT-Creation-Date: 2019-06-12 11:54+0200\n"
"POT-Creation-Date: 2020-07-08 14:59-0400\n"
"PO-Revision-Date: 2019-07-12 10:35+0800\n"
"Last-Translator: zhaoqiang <zhaoqiang@gnome.org>\n"
"Language-Team: Chinese(Taiwan) <zh-l10n@lists.linux.org.tw>\n"
@ -14,25 +14,40 @@ msgstr ""
"X-Generator: Gtranslator 3.30.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/plugins/splash/two-step/plugin.c:1885
#: src/plugins/splash/two-step/plugin.c:1727
#, c-format
msgid "%d%% complete"
msgstr "目前的進度 %d%%"
#: themes/bgrt/bgrt.plymouth.in.h:1 themes/spinner/spinner.plymouth.in.h:1
#: themes/bgrt/bgrt.plymouth.desktop:3
msgid "BGRT"
msgstr ""
#: themes/bgrt/bgrt.plymouth.desktop:44
#: themes/spinner/spinner.plymouth.desktop:40
msgid "Installing Updates..."
msgstr "正在安裝更新……"
#: themes/bgrt/bgrt.plymouth.in.h:2 themes/spinner/spinner.plymouth.in.h:2
#: themes/bgrt/bgrt.plymouth.desktop:45 themes/bgrt/bgrt.plymouth.desktop:52
#: themes/bgrt/bgrt.plymouth.desktop:59
#: themes/spinner/spinner.plymouth.desktop:41
#: themes/spinner/spinner.plymouth.desktop:48
#: themes/spinner/spinner.plymouth.desktop:55
msgid "Do not turn off your computer"
msgstr "請不要關機"
#: themes/bgrt/bgrt.plymouth.in.h:3 themes/spinner/spinner.plymouth.in.h:3
#: themes/bgrt/bgrt.plymouth.desktop:51
#: themes/spinner/spinner.plymouth.desktop:47
msgid "Upgrading System..."
msgstr "正在升級系統……"
#: themes/bgrt/bgrt.plymouth.in.h:4 themes/spinner/spinner.plymouth.in.h:4
#: themes/bgrt/bgrt.plymouth.desktop:58
#: themes/spinner/spinner.plymouth.desktop:54
#, fuzzy
#| msgid "Upgrading System..."
msgid "Upgrading Firmware..."
msgstr "正在升級系統……"
#: themes/spinner/spinner.plymouth.desktop:3
msgid "Spinner"
msgstr ""

@ -1,5 +1,3 @@
noinst_SCRIPTS = new-object.sh
initrdscriptdir = $(libexecdir)/plymouth
initrdscript_SCRIPTS = plymouth-update-initrd plymouth-generate-initrd plymouth-populate-initrd
@ -13,6 +11,5 @@ EXTRA_DIST= plymouth-update-initrd \
plymouth-generate-initrd.in \
plymouth-populate-initrd.in \
plymouth-set-default-theme.in \
$(noinst_SCRIPTS) \
bootlog \
default.cfg

@ -1,389 +0,0 @@
#!/bin/bash
NAMESPACE="Ply"
AUTHOR="YOUR NAME <youremail@here.com>"
#-----------------------------------------------------------------------------
uppercase ()
{
echo "${1}" | tr 'a-z' 'A-Z'
}
lowercase ()
{
echo "${1}" | tr 'A-Z' 'a-z'
}
change_character ()
{
echo "${1}" | tr "${2}" "${3}"
}
delete_character ()
{
echo "${1}" | tr -d "${2}"
}
#-----------------------------------------------------------------------------
MACRO_NAMESPACE="$(change_character $(uppercase ${NAMESPACE}) '-' '_')"
METHOD_NAMESPACE="$(change_character $(lowercase ${NAMESPACE}) '-' '_')"
OBJECT_NAME="$(delete_character ${1} '-')"
MACRO_OBJECT_NAME="$(change_character $(uppercase ${1}) '-' '_')"
METHOD_OBJECT_NAME="$(change_character $(lowercase ${1}) '-' '_')"
FULL_OBJECT_NAME="$(delete_character ${NAMESPACE} '-')${OBJECT_NAME}"
SHORT_OBJECT_NAME="$(lowercase $(echo ${1} | awk -F- '{print $NF}'))"
HEADER_FILENAME="$(lowercase ${NAMESPACE}-${1}).h"
HEADER_GUARD="$(change_character $(change_character $(uppercase ${HEADER_FILENAME}) '-' '_') '.' '_')"
SOURCE_FILENAME="$(lowercase ${NAMESPACE}-${1}).c"
MACRO_PREFIX="${MACRO_NAMESPACE}_${MACRO_OBJECT_NAME}"
METHOD_PREFIX="${METHOD_NAMESPACE}_${METHOD_OBJECT_NAME}"
ERROR_QUARK="${METHOD_NAMESPACE}-$(lowercase ${1})"
HUMAN_READABLE_NAME=$(change_character $(lowercase ${1}) '-' ' ')
#-----------------------------------------------------------------------------
cat <<  > ${HEADER_FILENAME}
/* vim: ts=4 sw=2 expandtab autoindent cindent
* ${HEADER_FILENAME} - ${2}
*
* Copyright (C) $(date +%Y) ${AUTHOR}
*
* 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: ${AUTHOR}
*/
#ifndef ${HEADER_GUARD}
#define ${HEADER_GUARD}
#include <glib.h>
#include <glib-object.h>
G_BEGIN_DECLS
#define ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME} (${METHOD_PREFIX}_get_type ())
#define ${MACRO_PREFIX}(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}))
#define ${MACRO_PREFIX}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}Class))
#define ${MACRO_NAMESPACE}_IS_${MACRO_OBJECT_NAME}(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}))
#define ${MACRO_NAMESPACE}_IS_${MACRO_OBJECT_NAME}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}))
#define ${MACRO_PREFIX}_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), ${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, ${FULL_OBJECT_NAME}Class))
#define ${MACRO_PREFIX}_ERROR (${METHOD_PREFIX}_error_quark ())
typedef struct _${FULL_OBJECT_NAME} ${FULL_OBJECT_NAME};
typedef struct _${FULL_OBJECT_NAME}Class ${FULL_OBJECT_NAME}Class;
typedef struct _${FULL_OBJECT_NAME}Private ${FULL_OBJECT_NAME}Private;
typedef enum _${FULL_OBJECT_NAME}Error ${FULL_OBJECT_NAME}Error;
struct _${FULL_OBJECT_NAME}
{
GObject parent;
/*< private >*/
${FULL_OBJECT_NAME}Private *priv;
};
struct _${FULL_OBJECT_NAME}Class
{
GObjectClass parent_class;
/* signals */
#if 0
void (* foo) (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME});
#endif
};
enum _${FULL_OBJECT_NAME}Error
{
${MACRO_PREFIX}_ERROR_GENERIC = 0,
};
#ifndef ${MACRO_NAMESPACE}_HIDE_FUNCTION_DECLARATIONS
GType ${METHOD_PREFIX}_get_type (void);
GQuark ${METHOD_PREFIX}_error_quark (void);
${FULL_OBJECT_NAME} *${METHOD_PREFIX}_new (void) G_GNUC_MALLOC;
#endif
G_END_DECLS
#endif /* ${HEADER_GUARD} */

#-----------------------------------------------------------------------------
cat <<  > ${SOURCE_FILENAME}
/* vim: ts=4 sw=2 expandtab autoindent cindent
* ${SOURCE_FILENAME} - ${2}
*
* Copyright (C) $(date +%Y) ${AUTHOR}
*
* 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: ${AUTHOR}
*/
#include "config.h"
#include "${HEADER_FILENAME}"
#include <errno.h>
#include <string.h>
#include <glib.h>
#include <glib-object.h>
#include <glib/gi18n.h>
struct _${FULL_OBJECT_NAME}Private
{
int bar;
};
static void ${METHOD_PREFIX}_finalize (GObject *object);
#if 0
static void ${METHOD_PREFIX}_class_install_signals (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class);
static void ${METHOD_PREFIX}_class_install_properties (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class);
static void ${METHOD_PREFIX}_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec);
static void ${METHOD_PREFIX}_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
enum
{
PROP_0 = 0,
PROP_BAR
};
#define ${MACRO_PREFIX}_DEFAULT_BAR 1
enum
{
FOO = 0,
NUMBER_OF_SIGNALS
};
static guint ${METHOD_PREFIX}_signals[NUMBER_OF_SIGNALS];
#endif
G_DEFINE_TYPE (${FULL_OBJECT_NAME}, ${METHOD_PREFIX}, G_TYPE_OBJECT);
static void
${METHOD_PREFIX}_class_init (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
{
GObjectClass *object_class;
object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
object_class->finalize = ${METHOD_PREFIX}_finalize;
#if 0
${METHOD_PREFIX}_class_install_properties (${SHORT_OBJECT_NAME}_class);
${METHOD_PREFIX}_class_install_signals (${SHORT_OBJECT_NAME}_class);
#endif
g_type_class_add_private (${SHORT_OBJECT_NAME}_class, sizeof (${FULL_OBJECT_NAME}Private));
}
#if 0
static void
${METHOD_PREFIX}_class_install_signals (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
{
GObjectClass *object_class;
object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
${METHOD_PREFIX}_signals[FOO] =
g_signal_new ("foo", G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (${FULL_OBJECT_NAME}Class, foo),
NULL, NULL, g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
${SHORT_OBJECT_NAME}_class->foo = NULL;
}
static void
${METHOD_PREFIX}_class_install_properties (${FULL_OBJECT_NAME}Class *${SHORT_OBJECT_NAME}_class)
{
GObjectClass *object_class;
GParamSpec *param_spec;
object_class = G_OBJECT_CLASS (${SHORT_OBJECT_NAME}_class);
object_class->set_property = ${METHOD_PREFIX}_set_property;
object_class->get_property = ${METHOD_PREFIX}_get_property;
param_spec = g_param_spec_int ("bar", _("Bar"),
_("The amount of bar"),
0, G_MAXINT,
${MACRO_PREFIX}_DEFAULT_BAR,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
g_object_class_install_property (object_class, PROP_BAR, param_spec);
}
#endif
static void
${METHOD_PREFIX}_init (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME})
{
${SHORT_OBJECT_NAME}->priv = G_TYPE_INSTANCE_GET_PRIVATE (${SHORT_OBJECT_NAME},
${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME},
${FULL_OBJECT_NAME}Private);
}
static void
${METHOD_PREFIX}_finalize (GObject *object)
{
${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
GObjectClass *parent_class;
${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
parent_class = G_OBJECT_CLASS (${METHOD_PREFIX}_parent_class);
if (parent_class->finalize != NULL)
parent_class->finalize (object);
}
#if 0
static void
${METHOD_PREFIX}_set_property (GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
switch (prop_id)
{
case PROP_BAR:
${METHOD_PREFIX}_set_bar (${SHORT_OBJECT_NAME},
g_value_get_int (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
static void
${METHOD_PREFIX}_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec)
{
${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME} = ${MACRO_PREFIX} (object);
switch (prop_id)
{
case PROP_BAR:
g_value_set_int (value,
${METHOD_PREFIX}_get_bar (${SHORT_OBJECT_NAME}));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
}
}
#endif
GQuark
${METHOD_PREFIX}_error_quark (void)
{
static GQuark error_quark = 0;
if (error_quark == 0)
error_quark = g_quark_from_static_string ("${ERROR_QUARK}");
return error_quark;
}
${FULL_OBJECT_NAME} *
${METHOD_PREFIX}_new (void)
{
${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
${SHORT_OBJECT_NAME} = g_object_new (${MACRO_NAMESPACE}_TYPE_${MACRO_OBJECT_NAME}, NULL);
return ${SHORT_OBJECT_NAME};
}
#if 0
void
${METHOD_PREFIX}_set_bar (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME},
int bar)
{
if (${SHORT_OBJECT_NAME}->priv->bar != bar)
{
${SHORT_OBJECT_NAME}->priv->bar = bar;
g_object_notify (G_OBJECT (${SHORT_OBJECT_NAME}), "bar");
}
}
int
${METHOD_PREFIX}_get_bar (${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME})
{
return ${SHORT_OBJECT_NAME}->priv->bar;
}
#endif
#ifdef ${MACRO_PREFIX}_ENABLE_TEST
#include <stdio.h>
#include <glib.h>
int
main (int argc,
char **argv)
{
${FULL_OBJECT_NAME} *${SHORT_OBJECT_NAME};
int exit_code;
g_log_set_always_fatal (G_LOG_LEVEL_ERROR
| G_LOG_LEVEL_CRITICAL
| G_LOG_LEVEL_WARNING);
g_type_init ();
${SHORT_OBJECT_NAME} = ${METHOD_PREFIX}_new ();
g_object_unref (${SHORT_OBJECT_NAME});
exit_code = 0;
return exit_code;
}
#endif /* ${MACRO_PREFIX}_ENABLE_TEST */

uncrustify -c $(dirname $0)/default.cfg ${HEADER_FILENAME}
mv ${HEADER_FILENAME}.uncrustify ${HEADER_FILENAME}
uncrustify -c $(dirname $0)/default.cfg ${SOURCE_FILENAME}
mv ${SOURCE_FILENAME}.uncrustify ${SOURCE_FILENAME}

@ -18,10 +18,12 @@
[ -z "$PLYMOUTH_LOGO_FILE" ] && PLYMOUTH_LOGO_FILE="@PLYMOUTH_LOGO_FILE@"
[ -n "$PLYMOUTH_THEME_NAME" ] && THEME_OVERRIDE=1
[ -z "$PLYMOUTH_THEME_NAME" ] && PLYMOUTH_THEME_NAME=$(plymouth-set-default-theme)
[ -n "$PLYMOUTH_CONFIGURED_DIR_PATH" ] && THEME_DIR_OVERRIDE=1
[ -z "$PLYMOUTH_CONFDIR" ] && PLYMOUTH_CONFDIR="@PLYMOUTH_CONF_DIR@"
[ -z "$PLYMOUTH_POLICYDIR" ] && PLYMOUTH_POLICYDIR="@PLYMOUTH_POLICY_DIR@"
[ -z "$PLYMOUTH_DAEMON_PATH" ] && PLYMOUTH_DAEMON_PATH="@PLYMOUTH_DAEMON_DIR@/plymouthd"
[ -z "$PLYMOUTH_CLIENT_PATH" ] && PLYMOUTH_CLIENT_PATH="@PLYMOUTH_CLIENT_DIR@/plymouth"
[ -z "$PLYMOUTH_DRM_ESCROW_PATH" ] && PLYMOUTH_DRM_ESCROW_PATH="@PLYMOUTH_LIBEXECDIR@/plymouth/plymouthd-fd-escrow"
[ -z "$SYSTEMD_UNIT_DIR" ] && SYSTEMD_UNIT_DIR="@SYSTEMD_UNIT_DIR@"
# Generic substring function. If $2 is in $1, return 0.
@ -373,6 +375,43 @@ inst_recur() {
done
}
# $1: Configuration file
# $2: Setting name
function read_setting_from_file()
{
echo $(grep -v '^#' $1 2> /dev/null |
awk '
BEGIN {
FS="[=[:space:]]+";
OFS="";
ORS=""
}
$1 ~/^'"$2"'$/ { print $2 }
')
}
# $1: Configuration file
function set_configured_theme_path_from_file()
{
CONFIGURED_THEME_DIR=$(read_setting_from_file "$1" "ThemeDir")
CONFIGURED_THEME_NAME=$(read_setting_from_file "$1" "Theme")
}
function set_theme_dir()
{
set_configured_theme_path_from_file ${PLYMOUTH_CONFDIR}/plymouthd.conf
if [ -z "$CONFIGURED_THEME_DIR" ] || [ ! -d "$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME" ]; then
set_configured_theme_path_from_file ${PLYMOUTH_POLICYDIR}/plymouthd.defaults
fi
if [ -n "$CONFIGURED_THEME_DIR" ] && [ -d "$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME" ]; then
PLYMOUTH_THEME_NAME=$CONFIGURED_THEME_NAME
PLYMOUTH_THEME_DIR=$CONFIGURED_THEME_DIR/$CONFIGURED_THEME_NAME
else
PLYMOUTH_THEME_DIR=$PLYMOUTH_DATADIR/plymouth/themes/$PLYMOUTH_THEME_NAME
fi
}
function usage() {
local output="/proc/self/fd/1"
local rc=0
@ -416,6 +455,7 @@ ddebug "Running with PLYMOUTH_LDD_PATH=$PLYMOUTH_LDD_PATH"
mkdir -p ${INITRDDIR}${PLYMOUTH_DATADIR}/plymouth/themes
inst ${PLYMOUTH_DAEMON_PATH} $INITRDDIR
inst ${PLYMOUTH_CLIENT_PATH} $INITRDDIR
inst ${PLYMOUTH_DRM_ESCROW_PATH} $INITRDDIR
inst ${PLYMOUTH_DATADIR}/plymouth/themes/text/text.plymouth $INITRDDIR
inst ${PLYMOUTH_PLUGIN_PATH}/text.so $INITRDDIR
inst ${PLYMOUTH_DATADIR}/plymouth/themes/details/details.plymouth $INITRDDIR
@ -430,6 +470,9 @@ if [ -z "$PLYMOUTH_THEME_NAME" ]; then
exit 1
fi
set_theme_dir
mkdir -p ${INITRDDIR}${PLYMOUTH_THEME_DIR}
if [ $THEME_OVERRIDE ]; then
conf=$INITRDDIR/${PLYMOUTH_CONFDIR}/plymouthd.conf
echo "modifying plymouthd.conf: Theme=$PLYMOUTH_THEME_NAME" >&2
@ -437,10 +480,15 @@ if [ $THEME_OVERRIDE ]; then
grep -q "^ *\[Daemon\]" $conf || echo "[Daemon]" >> $conf
grep -q "^ *Theme *=" $conf || echo "Theme=fade-in" >> $conf
sed -i "s/^ *Theme *=.*/# theme modified by plymouth-populate-initrd\nTheme=$PLYMOUTH_THEME_NAME/" $conf
if [ "$THEME_DIR_OVERRIDE" ]; then
echo "modifying plymouthd.conf: ThemeDir=$PLYMOUTH_CONFIGURED_DIR_PATH" >&2
grep -q "^ *ThemeDir *=" $conf || echo "ThemeDir=/some/path" >> $conf
sed -i "s@^ *ThemeDir *=.*@# theme dir modified by plymouth-populate-initrd\nThemeDir=$PLYMOUTH_CONFIGURED_DIR_PATH@" $conf
PLYMOUTH_THEME_DIR=${PLYMOUTH_CONFIGURED_DIR_PATH}
fi
fi
PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
PLYMOUTH_THEME_DIR="${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME}"
PLYMOUTH_MODULE_NAME=$(grep "ModuleName *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ModuleName *= *//')
PLYMOUTH_IMAGE_DIR=$(grep "ImageDir *= *" ${PLYMOUTH_SYSROOT}${PLYMOUTH_THEME_DIR}/${PLYMOUTH_THEME_NAME}.plymouth | sed 's/ImageDir *= *//')
if [ ! -f ${PLYMOUTH_SYSROOT}${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so ]; then

@ -6,6 +6,8 @@ AM_CPPFLAGS = -I$(top_srcdir) \
-I$(srcdir)/libply \
-I$(srcdir)/libply-splash-core \
-I$(srcdir) \
-DPLYMOUTH_LOCALE_DIRECTORY=\"$(localedir)\" \
-DPLYMOUTH_DRM_ESCROW_DIRECTORY=\"$(libexecdir)/plymouth\" \
-DPLYMOUTH_LOG_DIRECTORY=\"$(localstatedir)/log\" \
-DPLYMOUTH_SPOOL_DIRECTORY=\"$(localstatedir)/spool/plymouth\" \
-DPLYMOUTH_TIME_DIRECTORY=\"$(localstatedir)/lib/plymouth/\" \
@ -30,6 +32,11 @@ plymouthd_SOURCES = \
plugins/splash/details/plugin.c \
main.c
escrowdir = $(libexecdir)/plymouth
escrow_PROGRAMS = plymouthd-fd-escrow
plymouthd_fd_escrow_SOURCES = plymouthd-fd-escrow.c
plymouthdrundir = $(localstatedir)/run/plymouth
plymouthdspooldir = $(localstatedir)/spool/plymouth
plymouthdtimedir = $(localstatedir)/lib/plymouth

@ -42,6 +42,12 @@
#define PLY_MAX_COMMAND_LINE_SIZE 4097
#endif
#ifndef PLY_PING_TIMEOUT
#define PLY_PING_TIMEOUT 30.0
#endif
#define KEY_CTRL_C ('\100' ^ 'C')
typedef struct
@ -75,6 +81,13 @@ typedef struct
char *keys;
} key_answer_state_t;
static void
on_ping_timeout (state_t *state)
{
ply_trace ("ping: timed out waiting for plymouthd");
ply_event_loop_exit (state->loop, 1);
}
static char **
split_string (const char *command,
const char delimiter)
@ -1145,6 +1158,9 @@ main (int argc,
on_success,
(ply_boot_client_response_handler_t)
on_failure, &state);
ply_event_loop_watch_for_timeout (state.loop, PLY_PING_TIMEOUT,
(ply_event_loop_timeout_handler_t)
on_ping_timeout, &state);
} else if (should_check_for_active_vt) {
ply_boot_client_ask_daemon_has_active_vt (state.client,
(ply_boot_client_response_handler_t)

@ -39,12 +39,14 @@
#include "ply-hashtable.h"
#include "ply-list.h"
#include "ply-utils.h"
#include <math.h>
#define SUBSYSTEM_DRM "drm"
#define SUBSYSTEM_FRAME_BUFFER "graphics"
#ifdef HAVE_UDEV
static void create_devices_from_udev (ply_device_manager_t *manager);
static void create_fb_devices_from_udev (ply_device_manager_t *manager);
#endif
static bool create_devices_for_terminal_and_renderer_type (ply_device_manager_t *manager,
@ -84,6 +86,7 @@ struct _ply_device_manager
uint32_t paused : 1;
uint32_t device_timeout_elapsed : 1;
uint32_t fb_device_timeout_elapsed : 1;
uint32_t found_drm_device : 1;
uint32_t found_fb_device : 1;
};
@ -189,11 +192,16 @@ free_devices_from_device_path (ply_device_manager_t *manager,
ply_hashtable_remove (manager->renderers, (void *) device_path);
free (key);
if (manager->renderers_activated)
ply_renderer_deactivate (renderer);
/*
* Close is false when called from ply_device_manager_free (), in this
* case we don't deactivate / close for retain-splash purposes.
*/
if (close) {
if (manager->renderers_activated)
ply_renderer_deactivate (renderer);
if (close)
ply_renderer_close (renderer);
}
ply_renderer_free (renderer);
}
@ -308,18 +316,6 @@ create_devices_for_udev_device (ply_device_manager_t *manager,
return created;
}
static void
free_devices_for_udev_device (ply_device_manager_t *manager,
struct udev_device *device)
{
const char *device_path;
device_path = udev_device_get_devnode (device);
if (device_path != NULL)
free_devices_from_device_path (manager, device_path, true);
}
static bool
create_devices_for_subsystem (ply_device_manager_t *manager,
const char *subsystem)
@ -385,15 +381,12 @@ create_devices_for_subsystem (ply_device_manager_t *manager,
static void
on_drm_udev_add_or_change (ply_device_manager_t *manager,
const char *action,
const char *device_path,
struct udev_device *device)
{
const char *device_path = udev_device_get_devnode (device);
ply_renderer_t *renderer;
bool changed;
if (device_path == NULL)
return;
renderer = ply_hashtable_lookup (manager->renderers, (void *) device_path);
if (renderer == NULL) {
/* We also try to create the renderer again on change events,
@ -415,41 +408,125 @@ on_drm_udev_add_or_change (ply_device_manager_t *manager,
}
}
static bool
verify_add_or_change (ply_device_manager_t *manager,
const char *action,
const char *device_path,
struct udev_device *device)
{
const char *subsystem = udev_device_get_subsystem (device);
if (strcmp (action, "add") && strcmp (action, "change"))
return false;
subsystem = udev_device_get_subsystem (device);
if (strcmp (subsystem, SUBSYSTEM_DRM) == 0) {
if (manager->local_console_managed && manager->local_console_is_text) {
ply_trace ("ignoring since we're already using text splash for local console");
return false;
}
} else if (manager->fb_device_timeout_elapsed && strcmp (subsystem, SUBSYSTEM_FRAME_BUFFER) == 0){
if (manager->local_console_managed && manager->local_console_is_text){
ply_trace ("ignoring since we're already using text splash for local console");
return false;
}
} else {
ply_trace ("ignoring since we only handle subsystem %s devices after timeout", subsystem);
return false;
}
return true;
}
static bool
duplicate_device_path (ply_list_t *events, const char *device_path)
{
struct udev_device *device;
ply_list_node_t *node;
for (node = ply_list_get_first_node (events);
node; node = ply_list_get_next_node (events, node)) {
device = ply_list_node_get_data (node);
if (strcmp (udev_device_get_devnode (device), device_path) == 0)
return true;
}
return false;
}
static void
process_udev_add_or_change_events (ply_device_manager_t *manager, ply_list_t *events)
{
const char *action, *device_path;
struct udev_device *device;
ply_list_node_t *node;
while ((node = ply_list_get_first_node (events))) {
device = ply_list_node_get_data (node);
action = udev_device_get_action (device);
device_path = udev_device_get_devnode (device);
on_drm_udev_add_or_change (manager, action, device_path, device);
ply_list_remove_node (events, node);
udev_device_unref (device);
}
}
static void
on_udev_event (ply_device_manager_t *manager)
{
const char *action, *device_path;
struct udev_device *device;
const char *action;
ply_list_t *pending_events;
device = udev_monitor_receive_device (manager->udev_monitor);
if (device == NULL)
return;
pending_events = ply_list_new ();
action = udev_device_get_action (device);
/*
* During the initial monitor/connector enumeration on boot the kernel
* fires a large number of change events. If we process these 1 by 1,
* we spend a lot of time probing the drm-connectors. So instead we
* collect them all and then coalescence them so that if there are multiple
* change events pending for a single card, we only re-probe the card once.
*/
while ((device = udev_monitor_receive_device (manager->udev_monitor))) {
action = udev_device_get_action (device);
device_path = udev_device_get_devnode (device);
ply_trace ("got %s event for device %s", action, udev_device_get_sysname (device));
if (action == NULL || device_path == NULL)
goto unref;
if (action == NULL)
return;
ply_trace ("got %s event for device %s", action, device_path);
if (strcmp (action, "add") == 0 || strcmp (action, "change") == 0) {
const char *subsystem;
/*
* Add/change events before and after a remove may not be
* coalesced together. So flush the queue and then process
* the remove event immediately.
*/
if (strcmp (action, "remove") == 0) {
process_udev_add_or_change_events (manager, pending_events);
free_devices_from_device_path (manager, device_path, true);
goto unref;
}
subsystem = udev_device_get_subsystem (device);
if (!verify_add_or_change (manager, action, device_path, device))
goto unref;
if (strcmp (subsystem, SUBSYSTEM_DRM) == 0) {
if (manager->local_console_managed && manager->local_console_is_text)
ply_trace ("ignoring since we're already using text splash for local console");
else
on_drm_udev_add_or_change (manager, action, device);
} else {
ply_trace ("ignoring since we only handle subsystem %s devices after timeout", subsystem);
if (duplicate_device_path (pending_events, device_path)) {
ply_trace ("ignoring duplicate %s event for device %s", action, device_path);
goto unref;
}
} else if (strcmp (action, "remove") == 0) {
free_devices_for_udev_device (manager, device);
ply_list_append_data (pending_events, udev_device_ref(device));
unref:
udev_device_unref (device);
}
udev_device_unref (device);
process_udev_add_or_change_events (manager, pending_events);
ply_list_free (pending_events);
}
static void
@ -458,7 +535,6 @@ watch_for_udev_events (ply_device_manager_t *manager)
int fd;
assert (manager != NULL);
assert (manager->udev_monitor == NULL);
if (manager->fd_watch != NULL)
return;
@ -620,6 +696,9 @@ ply_device_manager_free (ply_device_manager_t *manager)
ply_event_loop_stop_watching_for_timeout (manager->loop,
(ply_event_loop_timeout_handler_t)
create_devices_from_udev, manager);
ply_event_loop_stop_watching_for_timeout (manager->loop,
(ply_event_loop_timeout_handler_t)
create_fb_devices_from_udev, manager);
if (manager->udev_monitor != NULL)
udev_monitor_unref (manager->udev_monitor);
@ -917,6 +996,22 @@ create_devices_from_udev (ply_device_manager_t *manager)
ply_trace ("Creating non-graphical devices, since there's no suitable graphics hardware");
create_non_graphical_devices (manager);
}
static void
create_fb_devices_from_udev (ply_device_manager_t *manager)
{
manager->fb_device_timeout_elapsed = true;
if (manager->paused) {
ply_trace ("create_fb_devices_from_udev timeout elapsed while paused, deferring execution");
return;
}
ply_trace ("Timeout elapsed, looking for framebuffer devices from udev");
create_devices_for_subsystem (manager, SUBSYSTEM_DRM);
create_devices_for_subsystem (manager, SUBSYSTEM_FRAME_BUFFER);
}
#endif
static void
@ -930,6 +1025,7 @@ create_fallback_devices (ply_device_manager_t *manager)
void
ply_device_manager_watch_devices (ply_device_manager_t *manager,
double fb_device_timeout,
double device_timeout,
ply_keyboard_added_handler_t keyboard_added_handler,
ply_keyboard_removed_handler_t keyboard_removed_handler,
@ -949,6 +1045,9 @@ ply_device_manager_watch_devices (ply_device_manager_t *manager,
manager->text_display_removed_handler = text_display_removed_handler;
manager->event_handler_data = data;
if (isnan (fb_device_timeout))
fb_device_timeout = 5;
/* Try to create devices for each serial device right away, if possible
*/
done_with_initial_devices_setup = create_devices_from_terminals (manager);
@ -971,6 +1070,10 @@ ply_device_manager_watch_devices (ply_device_manager_t *manager,
#ifdef HAVE_UDEV
watch_for_udev_events (manager);
create_devices_for_subsystem (manager, SUBSYSTEM_DRM);
ply_event_loop_watch_for_timeout (manager->loop,
fb_device_timeout,
(ply_event_loop_timeout_handler_t)
create_fb_devices_from_udev, manager);
ply_event_loop_watch_for_timeout (manager->loop,
device_timeout,
(ply_event_loop_timeout_handler_t)
@ -1114,6 +1217,10 @@ ply_device_manager_unpause (ply_device_manager_t *manager)
ply_trace ("ply_device_manager_unpause() called, resuming watching for udev events");
manager->paused = false;
#ifdef HAVE_UDEV
if (manager->fb_device_timeout_elapsed) {
ply_trace ("ply_device_manager_unpause(): timeout elapsed while paused, looking for udev devices");
create_fb_devices_from_udev (manager);
}
if (manager->device_timeout_elapsed) {
ply_trace ("ply_device_manager_unpause(): timeout elapsed while paused, looking for udev devices");
create_devices_from_udev (manager);

@ -47,6 +47,7 @@ typedef void (* ply_text_display_removed_handler_t) (void *, ply_text_display_t
ply_device_manager_t *ply_device_manager_new (const char *default_tty,
ply_device_manager_flags_t flags);
void ply_device_manager_watch_devices (ply_device_manager_t *manager,
double fb_device_timeout,
double device_timeout,
ply_keyboard_added_handler_t keyboard_added_handler,
ply_keyboard_removed_handler_t keyboard_removed_handler,

@ -43,7 +43,7 @@
#include "ply-utils.h"
#ifndef CLEAR_SCREEN_SEQUENCE
#define CLEAR_SCREEN_SEQUENCE "\033[2J"
#define CLEAR_SCREEN_SEQUENCE "\033[2J\033[3J"
#endif
#ifndef CLEAR_LINE_SEQUENCE
@ -150,7 +150,7 @@ ply_text_display_set_cursor_position (ply_text_display_t *display,
void
ply_text_display_clear_screen (ply_text_display_t *display)
{
if (ply_is_tracing ())
if (ply_is_tracing_to_terminal ())
return;
ply_terminal_write (display->terminal,

@ -61,6 +61,7 @@ typedef struct
struct _ply_logger
{
int output_fd;
bool output_fd_is_terminal;
char *filename;
char *buffer;
@ -229,6 +230,7 @@ ply_logger_new (void)
logger = calloc (1, sizeof(ply_logger_t));
logger->output_fd = -1;
logger->output_fd_is_terminal = false;
logger->filename = NULL;
logger->is_enabled = true;
logger->tracing_is_enabled = false;
@ -363,6 +365,7 @@ ply_logger_set_output_fd (ply_logger_t *logger,
assert (logger != NULL);
logger->output_fd = fd;
logger->output_fd_is_terminal = isatty(fd);
}
int
@ -580,6 +583,15 @@ ply_logger_is_tracing_enabled (ply_logger_t *logger)
return logger->tracing_is_enabled != false;
}
bool
ply_logger_is_tracing_to_terminal (ply_logger_t *logger)
{
assert (logger != NULL);
return logger->tracing_is_enabled && logger->output_fd_is_terminal;
}
#endif /* PLY_ENABLE_TRACING */
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */

@ -81,6 +81,7 @@ ply_logger_t *ply_logger_get_error_default (void);
#ifdef PLY_ENABLE_TRACING
void ply_logger_toggle_tracing (ply_logger_t *logger);
bool ply_logger_is_tracing_enabled (ply_logger_t *logger);
bool ply_logger_is_tracing_to_terminal (ply_logger_t *logger);
#define ply_logger_trace(logger, format, args ...) \
do \
@ -113,6 +114,7 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger);
#define ply_logger_trace(logger, format, args ...)
#define ply_logger_toggle_tracing(logger)
#define ply_logger_is_tracing_enabled(logger) (false)
#define ply_logger_is_tracing_to_terminal(logger) (false)
#endif /* PLY_ENABLE_TRACING */
/* convenience macros
@ -140,6 +142,8 @@ bool ply_logger_is_tracing_enabled (ply_logger_t *logger);
ply_logger_toggle_tracing (ply_logger_get_error_default ())
#define ply_is_tracing() \
ply_logger_is_tracing_enabled (ply_logger_get_error_default ())
#define ply_is_tracing_to_terminal() \
ply_logger_is_tracing_to_terminal (ply_logger_get_error_default ())
#define ply_trace(format, args ...) \
ply_logger_trace (ply_logger_get_error_default (), format, ## args)

@ -39,6 +39,8 @@
#define CLAMP(a, b, c) (MIN (MAX ((a), (b)), (c)))
#endif
#define PLY_NUMBER_OF_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
#define PLY_UTF8_CHARACTER_SIZE_MAX 4
typedef intptr_t ply_module_handle_t;

@ -97,6 +97,7 @@ typedef struct
double start_time;
double splash_delay;
double device_timeout;
double fb_device_timeout;
uint32_t no_boot_log : 1;
uint32_t showing_details : 1;
@ -158,6 +159,7 @@ static void on_quit (state_t *state,
static bool sh_is_init (state_t *state);
static void cancel_pending_delayed_show (state_t *state);
static void prepare_logging (state_t *state);
static void dump_debug_buffer_to_file (void);
static void
on_session_output (state_t *state,
@ -260,6 +262,35 @@ show_messages (state_t *state)
}
}
static bool
get_theme_path (const char *splash_string,
const char *configured_theme_dir,
char **theme_path)
{
const char *paths[] = { PLYMOUTH_RUNTIME_THEME_PATH,
configured_theme_dir,
PLYMOUTH_THEME_PATH };
size_t i;
for (i = 0; i < PLY_NUMBER_OF_ELEMENTS (paths); ++i) {
if (paths[i] == NULL)
continue;
asprintf (theme_path,
"%s/%s/%s.plymouth",
paths[i], splash_string, splash_string);
if (ply_file_exists (*theme_path)) {
ply_trace ("Theme is %s", *theme_path);
return true;
}
ply_trace ("Theme %s not found", *theme_path);
free (*theme_path);
*theme_path = NULL;
}
return false;
}
static bool
load_settings (state_t *state,
const char *path,
@ -279,39 +310,31 @@ load_settings (state_t *state,
splash_string = ply_key_file_get_value (key_file, "Daemon", "Theme");
if (splash_string != NULL) {
asprintf (theme_path,
PLYMOUTH_RUNTIME_THEME_PATH "%s/%s.plymouth",
splash_string, splash_string);
ply_trace ("Checking if %s exists", *theme_path);
if (!ply_file_exists (*theme_path)) {
ply_trace ("%s not found, fallbacking to " PLYMOUTH_THEME_PATH,
*theme_path);
asprintf (theme_path,
PLYMOUTH_THEME_PATH "%s/%s.plymouth",
splash_string, splash_string);
}
char *configured_theme_dir;
configured_theme_dir = ply_key_file_get_value (key_file, "Daemon",
"ThemeDir");
get_theme_path (splash_string, configured_theme_dir, theme_path);
free (configured_theme_dir);
}
if (isnan (state->splash_delay)) {
char *delay_string;
delay_string = ply_key_file_get_value (key_file, "Daemon", "ShowDelay");
if (delay_string != NULL) {
state->splash_delay = atof (delay_string);
ply_trace ("Splash delay is set to %lf", state->splash_delay);
free (delay_string);
}
state->splash_delay = ply_key_file_get_double(key_file, "Daemon", "ShowDelay", NAN);
ply_trace ("Splash delay is set to %lf", state->splash_delay);
}
if (isnan (state->device_timeout)) {
state->device_timeout = ply_key_file_get_double(key_file, "Daemon", "DeviceTimeout", NAN);
ply_trace ("Device timeout is set to %lf", state->device_timeout);
}
if (isnan (state->fb_device_timeout)) {
char *timeout_string;
timeout_string = ply_key_file_get_value (key_file, "Daemon", "DeviceTimeout");
timeout_string = ply_key_file_get_value (key_file, "Daemon", "FBDeviceTimeout");
if (timeout_string != NULL) {
state->device_timeout = atof (timeout_string);
ply_trace ("Device timeout is set to %lf", state->device_timeout);
state->fb_device_timeout = atof (timeout_string);
ply_trace ("Framebuffer device timeout is set to %lf", state->fb_device_timeout);
free (timeout_string);
}
@ -368,19 +391,9 @@ find_override_splash (state_t *state)
if (splash_string != NULL) {
ply_trace ("Splash is configured to be '%s'", splash_string);
asprintf (&state->override_splash_path,
PLYMOUTH_RUNTIME_THEME_PATH "%s/%s.plymouth",
splash_string, splash_string);
ply_trace ("Checking if %s exists", state->override_splash_path);
if (!ply_file_exists (state->override_splash_path)) {
ply_trace ("%s not found, fallbacking to " PLYMOUTH_THEME_PATH,
state->override_splash_path);
free (state->override_splash_path);
asprintf (&state->override_splash_path,
PLYMOUTH_THEME_PATH "%s/%s.plymouth",
splash_string, splash_string);
}
get_theme_path (splash_string, NULL, &state->override_splash_path);
free (splash_string);
}
@ -390,7 +403,7 @@ find_override_splash (state_t *state)
delay_string = ply_kernel_command_line_get_string_after_prefix ("plymouth.splash-delay=");
if (delay_string != NULL)
state->splash_delay = atof (delay_string);
state->splash_delay = ply_strtod (delay_string);
}
}
@ -416,7 +429,8 @@ find_system_default_splash (state_t *state)
return;
}
ply_trace ("System configured theme file is '%s'", state->system_default_splash_path);
if (state->system_default_splash_path != NULL)
ply_trace ("System configured theme file is '%s'", state->system_default_splash_path);
}
static void
@ -433,7 +447,8 @@ find_distribution_default_splash (state_t *state)
}
}
ply_trace ("Distribution default theme file is '%s'", state->distribution_default_splash_path);
if (state->distribution_default_splash_path != NULL)
ply_trace ("Distribution default theme file is '%s'", state->distribution_default_splash_path);
}
static void
@ -588,7 +603,9 @@ on_hide_message (state_t *state,
if (strcmp (list_message, message) == 0) {
free (list_message);
ply_list_remove_node (state->messages, node);
ply_boot_splash_hide_message (state->boot_splash, message);
if (state->boot_splash != NULL) {
ply_boot_splash_hide_message (state->boot_splash, message);
}
}
node = next_node;
}
@ -653,6 +670,12 @@ on_newroot (state_t *state,
}
ply_trace ("new root mounted at \"%s\", switching to it", root_dir);
if (!strcmp (root_dir, "/run/initramfs") && debug_buffer != NULL) {
ply_trace ("switching back to initramfs, dumping debug-buffer now");
dump_debug_buffer_to_file ();
}
chdir (root_dir);
chroot (".");
chdir ("/");
@ -893,6 +916,11 @@ plymouth_should_show_default_splash (state_t *state)
return true;
}
if (ply_kernel_command_line_has_argument ("splash=shutdown") && state->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN) {
ply_trace ("using default splash because kernel command line has option \"splash=shutdown\"");
return true;
}
if (ply_kernel_command_line_has_argument ("splash=silent")) {
ply_trace ("using default splash because kernel command line has option \"splash=silent\"");
return true;
@ -919,6 +947,7 @@ on_show_splash (state_t *state)
if (plymouth_should_ignore_show_splash_calls (state)) {
ply_trace ("show splash called while ignoring show splash calls");
state->should_retain_splash = true;
dump_details_and_quit_splash (state);
return;
}
@ -1091,6 +1120,7 @@ load_devices (state_t *state,
state->local_console_terminal = ply_device_manager_get_default_terminal (state->device_manager);
ply_device_manager_watch_devices (state->device_manager,
state->fb_device_timeout,
state->device_timeout,
(ply_keyboard_added_handler_t)
on_keyboard_added,
@ -1173,6 +1203,7 @@ on_hide_splash (state_t *state)
return;
ply_trace ("hiding boot splash");
state->should_retain_splash = true;
dump_details_and_quit_splash (state);
}
@ -1873,8 +1904,13 @@ check_verbosity (state_t *state)
}
if (debug_buffer != NULL) {
if (debug_buffer_path == NULL)
debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-debug.log");
if (debug_buffer_path == NULL) {
if (state->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN ||
state->mode == PLY_BOOT_SPLASH_MODE_REBOOT)
debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-shutdown-debug.log");
else
debug_buffer_path = strdup (PLYMOUTH_LOG_DIRECTORY "/plymouth-debug.log");
}
ply_logger_add_filter (ply_logger_get_error_default (),
(ply_logger_filter_handler_t)
@ -1974,7 +2010,7 @@ initialize_environment (state_t *state)
state->entry_buffer = ply_buffer_new ();
state->messages = ply_list_new ();
if (!ply_is_tracing ())
if (!ply_is_tracing_to_terminal ())
redirect_standard_io_to_dev_null ();
ply_trace ("Making sure " PLYMOUTH_RUNTIME_DIR " exists");
@ -2053,6 +2089,43 @@ on_crash (int signum)
raise (signum);
}
static void
start_plymouthd_fd_escrow (void)
{
pid_t pid;
pid = fork ();
if (pid == 0) {
const char *argv[] = { PLYMOUTH_DRM_ESCROW_DIRECTORY "/plymouthd-fd-escrow", NULL };
execve (argv[0], (char * const *) argv, NULL);
ply_trace ("could not launch fd escrow process: %m");
_exit (1);
}
}
static void
on_term_signal (state_t *state)
{
bool retain_splash = false;
ply_trace ("received SIGTERM");
/*
* On shutdown/reboot with pixel-displays active, start the plymouthd-fd-escrow
* helper to hold on to the pixel-displays fds until the end.
*/
if ((state->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN ||
state->mode == PLY_BOOT_SPLASH_MODE_REBOOT) &&
!state->is_inactive && state->boot_splash &&
ply_boot_splash_uses_pixel_displays (state->boot_splash)) {
start_plymouthd_fd_escrow ();
retain_splash = true;
}
on_quit (state, retain_splash, ply_trigger_new (NULL));
}
static void
write_pid_file (const char *filename)
{
@ -2077,6 +2150,7 @@ main (int argc,
bool no_boot_log = false;
bool no_daemon = false;
bool debug = false;
bool ignore_serial_consoles = false;
bool attach_to_session;
ply_daemon_handle_t *daemon_handle = NULL;
char *mode_string = NULL;
@ -2089,6 +2163,10 @@ main (int argc,
state.loop = ply_event_loop_get_default ();
/* Initialize the translations if they are available (!initrd) */
if (ply_directory_exists (PLYMOUTH_LOCALE_DIRECTORY))
setlocale(LC_ALL, "");
ply_command_parser_add_options (state.command_parser,
"help", "This help message", PLY_COMMAND_OPTION_TYPE_FLAG,
"attach-to-session", "Redirect console messages from screen to log", PLY_COMMAND_OPTION_TYPE_FLAG,
@ -2100,6 +2178,7 @@ main (int argc,
"kernel-command-line", "Fake kernel command line to use", PLY_COMMAND_OPTION_TYPE_STRING,
"tty", "TTY to use instead of default", PLY_COMMAND_OPTION_TYPE_STRING,
"no-boot-log", "Do not write boot log file", PLY_COMMAND_OPTION_TYPE_FLAG,
"ignore-serial-consoles", "Ignore serial consoles", PLY_COMMAND_OPTION_TYPE_FLAG,
NULL);
if (!ply_command_parser_parse_arguments (state.command_parser, state.loop, argv, argc)) {
@ -2120,6 +2199,7 @@ main (int argc,
"no-boot-log", &no_boot_log,
"no-daemon", &no_daemon,
"debug", &debug,
"ignore-serial-consoles", &ignore_serial_consoles,
"debug-file", &debug_buffer_path,
"pid-file", &pid_file,
"tty", &tty,
@ -2208,11 +2288,18 @@ main (int argc,
}
/* Make the first byte in argv be '@' so that we can survive systemd's killing
* spree when going from initrd to /, and so we stay alive all the way until
* the power is killed at shutdown.
* spree when going from initrd to /
* http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons
* Note ply_file_exists () does not work here because /etc/initrd-release
* is a symlink when using a dracut generated initrd.
*/
argv[0][0] = '@';
if (state.mode == PLY_BOOT_SPLASH_MODE_BOOT_UP &&
access ("/etc/initrd-release", F_OK) >= 0)
argv[0][0] = '@';
/* Catch SIGTERM for clean shutdown on poweroff/reboot */
ply_event_loop_watch_signal (state.loop, SIGTERM,
(ply_event_handler_t) on_term_signal, &state);
state.boot_server = start_boot_server (&state);
@ -2239,6 +2326,7 @@ main (int argc,
state.progress = ply_progress_new ();
state.splash_delay = NAN;
state.device_timeout = NAN;
state.fb_device_timeout = NAN;
ply_progress_load_cache (state.progress,
get_cache_file_for_mode (state.mode));
@ -2256,7 +2344,8 @@ main (int argc,
find_system_default_splash (&state);
find_distribution_default_splash (&state);
if (ply_kernel_command_line_has_argument ("plymouth.ignore-serial-consoles"))
if (ply_kernel_command_line_has_argument ("plymouth.ignore-serial-consoles") ||
ignore_serial_consoles == true)
device_manager_flags |= PLY_DEVICE_MANAGER_FLAGS_IGNORE_SERIAL_CONSOLES;
if (ply_kernel_command_line_has_argument ("plymouth.ignore-udev") ||
@ -2304,6 +2393,10 @@ main (int argc,
ply_free_error_log ();
free (state.override_splash_path);
free (state.system_default_splash_path);
free (state.distribution_default_splash_path);
return exit_code;
}
/* vim: set ts=4 ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */

@ -157,7 +157,6 @@ struct _ply_renderer_backend
uint32_t is_active : 1;
uint32_t requires_explicit_flushing : 1;
uint32_t use_preferred_mode : 1;
int panel_width;
int panel_height;
@ -171,23 +170,6 @@ static bool open_input_source (ply_renderer_backend_t *backend,
static void flush_head (ply_renderer_backend_t *backend,
ply_renderer_head_t *head);
/* A small helper to determine if we should try to keep the current mode
* or pick the best mode ourselves, we keep the current mode only if the
* user specified a specific mode using video= on the commandline.
*/
static bool
should_use_preferred_mode (void)
{
bool use_preferred_mode = true;
if (ply_kernel_command_line_get_string_after_prefix ("video="))
use_preferred_mode = false;
ply_trace ("should_use_preferred_mode: %d", use_preferred_mode);
return use_preferred_mode;
}
static bool
ply_renderer_buffer_map (ply_renderer_backend_t *backend,
ply_renderer_buffer_t *buffer)
@ -903,7 +885,6 @@ create_backend (const char *device_name,
backend->output_buffers = ply_hashtable_new (ply_hashtable_direct_hash,
ply_hashtable_direct_compare);
backend->heads_by_controller_id = ply_hashtable_new (NULL, NULL);
backend->use_preferred_mode = should_use_preferred_mode ();
return backend;
}
@ -1133,6 +1114,14 @@ get_preferred_mode (drmModeConnector *connector)
{
int i;
for (i = 0; i < connector->count_modes; i++)
if (connector->modes[i].type & DRM_MODE_TYPE_USERDEF) {
ply_trace ("Found user set mode %dx%d at index %d",
connector->modes[i].hdisplay,
connector->modes[i].vdisplay, i);
return &connector->modes[i];
}
for (i = 0; i < connector->count_modes; i++)
if (connector->modes[i].type & DRM_MODE_TYPE_PREFERRED) {
ply_trace ("Found preferred mode %dx%d at index %d",
@ -1175,6 +1164,7 @@ get_output_info (ply_renderer_backend_t *backend,
{
drmModeModeInfo *mode = NULL;
drmModeConnector *connector;
bool has_90_rotation = false;
memset (output, 0, sizeof(*output));
output->connector_id = connector_id;
@ -1189,8 +1179,11 @@ get_output_info (ply_renderer_backend_t *backend,
output_get_controller_info (backend, connector, output);
ply_renderer_connector_get_rotation_and_tiled (backend, connector, output);
if (output->rotation == PLY_PIXEL_BUFFER_ROTATE_COUNTER_CLOCKWISE ||
output->rotation == PLY_PIXEL_BUFFER_ROTATE_CLOCKWISE)
has_90_rotation = true;
if (!output->tiled && backend->use_preferred_mode)
if (!output->tiled)
mode = get_preferred_mode (connector);
if (!mode && output->controller_id)
@ -1203,7 +1196,8 @@ get_output_info (ply_renderer_backend_t *backend,
}
output->mode = *mode;
output->device_scale = ply_get_device_scale (mode->hdisplay, mode->vdisplay,
connector->mmWidth, connector->mmHeight);
(!has_90_rotation) ? connector->mmWidth : connector->mmHeight,
(!has_90_rotation) ? connector->mmHeight : connector->mmWidth);
output->connector_type = connector->connector_type;
output->connected = true;
out:
@ -1634,9 +1628,9 @@ reset_scan_out_buffer_if_needed (ply_renderer_backend_t *backend,
return false;
if (head->scan_out_buffer_needs_reset) {
ply_renderer_head_set_scan_out_buffer (backend, head,
head->scan_out_buffer_id);
head->scan_out_buffer_needs_reset = false;
did_reset = ply_renderer_head_set_scan_out_buffer (backend, head,
head->scan_out_buffer_id);
head->scan_out_buffer_needs_reset = !did_reset;
return true;
}

@ -237,8 +237,10 @@ add_text_display (ply_boot_splash_plugin_t *plugin,
view = view_new (plugin, display);
terminal = ply_text_display_get_terminal (view->display);
if (ply_terminal_open (terminal))
if (ply_terminal_open (terminal)) {
ply_text_display_clear_screen (view->display);
ply_terminal_activate_vt (terminal);
}
ply_list_append_data (plugin->views, view);

@ -231,7 +231,7 @@ static script_return_t sprite_window_get_width (script_state_t *state,
if (width == 0)
width = ply_pixel_display_get_width (display->pixel_display);
else
width = MIN (width, ply_pixel_display_get_width (display->pixel_display));
width = MAX (width, ply_pixel_display_get_width (display->pixel_display));
}
return script_return_obj (script_obj_new_number (width));
}
@ -269,7 +269,7 @@ static script_return_t sprite_window_get_height (script_state_t *state,
if (height == 0)
height = ply_pixel_display_get_height (display->pixel_display);
else
height = MIN (height, ply_pixel_display_get_height (display->pixel_display));
height = MAX (height, ply_pixel_display_get_height (display->pixel_display));
}
return script_return_obj (script_obj_new_number (height));
}

@ -233,11 +233,10 @@ view_hide (view_t *view)
terminal = ply_text_display_get_terminal (view->display);
ply_terminal_reset_colors (terminal);
ply_text_display_set_background_color (view->display, PLY_TERMINAL_COLOR_DEFAULT);
ply_text_display_clear_screen (view->display);
ply_text_display_show_cursor (view->display);
ply_terminal_reset_colors (terminal);
}
}

@ -239,11 +239,10 @@ view_hide (view_t *view)
terminal = ply_text_display_get_terminal (view->display);
ply_terminal_reset_colors (terminal);
ply_text_display_set_background_color (view->display, PLY_TERMINAL_COLOR_DEFAULT);
ply_text_display_clear_screen (view->display);
ply_text_display_show_cursor (view->display);
ply_terminal_reset_colors (terminal);
}
}

@ -17,7 +17,7 @@ two_step_la_CFLAGS = $(PLYMOUTH_CFLAGS) \
-DPLYMOUTH_BACKGROUND_END_COLOR=$(background_end_color) \
-DPLYMOUTH_BACKGROUND_START_COLOR=$(background_start_color)
two_step_la_LDFLAGS = -module -avoid-version -export-dynamic
two_step_la_LIBADD = $(PLYMOUTH_LIBS) \
two_step_la_LIBADD = $(PLYMOUTH_LIBS) $(LTLIBINTL) \
../../../libply/libply.la \
../../../libply-splash-core/libply-splash-core.la \
../../../libply-splash-graphics/libply-splash-graphics.la

@ -39,6 +39,7 @@
#include <values.h>
#include <unistd.h>
#include <wchar.h>
#include <dirent.h>
#include "ply-boot-splash-plugin.h"
#include "ply-buffer.h"
@ -109,9 +110,10 @@ typedef struct
ply_label_t *message_label;
ply_label_t *title_label;
ply_label_t *subtitle_label;
ply_rectangle_t box_area, lock_area, watermark_area, dialog_area;
ply_rectangle_t box_area, lock_area, watermark_area, title_area, dialog_area;
ply_trigger_t *end_trigger;
ply_pixel_buffer_t *background_buffer;
ply_image_t *watermark_image;
int animation_bottom;
} view_t;
@ -125,6 +127,13 @@ typedef struct
bool use_firmware_background;
char *title;
char *subtitle;
uint32_t background_start_color;
uint32_t background_end_color;
uint32_t title_color;
char *watermark_imagename;
double animation_horizontal_alignment;
double animation_vertical_alignment;
char *animation_vertical_alignment_type;
} mode_settings_t;
struct _ply_boot_splash_plugin
@ -139,7 +148,7 @@ struct _ply_boot_splash_plugin
ply_image_t *header_image;
ply_image_t *background_tile_image;
ply_image_t *background_bgrt_image;
ply_image_t *watermark_image;
ply_image_t *background_bgrt_fallback_image;
ply_list_t *views;
ply_boot_splash_display_type_t state;
@ -153,9 +162,11 @@ struct _ply_boot_splash_plugin
double watermark_horizontal_alignment;
double watermark_vertical_alignment;
char *watermark_imagename;
double animation_horizontal_alignment;
double animation_vertical_alignment;
char *animation_vertical_alignment_type;
char *animation_dir;
ply_progress_animation_transition_t transition;
@ -163,6 +174,7 @@ struct _ply_boot_splash_plugin
uint32_t background_start_color;
uint32_t background_end_color;
uint32_t title_color;
int background_bgrt_raw_width;
int background_bgrt_raw_height;
@ -173,6 +185,7 @@ struct _ply_boot_splash_plugin
uint32_t progress_bar_bg_color;
uint32_t progress_bar_fg_color;
double show_animation_fraction;
progress_function_t progress_function;
ply_trigger_t *idle_trigger;
@ -197,6 +210,115 @@ static void become_idle (ply_boot_splash_plugin_t *plugin,
ply_trigger_t *idle_trigger);
static void view_show_message (view_t *view, const char *message);
bool is_dir(const char* path) {
struct stat path_stat;
stat(path, &path_stat);
return S_ISDIR(path_stat.st_mode);
}
void image_get_res(const char *basedir, int *xres, int *yres)
{
FILE *fp;
char buf[512];
int oxres, oyres;
oxres = *xres;
oyres = *yres;
snprintf(buf, 512, "%s/%dx%d.png", basedir, oxres, oyres);
fp = fopen(buf, "r");
if (!fp) {
*xres = 1024;
*yres = 768;
unsigned int t, tx, ty, mdist = 0xffffffff;
struct dirent *dent;
DIR *tdir;
snprintf(buf, 512, "%s", basedir);
tdir = opendir(buf);
if (!tdir) {
*xres = 0;
*yres = 0;
return;
}
while ((dent = readdir(tdir))) {
if (sscanf(dent->d_name, "%dx%d.png", &tx, &ty) != 2)
continue;
/* We only want configs for resolutions smaller than the current one,
* so that we can actually fit the image on the screen. */
if (tx >= oxres || ty >= oyres)
continue;
t = (tx - oxres) * (tx - oxres) + (ty - oyres) * (ty - oyres);
/* Penalize configs for resolutions with different aspect ratios. */
if (oxres / oyres != tx / ty)
t *= 10;
if (t < mdist) {
*xres = tx;
*yres = ty;
mdist = t;
}
}
closedir(tdir);
} else {
fclose(fp);
}
}
char *detect_image(const char *logo_image, int xres, int yres) {
char *buf;
if(logo_image != NULL) {
if(is_dir(logo_image)) {
image_get_res(logo_image, &xres, &yres);
if(asprintf(&buf, "%s/%dx%d.png", logo_image, xres, yres) != -1)
return buf;
} else {
return strdup (logo_image);
}
}
return NULL;
}
long
calculate_animation_y(view_t *view, double animation_vertical_alignment,
char *animation_vertical_alignment_type, unsigned long screen_height, long height)
{
ply_boot_splash_plugin_t *plugin;
plugin = view->plugin;
long y;
if (animation_vertical_alignment_type == NULL) {
y = animation_vertical_alignment * screen_height - height / 2.0;
} else if (strcmp(animation_vertical_alignment_type,
"below_title") == 0) {
y = view->title_area.y + view->title_area.height;
if( y + height >= screen_height) {
y = animation_vertical_alignment * screen_height - height / 2.0;
} else {
y += animation_vertical_alignment * (screen_height - y);
if( animation_vertical_alignment != 0.0) {
y -= height / 2;
}
}
} else if (strcmp(animation_vertical_alignment_type,
"below_watermark") == 0 && view->watermark_image != NULL) {
y = view->watermark_area.y + view->watermark_area.height;
if( y + height >= screen_height) {
y = animation_vertical_alignment * screen_height - height / 2.0;
} else {
y += animation_vertical_alignment * (screen_height - y);
if( animation_vertical_alignment != 0.0) {
y -= height / 2;
}
}
} else {
y = animation_vertical_alignment * screen_height - height / 2.0;
}
return y;
}
static view_t *
view_new (ply_boot_splash_plugin_t *plugin,
ply_pixel_display_t *display)
@ -206,6 +328,7 @@ view_new (ply_boot_splash_plugin_t *plugin,
view = calloc (1, sizeof(view_t));
view->plugin = plugin;
view->display = display;
view->watermark_image = NULL;
view->entry = ply_entry_new (plugin->animation_dir);
view->keymap_icon = ply_keymap_icon_new (display, plugin->animation_dir);
@ -254,6 +377,9 @@ view_free (view_t *view)
ply_label_free (view->title_label);
ply_label_free (view->subtitle_label);
if (view->watermark_image != NULL)
ply_image_free (view->watermark_image);
if (view->background_buffer != NULL)
ply_pixel_buffer_free (view->background_buffer);
@ -470,7 +596,7 @@ view_set_bgrt_background (view_t *view)
panel_rotation = PLY_PIXEL_BUFFER_ROTATE_UPRIGHT;
}
if (have_panel_props) {
if (have_panel_props) {
ply_pixel_buffer_set_device_rotation (bgrt_buffer, panel_rotation);
ply_pixel_buffer_set_device_scale (bgrt_buffer, panel_scale);
}
@ -560,11 +686,36 @@ view_set_bgrt_background (view_t *view)
}
}
static void
view_set_bgrt_fallback_background (view_t *view)
{
int width, height, x_offset, y_offset;
int screen_width, screen_height, screen_scale;
ply_pixel_buffer_t *image_buffer;
screen_width = ply_pixel_display_get_width (view->display);
screen_height = ply_pixel_display_get_height (view->display);
screen_scale = ply_pixel_display_get_device_scale (view->display);
image_buffer = ply_image_get_buffer (view->plugin->background_bgrt_fallback_image);
width = ply_pixel_buffer_get_width (image_buffer);
height = ply_pixel_buffer_get_height (image_buffer);
x_offset = (screen_width - width) / 2;
y_offset = screen_height * 382 / 1000 - height / 2;
view->background_buffer = ply_pixel_buffer_new (screen_width * screen_scale, screen_height * screen_scale);
ply_pixel_buffer_set_device_scale (view->background_buffer, screen_scale);
ply_pixel_buffer_fill_with_hex_color (view->background_buffer, NULL, 0x000000);
ply_pixel_buffer_fill_with_buffer (view->background_buffer, image_buffer, x_offset, y_offset);
}
static bool
view_load (view_t *view)
{
unsigned long x, y, width, title_height = 0, subtitle_height = 0;
unsigned long screen_width, screen_height, screen_scale;
char *image_dir, *image_path;
ply_boot_splash_plugin_t *plugin;
ply_pixel_buffer_t *buffer;
@ -580,6 +731,9 @@ view_load (view_t *view)
view_set_bgrt_background (view);
if (!view->background_buffer && plugin->background_bgrt_fallback_image != NULL)
view_set_bgrt_fallback_background (view);
if (!view->background_buffer && plugin->background_tile_image != NULL) {
ply_trace ("tiling background to %lux%lu", screen_width, screen_height);
@ -600,11 +754,26 @@ view_load (view_t *view)
ply_pixel_buffer_free (buffer);
}
if (plugin->watermark_image != NULL) {
view->watermark_area.width = ply_image_get_width (plugin->watermark_image);
view->watermark_area.height = ply_image_get_height (plugin->watermark_image);
view->watermark_area.x = screen_width * plugin->watermark_horizontal_alignment - ply_image_get_width (plugin->watermark_image) * plugin->watermark_horizontal_alignment;
view->watermark_area.y = screen_height * plugin->watermark_vertical_alignment - ply_image_get_height (plugin->watermark_image) * plugin->watermark_vertical_alignment;
if (view->watermark_image == NULL && plugin->mode_settings[plugin->mode].watermark_imagename) {
image_path = detect_image(plugin->mode_settings[plugin->mode].watermark_imagename,
screen_width, screen_height);
ply_trace ("assing watermark %s", image_path);
view->watermark_image = ply_image_new (image_path);
free (image_path);
}
if (view->watermark_image != NULL) {
ply_trace ("loading watermark image");
if (!ply_image_load (view->watermark_image)) {
ply_image_free (view->watermark_image);
view->watermark_image = NULL;
}
}
if (view->watermark_image != NULL) {
view->watermark_area.width = ply_image_get_width (view->watermark_image);
view->watermark_area.height = ply_image_get_height (view->watermark_image);
view->watermark_area.x = screen_width * plugin->watermark_horizontal_alignment - ply_image_get_width (view->watermark_image) * plugin->watermark_horizontal_alignment;
view->watermark_area.y = screen_height * plugin->watermark_vertical_alignment - ply_image_get_height (view->watermark_image) * plugin->watermark_vertical_alignment;
ply_trace ("using %ldx%ld watermark centered at %ldx%ld for %ldx%ld screen",
view->watermark_area.width, view->watermark_area.height,
view->watermark_area.x, view->watermark_area.y,
@ -660,12 +829,21 @@ view_load (view_t *view)
y = (screen_height - title_height - 2 * subtitle_height) * plugin->title_vertical_alignment;
view->title_area.width = 0;
view->title_area.height = 0;
view->title_area.x = -1;
view->title_area.y = 0;
if (plugin->mode_settings[plugin->mode].title) {
width = ply_label_get_width (view->title_label);
x = (screen_width - width) * plugin->title_horizontal_alignment;
ply_trace ("using %ldx%ld title centered at %ldx%ld for %ldx%ld screen",
width, title_height, x, y, screen_width, screen_height);
ply_label_show (view->title_label, view->display, x, y);
view->title_area.width = width;
view->title_area.height = 2 * title_height;
view->title_area.x = x;
view->title_area.y = y;
/* Use subtitle_height pixels seperation between title and subtitle */
y += title_height + subtitle_height;
}
@ -676,6 +854,32 @@ view_load (view_t *view)
ply_trace ("using %ldx%ld subtitle centered at %ldx%ld for %ldx%ld screen",
width, subtitle_height, x, y, screen_width, screen_height);
ply_label_show (view->subtitle_label, view->display, x, y);
if( x == -1 || x < view->title_area.x ) {
view->title_area.x = x;
}
if( width > view->title_area.width ) {
view->title_area.width = width;
}
if (view->title_area.height != 0) {
view->title_area.height = title_height + subtitle_height + subtitle_height * 2;
} else {
view->title_area.height = subtitle_height * 2;
}
}
uint32_t title_color = 0xff00ff;
title_color = plugin->mode_settings[plugin->mode].title_color;
if(view->title_label) {
ply_label_set_color(view->title_label,
((title_color >> 16) & 0xff) / 255.0f,
((title_color >> 8) & 0xff) / 255.0f,
(title_color & 0xff) / 255.0f,
1.0f);
ply_label_set_color(view->subtitle_label,
((title_color >> 16) & 0xff) / 255.0f,
((title_color >> 8) & 0xff) / 255.0f,
(title_color & 0xff) / 255.0f,
1.0f);
}
return true;
@ -777,8 +981,11 @@ view_start_end_animation (view_t *view,
screen_height = ply_pixel_display_get_height (view->display);
width = ply_animation_get_width (view->end_animation);
height = ply_animation_get_height (view->end_animation);
x = plugin->animation_horizontal_alignment * screen_width - width / 2.0;
y = plugin->animation_vertical_alignment * screen_height - height / 2.0;
x = plugin->mode_settings[plugin->mode].animation_horizontal_alignment * screen_width - width / 2.0;
y = calculate_animation_y(view,
plugin->mode_settings[plugin->mode].animation_vertical_alignment,
plugin->mode_settings[plugin->mode].animation_vertical_alignment_type,
screen_height, height);
ply_trace ("starting end sequence animation for %ldx%ld view", width, height);
ply_animation_start (view->end_animation,
@ -822,7 +1029,11 @@ view_start_progress_animation (view_t *view)
width = screen_width;
height = plugin->progress_bar_height;
x = plugin->progress_bar_horizontal_alignment * (screen_width - width);
y = plugin->progress_bar_vertical_alignment * (screen_height - height);
//y = plugin->progress_bar_vertical_alignment * (screen_height - height);
y = calculate_animation_y(view,
plugin->progress_bar_vertical_alignment,
plugin->mode_settings[plugin->mode].animation_vertical_alignment_type,
screen_height, height);
ply_progress_bar_show (view->progress_bar, view->display,
x, y, width, height);
ply_pixel_display_draw_area (view->display, x, y, width, height);
@ -833,8 +1044,12 @@ view_start_progress_animation (view_t *view)
view->throbber != NULL) {
width = ply_throbber_get_width (view->throbber);
height = ply_throbber_get_height (view->throbber);
x = plugin->animation_horizontal_alignment * screen_width - width / 2.0;
y = plugin->animation_vertical_alignment * screen_height - height / 2.0;
x = plugin->mode_settings[plugin->mode].animation_horizontal_alignment * screen_width - width / 2.0;
y = calculate_animation_y(view,
plugin->mode_settings[plugin->mode].animation_vertical_alignment,
plugin->mode_settings[plugin->mode].animation_vertical_alignment_type,
screen_height, height);
ply_throbber_start (view->throbber,
plugin->loop,
view->display, x, y);
@ -842,8 +1057,8 @@ view_start_progress_animation (view_t *view)
view->animation_bottom = y + height;
}
/* We don't really know how long shutdown will so
* don't show the progress animation
/* We don't really know how long shutdown will take,
* so don't show the progress animation
*/
if (plugin->mode == PLY_BOOT_SPLASH_MODE_SHUTDOWN ||
plugin->mode == PLY_BOOT_SPLASH_MODE_REBOOT)
@ -853,8 +1068,11 @@ view_start_progress_animation (view_t *view)
view->progress_animation != NULL) {
width = ply_progress_animation_get_width (view->progress_animation);
height = ply_progress_animation_get_height (view->progress_animation);
x = plugin->animation_horizontal_alignment * screen_width - width / 2.0;
y = plugin->animation_vertical_alignment * screen_height - height / 2.0;
x = plugin->mode_settings[plugin->mode].animation_horizontal_alignment * screen_width - width / 2.0;
y = calculate_animation_y(view,
plugin->mode_settings[plugin->mode].animation_vertical_alignment,
plugin->mode_settings[plugin->mode].animation_vertical_alignment_type,
screen_height, height);
ply_progress_animation_show (view->progress_animation,
view->display, x, y);
@ -905,7 +1123,7 @@ view_show_prompt (view_t *view,
view->lock_area.x =
view->dialog_area.x +
(view->dialog_area.width -
(view->dialog_area.width -
(view->lock_area.width + entry_width)) / 2.0;
view->lock_area.y =
view->dialog_area.y +
@ -1009,8 +1227,39 @@ load_mode_settings (ply_boot_splash_plugin_t *plugin,
if (settings->use_firmware_background)
plugin->use_firmware_background = true;
settings->title = ply_key_file_get_value (key_file, group_name, "_Title");
settings->subtitle = ply_key_file_get_value (key_file, group_name, "_SubTitle");
settings->watermark_imagename = ply_key_file_get_value (key_file, group_name, "WatermarkImage");
if( settings->watermark_imagename == NULL &&
plugin->watermark_imagename != NULL )
settings->watermark_imagename = strdup(plugin->watermark_imagename);
settings->title = ply_key_file_get_value (key_file, group_name, "Title");
settings->subtitle = ply_key_file_get_value (key_file, group_name, "SubTitle");
settings->title_color = ply_key_file_get_long (key_file, group_name, "TitleColor",
plugin->title_color);
settings->background_start_color =
ply_key_file_get_long (key_file, group_name,
"BackgroundStartColor",
plugin->background_start_color);
settings->background_end_color =
ply_key_file_get_long (key_file, group_name,
"BackgroundEndColor",
plugin->background_end_color);
/* Throbber, progress- and end-animation alignment */
settings->animation_horizontal_alignment =
ply_key_file_get_double (key_file, group_name,
"HorizontalAlignment", plugin->animation_horizontal_alignment);
settings->animation_vertical_alignment =
ply_key_file_get_double (key_file, group_name,
"VerticalAlignment", plugin->animation_vertical_alignment);
settings->animation_vertical_alignment_type =
ply_key_file_get_value (key_file, group_name,
"VerticalAlignmentType");
if( settings->animation_vertical_alignment_type == NULL &&
plugin->animation_vertical_alignment_type != NULL )
settings->animation_vertical_alignment_type = strdup(plugin->animation_vertical_alignment_type);
}
static ply_boot_splash_plugin_t *
@ -1020,11 +1269,12 @@ create_plugin (ply_key_file_t *key_file)
char *image_dir, *image_path;
char *transition;
char *progress_function;
char *show_animation_fraction;
srand ((int) ply_get_timestamp ());
plugin = calloc (1, sizeof(ply_boot_splash_plugin_t));
image_dir = ply_key_file_get_value (key_file, "two-step", "ImageDir");
image_dir = ply_key_file_get_value (key_file, "calculate", "ImageDir");
ply_trace ("Using '%s' as working directory", image_dir);
@ -1048,61 +1298,60 @@ create_plugin (ply_key_file_t *key_file)
plugin->background_tile_image = ply_image_new (image_path);
free (image_path);
asprintf (&image_path, "%s/watermark.png", image_dir);
plugin->watermark_image = ply_image_new (image_path);
free (image_path);
plugin->animation_dir = image_dir;
plugin->font = ply_key_file_get_value (key_file, "two-step", "Font");
plugin->title_font = ply_key_file_get_value (key_file, "two-step", "TitleFont");
plugin->font = ply_key_file_get_value (key_file, "calculate", "Font");
plugin->title_font = ply_key_file_get_value (key_file, "calculate", "TitleFont");
/* Throbber, progress- and end-animation alignment */
plugin->animation_horizontal_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"HorizontalAlignment", 0.5);
plugin->animation_vertical_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"VerticalAlignment", 0.5);
plugin->animation_vertical_alignment_type =
ply_key_file_get_value (key_file, "calculate",
"VerticalAlignmentType");
/* Progressbar alignment, this defaults to the animation alignment
/* Progress bar alignment, this defaults to the animation alignment
* for compatibility with older themes.
*/
plugin->progress_bar_horizontal_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"ProgressBarHorizontalAlignment",
plugin->animation_horizontal_alignment);
plugin->progress_bar_vertical_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"ProgressBarVerticalAlignment",
plugin->animation_vertical_alignment);
/* Watermark alignment */
plugin->watermark_horizontal_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"WatermarkHorizontalAlignment", 1.0);
plugin->watermark_vertical_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"WatermarkVerticalAlignment", 0.5);
/* Password (or other) dialog alignment */
plugin->dialog_horizontal_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"DialogHorizontalAlignment", 0.5);
plugin->dialog_vertical_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"DialogVerticalAlignment", 0.5);
/* Title alignment */
plugin->title_horizontal_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"TitleHorizontalAlignment", 0.5);
plugin->title_vertical_alignment =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"TitleVerticalAlignment", 0.5);
plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_NONE;
transition = ply_key_file_get_value (key_file, "two-step", "Transition");
transition = ply_key_file_get_value (key_file, "calculate", "Transition");
if (transition != NULL) {
if (strcmp (transition, "fade-over") == 0)
plugin->transition = PLY_PROGRESS_ANIMATION_TRANSITION_FADE_OVER;
@ -1114,35 +1363,39 @@ create_plugin (ply_key_file_t *key_file)
free (transition);
plugin->transition_duration =
ply_key_file_get_double (key_file, "two-step",
ply_key_file_get_double (key_file, "calculate",
"TransitionDuration", 0.0);
plugin->background_start_color =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"BackgroundStartColor",
PLYMOUTH_BACKGROUND_START_COLOR);
plugin->background_end_color =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"BackgroundEndColor",
PLYMOUTH_BACKGROUND_END_COLOR);
plugin->title_color = ply_key_file_get_long (
key_file, "calculate", "TitleColor", 0xffffff);
plugin->progress_bar_bg_color =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"ProgressBarBackgroundColor",
0xffffff /* white */);
plugin->progress_bar_fg_color =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"ProgressBarForegroundColor",
0x000000 /* black */);
plugin->progress_bar_width =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"ProgressBarWidth",
PROGRESS_BAR_WIDTH);
plugin->progress_bar_height =
ply_key_file_get_long (key_file, "two-step",
ply_key_file_get_long (key_file, "calculate",
"ProgressBarHeight",
PROGRESS_BAR_HEIGHT);
plugin->watermark_imagename = ply_key_file_get_value (key_file, "calculate", "WatermarkImage");
load_mode_settings (plugin, key_file, "boot-up", PLY_BOOT_SPLASH_MODE_BOOT_UP);
load_mode_settings (plugin, key_file, "shutdown", PLY_BOOT_SPLASH_MODE_SHUTDOWN);
load_mode_settings (plugin, key_file, "reboot", PLY_BOOT_SPLASH_MODE_REBOOT);
@ -1150,16 +1403,21 @@ create_plugin (ply_key_file_t *key_file)
load_mode_settings (plugin, key_file, "system-upgrade", PLY_BOOT_SPLASH_MODE_SYSTEM_UPGRADE);
load_mode_settings (plugin, key_file, "firmware-upgrade", PLY_BOOT_SPLASH_MODE_FIRMWARE_UPGRADE);
if (plugin->use_firmware_background)
if (plugin->use_firmware_background) {
plugin->background_bgrt_image = ply_image_new ("/sys/firmware/acpi/bgrt/image");
asprintf (&image_path, "%s/bgrt-fallback.png", image_dir);
plugin->background_bgrt_fallback_image = ply_image_new (image_path);
free (image_path);
}
plugin->dialog_clears_firmware_background =
ply_key_file_get_bool (key_file, "two-step", "DialogClearsFirmwareBackground");
ply_key_file_get_bool (key_file, "calculate", "DialogClearsFirmwareBackground");
plugin->message_below_animation =
ply_key_file_get_bool (key_file, "two-step", "MessageBelowAnimation");
ply_key_file_get_bool (key_file, "calculate", "MessageBelowAnimation");
progress_function = ply_key_file_get_value (key_file, "two-step", "ProgressFunction");
progress_function = ply_key_file_get_value (key_file, "calculate", "ProgressFunction");
if (progress_function != NULL) {
if (strcmp (progress_function, "wwoods") == 0) {
@ -1176,6 +1434,13 @@ create_plugin (ply_key_file_t *key_file)
free (progress_function);
}
show_animation_fraction = ply_key_file_get_value (key_file, "two-step", "ShowAnimationPercent");
if (show_animation_fraction != NULL)
plugin->show_animation_fraction = strtod (show_animation_fraction, NULL);
else
plugin->show_animation_fraction = SHOW_ANIMATION_FRACTION;
free (show_animation_fraction);
plugin->views = ply_list_new ();
return plugin;
@ -1243,17 +1508,18 @@ destroy_plugin (ply_boot_splash_plugin_t *plugin)
if (plugin->background_bgrt_image != NULL)
ply_image_free (plugin->background_bgrt_image);
if (plugin->watermark_image != NULL)
ply_image_free (plugin->watermark_image);
for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++) {
free (plugin->mode_settings[i].title);
free (plugin->mode_settings[i].watermark_imagename);
free (plugin->mode_settings[i].subtitle);
free (plugin->mode_settings[i].animation_vertical_alignment_type);
}
free (plugin->font);
free (plugin->title_font);
free (plugin->animation_vertical_alignment_type);
free (plugin->animation_dir);
free (plugin->watermark_imagename);
free_views (plugin);
free (plugin);
}
@ -1336,7 +1602,7 @@ start_progress_animation (ply_boot_splash_plugin_t *plugin)
plugin->is_animating = true;
/* We don't really know how long shutdown will, take
/* We don't really know how long shutdown will take,
* but it's normally really fast, so just jump to
* the end animation
*/
@ -1394,9 +1660,12 @@ draw_background (view_t *view,
ply_boot_splash_plugin_t *plugin;
ply_rectangle_t area;
bool use_black_background = false;
bool using_fw_background;
plugin = view->plugin;
using_fw_background = (plugin->background_bgrt_image || plugin->background_bgrt_fallback_image);
area.x = x;
area.y = y;
area.width = width;
@ -1405,7 +1674,7 @@ draw_background (view_t *view,
/* When using the firmware logo as background and we should not use
* it for this mode, use solid black as background.
*/
if (plugin->background_bgrt_image &&
if (using_fw_background &&
!plugin->mode_settings[plugin->mode].use_firmware_background)
use_black_background = true;
@ -1414,25 +1683,25 @@ draw_background (view_t *view,
*/
if ((plugin->state == PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY ||
plugin->state == PLY_BOOT_SPLASH_DISPLAY_PASSWORD_ENTRY) &&
plugin->background_bgrt_image && plugin->dialog_clears_firmware_background)
using_fw_background && plugin->dialog_clears_firmware_background)
use_black_background = true;
if (use_black_background)
ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area, 0);
else if (view->background_buffer != NULL)
ply_pixel_buffer_fill_with_buffer (pixel_buffer, view->background_buffer, 0, 0);
else if (plugin->background_start_color != plugin->background_end_color)
else if (plugin->mode_settings[plugin->mode].background_start_color != plugin->mode_settings[plugin->mode].background_end_color)
ply_pixel_buffer_fill_with_gradient (pixel_buffer, &area,
plugin->background_start_color,
plugin->background_end_color);
plugin->mode_settings[plugin->mode].background_start_color,
plugin->mode_settings[plugin->mode].background_end_color);
else
ply_pixel_buffer_fill_with_hex_color (pixel_buffer, &area,
plugin->background_start_color);
plugin->mode_settings[plugin->mode].background_start_color);
if (plugin->watermark_image != NULL) {
if (view->watermark_image != NULL) {
uint32_t *data;
data = ply_image_get_data (plugin->watermark_image);
data = ply_image_get_data (view->watermark_image);
ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &view->watermark_area, data);
}
}
@ -1530,7 +1799,8 @@ on_draw (view_t *view,
image_area.width = ply_image_get_width (plugin->header_image);
image_area.height = ply_image_get_height (plugin->header_image);
image_area.x = screen_area.width / 2.0 - image_area.width / 2.0;
image_area.y = plugin->animation_vertical_alignment * screen_area.height - sprite_height / 2.0 - image_area.height;
image_area.y = plugin->mode_settings[plugin->mode].animation_vertical_alignment * screen_area.height - sprite_height / 2.0 - image_area.height;
ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &image_area, ply_image_get_data (plugin->header_image));
}
@ -1603,8 +1873,6 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin,
ply_buffer_t *boot_buffer,
ply_boot_splash_mode_t mode)
{
int i;
assert (plugin != NULL);
plugin->loop = loop;
@ -1657,17 +1925,14 @@ show_splash_screen (ply_boot_splash_plugin_t *plugin,
} else {
ply_image_free (plugin->background_bgrt_image);
plugin->background_bgrt_image = NULL;
for (i = 0; i < PLY_BOOT_SPLASH_MODE_COUNT; i++)
plugin->mode_settings[i].use_firmware_background = false;
plugin->use_firmware_background = false;
}
}
if (plugin->watermark_image != NULL) {
ply_trace ("loading watermark image");
if (!ply_image_load (plugin->watermark_image)) {
ply_image_free (plugin->watermark_image);
plugin->watermark_image = NULL;
if (plugin->background_bgrt_fallback_image != NULL) {
ply_trace ("loading background bgrt fallback image");
if (!ply_image_load (plugin->background_bgrt_fallback_image)) {
ply_image_free (plugin->background_bgrt_fallback_image);
plugin->background_bgrt_fallback_image = NULL;
}
}
@ -1753,7 +2018,7 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin,
* become_idle gets called.
*/
if (plugin->mode_settings[plugin->mode].use_end_animation &&
fraction_done >= SHOW_ANIMATION_FRACTION) {
fraction_done >= plugin->show_animation_fraction) {
if (plugin->stop_trigger == NULL) {
ply_trace ("boot progressed to end");
@ -1767,7 +2032,7 @@ on_boot_progress (ply_boot_splash_plugin_t *plugin,
} else {
double total_duration;
fraction_done *= (1 / SHOW_ANIMATION_FRACTION);
fraction_done *= (1 / plugin->show_animation_fraction);
switch (plugin->progress_function) {
/* Fun made-up smoothing function to make the growth asymptotic:

@ -47,7 +47,10 @@ typedef struct
uid_t uid;
pid_t pid;
int reference_count;
uint32_t credentials_read : 1;
uint32_t disconnected : 1;
} ply_boot_connection_t;
struct _ply_boot_server
@ -165,6 +168,7 @@ ply_boot_connection_new (ply_boot_server_t *server,
connection->fd = fd;
connection->server = server;
connection->watch = NULL;
connection->reference_count = 1;
return connection;
}
@ -179,6 +183,26 @@ ply_boot_connection_free (ply_boot_connection_t *connection)
free (connection);
}
static void
ply_boot_connection_take_reference (ply_boot_connection_t *connection)
{
connection->reference_count++;
}
static void
ply_boot_connection_drop_reference (ply_boot_connection_t *connection)
{
if (connection == NULL)
return;
connection->reference_count--;
assert (connection->reference_count >= 0);
if (connection->reference_count == 0)
ply_boot_connection_free (connection);
}
bool
ply_boot_server_listen (ply_boot_server_t *server)
{
@ -292,30 +316,43 @@ ply_boot_connection_on_password_answer (ply_boot_connection_t *connection,
{
ply_trace ("got password answer");
ply_boot_connection_send_answer (connection, password);
if (!connection->disconnected)
ply_boot_connection_send_answer (connection, password);
if (password != NULL)
ply_list_append_data (connection->server->cached_passwords,
strdup (password));
ply_boot_connection_drop_reference (connection);
}
static void
ply_boot_connection_on_deactivated (ply_boot_connection_t *connection)
{
ply_trace ("deactivated");
if (!ply_write (connection->fd,
PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ply_trace ("could not finish writing deactivate reply: %m");
if (!connection->disconnected) {
if (!ply_write (connection->fd,
PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ply_trace ("could not finish writing deactivate reply: %m");
}
ply_boot_connection_drop_reference (connection);
}
static void
ply_boot_connection_on_quit_complete (ply_boot_connection_t *connection)
{
ply_trace ("quit complete");
if (!ply_write (connection->fd,
PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ply_trace ("could not finish writing quit reply: %m");
if (!connection->disconnected) {
if (!ply_write (connection->fd,
PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK,
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK)))
ply_trace ("could not finish writing quit reply: %m");
}
ply_boot_connection_drop_reference (connection);
}
static void
@ -323,7 +360,10 @@ ply_boot_connection_on_question_answer (ply_boot_connection_t *connection,
const char *answer)
{
ply_trace ("got question answer: %s", answer);
ply_boot_connection_send_answer (connection, answer);
if (!connection->disconnected)
ply_boot_connection_send_answer (connection, answer);
ply_boot_connection_drop_reference (connection);
}
static void
@ -331,7 +371,10 @@ ply_boot_connection_on_keystroke_answer (ply_boot_connection_t *connection,
const char *key)
{
ply_trace ("got key: %s", key);
ply_boot_connection_send_answer (connection, key);
if (!connection->disconnected)
ply_boot_connection_send_answer (connection, key);
ply_boot_connection_drop_reference (connection);
}
static void
@ -464,6 +507,7 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
(ply_trigger_handler_t)
ply_boot_connection_on_deactivated,
connection);
ply_boot_connection_take_reference (connection);
if (server->deactivate_handler != NULL)
server->deactivate_handler (server->user_data, deactivate_trigger, server);
@ -491,6 +535,7 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
(ply_trigger_handler_t)
ply_boot_connection_on_quit_complete,
connection);
ply_boot_connection_take_reference (connection);
if (server->quit_handler != NULL)
server->quit_handler (server->user_data, retain_splash, quit_trigger, server);
@ -510,6 +555,7 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
(ply_trigger_handler_t)
ply_boot_connection_on_password_answer,
connection);
ply_boot_connection_take_reference (connection);
if (server->ask_for_password_handler != NULL) {
server->ask_for_password_handler (server->user_data,
@ -594,6 +640,7 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
(ply_trigger_handler_t)
ply_boot_connection_on_question_answer,
connection);
ply_boot_connection_take_reference (connection);
if (server->ask_question_handler != NULL) {
server->ask_question_handler (server->user_data,
@ -626,6 +673,7 @@ ply_boot_connection_on_request (ply_boot_connection_t *connection)
(ply_trigger_handler_t)
ply_boot_connection_on_keystroke_answer,
connection);
ply_boot_connection_take_reference (connection);
if (server->watch_for_keystroke_handler != NULL) {
server->watch_for_keystroke_handler (server->user_data,
@ -707,13 +755,15 @@ ply_boot_connection_on_hangup (ply_boot_connection_t *connection)
assert (connection != NULL);
assert (connection->server != NULL);
connection->disconnected = true;
server = connection->server;
node = ply_list_find_node (server->connections, connection);
assert (node != NULL);
ply_boot_connection_free (connection);
ply_boot_connection_drop_reference (connection);
ply_list_remove_node (server->connections, node);
}

@ -0,0 +1,18 @@
#include <signal.h>
#include <unistd.h>
int
main(int argc, char **argv)
{
signal (SIGTERM, SIG_IGN);
/* Make the first byte in argv be '@' so that we can survive systemd's killing
* spree until the power is killed at shutdown.
* http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons
*/
argv[0][0] = '@';
while (pause());
return 0;
}

@ -1,5 +1,6 @@
systemd_unit_templates = \
plymouth-switch-root.service.in \
plymouth-switch-root-initramfs.service.in \
plymouth-start.service.in \
plymouth-read-write.service.in \
plymouth-quit.service.in \
@ -37,17 +38,25 @@ install-data-hook:
$(LN_S) ../plymouth-quit.service && \
$(LN_S) ../plymouth-quit-wait.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants && \
rm -f plymouth-reboot.service && \
$(LN_S) ../plymouth-reboot.service)
rm -f plymouth-reboot.service \
plymouth-switch-root-initramfs.service && \
$(LN_S) ../plymouth-reboot.service && \
$(LN_S) ../plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants && \
rm -f plymouth-kexec.service && \
$(LN_S) ../plymouth-kexec.service)
rm -f plymouth-kexec.service \
plymouth-switch-root-initramfs.service && \
$(LN_S) ../plymouth-kexec.service && \
$(LN_S) ../plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants && \
rm -f plymouth-poweroff.service && \
$(LN_S) ../plymouth-poweroff.service)
rm -f plymouth-poweroff.service \
plymouth-switch-root-initramfs.service && \
$(LN_S) ../plymouth-poweroff.service && \
$(LN_S) ../plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants && \
rm -f plymouth-halt.service && \
$(LN_S) ../plymouth-halt.service)
rm -f plymouth-halt.service \
plymouth-switch-root-initramfs.service && \
$(LN_S) ../plymouth-halt.service && \
$(LN_S) ../plymouth-switch-root-initramfs.service)
uninstall-hook:
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/initrd-switch-root.target.wants && \
@ -57,13 +66,17 @@ uninstall-hook:
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants && \
rm -f plymouth-quit.service plymouth-quit-wait.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/reboot.target.wants && \
rm -f plymouth-reboot.service)
rm -f plymouth-reboot.service \
plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/kexec.target.wants && \
rm -f plymouth-kexec.service)
rm -f plymouth-kexec.service \
plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/poweroff.target.wants && \
rm -f plymouth-poweroff.service)
rm -f plymouth-poweroff.service \
plymouth-switch-root-initramfs.service)
(cd $(DESTDIR)$(SYSTEMD_UNIT_DIR)/halt.target.wants && \
rm -f plymouth-halt.service)
rm -f plymouth-halt.service \
plymouth-switch-root-initramfs.service)
rmdir --ignore-fail-on-non-empty \
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/sysinit.target.wants \
$(DESTDIR)$(SYSTEMD_UNIT_DIR)/multi-user.target.wants \

@ -6,11 +6,12 @@ After=systemd-vconsole-setup.service systemd-udev-trigger.service systemd-udevd.
Before=systemd-ask-password-plymouth.service
ConditionKernelCommandLine=!plymouth.enable=0
ConditionVirtualization=!container
IgnoreOnIsolate=true
[Service]
ExecStart=@PLYMOUTH_DAEMON_DIR@/plymouthd --mode=boot --pid-file=@plymouthruntimedir@/pid --attach-to-session
ExecStartPost=-@PLYMOUTH_CLIENT_DIR@/plymouth show-splash
Type=forking
RemainAfterExit=yes
KillMode=none
KillMode=mixed
SendSIGKILL=no

@ -0,0 +1,15 @@
[Unit]
Description=Tell Plymouth To Jump To initramfs
DefaultDependencies=no
# dracut-shutdown.service restores the initramfs when it is _stopped_
# use Conflicts to make sure its ExecStop has run before we do
Conflicts=dracut-shutdown.service
After=plymouth-halt.service plymouth-reboot.service plymouth-poweroff.service plymouth-kexec.service dracut-shutdown.service
ConditionPathExists=/run/initramfs/bin/sh
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-@PLYMOUTH_CLIENT_DIR@/plymouth update-root-fs --new-root-dir=/run/initramfs
Type=oneshot
RemainAfterExit=yes

@ -8,6 +8,6 @@ bgrt.plymouth: $(srcdir)/bgrt.plymouth.desktop
$(AM_V_GEN) \
sed -e 's,[@]PLYMOUTH_THEME_PATH[@],$(PLYMOUTH_THEME_PATH),g' \
$(srcdir)/bgrt.plymouth.desktop | \
$(MSGFMT) --desktop --template /dev/stdin -d $(top_srcdir)/po -o $@
$(MSGFMT) --desktop --template /proc/self/fd/0 -d $(top_srcdir)/po -o $@
EXTRA_DIST = bgrt.plymouth.desktop

@ -54,4 +54,4 @@ spinfinity.plymouth: $(srcdir)/spinfinity.plymouth.in
EXTRA_DIST = spinfinity.plymouth.in
install-data-hook:
ln -sf /usr/share/pixmaps/system-logo-white.png $(DESTDIR)$(themedir)/header-image.png
ln -sf $(logofile) $(DESTDIR)$(themedir)/header-image.png

@ -82,7 +82,7 @@ spinner.plymouth: $(srcdir)/spinner.plymouth.desktop
$(AM_V_GEN) \
sed -e 's,[@]PLYMOUTH_THEME_PATH[@],$(PLYMOUTH_THEME_PATH),g' \
$(srcdir)/spinner.plymouth.desktop | \
$(MSGFMT) --desktop --template /dev/stdin -d $(top_srcdir)/po -o $@
$(MSGFMT) --desktop --template /proc/self/fd/0 -d $(top_srcdir)/po -o $@
EXTRA_DIST = spinner.plymouth.desktop

Loading…
Cancel
Save