Codebase list fbterm / upstream/1.3
upstream/1.3

Tree @upstream/1.3 (Download .tar.gz)

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.