FbTerm - a fast FrameBuffer based TERMinal emulator for linux DESCRIPTION FbTerm is a fast terminal emulator for linux with frame buffer device. Features include: * mostly as fast as terminal of linux kernel while accelerated scrolling is enabled on framebuffer device * select font with fontconfig and draw text with freetype2, same as Qt/Gtk+ based GUI apps * dynamicly create/destroy up to 10 windows initially running default shell * record scrollback history for every window * auto-detect current locale and convert text encoding, support double width scripts like Chinese, Japanese etc * switch between configurable additional text encodings with hot keys on the fly * copy/past selected text between windows with mouse when gpm server is running * change the orientation of screen display, a.k.a. screen rotation * lightweight input method framework with client-server architecture CONFIGURE FILE On startup, FbTerm try to load configuration from $HOME/.fbtermrc. If that file dosn't exist, FbTerm will create it with default options. Through the configure file, you can control font family/size, text background/foreground color, additional text encodings etc. See comments in that file for details. SHORTCUT SUMMAY keyboard: CTRL_ALT_E: exit from FbTerm CTRL_ALT_C: create a new window CTRL_ALT_D: destroy current window CTRL_ALT_1: switch to window 1 CTRL_ALT_2: switch to window 2 CTRL_ALT_3: switch to window 3 CTRL_ALT_4: switch to window 4 CTRL_ALT_5: switch to window 5 CTRL_ALT_6: switch to window 6 CTRL_ALT_7: switch to window 7 CTRL_ALT_8: switch to window 8 CTRL_ALT_9: switch to window 9 CTRL_ALT_0: switch to window 10 SHIFT_LEFT: switch to previous window SHIFT_RIGHT: switch to next window SHIFT_PAGEUP: history scroll up SHIFT_PAGEDOWN: history scroll down CTRL_ALT_F1: switch to encoding of current locale CTRL_ALT_F2 to CTRL_ALT_F6: switch to additional encodings CTRL_SPACE: toggle input method mouse: move when left button down: select text double click with left button: auto select text click with right button: paste selected text Sometimes above actions will not work, please try to redo them with shift key holding down. PERFORMANCE According test result, FbTerm spends more than 95% time on painting screen. Speedup painting will significantly increase performance. Here are some suggestions: * Enable fast scrolling on frame buffer device. The visible screen will be just a window of the video memory, when scrolling, FbTerm only change the start of window, no need to repaint the whole screen. * On Intel P6 family processors the Memory Type Range Registers (MTRRs) may be used to control processor access to memory ranges. If you have video card on a PCI or AGP bus, enabling write-combining allows bus write transfers to be combined into a larger transfer before bursting over the PCI/AGP bus. This can increase performance of FbTerm's paint operations. Maybe you need to enable them manually for your video card. For example, defaultly fast scrolling and write-combining are all disabled on general VESA frame buffer device, GRUB/LILO configure file should be modified to enable them. A GRUB example is showed below: --Before-- title Ubuntu root (hd0,0) kernel /boot/vmlinuz ro root=LABEL=UBUNTU splash vga=0x317 initrd /boot/initrd.img --After-- title Ubuntu root (hd0,0) kernel /boot/vmlinuz ro root=LABEL=UBUNTU splash vga=0x317 video=vesafb:ywrap,mtrr:3 initrd /boot/initrd.img INPUT METHOD Instead of adding input method directly in FbTerm, a client-server based input method framework is designed to do this work. FbTerm acts as a client, standalone IM program as a server, and they run in seperated processes. As a normal IM user, please visit FbTerm's homepage (http://code.google.com/p/fbterm/) to check current available IM programs. If you want to develope a new IM program for FbTerm, im/inputmethod.txt is a guide document. There is also a IM example in im/ directory, which help you to understand IM architecture and provide some base sources to simplify the development.