1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:37:35 +00:00

Kernel+WindowServer: Move setting tty graphical mode to Userspace

This will allow using the console tty and WindowServer regardless of
your kernel command line. Also this fixes a bug where, when booting in
text mode, the console was in graphical mode, and would not accept
input.
This commit is contained in:
Peter Elliott 2022-04-28 01:19:32 -06:00 committed by Andreas Kling
parent 4b0be17c71
commit 12c7b954e1
3 changed files with 12 additions and 5 deletions

View file

@ -21,7 +21,7 @@
ErrorOr<int> serenity_main(Main::Arguments)
{
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath unix proc sigaction exec"));
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath unix proc sigaction exec tty"));
TRY(Core::System::unveil("/res", "r"));
TRY(Core::System::unveil("/tmp", "cw"));
TRY(Core::System::unveil("/etc/WindowServer.ini", "rwc"));
@ -34,7 +34,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
act.sa_flags = SA_NOCLDWAIT;
act.sa_handler = SIG_IGN;
TRY(Core::System::sigaction(SIGCHLD, &act, nullptr));
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath unix proc exec"));
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath unix proc exec tty"));
auto wm_config = TRY(Core::ConfigFile::open("/etc/WindowServer.ini"));
auto theme_name = wm_config->read_entry("Theme", "Name", "Default");
@ -50,6 +50,14 @@ ErrorOr<int> serenity_main(Main::Arguments)
Gfx::FontDatabase::set_default_font_query(default_font_query);
Gfx::FontDatabase::set_fixed_width_font_query(fixed_width_font_query);
{
// FIXME: Map switched tty from screens.
// FIXME: Gracefully cleanup the TTY graphics mode.
int tty_fd = TRY(Core::System::open("/dev/tty", O_RDWR));
TRY(Core::System::ioctl(tty_fd, KDSETMODE, KD_GRAPHICS));
TRY(Core::System::close(tty_fd));
}
WindowServer::EventLoop loop;
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath proc exec"));