Fixes#143
The new login screen runs separately from the actual login session
manager and communicates back with a pipe. This may be totally insecure
if you dig into it, but keep in mind our password hash policy is just an
unsalted sha and our sudo doesn't care who you are, so all in all I
don't think it's a problem at this stage. Maybe we can do something
better in the future.
The login screen is a Python app and features some new design updates:
the panel is available (with a modified set of widgets). The actual
login boxes are in their own window, which can be moved around, but this
is mostly to improve performance by allowing that window to be updated
repeatedly.
I might add more panel widgets in the future, such as accessibility
options; having access to things like IME and on-screen keyboard
settings would definitely be useful at the login prompt.
This is a terrible back. We need to do things better with handling the
display, possibly so we can do support for true 24bpp modes at some
point (though this isn't high priority). Ultimately, the _fullscreen
graphics support needs to be removed and embedded into 1) a separate
library, or 2) Yutani, the only thing that does fullscreen video modes
anyway. We can continue to render into a generic graphics buffer -
double buffered for the nested modes, non-double-buffered for the full
screen mode (and then blit with surface blits). For now, however, this
is at least functioning.
This is a combination of a harness for running QEMU and tracking its
window size, and a client running in the ToaruOS guest to receive those
window size updates and perform mode setting. Run the harness with
`util/qemu-harness.py` and then run `qemu_display_hack.py` from the
guest (using Alt-F2, preferrably) and the display will automatically
set the appropriate mode (and send ctrl-alt-u to qemu to disable
scaling) whenever the window changes. This is an experimental hack, it
only works on Linux (uses Xlib to do the window size querying), only
works with the SDL output (GTK both doesn't like it when you try to
resize the window too small, and it has that darn menu bar that makes it
hard to size everything correctly since that's theme-specific), and is
very experimental. That said, it performs quite nicely, possibly even
better than the native support in VirtualBox.
Works around what is believed to be a bug in VirtualBox where the PIT
*and* RTC were slowing down while playing quake to roughly half their
expected rates. I have no idea why this fixes the problem, but it does,
and with no expected ill effects elsewhere. With the future 64-bit
kernel, ToaruOS will no longer being using the PIT, so it doesn't really
matter anyway.