mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 20:33:10 +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:
parent
4b0be17c71
commit
12c7b954e1
|
@ -86,6 +86,8 @@ SocketPermissions=660
|
||||||
Priority=high
|
Priority=high
|
||||||
KeepAlive=true
|
KeepAlive=true
|
||||||
User=window
|
User=window
|
||||||
|
# Ensure windowserver has a controlling TTY.
|
||||||
|
StdIO=/dev/tty0
|
||||||
|
|
||||||
[InspectorServer]
|
[InspectorServer]
|
||||||
Socket=/tmp/portal/inspector,/tmp/portal/inspectables
|
Socket=/tmp/portal/inspector,/tmp/portal/inspectables
|
||||||
|
|
|
@ -377,9 +377,6 @@ void init_stage2(void*)
|
||||||
// NOTE: Everything marked UNMAP_AFTER_INIT becomes inaccessible after this point.
|
// NOTE: Everything marked UNMAP_AFTER_INIT becomes inaccessible after this point.
|
||||||
MM.unmap_text_after_init();
|
MM.unmap_text_after_init();
|
||||||
|
|
||||||
// FIXME: It would be nicer to set the mode from userspace.
|
|
||||||
// FIXME: It would be smarter to not hardcode that the first tty is the only graphical one
|
|
||||||
ConsoleManagement::the().first_tty()->set_graphical(GraphicsManagement::the().framebuffer_devices_exist());
|
|
||||||
RefPtr<Thread> thread;
|
RefPtr<Thread> thread;
|
||||||
auto userspace_init = kernel_command_line().userspace_init();
|
auto userspace_init = kernel_command_line().userspace_init();
|
||||||
auto init_args = kernel_command_line().userspace_init_args();
|
auto init_args = kernel_command_line().userspace_init_args();
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
ErrorOr<int> serenity_main(Main::Arguments)
|
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("/res", "r"));
|
||||||
TRY(Core::System::unveil("/tmp", "cw"));
|
TRY(Core::System::unveil("/tmp", "cw"));
|
||||||
TRY(Core::System::unveil("/etc/WindowServer.ini", "rwc"));
|
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_flags = SA_NOCLDWAIT;
|
||||||
act.sa_handler = SIG_IGN;
|
act.sa_handler = SIG_IGN;
|
||||||
TRY(Core::System::sigaction(SIGCHLD, &act, nullptr));
|
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 wm_config = TRY(Core::ConfigFile::open("/etc/WindowServer.ini"));
|
||||||
auto theme_name = wm_config->read_entry("Theme", "Name", "Default");
|
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_default_font_query(default_font_query);
|
||||||
Gfx::FontDatabase::set_fixed_width_font_query(fixed_width_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;
|
WindowServer::EventLoop loop;
|
||||||
|
|
||||||
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath proc exec"));
|
TRY(Core::System::pledge("stdio video thread sendfd recvfd accept rpath wpath cpath proc exec"));
|
||||||
|
|
Loading…
Reference in a new issue