mrxvt

Light weight, desktop independent, fast, multi tab, dynamic terminal emulator for X

by
Joydeep Bakshi
04-JULY-2009

Copyright and License

Copyright©2009 by Joydeep Bakshi. This material may be distributed only subject to the terms and conditions set forth in the Open Content License, v1.0 or later (the latest version is presently available at opencontent.org ).


Credits

Jimmy Zhou, Gautam Iyer and Marc Schoechlin,


Disclaimer

I don't guarantee the accuracy of anything that follows, so use this guide at your own risk.


Reason to select mrxvt

A long time has passed since I have left KDE and GNOM world. I am living with icewm and desktop independent tools. But my memory was continuously knocking me about konsole; a multi tab, transparent terminal emulator for X Window. It is really great but as usually being a member of KDE family, it is bloated. Linux is great because it never lets it users unhappy. My happiness has come back with mrxvt.

mrxvt is based on rocking X Window terminal emulator rxvt version 2.7.11 CVS (in 2004), and features most of functionality of rxvt, with a few major enhancements like multiple tabs, transparency, runtime dynamic control, pseudo-transparent backgrounds, user-supplied background images, background color tinting and more. Like rxvt, mrxvt aims to be light, fast, flexible and does not depend on desktop environments like GNOME or KDE.

The default mrxvt which reads its configuration from the global configuration file ( debian location /etc/mrxvt/mrxvtrc ) does not look so good. But don't be fool!! It has great configurable features by which you can design a great looking as well as very powerful X window terminal. mrxvt honors your configuration from .mrxvtrc file located in your home directory. It is lightweight and fast, and only depends on Xlib.

In debian install it by ( as root )  apt-get install mrxvt

mrxvt

.mrxvtrc configuration

 ### Application Icon image ###
Mrxvt.appIcon: /usr/share/.icewm/XPM/mrxvt.xpm

### Font configuration ###
Mrxvt.font: -adobe-courier-medium-r-normal--12-*-*-*-*-*-UTF-8
Mrxvt.boldFont: -adobe-courier-bold-r-normal--12-*-*-*-*-*-UTF-8

### window size ###
Mrxvt.geometry: 100x30

### Synchronize terminal title with Active tab title ###
Mrxvt.syncTabTitle: True

### Synchronize icon name with Active tab ###
Mrxvt.syncTabIcon: True

### Window title ###
### works when syncTabTitle is disabled ###
#Mrxvt.title: rocking mrxvt

### Don't close tab with secondary screen, i.e. mutt,vim etc.. ###
Mrxvt.protectSecondary: True

### color when selected by mouse ###
Mrxvt.highlightColor: grey

### Transparency ###
Mrxvt.transparent: True
Mrxvt.shading: 85
Mrxvt.transparentTabbar: True
Mrxvt.transparentScrollbar: True

### Why do you need a menu bar when you have .mrxvtrc and macro ? ###
### You really don't need it in full screen mode ###
Mrxvt.showMenu: False

###-------------------------------------------------###
### If you need xft ###
### Use freetype font instead of X11 font ###
#Mrxvt.xft:True
# This makes font look much nicer,but significantly slows down the rendering speed
#Mrxvt.xftAntialias: True
# Hinting of freetype font
#Mrxvt.xftHinting: True
# Freetype font size in pixel
#Mrxvt.xftSize: 10
# Normal text freetype font family
#Mrxvt.xftFont:
###--------------------------------------------------###

### Window Resize ###
Mrxvt.smartResize: True
#Mrxvt.smoothResize: True

### scrollbar ###
Mrxvt.troughColor: black
Mrxvt.scrollbarRight: True
Mrxvt.scrollbarStyle: rxvt

### Highlight inactive tabs only when they sound a bell (and not whenever they ###
### refresh screen ) ###
Mrxvt.highlightTabOnBell: True

### Tab at bottom ###
Mrxvt.bottomTabbar: True

### Tab bar colors ###
Mrxvt.tabBackground: black
Mrxvt.tabForeground: green
Mrxvt.itabBackground: black
Mrxvt.itabForeground: grey

### terminal color ###
Mrxvt.foreground: white
Mrxvt.background: black

### cursor ###
Mrxvt.cursorBlink: True
Mrxvt.cursorColor: yellow

### Run as a login shell ###
Mrxvt.loginShell: True

### Border to leave around terminal text ###
Mrxvt.internalBorder: 10

### Number of lines to save in the scroll back buffer for all tabs ###
Mrxvt.saveLines: 10000

### Display bold and underlined text in color, rather than using the terminal ###
### attributes. This makes reading man pages a little easier. ###
Mrxvt.colorBD: green
Mrxvt.colorUL: yellow


Runtime dynamic control with macro

mrxvt2

mrxvt has a fantastic technical superiority of having run time dynamic control. The "hotkey" method is obsolete now. It has been replaced by the 'macro' functionality (as of version 0.5.0.) designed by Gautam Iyer

It is easy to define the macro in .mrxvtrc file by using the following syntax:

Mrxvt.macro.[modifiers+]keyname:    action

