-
Notifications
You must be signed in to change notification settings - Fork 83
TODO
dvdhrm edited this page Feb 5, 2012
·
7 revisions
This is a rough TODO list of KMSCON. It is ordered by releases.
- Write terminal emulator (vte subsystem) which correctly emulates a linux console.
- Write KMSCON application similar to the current
test_terminal
. - Limit Frame-Count to 50 to speed up the terminal.
- Add graphics card detection. We currently use a hard-coded path
/dev/dri/card0
but should rely on udev to provide it. - Add run-time monitor detection. We detect new monitors only if we switch VT but we should also detect them during run-time properly. The infrastructure is already available, we only need to add an udev listener here.
- Re-add pango backend. We already used one but it was quite ugly. We should clean it up and add it again to have a font-backend that can handle Unicode combining marks (freetype2 requires us to do it manually).
- Major speed optimizations. The drawing operations are very slow and should be improved. This may require using cairo for drawing as the current GL textures are horribly slow on older machines.
- Check whether eglMakeCurrent() is thread-aware and document that behavior in
kmscon_compositor_use
. Check whether multiple active contexts make sense if we draw to multiple monitors. I doubt that but who knows... It probably only makes sense for multiple graphics cards. - Avoid all those
eglGetProcAddess()
in the context-creation and use something like libGLEW. - How do we get bpp and colordepth? Is relying on 24/32 ok?
- Improve CRTC/Encoder logic in
kmscon_compositor
andkmscon_output
. We currently choose the first found crtc but we should probably provide a proper abstraction so users can configure the connections. - Do we need
glFinish()
orglFlush()
before flipping the framebuffer? - Check for
ARB_texture_non_power_of_two
as we use it all the time. - Is Mipmapping needed is should we rely on the GL implementation to do scaling?
- Calculate console size by font-size not by row/column-count (or provide both methods)
- Add a configuration file parser.
- Make several hard-coded values configurable in the config-file.
- Add font-config support so we do not need to ship a font with our application.
- Improve build-files to allow installing the binaries into the system. We currently hard-code some paths so this doesn't work yet.
- Start the correct shell application. We currently use
_PATH_BSHELL
but we should rather provide functionality similar toagetty
orgetty
. This should also take care of restarting the shell if it exited. - Move VTE emulation into separate library to fill the current gap of a proper terminal emulation library which does not depend on X11.
- We should support multiple consoles which can run simultaneously in one KMSCON process. The user should be able to switch between them and map different consoles to different monitors simultaneously.
- Add support for Unicode combining marks.
kmscon_symbol_t
already supports UCS4 symbols which consist of more than one integer but our terminal emulator currently does not correctly handle combining characters. - If we write to the last column of a line we move the cursor one column further, that is past the line. This signals that we have a pending-wrap and if auto-wrap is enabled we should advance one line on the next write. However, if we have a pending-wrap and the applications does some cursor-repositioning, what should we do? For instance if we get "move at the end of the line", should we keep the pending-wrap or reset it and go to the last cell? And similar with other repositionings...
- If "relative_positioning" is active and the application demands a clear-screen operation, should we clear everything or just the scroll-region?
- Implement input-device blacklist similar to X11.
- Figure out how to handle dead-keys in the input subsystem.
- Support multiple graphic cards, that is, multiple
kmscon_compositor
objects. - Make VT support optional. Our main goal is to make CONFIG_VT deprecated so we should be able to run without a VT if the kernel does not provide them. This helps to test kernels with CONFIG_VT=n.
- Use KDSKBMODE=K_OFF to avoid getting input from the VT and implement our own VT switching if VT support is enabled.