mirror of git://git.suckless.org/st
added/removed files, updated Makefile.
This commit is contained in:
parent
8b4bfe31ec
commit
2e37752961
2
Makefile
2
Makefile
|
@ -18,7 +18,7 @@ options:
|
||||||
@echo CC $<
|
@echo CC $<
|
||||||
@${CC} -c ${CFLAGS} $<
|
@${CC} -c ${CFLAGS} $<
|
||||||
|
|
||||||
${OBJ}: config.mk
|
${OBJ}: config.h config.mk
|
||||||
|
|
||||||
st: ${OBJ}
|
st: ${OBJ}
|
||||||
@echo CC -o $@
|
@echo CC -o $@
|
||||||
|
|
|
@ -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" },
|
||||||
|
};
|
178
st.h
178
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);
|
|
Loading…
Reference in New Issue