Split X-specific code into x.c
This commit is contained in:
		
							parent
							
								
									c63a87cd93
								
							
						
					
					
						commit
						e2ee5ee611
					
				
							
								
								
									
										5
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										5
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
 | 
			
		||||
include config.mk
 | 
			
		||||
 | 
			
		||||
SRC = st.c
 | 
			
		||||
SRC = st.c x.c
 | 
			
		||||
OBJ = ${SRC:.c=.o}
 | 
			
		||||
 | 
			
		||||
all: options st
 | 
			
		||||
| 
						 | 
				
			
			@ -21,6 +21,9 @@ config.h:
 | 
			
		|||
	@echo CC $<
 | 
			
		||||
	@${CC} -c ${CFLAGS} $<
 | 
			
		||||
 | 
			
		||||
st.o: config.h st.h win.h
 | 
			
		||||
x.o: arg.h st.h win.h
 | 
			
		||||
 | 
			
		||||
${OBJ}: config.h config.mk
 | 
			
		||||
 | 
			
		||||
st: ${OBJ}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										64
									
								
								config.def.h
								
								
								
								
							
							
						
						
									
										64
									
								
								config.def.h
								
								
								
								
							| 
						 | 
				
			
			@ -5,8 +5,8 @@
 | 
			
		|||
 *
 | 
			
		||||
 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
 | 
			
		||||
 */
 | 
			
		||||
static char font[] = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
 | 
			
		||||
static int borderpx = 2;
 | 
			
		||||
char font[] = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
 | 
			
		||||
int borderpx = 2;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * What program is execed by st depends of these precedence rules:
 | 
			
		||||
| 
						 | 
				
			
			@ -24,8 +24,8 @@ static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400";
 | 
			
		|||
static char vtiden[] = "\033[?6c";
 | 
			
		||||
 | 
			
		||||
/* Kerning / character bounding-box multipliers */
 | 
			
		||||
static float cwscale = 1.0;
 | 
			
		||||
static float chscale = 1.0;
 | 
			
		||||
float cwscale = 1.0;
 | 
			
		||||
float chscale = 1.0;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * word delimiter string
 | 
			
		||||
| 
						 | 
				
			
			@ -35,26 +35,26 @@ static float chscale = 1.0;
 | 
			
		|||
static char worddelimiters[] = " ";
 | 
			
		||||
 | 
			
		||||
/* selection timeouts (in milliseconds) */
 | 
			
		||||
static unsigned int doubleclicktimeout = 300;
 | 
			
		||||
static unsigned int tripleclicktimeout = 600;
 | 
			
		||||
unsigned int doubleclicktimeout = 300;
 | 
			
		||||
unsigned int tripleclicktimeout = 600;
 | 
			
		||||
 | 
			
		||||
/* alt screens */
 | 
			
		||||
static int allowaltscreen = 1;
 | 
			
		||||
int allowaltscreen = 1;
 | 
			
		||||
 | 
			
		||||
/* frames per second st should at maximum draw to the screen */
 | 
			
		||||
static unsigned int xfps = 120;
 | 
			
		||||
static unsigned int actionfps = 30;
 | 
			
		||||
unsigned int xfps = 120;
 | 
			
		||||
unsigned int actionfps = 30;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * blinking timeout (set to 0 to disable blinking) for the terminal blinking
 | 
			
		||||
 * attribute.
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int blinktimeout = 800;
 | 
			
		||||
unsigned int blinktimeout = 800;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * thickness of underline and bar cursors
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int cursorthickness = 2;
 | 
			
		||||
unsigned int cursorthickness = 2;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * bell volume. It must be a value between -100 and 100. Use 0 for disabling
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ static unsigned int cursorthickness = 2;
 | 
			
		|||
static int bellvolume = 0;
 | 
			
		||||
 | 
			
		||||
/* default TERM value */
 | 
			
		||||
static char termname[] = "st-256color";
 | 
			
		||||
char termname[] = "st-256color";
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * spaces per tab
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ static char termname[] = "st-256color";
 | 
			
		|||
static unsigned int tabspaces = 8;
 | 
			
		||||
 | 
			
		||||
/* Terminal colors (16 first used in escape sequence) */
 | 
			
		||||
