firstboot/homectl: hide plymouth splashscreen when asking questions
When plymouth is enabled, the screen gets all garbled when firstboot runs and asks questions. Disable the splash screen, but only when actually asking questions.
This commit is contained in:
@@ -43,6 +43,7 @@
|
||||
#include "parse-util.h"
|
||||
#include "password-quality-util.h"
|
||||
#include "path-util.h"
|
||||
#include "plymouth-util.h"
|
||||
#include "pretty-print.h"
|
||||
#include "proc-cmdline.h"
|
||||
#include "prompt-util.h"
|
||||
@@ -110,6 +111,10 @@ static void print_welcome(int rfd, sd_varlink **mute_console_link) {
|
||||
assert(rfd >= 0);
|
||||
assert(mute_console_link);
|
||||
|
||||
/* Needs to be called before mute_console or it will garble the screen */
|
||||
if (arg_welcome)
|
||||
(void) plymouth_hide_splash();
|
||||
|
||||
if (!*mute_console_link && arg_mute_console)
|
||||
(void) mute_console(mute_console_link);
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "percent-util.h"
|
||||
#include "pidref.h"
|
||||
#include "pkcs11-util.h"
|
||||
#include "plymouth-util.h"
|
||||
#include "polkit-agent.h"
|
||||
#include "pretty-print.h"
|
||||
#include "proc-cmdline.h"
|
||||
@@ -2891,6 +2892,9 @@ static int create_interactively(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Needs to be called before mute_console or it will garble the screen */
|
||||
(void) plymouth_hide_splash();
|
||||
|
||||
_cleanup_(sd_varlink_flush_close_unrefp) sd_varlink *mute_console_link = NULL;
|
||||
(void) mute_console(&mute_console_link);
|
||||
|
||||
|
||||
@@ -56,3 +56,14 @@ int plymouth_send_msg(const char *text, bool pause_spinner) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int plymouth_hide_splash(void) {
|
||||
int r;
|
||||
|
||||
r = plymouth_send_raw("H\0", 2, SOCK_NONBLOCK);
|
||||
if (r < 0)
|
||||
return log_full_errno(ERRNO_IS_NO_PLYMOUTH(r) ? LOG_DEBUG : LOG_WARNING, r,
|
||||
"Failed to communicate with plymouth: %m");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
int plymouth_connect(int flags);
|
||||
int plymouth_send_raw(const void *raw, size_t size, int flags);
|
||||
int plymouth_send_msg(const char *text, bool pause_spinner);
|
||||
int plymouth_hide_splash(void);
|
||||
|
||||
static inline bool ERRNO_IS_NO_PLYMOUTH(int r) {
|
||||
return IN_SET(ABS(r), EAGAIN, ENOENT) || ERRNO_IS_DISCONNECT(r);
|
||||
|
||||
Reference in New Issue
Block a user