st

Personal fork of ST from suckless.org; st is a simple terminal implementation for X.
git clone git://git.swab.dev/st.git
Log | Files | Refs | README | LICENSE

commit 2e37752961f439c33614a9d8469d7c297f0465cb
parent 8b4bfe31ec1075316dbb2e7d21753771ae3e5590
Author: Aurélien Aptel <aurelien.aptel@gmail.com>
Date:   Tue, 16 Jun 2009 02:33:38 +0200

added/removed files, updated Makefile.

Diffstat:
MMakefile | 2+-
Aconfig.h | 39+++++++++++++++++++++++++++++++++++++++
Dst.h | 178-------------------------------------------------------------------------------
3 files changed, 40 insertions(+), 179 deletions(-)

diff --git a/Makefile b/Makefile @@ -18,7 +18,7 @@ options: @echo CC $< @${CC} -c ${CFLAGS} $< -${OBJ}: config.mk +${OBJ}: config.h config.mk st: ${OBJ} @echo CC -o $@ diff --git a/config.h b/config.h @@ -0,0 +1,39 @@ +#define SHELL "/bin/bash" +#define TAB 8 + +#define FONT "fixed" +#define BORDER 3 +#define LINESPACE 1 /* additional pixel between each line */ + +/* Terminal colors */ +static char* colorname[] = { + "black", + "red", + "green", + "yellow", + "blue", + "magenta", + "cyan", + "white", +}; + +/* Default colors (colorname index) */ +/* foreground, background, cursor, visual bell */ +#define DefaultFG 7 +#define DefaultBG 0 +#define DefaultCS 1 +#define BellCol DefaultFG + + +/* special keys */ +static Key key[] = { + { XK_Delete, "\033[3~" }, + { XK_Home, "\033[1~" }, + { XK_End, "\033[4~" }, + { XK_Prior, "\033[5~" }, + { XK_Next, "\033[6~" }, + { XK_Left, "\033[D" }, + { XK_Right, "\033[C" }, + { XK_Up, "\033[A" }, + { XK_Down, "\033[B" }, +}; diff --git a/st.h b/st.h @@ -1,178 +0,0 @@ -/* See LICENSE for licence details. */ -#define _XOPEN_SOURCE -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <locale.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <signal.h> -#include <sys/ioctl.h> -#include <sys/select.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <unistd.h> -#include <X11/Xlib.h> -#include <X11/keysym.h> -#include <X11/Xutil.h> - -/* special keys */ -#define KEYDELETE "\033[3~" -#define KEYHOME "\033[1~" -#define KEYEND "\033[4~" -#define KEYPREV "\033[5~" -#define KEYNEXT "\033[6~" - -#define TNAME "st" -#define SHELL "/bin/bash" -#define TAB 8 - -#define FONT "fixed" -#define BORDER 3 -#define LINESPACE 1 /* additional pixel between each line */ - -/* Default colors */ -#define DefaultFG 7 -#define DefaultBG 0 -#define DefaultCS 1 -#define BellCol DefaultFG /* visual bell color */ - -static char* colorname[] = { - "black", - "red", - "green", - "yellow", - "blue", - "magenta", - "cyan", - "white", -}; - -/* Arbitrary sizes */ -#define ESCSIZ 256 -#define ESCARG 16 - -#define SERRNO strerror(errno) -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#define MAX(a, b) ((a) < (b) ? (b) : (a)) -#define LEN(a) (sizeof(a) / sizeof(a[0])) -#define DEFAULT(a, b) (a) = (a) ? (a) : (b) -#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) -#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) - - -enum { ATnone=0 , ATreverse=1 , ATunderline=2, ATbold=4 }; /* Attribute */ -enum { CSup, CSdown, CSright, CSleft, CShide, CSdraw, CSwrap, CSsave, CSload }; /* Cursor */ -enum { CRset=1 , CRupdate=2 }; /* Character state */ -enum { TMwrap=1 , TMinsert=2, TMaltcharset }; /* Terminal mode */ -enum { SCupdate, SCredraw }; /* screen draw mode */ - -typedef int Color; - -typedef struct { - char c; /* character code */ - char mode; /* attribute flags */ - Color fg; /* foreground */ - Color bg; /* background */ - char state; /* state flag */ -} Glyph; - -typedef Glyph* Line; - -typedef struct { - Glyph attr; /* current char attributes */ - char hidden; - int x; - int y; -} TCursor; - -/* Escape sequence structs */ -typedef struct { - char buf[ESCSIZ+1]; /* raw string */ - int len; /* raw string length */ - /* ESC <pre> [[ [<priv>] <arg> [;]] <mode>] */ - char pre; - char priv; - int arg[ESCARG+1]; - int narg; /* nb of args */ - char mode; -} Escseq; - -/* Internal representation of the screen */ -typedef struct { - int row; /* nb row */ - int col; /* nb col */ - Line* line; /* screen */ - TCursor c; /* cursor */ - int top; /* top scroll limit */ - int bot; /* bottom scroll limit */ - int mode; /* terminal mode */ -} Term; - -/* Purely graphic info */ -typedef struct { - Display* dis; - Window win; - int scr; - int w; /* window width */ - int h; /* window height */ - int ch; /* char height */ - int cw; /* char width */ -} XWindow; - -/* Drawing Context */ -typedef struct { - unsigned long col[LEN(colorname)]; - XFontStruct* font; - GC gc; -} DC; - - -void die(const char *errstr, ...); -void draw(int); -void execsh(void); -void sigchld(int); -void kpress(XKeyEvent *); -void resize(XEvent *); -void run(void); - -int escaddc(char); -int escfinal(char); -void escdump(void); -void eschandle(void); -void escparse(void); -void escreset(void); - -void tclearregion(int, int, int, int); -void tcpos(int); -void tcursor(int); -void tdeletechar(int); -void tdeleteline(int); -void tdump(void); -void tinsertblank(int); -void tinsertblankline(int); -void tmoveto(int, int); -void tnew(int, int); -void tnewline(void); -void tputc(char); -void tputs(char*, int); -void tresize(int, int); -void tscroll(void); -void tsetattr(int*, int); -void tsetchar(char); -void tsetscroll(int, int); - -void ttynew(void); -void ttyread(void); -void ttyresize(int, int); -void ttywrite(char *, size_t); - -unsigned long xgetcol(const char *); -void xclear(int, int, int, int); -void xcursor(int); -void xdrawc(int, int, Glyph); -void xinit(void); -void xscroll(void);