v/vlib/term
Delyan Angelov 6134c4870b
v.util: extract v.util.version, use it to speed up building `v repl`, `v up` and `v doctor`
2021-07-27 12:59:56 +03:00
..
ui v.fmt: keep comments after struct embeds 2021-06-18 18:42:05 +03:00
README.md os: fixes for os.input(), os.get_raw_stdin(), os.get_raw_line() in case of stdin EOF 2021-02-27 20:02:36 +02:00
colors.v v.util: extract v.util.version, use it to speed up building `v repl`, `v up` and `v doctor` 2021-07-27 12:59:56 +03:00
control.v ci: make the compiler_errors_test.v output silent in the CI for the OK cases 2021-03-31 12:07:19 +03:00
term.js.v tools: make `v test-cleancode` test everything by default (#10050) 2021-05-08 13:32:29 +03:00
term.v tests: show a list of all failed commands in the summary too 2021-07-15 11:53:14 +03:00
term_nix.c.v all: bare metal support (fix `-freestanding`) (#9624) 2021-04-14 07:50:50 +02:00
term_test.v term: add term.strip_ansi/1 (based on ansi2txt) and term.header_left/1 2021-05-20 10:15:37 +03:00
term_windows.c.v tools: make `v test-cleancode` test everything by default (#10050) 2021-05-08 13:32:29 +03:00

README.md

Quickstart

The V term module is a module designed to provide the building blocks for building very simple TUI apps. For more complex apps, you should really look at the term.input module, as it includes terminal events, is easier to use and is much more performant for large draws.

Use

You can use the term module to either color the output on a terminal or to decide on where to put the output in your terminal.

For example let's make a simple program which prints colored text in the middle of the terminal.

import term
import os

fn main() {
	term.clear() // clears the content in the terminal
	width, height := term.get_terminal_size() // get the size of the terminal
	term.set_cursor_position(x: width / 2, y: height / 2) // now we point the cursor to the middle of  the terminal
	println(term.strikethrough(term.bright_green('hello world'))) // Print green text
	term.set_cursor_position(x: 0, y: height) // Sets the position of the cursor to the bottom of the terminal
	// Keep prompting until the user presses the q key
	for {
		if var := os.input_opt('press q to quit: ') {
			if var != 'q' {
				continue
			}
			break
		}
		println('')
		break
	}
	println('Goodbye.')
}

This simple program covers many of the principal aspects of the term module.

API

Here are some functions you should be aware of in the term module:

import term

// returns the height and the width of the terminal
width, height := term.get_terminal_size()
// returns the string as green text to be printed on stdout
term.ok_message('cool')
// returns the string as red text to be printed on stdout
term.fail_message('oh, no')
// returns the string as yellow text to be printed on stdout
term.warning_message('be warned')
// clears the entire terminal and leaves a blank one
term.clear()
// colors the output of the output, the available colors are: black,blue,yellow,green,cyan,gray,bright_blue,bright_green,bright_red,bright_black,bright_cyan
term.yellow('submarine')
// transforms the given string into bold text
term.bold('and beautiful')
// puts a strikethrough into the given string
term.strikethrough('the core of the problem')
// underlines the given string
term.underline('important')
// colors the background of the output following the given color
// the available colors are: black, blue, yellow, green, cyan, gray
term.bg_green('field')
// sets the position of the cursor at a given place in the terminal
term.set_cursor_position(x: 5, y: 10)
// moves the cursor up
term.cursor_up()
// moves the cursor down
term.cursor_down()
// moves the cursor to the right
term.cursor_forward()
// moves the cursor to the left
term.cursor_back()
// shows the cursor
term.show_cursor()
// hides the cursor
term.hide_cursor()