dot

packages and services management
Log | Files | Refs | README

commit 4ecee6b6d2da563d115d835571a68205f5010b52
parent 4ab85654fd30b949850ba9089905420fc5e4e9a5
Author: Josuah Demangeon <mail@josuah.net>
Date:   Tue, 26 Sep 2017 18:20:14 +0200

dvtm: I am back

Diffstat:
Advtm/config.h | 261+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 261 insertions(+), 0 deletions(-)

diff --git a/dvtm/config.h b/dvtm/config.h @@ -0,0 +1,261 @@ +/* scroll back buffer size in lines */ +#define SCROLL_HISTORY 500 + +/* --- colors ----------------------------------------------------------------*/ + +/* 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 + */ + +enum { DEFAULT, RED, BLACK, }; + +static Color colors[] = { + [DEFAULT] = { .fg = -1, .bg = -1, .fg256 = -1, .bg256 = -1, }, + [RED] = { .fg = COLOR_RED, .bg = -1, .fg256 = 1, .bg256 = -1, }, + [BLACK] = { .fg = COLOR_BLACK, .bg = -1, .fg256 = 0, .bg256 = -1, }, +}; + +#define COLOR(c) COLOR_PAIR(colors[c].pair) + +static const ColorRule colorrules[] = { + { "", A_NORMAL, &colors[DEFAULT] }, /* default */ +}; + +/* --- borders ---------------------------------------------------------------*/ + +/* curses attributes for the currently focused window */ +#define SELECTED_ATTR A_BOLD + +/* curses attributes for normal (not selected) windows */ +#define NORMAL_ATTR (COLOR(BLACK) | A_BOLD) + +/* curses attributes for a window with pending urgent flag */ +#define URGENT_ATTR (COLOR(RED) | A_BOLD) + +/* --- status bar ------------------------------------------------------------*/ + +/* curses attributes for the status bar */ +#define BAR_ATTR (COLOR(DEFAULT) | A_NORMAL) + +/* status bar (command line option -s) position */ +#define BAR_POS BAR_TOP /* BAR_BOTTOM, BAR_OFF */ + +/* whether status bar should be hidden if only one client exists */ +#define BAR_AUTOHIDE true + +/* format strings for the tags */ +#define TAG_SYMBOL " %s " /* printf format string */ + +/* status for status line */ +#define BAR_BEGIN ' ' +#define BAR_END ' ' + +/* --- tags ------------------------------------------------------------------*/ + +const char tags[][8] = { "1", "2", "3", "4 mail", "5 irc", "6 music" }; + +/* curses attributes for the currently selected tags */ +#define TAG_SEL (COLOR(DEFAULT) | A_REVERSE) + +/* curses attributes for not selected tags which contain no windows */ +#define TAG_NORMAL (COLOR(BLACK) | A_BOLD) + +/* curses attributes for not selected tags which contain windows */ +#define TAG_OCCUPIED (COLOR(DEFAULT) | A_BOLD) + +/* curses attributes for not selected tags which with urgent windows */ +#define TAG_URGENT (COLOR(RED) | A_BOLD) + +/* --- layouts ---------------------------------------------------------------*/ + +/* master width factor [0.1 .. 0.9] */ +#define MFACT 0.5 + +/* number of clients in master area */ +#define NMASTER 1 + +#include "tile.c" +#include "grid.c" +#include "bstack.c" +#include "tstack.c" +#include "vstack.c" +#include "fullscreen.c" +#include "fibonacci.c" + +/* by default the first layout entry is used */ +static Layout layouts[] = { + { "[f]", tile }, + { "[b]", bstack }, + { "[u]", tstack }, + { "[n]", vstack }, + { "[g]", grid }, + { "[o]", spiral }, + { "[w]", dwindle }, + { "[m]", fullscreen }, +}; + +/* keybindings ---------------------------------------------------------------*/ + +#define MOD CTRL('@') + +#define TAGKEYS(KEY,TAG) \ + { { MOD, 'v', KEY, }, { view, { tags[TAG] } } }, \ + { { MOD, 't', KEY, }, { tag, { tags[TAG] } } }, \ + { { MOD, 'V', KEY, }, { toggleview, { tags[TAG] } } }, \ + { { MOD, 'T', KEY, }, { toggletag, { tags[TAG] } } }, \ + { { MOD, KEY_F(KEY), }, { view, { tags[TAG] } } }, + +/* you can specifiy at most 3 arguments */ +static KeyBinding bindings[] = { + { { MOD, 'c', }, { create, { NULL } } }, + { { MOD, 'C', }, { create, { NULL, NULL, "$CWD" } } }, + { { MOD, '?', }, { create, { "man dvtm", "dvtm help" } } }, + { { MOD, 'x', 'x', }, { killclient, { NULL } } }, + { { MOD, 'q', 'q', }, { quit, { NULL } } }, + + { { MOD, 'j', }, { focusnext, { NULL } } }, + { { MOD, 'k', }, { focusprev, { NULL } } }, + { { MOD, 'J', }, { focusdown, { NULL } } }, + { { MOD, 'K', }, { focusup, { NULL } } }, + { { MOD, 'H', }, { focusleft, { NULL } } }, + { { MOD, 'L', }, { focusright, { NULL } } }, + + { { MOD, 'f', }, { setlayout, { "[f]" } } }, + { { MOD, 'b', }, { setlayout, { "[b]" } } }, + { { MOD, 'u', }, { setlayout, { "[u]" } } }, + { { MOD, 'n', }, { setlayout, { "[n]" } } }, + { { MOD, 'g', }, { setlayout, { "[g]" } } }, + { { MOD, 'o', }, { setlayout, { "[o]" } } }, + { { MOD, 'w', }, { setlayout, { "[w]" } } }, + { { MOD, 'm', }, { setlayout, { "[m]" } } }, + { { MOD, ' ', }, { setlayout, { NULL } } }, + + { { MOD, 'i', }, { incnmaster, { "+1" } } }, + { { MOD, 'd', }, { incnmaster, { "-1" } } }, + { { MOD, 'h', }, { setmfact, { "-0.05" } } }, + { { MOD, 'l', }, { setmfact, { "+0.05" } } }, + + { { MOD, '.', }, { toggleminimize, { NULL } } }, + { { MOD, 's', }, { togglebar, { NULL } } }, + { { MOD, 'S', }, { togglebarpos, { NULL } } }, + { { MOD, 'M', }, { togglemouse, { NULL } } }, + + { { MOD, '\n', }, { zoom , { NULL } } }, + { { MOD, '\r', }, { 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, 'a', }, { togglerunall, { NULL } } }, + + { { MOD, CTRL('L'), }, { redraw, { NULL } } }, + { { MOD, 'r', }, { redraw, { NULL } } }, + { { MOD, ' ', }, { send, { (const char []){MOD, 0} } } }, + + { { MOD, 'e', }, { copymode, { "dvtm-editor" } } }, + { { MOD, 'E', }, { copymode, { "dvtm-pager" } } }, + { { MOD, '/', }, { copymode, { "dvtm-pager", "/" } } }, + { { MOD, 'p', }, { paste, { NULL } } }, + { { MOD, KEY_PPAGE, }, { scrollback, { "-1" } } }, + { { MOD, KEY_NPAGE, }, { scrollback, { "1" } } }, + { { KEY_SPREVIOUS, }, { scrollback, { "-1" } } }, + { { KEY_SNEXT, }, { scrollback, { "1" } } }, + + { { MOD, '0', }, { view, { NULL } } }, + { { MOD, 'v', '0' }, { view, { NULL } } }, + { { MOD, 'v', '\t', }, { viewprevtag, { NULL } } }, + { { MOD, 't', '0' }, { tag, { NULL } } }, + TAGKEYS( '1', 0) + TAGKEYS( '2', 1) + TAGKEYS( '3', 2) + TAGKEYS( '4', 3) + TAGKEYS( '5', 4) + TAGKEYS( '6', 5) +}; + +static char const * const keytable[] = { + /* add your custom key escape sequences */ +}; + +/* mouse ---------------------------------------------------------------------*/ + +/* 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 */ + +/* commands ------------------------------------------------------------------*/ + +static Cmd commands[] = { + /* create [cmd]: create a new window, run `cmd` in the shell if + * specified */ + { "create", { create, { NULL } } }, + + /* focus <win_id>: focus the window whose `DVTM_WINDOW_ID` is + * `win_id` */ + { "focus", { focusid, { NULL } } }, + + /* tag <win_id> <tag> [tag ...]: add +tag, remove -tag or set tag of the + * window with the given identifier */ + { "tag", { tagid, { NULL } } }, +}; + +/* gets executed when dvtm is started */ +static Action actions[] = { + { create, { NULL } }, +};