parent
8b4bfe31ec
commit
2e37752961
3 changed files with 40 additions and 179 deletions
@ -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" }, |
||||||
|
}; |
@ -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); |
|
Loading…
Reference in new issue