160 lines
7.1 KiB
C
160 lines
7.1 KiB
C
/* valid curses attributes are listed below they can be ORed
|
|
*
|
|
* A_NORMAL Normal display (no highlight)
|
|
* A_STANDOUT Best highlighting mode of the terminal.
|
|
* A_UNDERLINE Underlining
|
|
* A_REVERSE Reverse video
|
|
* A_BLINK Blinking
|
|
* A_DIM Half bright
|
|
* A_BOLD Extra bright or bold
|
|
* A_PROTECT Protected mode
|
|
* A_INVIS Invisible or blank mode
|
|
*/
|
|
#define BLUE (COLORS==256 ? 68 : COLOR_BLUE)
|
|
/* curses attributes for the currently focused window */
|
|
#define SELECTED_ATTR COLOR(BLUE, -1) | A_NORMAL
|
|
/* curses attributes for normal (not selected) windows */
|
|
#define NORMAL_ATTR COLOR(-1, -1) | A_NORMAL
|
|
/* curses attributes for the status bar */
|
|
#define BAR_ATTR COLOR(BLUE, -1) | A_NORMAL
|
|
/* status bar (command line option -s) position */
|
|
#define BAR_POS BAR_TOP /* BAR_BOTTOM, BAR_OFF */
|
|
/* determines whether the statusbar text should be right or left aligned */
|
|
#define BAR_ALIGN ALIGN_RIGHT
|
|
/* separator between window title and window number */
|
|
#define SEPARATOR " | "
|
|
/* printf format string for the window title, first %s
|
|
* is replaced by the title, second %s is replaced by
|
|
* the SEPARATOR, %d stands for the window number */
|
|
#define TITLE "[%s%s#%d]"
|
|
/* master width factor [0.1 .. 0.9] */
|
|
#define MFACT 0.5
|
|
/* scroll back buffer size in lines */
|
|
#define SCROLL_HISTORY 500
|
|
|
|
#include "tile.c"
|
|
#include "grid.c"
|
|
#include "bstack.c"
|
|
#include "fullscreen.c"
|
|
|
|
/* by default the first layout entry is used */
|
|
static Layout layouts[] = {
|
|
{ "[]=", tile },
|
|
{ "+++", grid },
|
|
{ "TTT", bstack },
|
|
{ "[ ]", fullscreen },
|
|
};
|
|
|
|
#define MOD CTRL('g')
|
|
|
|
/* you can at most specifiy MAX_ARGS (3) number of arguments */
|
|
static Key keys[] = {
|
|
{ MOD, 'c', { create, { NULL } } },
|
|
{ MOD, 'C', { create, { NULL, NULL, "$CWD" } } },
|
|
{ MOD, 'x', { killclient, { NULL } } },
|
|
{ MOD, 'j', { focusnext, { NULL } } },
|
|
{ MOD, 'u', { focusnextnm, { NULL } } },
|
|
{ MOD, 'i', { focusprevnm, { NULL } } },
|
|
{ MOD, 'k', { focusprev, { NULL } } },
|
|
{ MOD, 't', { setlayout, { "[]=" } } },
|
|
{ MOD, 'g', { setlayout, { "+++" } } },
|
|
{ MOD, 'b', { setlayout, { "TTT" } } },
|
|
{ MOD, 'm', { setlayout, { "[ ]" } } },
|
|
{ MOD, ' ', { setlayout, { NULL } } },
|
|
{ MOD, 'h', { setmfact, { "-0.05" } } },
|
|
{ MOD, 'l', { setmfact, { "+0.05" } } },
|
|
{ MOD, '.', { toggleminimize, { NULL } } },
|
|
{ MOD, 's', { togglebar, { NULL } } },
|
|
{ MOD, 'M', { togglemouse, { NULL } } },
|
|
{ MOD, '\n', { zoom , { NULL } } },
|
|
{ MOD, '1', { focusn, { "1" } } },
|
|
{ MOD, '2', { focusn, { "2" } } },
|
|
{ MOD, '3', { focusn, { "3" } } },
|
|
{ MOD, '4', { focusn, { "4" } } },
|
|
{ MOD, '5', { focusn, { "5" } } },
|
|
{ MOD, '6', { focusn, { "6" } } },
|
|
{ MOD, '7', { focusn, { "7" } } },
|
|
{ MOD, '8', { focusn, { "8" } } },
|
|
{ MOD, '9', { focusn, { "9" } } },
|
|
{ MOD, '\t', { focuslast, { NULL } } },
|
|
{ MOD, 'q', { quit, { NULL } } },
|
|
{ MOD, 'a', { togglerunall, { NULL } } },
|
|
{ MOD, 'r', { redraw, { NULL } } },
|
|
{ MOD, 'B', { togglebell, { NULL } } },
|
|
{ MOD, 'v', { copymode, { NULL } } },
|
|
{ MOD, '/', { copymode, { "/" } } },
|
|
{ MOD, '?', { copymode, { "?" } } },
|
|
{ MOD, 'p', { paste, { NULL } } },
|
|
{ MOD, KEY_PPAGE, { scrollback, { "-1" } } },
|
|
{ MOD, KEY_NPAGE, { scrollback, { "1" } } },
|
|
{ MOD, KEY_F(1), { create, { "man dvtm", "dvtm help" } } },
|
|
{ MOD, MOD, { send, { (const char []){MOD, 0} } } },
|
|
{ NOMOD, KEY_SPREVIOUS, { scrollback, { "-1" } } },
|
|
{ NOMOD, KEY_SNEXT, { scrollback, { "1" } } },
|
|
};
|
|
|
|
static const ColorRule colorrules[] = {
|
|
{ "", A_NORMAL, -1, -1 }, /* default */
|
|
#if 0
|
|
/* title attrs fgcolor bgcolor */
|
|
{ "ssh", A_NORMAL, COLOR_BLACK, 224 },
|
|
#endif
|
|
};
|
|
|
|
/* possible values for the mouse buttons are listed below:
|
|
*
|
|
* BUTTON1_PRESSED mouse button 1 down
|
|
* BUTTON1_RELEASED mouse button 1 up
|
|
* BUTTON1_CLICKED mouse button 1 clicked
|
|
* BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked
|
|
* BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked
|
|
* BUTTON2_PRESSED mouse button 2 down
|
|
* BUTTON2_RELEASED mouse button 2 up
|
|
* BUTTON2_CLICKED mouse button 2 clicked
|
|
* BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked
|
|
* BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked
|
|
* BUTTON3_PRESSED mouse button 3 down
|
|
* BUTTON3_RELEASED mouse button 3 up
|
|
* BUTTON3_CLICKED mouse button 3 clicked
|
|
* BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked
|
|
* BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked
|
|
* BUTTON4_PRESSED mouse button 4 down
|
|
* BUTTON4_RELEASED mouse button 4 up
|
|
* BUTTON4_CLICKED mouse button 4 clicked
|
|
* BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked
|
|
* BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked
|
|
* BUTTON_SHIFT shift was down during button state change
|
|
* BUTTON_CTRL control was down during button state change
|
|
* BUTTON_ALT alt was down during button state change
|
|
* ALL_MOUSE_EVENTS report all button state changes
|
|
* REPORT_MOUSE_POSITION report mouse movement
|
|
*/
|
|
|
|
#ifdef NCURSES_MOUSE_VERSION
|
|
# define CONFIG_MOUSE /* compile in mouse support if we build against ncurses */
|
|
#endif
|
|
|
|
#define ENABLE_MOUSE true /* whether to enable mouse events by default */
|
|
|
|
#ifdef CONFIG_MOUSE
|
|
static Button buttons[] = {
|
|
{ BUTTON1_CLICKED, { mouse_focus, { NULL } } },
|
|
{ BUTTON1_DOUBLE_CLICKED, { mouse_fullscreen, { "[ ]" } } },
|
|
{ BUTTON2_CLICKED, { mouse_zoom, { NULL } } },
|
|
{ BUTTON3_CLICKED, { mouse_minimize, { NULL } } },
|
|
};
|
|
#endif /* CONFIG_MOUSE */
|
|
|
|
static Cmd commands[] = {
|
|
{ "create", { create, { NULL } } },
|
|
};
|
|
|
|
/* gets executed when dvtm is started */
|
|
static Action actions[] = {
|
|
{ create, { NULL } },
|
|
};
|
|
|
|
static char const * const keytable[] = {
|
|
/* add your custom key escape sequences */
|
|
};
|