diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2018-04-12 14:17:51 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2018-04-12 14:17:51 +0800 |
commit | 3d1888960d61461991f0542413964bcf8df42c40 (patch) | |
tree | 8752a833ae13d6b1cc5af4032e41d45490d688fa /doc | |
download | fbterm-3d1888960d61461991f0542413964bcf8df42c40.tar.gz fbterm-3d1888960d61461991f0542413964bcf8df42c40.zip |
Initial commit
From fbterm 1.7.0, at https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fbterm/fbterm-1.7.0.tar.gz
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Makefile.am | 2 | ||||
-rw-r--r-- | doc/Makefile.in | 412 | ||||
-rw-r--r-- | doc/fbterm.1.in | 227 |
3 files changed, 641 insertions, 0 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..a79de5c --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,2 @@ +man_MANS = fbterm.1 +EXTRA_DIST = fbterm.1.in diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..675ebda --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,412 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/fbterm.1.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = fbterm.1 +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FC_CFLAGS = @FC_CFLAGS@ +FC_LIBS = @FC_LIBS@ +FT2_CFLAGS = @FT2_CFLAGS@ +FT2_LIBS = @FT2_LIBS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +RANLIB = @RANLIB@ +RELEASE_DATE = @RELEASE_DATE@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +X86_LIBS = @X86_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +man_MANS = fbterm.1 +EXTRA_DIST = fbterm.1.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +fbterm.1: $(top_builddir)/config.status $(srcdir)/fbterm.1.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list=''; test -n "$(man1dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-man uninstall-man1 + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/fbterm.1.in b/doc/fbterm.1.in new file mode 100644 index 0000000..1885fa6 --- /dev/null +++ b/doc/fbterm.1.in @@ -0,0 +1,227 @@ +.TH "FbTerm" "1" "@RELEASE_DATE@" "FbTerm @VERSION@" "FbTerm User Manual" +.SH "NAME" +FbTerm - a fast Frame Buffer based TERMinal emulator for linux +.SH "SYNOPSIS" +\fBfbterm\fR [\fIoptions\fR] [--] [\fIcommand\fR [\fIarguments\fR]] +.SH "DESCRIPTION" +FbTerm is a fast terminal emulator for linux with frame buffer device or VESA video card. Features include: + + * mostly as fast as terminal of linux kernel while accelerated scrolling is enabled + * select font with fontconfig and draw text with freetype2, same as Qt/Gtk+ based GUI apps + * dynamically create/destroy up to 10 windows initially running default shell + * record scroll-back 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 + * background image for eye candy +.SH "OPTIONS" +\fIcommand\fR [\fIarguments\fR] may be given to override the built-in choice of shell program. Normally FbTerm +checks the \fISHELL\fR variable. If that is not set, it tries to use the user's login shell program specified in the password +file. If that is not set, /bin/sh will be used. You should use the \fI--\fR argument to separate FbTerm's options from +the arguments supplied to the \fIcommand\fR. + +FbTerm first uses option value specified in command line arguments, then in the configure file \fI$HOME/.fbtermrc\fR. +If that file doesn't exist, FbTerm will create it with default options on startup. +.TP +\fB-h, --help\fR +display the help and exit +.TP +\fB-V, --version\fR +display FbTerm version and exit +.TP +\fB-v, --verbose\fR +display extra FbTerm's information +.TP +\fB-n, --font-names=\fR\fItext\fR +specify font family names +.TP +\fB-s, --font-size=\fR\fInum\fR +specify font pixel size +.TP +\fB--font-width=\fR\fInum\fR +force font width +.TP +\fB--font-height=\fR\fInum\fR +force font height +.TP +\fB-f, --color-foreground=\fR\fInum\fR +specify foreground color +.TP +\fB-b, --color-background=\fR\fInum\fR +specify background color +.TP +\fB-e, --text-encodings=\fR\fItext\fR +specify additional text encodings +.TP +\fB-a, --ambiguous-wide +treat ambiguous width characters as wide +.TP +\fB-r, --screen-rotate=\fR\fInum\fR +specify the orientation of screen display +.TP +\fB-i, --input-method=\fR\fItext\fR +specify input method program +.TP +\fB--cursor-shape=\fR\fInum\fR +specify default cursor shape +.TP +\fB--cursor-interval=\fR\fInum\fR +specify cursor flash interval +.TP +\fB--vesa-mode=\fR\fInum\fR +specify VESA video mode +.TP +\fB--vesa-mode=list\fR +display available VESA video modes + +.TP +see comments in \fI$HOME/.fbtermrc\fR for details of these options. +.SH "SHORTCUT SUMMARY" +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 + CTRL_ALT_K: kill input method server + +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. +.SH "FRAME BUFFER DEVICE" +Before executing FbTerm, make sure there is a frame buffer device in your system, and you have read/write access right +with it. Normally FbTerm tries to open /dev/fb0 and /dev/fb/0, environment variable "\fIFRAMEBUFFER\fR" may be used to override this +built-in behavior. +.SH "VESA VIDEO DEVICE" +From version 1.6, FbTerm adds VESA video card support. By default, FbTerm tries frame buffer device first, if failure, +then tries to use VESA device with highest resolution and color depth. option "\fIvesa-mode\fR" may be given to force only open +VESA device with the specified video mode. To see available video modes for your VESA card, execute "\fBfbterm --vesa-mode=list\fR". + +Attention: 1) VESA support requires root privilege to work; 2) do not force to use VESA device on the system with frame buffer device +enabled, they maybe conflict with each other. +.SH "FONT" +FbTerm invokes fontconfig to get a font list, if the first font doesn't contain the glyph for the rendering character, +it will try second font, then the third, ... and so on, user can see this ordered font list with "\fBfbterm -v\fR". + +If you don't like the fonts selected by FbTerm, execute "fc-list" to get available fonts, choose favorites as +the value of option "\fIfont-names\fR". You may also modify the configure file of fontconfig, which will +change the behavior of all programs based on fontconfig! +.SH "TEXT ENCODING" +By using iconv, FbTerm converts other encodings to internal encoding UTF-8. On startup, FbTerm checks variable +\fILC_CTYPE\fR to determine the default text encoding, which is binded to shortcut CTRL_ALT_F1. +User can specify up to 5 additional encodings with option "\fItext-encodings\fR", for example, as a Chinese user, +you set "text-encodings=gbk,big5", shortcut CTRL_ALT_F2 will bind to gbk, and CTRL_ALT_F3 bind to big5. + +In a number of CJK encodings there are ambiguous width characters which have a width of either narrow or wide +depending on the context of their use. By default, FbTerm treats them as narrow width characters, +option "\fIambiguous-wide\fR" may be used to change the behavior. +.SH "BACKGROUND IMAGE" +FbTerm doesn't load and parse any image file with various formats directly, instead it takes a screen shot of +frame buffer device on startup if variable \fIFBTERM_BACKGROUND_IMAGE\fR is defined, then uses this screen shot as +the background for text rendering. In order to enable background image support, user should first +put a image to frame buffer device with a image viewer. A wrapper script using fbv is listed below: +\fB +.br + + #!/bin/bash + + # fbterm-bi: a wrapper script to enable background image with fbterm + # usage: fbterm-bi /path/to/image fbterm-options + + echo -ne "\\e[?25l" # hide cursor + + fbv -ciuker "$1" << EOF + q + EOF + + shift + export FBTERM_BACKGROUND_IMAGE=1 + exec fbterm "$@" +\fR +Attention: 1) do not enable background image on frame buffer device with 8bpp depth, because FbTerm changes color map +table for correct text rendering; 2) if the screen shot is different from the original image, try to use a fast scrolling +disabled frame buffer device. +.SH "256 COLOR EXTENSION" +FbTerm supports xterm's 256 color mode extension. The first 16 colors are the default terminal colors. Additionally, there's +a 6x6x6 color cube, and 24 grayscale tones. But xterm's 256 color escape sequences conflict with the linux sequences implemented by FbTerm, +so private escape sequences were introduced to support this feature: +\fB +.br + + ESC [ 1 ; n } set foreground color to n (0 - 255) + ESC [ 2 ; n } set background color to n (0 - 255) + ESC [ 3 ; n ; r ; g ; b } set color n to (r, g, b) , n, r, g, b all in (0 - 255) +\fR + +A new terminfo database entry named "fbterm" was added to use these private sequences, all program based on terminfo should work with it. +By default, FbTerm sets environment variable "TERM" to value "linux", user need run "TERM=fbterm /path/to/program" to enable 256 color mode. +.SH "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 separated processes. + +As a normal IM user, you should install a IM program written for FbTerm, and specify it as the value of option "\fIinput-method\fR". +CTRL_SPACE is the shortcut to activate/deactivate input method. And CTRL_ALT_K may be used to kill the IM program when it has freezed. + +.SH "SECURITY NOTES" +FbTerm tries to change linux kernel key map table to setup shortcuts, which requires \fISYS_TTY_CONFIG\fR capability since kernel +version 2.6.15. It means FbTerm should be a setuid 0 program to allow non-root users to use shortcuts. FbTerm only +switches to root privilege temporarily when changing key map table, we believe it's pretty much free from security problems. +If you really don't like this and have a linux kernel with file system capabilities enabled, which allow user to give +binaries a subset of root's powers without using setuid 0 (official kernel 2.6.27 includes it), you can run command +"\fBsudo setcap 'cap_sys_tty_config+ep' /path/to/fbterm\fR". + +FbTerm redirects /dev/tty0 output to the pseudo terminal of current sub-window. In linux before version 2.6.10, anybody can do this +as long as the output was not redirected yet; since version 2.6.10, only root or a process with the \fICAP_SYS_ADMIN\fR capability may do this. +You should do similar work with above ones for FbTerm to enable this feature for non-root users. + +.SH "PERFORMANCE" +According test result, FbTerm spends more than 95% time on painting screen. Speedup painting will significantly +increase performance. Here are some suggestions for frame buffer device: + + * 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, by default 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: + +title Ubuntu + root (hd0,0) + kernel /boot/vmlinuz ro root=LABEL=UBUNTU splash vga=0x317 \fBvideo=vesafb:ywrap,mtrr:3\fR + initrd /boot/initrd.img + +You may check fast scrolling status with "\fBfbterm -v\fR", a message with "scrolling: redraw" means fast scrolling +is disabled, otherwise enabled. +.SH "AUTHOR" +Written by dragchan. +.SH "REPORTING BUGS" +Please submit bug reports to <\fBhttp://code.google.com/p/fbterm/issues\fR>. +.SH "COPYRIGHT" +Copyright \(co 2008-2010 dragchan. License GPLv2: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>. +.br +This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. |