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.