Here 'modifiers' is a '+' separated list of modifiers 'Ctrl', 'Alt', 'Meta', 'Shift', 'Primary' and 'Add'. The first four refer to the respective modifier keys. 'Primary' tells mrxvt to make the macro available only when the primary screen is displayed. Hence 'Primary' macros will not be effective when we run vim and all the keymap of vim are use able. We get back the mrxvt macro after getting back to shell. Is it not Great ?

Here are the macros without which I find myself really helpless

 ### Disable system wide predefined macro ###
Mrxvt.noSysConfig: True

#---------My key bindings with macro ------#

### Toggle Full screen ###
Mrxvt.macro.Primary.Alt+f: ToggleFullscreen

### Toggle transparency ###
Mrxvt.macro.Primary+Alt+t: ToggleTransparency

### More / less transparent ###
Mrxvt.macro.Primary.Alt+j: Esc \e]67;+5\a
Mrxvt.macro.Primary.Alt+k: Esc \e]67;-5\a

### open/close Tab ###
#---open tab----#
Mrxvt.macro.Primary.Alt+n: NewTab
#---close the active---#
Mrxvt.macro.Primary.Alt+d: Close 0
#---close all---#
Mrxvt.macro.Primary.Alt+c: Close

### Move Active tab ###
#Mrxvt.macro.Primary.Alt+Left: MoveTab -1
#Mrxvt.macro.Primary.Alt+Right: MoveTab +1

### Move through tab ###
Mrxvt.macro.Primary.Alt+Left: GotoTab -1
Mrxvt.macro.Primary.Alt+Right: GotoTab +1

### resize font ###
Mrxvt.macro.Primary.Alt+plus: ResizeFont +1
Mrxvt.macro.Primary.Alt+underscore: ResizeFont -1

### Set title of active tab to selection. ###
### Just select word/words in the mrxvt terminal and run this macro ###
Mrxvt.macro.Primary.Alt+s: SetTitle

### Scrolling ###
Mrxvt.macro.Primary.Alt+Up: Scroll -1
Mrxvt.macro.Primary.Alt+Down: Scroll +1
Mrxvt.macro.Primary.Alt+Home: Scroll -1000000
Mrxvt.macro.Primary.Alt+End: Scroll +1000000

### Toggle Very Bold ###
#Mrxvt.macro.Primary.Alt+b: ToggleVeryBold

### Toggle Tabber butons ###
Mrxvt.macro.Primary.Alt+b: ToggleSubwin b

### Toggle Menubar ###
Mrxvt.macro.Primary.Alt+m: ToggleSubwin m

### Toggle scrollbar ###
Mrxvt.macro.Primary.Alt+l: ToggleSubwin s

### Toggle subwindow ###
Mrxvt.macro.Primary.Alt+w: ToggleSubwin

### call Help ###
Mrxvt.macro.Primary.Alt+h: NewTab "Help" !less helpfile

### Toggle Macro ###
###When keyboard macros are disabled,the ToggleMacros keyboard macro will still work###
###Thus you can re-enable your keyboard macros via the keyboard using this function ###
Mrxvt.macro.Primary.Alt+q: ToggleMacros

mrxvt3
transparency control

Design own Help page

Are you confused to see

Mrxvt.macro.Primary.Alt+h: NewTab "Help" !less helpfile

?

Well, I have designed my own Help page here. I have created an ascii file called helpfile by vim and defined there all the key-combination.  When I need to recall the key bindings I just press Alt+h and mrxvt opens a new tab with "HELP" as tab tittle and execute "less helpfile"

Predefined tab profile

mrxvt can startup with multiple tabs and each and every of these tabs can come with predefined commandas !!! Surprise ? Continuing your surprise each and every individual tabs can have their own settings like background/foreground color; background image; tab title etc.. or in a simple word every tab can be defined as you like to see it.

Here is a simple example. According to the example below, mrxvt startups with two tabs following profile 1 and 2. The tabs are titled as cal and vim. Profile1 aka cal tab execute cal command and profile2 aka vim tab opens vim.   Whenever a new tab is created it follows the profile 0
 
 ### profile ###

### Active these profiles during startup ###
Mrxvt.initProfileList: 1,2

#-------profile 0-------#
#Used to create new tab ###
Mrxvt.profile0.tabTitle:NewTab
Mrxvt.profile0.command:!/usr/bin/cal

#-------profile 1-------#
Mrxvt.profile1.tabTitle:Local
Mrxvt.profile1.command:!/usr/bin/cal
#-------profile 2-------#
Mrxvt.profile2.tabTitle:SSH
rxvt.profile2.command:!/usr/bin/cal



Mouse shortcut

Changing tab titles:     Select text in the terminal window. Then middle click on a tab to change the tab's title. If you middle click on the tabbar background, then the title of the active tab is changed.

Moving tabs:    Click and drag a tab to some other location on the tab-bar to move it.


Need more ?

man mrxvt


Why some of the key combinations are not working ?

Don't worry. System can't see the keys but it recognizes it by keyname. In my system when I press the [+] button it generates keyname "plus". But it may generate "equal" in your box. Just fire up xev command and find out the keyname of a key by pressing it.  Once you get the right keyname and use it in .mrxvtrc; the combination will work without any problem.

Feedback

Comments, corrections and suggestions are always welcome. email.gif

INDEX | HOME
Copyright© 2009, Joydeep Bakshi