/* Usage: java VT100PrintStream If you do not get colors etc, but a lot of brackets and numbers, it could be 1) that your terminal is not supporting VT100 or 2) that the output has to be piped to 'cat' or similar; java VT100PrintStream | cat Author: Henrik Bengtsson, henrikb@braju.com Date: 2002-01-03 References: [1] http://www.fh-jena.de/~gmueller/Kurs_halle/esc_vt100.html */ import java.io.*; public class VT100PrintStream extends PrintStream { char ESC = '\u001B'; // ASCII 27(dec), 1B(hex) or 33(oct). public VT100PrintStream(OutputStream out) { super(out); } public PrintStream setDisplayAttributes(int[] attr) { print(ESC); print('['); for (int i=0; i 0) print(';'); print(attr[i]); } print('m'); return this; } public PrintStream setDisplayAttributes(int attr) { return setDisplayAttributes(new int[] {attr}); } public static void main(String[] args) throws Exception { VT100PrintStream out = new VT100PrintStream(System.out); out.print("Example of VT100 escape sequences.\n\n"); out.print("Styles: "); out.setDisplayAttributes(new int[]{0,1}).print("bold "); out.setDisplayAttributes(new int[]{0,2}).print("dim "); out.setDisplayAttributes(new int[]{0,4}).print("underscore "); out.setDisplayAttributes(new int[]{0,5}).print("blink "); out.setDisplayAttributes(new int[]{0,7}).print("reverse "); out.setDisplayAttributes(new int[]{0,8}).print("hidden\n"); out.setDisplayAttributes(0).print("Foreground colors: "); out.setDisplayAttributes(new int[]{0,30,47}).print("black "); out.setDisplayAttributes(new int[]{0,31}).print("red "); out.setDisplayAttributes(new int[]{0,32}).print("green "); out.setDisplayAttributes(new int[]{0,33}).print("yellow "); out.setDisplayAttributes(new int[]{0,34}).print("blue "); out.setDisplayAttributes(new int[]{0,35}).print("magenta "); out.setDisplayAttributes(new int[]{0,36}).print("cyan "); out.setDisplayAttributes(new int[]{0,37}).print("white\n"); out.setDisplayAttributes(0).print("Background colors: "); out.setDisplayAttributes(new int[]{0,40}).print("black "); out.setDisplayAttributes(new int[]{0,41}).print("red "); out.setDisplayAttributes(new int[]{0,42}).print("green "); out.setDisplayAttributes(new int[]{0,43}).print("yellow "); out.setDisplayAttributes(new int[]{0,44}).print("blue "); out.setDisplayAttributes(new int[]{0,45}).print("magenta "); out.setDisplayAttributes(new int[]{0,30,46}).print("cyan "); out.setDisplayAttributes(new int[]{0,30,47}).print("white\n"); } } // class VT100PrintStream