Skip to content

mcgrew/lxvt

Repository files navigation

	Congratulations! You have purchased an extremely fine
    device that would give you thousands of years of trouble-free 
    service, except that you undoubtably will destroy it via some 
    typical bonehead consumer maneuver. Which is why we ask you
    to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY
    BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T
    YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND 
    FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO
    ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER
    AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING
    WITH THE KNOBS, RIGHT?  AND YOU'RE JUST NOW STARTING TO READ 
    THE INSTRUCTIONS, RIGHT???	WE MIGHT AS WELL JUST BREAK THESE 
    DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU 
    KNOW THAT? 
		-- Dave	Barry, "Read This First!"



00   INTRODUCTION

lxvt is a multi-tabbed (like gnome-terminal/konsole) terminal emulator for the
X Window System. It targets to be light-weight, and independent of any desktop
environment. It achieves this without losing the common useful features, like 
tabs and pseudo-transparent background, multi-style scrollbars, XIM and CJK 
support, etc.



01   A BRIEF HISTORY

This project was started because of performance issues in libvte.  I searched 
for an alternative to vte-based terminals which still had tab support, and came
across lxvt. It had good performance and functionality, but I wanted to see
improvements to certain features. I discovered that the project had been
abandoned (there were no commits for ~6 years), so I decided to fork the project
and add the enhancements I desired. 

I found that the user dylex on github had made some improvements, but also some
changes I found undesirable (like removing tab support). I incorporated some of
his improvements and then began some of my own.


02   BUG REPORT AND FAQ

Bug reports are welcome! You can build lxvt with debug support. If you have gdb 
on your system, you may run lxvt in gdb with the source to track down the bug.

To save both your time and mine, please document detailed steps to replicate the 
bug. If I cannot replicate it by myself, I will ignore it even if it may destroy 
the universe.

Patches are welcome. Fork this project and send me a pull request, or e-mail
me a git patch file.

In addition, I may not have time to update the documents. Feel free to help me 
and the users to improve them. Translations are also welcome.

If you run into certain problems, please read the FAQ file and the man page
before trying to contact me! Your question may be answered by them already. I
most likely will dump your question to /dev/null if it is already answered
there.


03   BUILD AND INSTALL

To build and install from the source, please read INSTALL file!

A quick (lazy) choice is to configure lxvt as the following. After you
--enable-everything, usually there is no need to enable other options
explicitly. This is a shortcut to avoid a long list of configuration options.

    $ ./configure --enable-everything --disable-debug

04   CONFIGURATION FILE

To run lxvt with your own preferences, you can set X resources in ~/.lxvtrc. A
sample lxvtrc.sample is included in the share/ directory of the source code,
and you can start to hack your own ~/.lxvtrc from it. You can also customize
lxvt for all users via a system-wide configuration file, usually
/etc/lxvt/lxvtrc or /usr/local/etc/lxvt/lxvtrc.

Since 0.5.0, configuration via file ~/.Xdefaults and ~/.Xresources is no longer
supported. Most options in the config file can be replace by a (short) command 
line option if you like command line options.

05   HOTKEY BINDINGS

NOTE: As of 0.5.0, the "hotkey" feature was renamed to "macros".

Several hot key combinations are available for keyboard users. lxvt is designed
to be as flexible as possible. Many features can be altered during runtime using 
hotkeys or escape sequences. Please read the manual for a list of them.

If you do not like the default hot key combinations, you can define the
combinations yourself. Please read the manual page to find out how to define
them.

06   CJK DISPLAY AND INPUT

To display and input Chinese (Korea/Japanese), you can do the following:

    . Configure lxvt with "--enable-cjk --enable-xim" options, and build it.

    . Install the correct CJK fonts. lxvt will try to look for some default CJK
      fonts if you do not specify them  using the -fm option or mfont X resource
      name. The default CJK fonts are listed in the src/encoding.h file. Notice
      that they are -fm and mfont, NOT -fn and font!!! If you use freetype font,
      use -xftfm option to specify the CJK font family. Notice that -fm and
      -xftfm options use different formats of font names. For details about the
      difference, read the FAQ file.

    . Set environment variable LC_CTYPE to zh_CN (or zh_CN.GBK, zh_CN.GB2312,
      zh_CN.EUC based on your system). Make sure to unset environment variable
      LC_ALL, otherwise LC_CTYPE is overrided. Notice that this setting is
      global for all the following commands you will type in the same shell
      session. You can supply the environment variable to lxvt at runtime
      instead of setting it globally here. Keep reading the following for
      details.

    . Set X resources in ~/.lxvtrc. Notice that the value of inputMethod is
      case sensitive.

	lxvt.mfont:		  hanzigb16st
	lxvt.xftmfont:		  simsun
	lxvt.xftSize:		  14
	lxvt.multichar_encoding: GB
	lxvt.inputMethod:	  SCIM

    . Start the SCIM X input server as usual. For example:

	$ # for ksh/bash users
	$ LC_ALL=zh_CN LANG=zh_CN scim -d
	$ # for csh/tcsh users
	$ env LC_ALL=zh_CN LANG=zh_CN scim -d

    . Execute lxvt. You can supply the environment variable LC_CTYPE and
      XMODIFIERS to lxvt at runtime instead of setting them globally as above.
      All you need to do is to run lxvt as following:

	# the following command is for bash/ksh
	LC_CTYPE=zh_CN XMODIFIERS=@im=SCIM lxvt &
	# the following command is for csh/tcsh
	env LC_CTYPE=zh_CN XMODIFIERS=@im=SCIM lxvt &

    . Focus on the lxvt window, click Ctrl_Space to invoke SCIM

    . For Linux and Mac OS X, setting environment variable LC_ALL (for scim) and
      LC_CTYPE (for lxvt) to zh_CN or zh_CN.GBK are both good for SCIM/fcitx
      input. For FreeBSD, they must be zh_CN.eucCN for fcitx input. For OpenBSD,
      they can be zh_CN.EUC or zh_CN.GBK for fcitx input.