static const char *colorname[] = {
 | 
			
		||||
const char *colorname[] = {
 | 
			
		||||
	/* 8 normal colors */
 | 
			
		||||
	"black",
 | 
			
		||||
	"red3",
 | 
			
		||||
| 
						 | 
				
			
			@ -116,10 +116,10 @@ static const char *colorname[] = {
 | 
			
		|||
 * Default colors (colorname index)
 | 
			
		||||
 * foreground, background, cursor, reverse cursor
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int defaultfg = 7;
 | 
			
		||||
static unsigned int defaultbg = 0;
 | 
			
		||||
static unsigned int defaultcs = 256;
 | 
			
		||||
static unsigned int defaultrcs = 257;
 | 
			
		||||
unsigned int defaultfg = 7;
 | 
			
		||||
unsigned int defaultbg = 0;
 | 
			
		||||
unsigned int defaultcs = 256;
 | 
			
		||||
unsigned int defaultrcs = 257;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Default shape of cursor
 | 
			
		||||
| 
						 | 
				
			
			@ -128,33 +128,33 @@ static unsigned int defaultrcs = 257;
 | 
			
		|||
 * 6: Bar ("|")
 | 
			
		||||
 * 7: Snowman ("☃")
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int cursorshape = 2;
 | 
			
		||||
unsigned int cursorshape = 2;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Default columns and rows numbers
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
static unsigned int cols = 80;
 | 
			
		||||
static unsigned int rows = 24;
 | 
			
		||||
unsigned int cols = 80;
 | 
			
		||||
unsigned int rows = 24;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Default colour and shape of the mouse cursor
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int mouseshape = XC_xterm;
 | 
			
		||||
static unsigned int mousefg = 7;
 | 
			
		||||
static unsigned int mousebg = 0;
 | 
			
		||||
unsigned int mouseshape = XC_xterm;
 | 
			
		||||
unsigned int mousefg = 7;
 | 
			
		||||
unsigned int mousebg = 0;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Color used to display font attributes when fontconfig selected a font which
 | 
			
		||||
 * doesn't match the ones requested.
 | 
			
		||||
 */
 | 
			
		||||
static unsigned int defaultattr = 11;
 | 
			
		||||
unsigned int defaultattr = 11;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Internal mouse shortcuts.
 | 
			
		||||
 * Beware that overloading Button1 will disable the selection.
 | 
			
		||||
 */
 | 
			
		||||
static MouseShortcut mshortcuts[] = {
 | 
			
		||||
MouseShortcut mshortcuts[] = {
 | 
			
		||||
	/* button               mask            string */
 | 
			
		||||
	{ Button4,              XK_ANY_MOD,     "\031" },
 | 
			
		||||
	{ Button5,              XK_ANY_MOD,     "\005" },
 | 
			
		||||
| 
						 | 
				
			
			@ -163,15 +163,15 @@ static MouseShortcut mshortcuts[] = {
 | 
			
		|||
/* Internal keyboard shortcuts. */
 | 
			
		||||
#define MODKEY Mod1Mask
 | 
			
		||||
 | 
			
		||||
static Shortcut shortcuts[] = {
 | 
			
		||||
Shortcut shortcuts[] = {
 | 
			
		||||
	/* mask                 keysym          function        argument */
 | 
			
		||||
	{ XK_ANY_MOD,           XK_Break,       sendbreak,      {.i =  0} },
 | 
			
		||||
	{ ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },
 | 
			
		||||
	{ ShiftMask,            XK_Print,       printscreen,    {.i =  0} },
 | 
			
		||||
	{ XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.f = +1} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Next,        xzoom,          {.f = -1} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Home,        xzoomreset,     {.f =  0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Prior,       zoom,           {.f = +1} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Next,        zoom,           {.f = -1} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Home,        zoomreset,      {.f =  0} },
 | 
			
		||||
	{ ShiftMask,            XK_Insert,      selpaste,       {.i =  0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_Insert,      clippaste,      {.i =  0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,     XK_C,           clipcopy,       {.i =  0} },
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +222,7 @@ static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
 | 
			
		|||
 * Note that if you want to use ShiftMask with selmasks, set this to an other
 | 
			
		||||
 * modifier, set to 0 to not use it.
 | 
			
		||||
 */
 | 
			
		||||
static uint forceselmod = ShiftMask;
 | 
			
		||||
uint forceselmod = ShiftMask;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This is the huge key array which defines all compatibility to the Linux
 | 
			
		||||
| 
						 | 
				
			
			@ -451,7 +451,7 @@ static Key key[] = {
 | 
			
		|||
 * ButtonRelease and MotionNotify.
 | 
			
		||||
 * If no match is found, regular selection is used.
 | 
			
		||||
 */
 | 
			
		||||
static uint selmasks[] = {
 | 
			
		||||
uint selmasks[] = {
 | 
			
		||||
	[SEL_RECTANGULAR] = Mod1Mask,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -459,7 +459,7 @@ static uint selmasks[] = {
 | 
			
		|||
 * Printable characters in ASCII, used to estimate the advance width
 | 
			
		||||
 * of single wide characters.
 | 
			
		||||
 */
 | 
			
		||||
static char ascii_printable[] =
 | 
			
		||||
char ascii_printable[] =
 | 
			
		||||
	" !\"#$%&'()*+,-./0123456789:;<=>?"
 | 
			
		||||
	"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
 | 
			
		||||
	"`abcdefghijklmnopqrstuvwxyz{|}~";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,272 @@
 | 
			
		|||
/* See LICENSE for license details. */
 | 
			
		||||
 | 
			
		||||
/* Arbitrary sizes */
 | 
			
		||||
#define UTF_SIZ       4
 | 
			
		||||
 | 
			
		||||
/* macros */
 | 
			
		||||
#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 BETWEEN(x, a, b)	((a) <= (x) && (x) <= (b))
 | 
			
		||||
#define DIVCEIL(n, d)		(((n) + ((d) - 1)) / (d))
 | 
			
		||||
#define LIMIT(x, a, b)		(x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
 | 
			
		||||
#define ATTRCMP(a, b)		((a).mode != (b).mode || (a).fg != (b).fg || \
 | 
			
		||||
				(a).bg != (b).bg)
 | 
			
		||||
#define IS_SET(flag)		((term.mode & (flag)) != 0)
 | 
			
		||||
#define TIMEDIFF(t1, t2)	((t1.tv_sec-t2.tv_sec)*1000 + \
 | 
			
		||||
				(t1.tv_nsec-t2.tv_nsec)/1E6)
 | 
			
		||||
#define MODBIT(x, set, bit)	((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
 | 
			
		||||
 | 
			
		||||
#define TRUECOLOR(r,g,b)	(1 << 24 | (r) << 16 | (g) << 8 | (b))
 | 
			
		||||
#define IS_TRUECOL(x)		(1 << 24 & (x))
 | 
			
		||||
 | 
			
		||||
enum glyph_attribute {
 | 
			
		||||
	ATTR_NULL       = 0,
 | 
			
		||||
	ATTR_BOLD       = 1 << 0,
 | 
			
		||||
	ATTR_FAINT      = 1 << 1,
 | 
			
		||||
	ATTR_ITALIC     = 1 << 2,
 | 
			
		||||
	ATTR_UNDERLINE  = 1 << 3,
 | 
			
		||||
	ATTR_BLINK      = 1 << 4,
 | 
			
		||||
	ATTR_REVERSE    = 1 << 5,
 | 
			
		||||
	ATTR_INVISIBLE  = 1 << 6,
 | 
			
		||||
	ATTR_STRUCK     = 1 << 7,
 | 
			
		||||
	ATTR_WRAP       = 1 << 8,
 | 
			
		||||
	ATTR_WIDE       = 1 << 9,
 | 
			
		||||
	ATTR_WDUMMY     = 1 << 10,
 | 
			
		||||
	ATTR_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum term_mode {
 | 
			
		||||
	MODE_WRAP        = 1 << 0,
 | 
			
		||||
	MODE_INSERT      = 1 << 1,
 | 
			
		||||
	MODE_APPKEYPAD   = 1 << 2,
 | 
			
		||||
	MODE_ALTSCREEN   = 1 << 3,
 | 
			
		||||
	MODE_CRLF        = 1 << 4,
 | 
			
		||||
	MODE_MOUSEBTN    = 1 << 5,
 | 
			
		||||
	MODE_MOUSEMOTION = 1 << 6,
 | 
			
		||||
	MODE_REVERSE     = 1 << 7,
 | 
			
		||||
	MODE_KBDLOCK     = 1 << 8,
 | 
			
		||||
	MODE_HIDE        = 1 << 9,
 | 
			
		||||
	MODE_ECHO        = 1 << 10,
 | 
			
		||||
	MODE_APPCURSOR   = 1 << 11,
 | 
			
		||||
	MODE_MOUSESGR    = 1 << 12,
 | 
			
		||||
	MODE_8BIT        = 1 << 13,
 | 
			
		||||
	MODE_BLINK       = 1 << 14,
 | 
			
		||||
	MODE_FBLINK      = 1 << 15,
 | 
			
		||||
	MODE_FOCUS       = 1 << 16,
 | 
			
		||||
	MODE_MOUSEX10    = 1 << 17,
 | 
			
		||||
	MODE_MOUSEMANY   = 1 << 18,
 | 
			
		||||
	MODE_BRCKTPASTE  = 1 << 19,
 | 
			
		||||
	MODE_PRINT       = 1 << 20,
 | 
			
		||||
	MODE_UTF8        = 1 << 21,
 | 
			
		||||
	MODE_SIXEL       = 1 << 22,
 | 
			
		||||
	MODE_MOUSE       = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
 | 
			
		||||
	                  |MODE_MOUSEMANY,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum selection_mode {
 | 
			
		||||
	SEL_IDLE = 0,
 | 
			
		||||
	SEL_EMPTY = 1,
 | 
			
		||||
	SEL_READY = 2
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum selection_type {
 | 
			
		||||
	SEL_REGULAR = 1,
 | 
			
		||||
	SEL_RECTANGULAR = 2
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum selection_snap {
 | 
			
		||||
	SNAP_WORD = 1,
 | 
			
		||||
	SNAP_LINE = 2
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum window_state {
 | 
			
		||||
	WIN_VISIBLE = 1,
 | 
			
		||||
	WIN_FOCUSED = 2
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef unsigned char uchar;
 | 
			
		||||
typedef unsigned int uint;
 | 
			
		||||
typedef unsigned long ulong;
 | 
			
		||||
typedef unsigned short ushort;
 | 
			
		||||
 | 
			
		||||
typedef uint_least32_t Rune;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	Rune u;           /* character code */
 | 
			
		||||
	ushort mode;      /* attribute flags */
 | 
			
		||||
	uint32_t fg;      /* foreground  */
 | 
			
		||||
	uint32_t bg;      /* background  */
 | 
			
		||||
} Glyph;
 | 
			
		||||
 | 
			
		||||
typedef Glyph *Line;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	Glyph attr; /* current char attributes */
 | 
			
		||||
	int x;
 | 
			
		||||
	int y;
 | 
			
		||||
	char state;
 | 
			
		||||
} TCursor;
 | 
			
		||||
 | 
			
		||||
/* Internal representation of the screen */
 | 
			
		||||
typedef struct {
 | 
			
		||||
	int row;      /* nb row */
 | 
			
		||||
	int col;      /* nb col */
 | 
			
		||||
	Line *line;   /* screen */
 | 
			
		||||
	Line *alt;    /* alternate screen */
 | 
			
		||||
	int *dirty;  /* dirtyness of lines */
 | 
			
		||||
	GlyphFontSpec *specbuf; /* font spec buffer used for rendering */
 | 
			
		||||
	TCursor c;    /* cursor */
 | 
			
		||||
	int top;      /* top    scroll limit */
 | 
			
		||||
	int bot;      /* bottom scroll limit */
 | 
			
		||||
	int mode;     /* terminal mode flags */
 | 
			
		||||
	int esc;      /* escape state flags */
 | 
			
		||||
	char trantbl[4]; /* charset table translation */
 | 
			
		||||
	int charset;  /* current charset */
 | 
			
		||||
	int icharset; /* selected charset for sequence */
 | 
			
		||||
	int numlock; /* lock numbers in keyboard */
 | 
			
		||||
	int *tabs;
 | 
			
		||||
} Term;
 | 
			
		||||
 | 
			
		||||
/* Purely graphic info */
 | 
			
		||||
typedef struct {
 | 
			
		||||
	int tw, th; /* tty width and height */
 | 
			
		||||
	int w, h; /* window width and height */
 | 
			
		||||
	int ch; /* char height */
 | 
			
		||||
	int cw; /* char width  */
 | 
			
		||||
	char state; /* focus, redraw, visible */
 | 
			
		||||
	int cursor; /* cursor style */
 | 
			
		||||
} TermWindow;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	uint b;
 | 
			
		||||
	uint mask;
 | 
			
		||||
	char *s;
 | 
			
		||||
} MouseShortcut;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	int mode;
 | 
			
		||||
	int type;
 | 
			
		||||
	int snap;
 | 
			
		||||
	/*
 | 
			
		||||
	 * Selection variables:
 | 
			
		||||
	 * nb – normalized coordinates of the beginning of the selection
 | 
			
		||||
	 * ne – normalized coordinates of the end of the selection
 | 
			
		||||
	 * ob – original coordinates of the beginning of the selection
 | 
			
		||||
	 * oe – original coordinates of the end of the selection
 | 
			
		||||
	 */
 | 
			
		||||
	struct {
 | 
			
		||||
		int x, y;
 | 
			
		||||
	} nb, ne, ob, oe;
 | 
			
		||||
 | 
			
		||||
	char *primary, *clipboard;
 | 
			
		||||
	int alt;
 | 
			
		||||
	struct timespec tclick1;
 | 
			
		||||
	struct timespec tclick2;
 | 
			
		||||
 | 
			
		||||
	//Atom xtarget;
 | 
			
		||||
} Selection;
 | 
			
		||||
 | 
			
		||||
typedef union {
 | 
			
		||||
	int i;
 | 
			
		||||
	uint ui;
 | 
			
		||||
	float f;
 | 
			
		||||
	const void *v;
 | 
			
		||||
} Arg;
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
	uint mod;
 | 
			
		||||
	KeySym keysym;
 | 
			
		||||
	void (*func)(const Arg *);
 | 
			
		||||
	const Arg arg;
 | 
			
		||||
} Shortcut;
 | 
			
		||||
 | 
			
		||||
void die(const char *, ...);
 | 
			
		||||
void redraw(void);
 | 
			
		||||
 | 
			
		||||
int tattrset(int);
 | 
			
		||||
void tnew(int, int);
 | 
			
		||||
void tsetdirt(int, int);
 | 
			
		||||
void tsetdirtattr(int);
 | 
			
		||||
int match(uint, uint);
 | 
			
		||||
void ttynew(void);
 | 
			
		||||
size_t ttyread(void);
 | 
			
		||||
void ttyresize(void);
 | 
			
		||||
void ttysend(char *, size_t);
 | 
			
		||||
void ttywrite(const char *, size_t);
 | 
			
		||||
 | 
			
		||||
void resettitle(void);
 | 
			
		||||
 | 
			
		||||
char *kmap(KeySym, uint);
 | 
			
		||||
void cresize(int, int);
 | 
			
		||||
void selclear(void);
 | 
			
		||||
 | 
			
		||||
void selinit(void);
 | 
			
		||||
void selnormalize(void);
 | 
			
		||||
int selected(int, int);
 | 
			
		||||
char *getsel(void);
 | 
			
		||||
int x2col(int);
 | 
			
		||||
int y2row(int);
 | 
			
		||||
 | 
			
		||||
size_t utf8decode(char *, Rune *, size_t);
 | 
			
		||||
size_t utf8encode(Rune, char *);
 | 
			
		||||
 | 
			
		||||
void *xmalloc(size_t);
 | 
			
		||||
char *xstrdup(char *);
 | 
			
		||||
 | 
			
		||||
void usage(void);
 | 
			
		||||
 | 
			
		||||
/* Globals */
 | 
			
		||||
extern TermWindow win;
 | 
			
		||||
extern Term term;
 | 
			
		||||
extern Selection sel;
 | 
			
		||||
extern int cmdfd;
 | 
			
		||||
extern pid_t pid;
 | 
			
		||||
extern char **opt_cmd;
 | 
			
		||||
extern char *opt_class;
 | 
			
		||||
extern char *opt_embed;
 | 
			
		||||
extern char *opt_font;
 | 
			
		||||
extern char *opt_io;
 | 
			
		||||
extern char *opt_line;
 | 
			
		||||
extern char *opt_name;
 | 
			
		||||
extern char *opt_title;
 | 
			
		||||
extern int oldbutton;
 | 
			
		||||
 | 
			
		||||
extern char *usedfont;
 | 
			
		||||
extern double usedfontsize;
 | 
			
		||||
extern double defaultfontsize;
 | 
			
		||||
 | 
			
		||||
/* config.h globals */
 | 
			
		||||
extern char font[];
 | 
			
		||||
extern int borderpx;
 | 
			
		||||
extern float cwscale;
 | 
			
		||||
extern float chscale;
 | 
			
		||||
extern unsigned int doubleclicktimeout;
 | 
			
		||||
extern unsigned int tripleclicktimeout;
 | 
			
		||||
extern int allowaltscreen;
 | 
			
		||||
extern unsigned int xfps;
 | 
			
		||||
extern unsigned int actionfps;
 | 
			
		||||
extern unsigned int cursorthickness;
 | 
			
		||||
extern unsigned int blinktimeout;
 | 
			
		||||
extern char termname[];
 | 
			
		||||
extern const char *colorname[];
 | 
			
		||||
extern size_t colornamelen;
 | 
			
		||||
extern unsigned int defaultfg;
 | 
			
		||||
extern unsigned int defaultbg;
 | 
			
		||||
extern unsigned int defaultcs;
 | 
			
		||||
extern unsigned int defaultrcs;
 | 
			
		||||
extern unsigned int cursorshape;
 | 
			
		||||
extern unsigned int cols;
 | 
			
		||||
extern unsigned int rows;
 | 
			
		||||
extern unsigned int mouseshape;
 | 
			
		||||
extern unsigned int mousefg;
 | 
			
		||||
extern unsigned int mousebg;
 | 
			
		||||
extern unsigned int defaultattr;
 | 
			
		||||
extern MouseShortcut mshortcuts[];
 | 
			
		||||
extern size_t mshortcutslen;
 | 
			
		||||
extern Shortcut shortcuts[];
 | 
			
		||||
extern size_t shortcutslen;
 | 
			
		||||
extern uint forceselmod;
 | 
			
		||||
extern uint selmasks[];
 | 
			
		||||
extern size_t selmaskslen;
 | 
			
		||||
extern char ascii_printable[];
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
/* See LICENSE for license details. */
 | 
			
		||||
 | 
			
		||||
/* X modifiers */
 | 
			
		||||
#define XK_ANY_MOD    UINT_MAX
 | 
			
		||||
#define XK_NO_MOD     0
 | 
			
		||||
#define XK_SWITCH_MOD (1<<13)
 | 
			
		||||
 | 
			
		||||
typedef XftGlyphFontSpec GlyphFontSpec;
 | 
			
		||||
 | 
			
		||||
void draw(void);
 | 
			
		||||
void drawregion(int, int, int, int);
 | 
			
		||||
void run(void);
 | 
			
		||||
 | 
			
		||||
void xbell(int);
 | 
			
		||||
void xclipcopy(void);
 | 
			
		||||
void xclippaste(void);
 | 
			
		||||
void xhints(void);
 | 
			
		||||
void xinit(void);
 | 
			
		||||
void xloadcols(void);
 | 
			
		||||
int xsetcolorname(int, const char *);
 | 
			
		||||
void xloadfonts(char *, double);
 | 
			
		||||
void xsetenv(void);
 | 
			
		||||
void xsettitle(char *);
 | 
			
		||||
void xsetpointermotion(int);
 | 
			
		||||
void xseturgency(int);
 | 
			
		||||
void xunloadfonts(void);
 | 
			
		||||
void xresize(int, int);
 | 
			
		||||
void xselpaste(void);
 | 
			
		||||
unsigned long xwinid(void);
 | 
			
		||||
		Loading…
	
		Reference in New Issue