「XTerm」- Terminal Emulator for X

  CREATED BY JENKINSBOT

XTerm,用于 X 的终端模拟器。

它提供DEC VT102/VT220和从VT320/VT420/VT520(VTxxx)等更高级别的终端选择的功能。它还为不能直接使用窗口系统的程序提供Tektronix 4014的仿真。如果底层操作系统支持终端调整大小功能(例如,来自4.3BSD的系统中的SIGWINCH信号),每当调整大小时,xterm将使用该设施来通知在窗口中运行的程序。

VTxxx和Tektronix 4014终端每个都有自己的窗口,以便可以在一个中编辑文本,同时在另一个中的查看图形。为了保持正确的宽高比(高/宽),Tektronix图形将被限制为最大框,具有适合窗口的4014宽高比。该框位于窗口的左上角区域。

虽然可以同时显示这两个窗口,但其中的一个被认为是用于接收键盘输入和终端输出的“活动”窗口。这是包含文本光标的窗口。可以通过转义序列VTxxx窗口中的VT选项菜单4014窗口中的Tek选项菜单来选择活动窗口。

安装命令

从发行版的源中安装

# Ubuntu 16.04 LTS
apt-get install xterm

从源码中编译安装

参考BLFS/xterm-325:http://www.linuxfromscratch.org/blfs/view/7.10/x/xterm.html

安装的可执行程序文件

koi8rxterm 一个包装的脚本,使用KOI8-R语言环境来设置xterm。
resize 打印一个设置TERM和TERMCAP环境变量来指示xterm窗口的当前大小的shell命令。
uxterm 一个包装脚本,用于修改当前的语言环境为UTF-8,并使用正确的设置来启动xterm。
xterm 用于X Window System的终端模拟器。

XTerm设置

XTerm的默认配置文件的位置为/etc/X11/app-defaults
用户配置的XTerm信息需要写入$HOME/.Xresources中,当修改了.Xresources之后,运行xrdb .Xresources使配置生效。

快捷键绑定

XTerm中定义了一系列的用于操作终端的”Action”。比如:copy-selection(), hard-reset(), scroll-back()等。这些Action可以结合translations映射到鼠标和键盘。比如:可以映射Ctrl + M和Ctrl + R用于最大化/还原窗口:
XTerm.vt100.translations: #override \n\
Ctrl <Key>M: maximize() \n\
Ctrl <Key>R: restore()

#override表示覆盖任何原有的绑定。每个绑定必须由\ n分隔。如果要插入文字的换行符,还需要转义(因此是\n\)。有关完整的操作列表和许多示例,可以参阅man 1 xterm的KEY BINDINGS部分。以下的内容取自man 1 xterm中的KEY BINDINGS部分。

修改标题

How to change the title of an xterm

在窗口的标题栏中,显示当前正在执行的命令

How to change the title of an xterm: Dynamic titles

当终端开的特别多的时候,都分不清哪个是哪个了;或者输出大量信息后,分不清当前窗口正在执行什么;总之区分特别麻烦的时候,这时可以在窗口的标题栏(Title Bar)里显示当前shell的路径正在执行的命令进行区分。

而且Alt + Tab切换窗口时,列表中显示的也是Window的Title,正好可以用于选择要切换的窗口。

注意事项

这里只演示 XTerm + Bash 环境中该如果做,其他也是同理的。

SHELL 脚本

#!/bin/bash

case "$TERM" in
xterm*|rxvt*)

	# BASH中的变量,每次显示提示符之前,将该变量的值作为命令来执行。
	# 这里用作:恢复原有的Title内容。
	PROMPT_COMMAND='echo -ne "\033]0;[${USER}@${HOSTNAME} $(basename ${PWD})]# \007"'

	# 修改Title的函数
	show_executing_cmd_in_title_bar()
	{
		case "$BASH_COMMAND" in
			*\033]0*)
				# 如果命令中包含“\033]0”,就假设执行的是PROMPT_COMMAND中的内容。
				# 此时,不做任何操作。
				;;
			*)
				echo -ne "\033]0;[${USER}@${HOSTNAME}: $(basename ${PWD})]# ${BASH_COMMAND}\007"
				;;
		esac
	}

	trap show_executing_cmd_in_title_bar DEBUG

	;;
*)
	;;
esac

参考文献

BLFS / xterm-327
XTerm Homepage
IBM Knowledge Center / XTerm
XTerm Manual
Arch Wiki / XTerm