lxvt is tested to work with SCIM, fcitx and gcin on Linux, FreeBSD, OpenBSD and
Mac OS X. It should work fine with other X Input methods, like xcin, Chinput and
miniChinput. It is reported to work with French ascent as well.



07   FEATURES

Major features (* are new features compared with rxvt, + are enhanced
features compared with rxvt):

    * multi-tab support
    * runtime changedable tab title and tab order
    * simple command support (session) for each tab terminal
    * profiles for different tabs
    * macros to define shortcut key combinations
    * input broadcasting to all tab terminals
    * freetype font (Xft) support
    * built-in true translucent window support
    * user configurable keyboard shortcuts
    . pseudo-transparent terminal background
    * pseudo-transparent tabbar background
    * pseudo-transparent scrollbar background
    * pseudo-transparent menubar background
    + user supplied background image per terminal
    * user supplied background image for tabbar
    * user supplied background image for scrollbar
    * user supplied background image for menubar
    + xpm/jpeg/png background image
    * background color tinting
    * runtime changedable tinting color and shading
    * color text shadow and different shadow mode
    * background fading and off-focus fading
    + NeXT/Rxvt/Xterm/SGI/Plain style scrollbar
    + XIM and multi-languages (Chinese/Japanese/Korean) suppport
    . multiple platforms
    . utmp/wtmp/lastlog logging
    . only depends on X, no GTK, no Qt
    . small and fast

Improvements to lxvt over mrxvt thus far:

    * No more invisible tabs. Tabs now shrink to fit in the tab bar.

For a complete list of all features, please read README.configure file.



08   PORTABILITY

Here are tested platforms that lxvt is known to work with:

    Slackware Linux 8.1/10.0/10.1/10.2, -current
    Slackintosh 10.1, 10.2 (PPC)
    RedHat Linux 9.0, Enterprise 3, Fedora Core 2/3
    Debian Linux
    Gentoo Linux
    SuSE Linux 8.2, 9.0, 9.1, 9.2
    SUN Solaris (SPARC) 7/8/9/10
    FreeBSD 4.8/5.2.1/5.3
    OpenBSD 3.5/3.6/3.8/3.9
    NetBSD 2.0
    IRIX 6.5
    HP-UX
    Tru64/OSF 5.1
    Mac OS X 10.3 (Panther), 10.4 (Tiger)
    Cygwin

If you cannot find lxvt in your favorite system (especially open source systems
like Linux and BSD), you may try to contact the system developers and request
them to add it into the system. :-)



09   KNOWN ISSUES

Here are several known issues of lxvt:

    . UTF-8 is not supported yet.

    . To build lxvt on HP-UX, you need to disable logging features.

    . Background image support requires libxpm, libpng or libjpeg be installed.
      The images are only tiled on the background of the terminal window. They
      cannot be scaled to fit the window size.

    . XFT support requires freetype, xft and fontconfig libraries be installed.
      Multichar support under XFT requires GNU iconv library be installed, which
      is usually included in GLIBC for Linux systems.

    . If swap screen option is disabled, screen scrolling may behave randomly.
      ;-)  So the safe choice is to always enable it.

    . Tinting and pseudo-transparent are global since 0.3.0. Well, we could
      implement tinting and pseudo-transparent for each individual terminal (not
      a technical difficulty), but it will significantly increase the X
      resources usage since each terminal needs at least one pixmap.

    . Certain characters, e.g., not be correctly displayed under XFT.



10   SECURITY ISSUES

Here are several security issues of mrxvt:

    Before 0.3.10, by default, mrxvt binary is installed as setuid root.
    Although we have tried hard to avoid security problems raised by setuid root
    permission, we do not guarantee 100% safety. You have been warned!!!
    
    From 0.3.10, mrxvt binary will be installed without setuid root due to
    security concerns. Thus, if mrxvt is not compiled with utempter library
    support, you will lose the logging features.

    From 0.3.5, mrxvt supports utempter library, which means if you have
    installed the utempter library, you can remove the setuid root permission
    from mrxvt binary without losing the logging feature. But doing so may cause
    trouble to chown the tty on some systems.

    From 0.4.x, numerous escape sequences were introduced to manipulate tabs.
    This are potential security risks.

    From 0.5.x the above escape sequences are disabled by default, and more
    secure alternates have been provided (macros + popup menus).



11  COPYRIGHT

lxvt is licensed under GNU General Public License (GPL). You are free to copy,
modify and redistribute the source and binary of lxvt under GPL. But there is a
issue with SCO Corp.:

    According to section 4 of the GPL, SCO Corporation of Lindon, Utah (formerly
    Caldera) has no rights to redistribute any versions of lxvt 
    in any of their products, including (without limitation) OpenLinux,
    Skunkware, OpenServer, and UNIXWare.

About

Lightweight X Virtual Terminal

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages