Merge branch 'master' of git://git.suckless.org/st
commit
01f86e5c2a
|
@ -162,10 +162,10 @@ static const char *altcolorname[] = {
|
||||||
* Default colors (colorname index)
|
* Default colors (colorname index)
|
||||||
* foreground, background, cursor, reverse cursor
|
* foreground, background, cursor, reverse cursor
|
||||||
*/
|
*/
|
||||||
unsigned int defaultfg = 12;
|
unsigned int defaultfg = 258;
|
||||||
unsigned int defaultbg = 8;
|
unsigned int defaultbg = 259;
|
||||||
static unsigned int defaultcs = 14;
|
unsigned int defaultcs = 256;
|
||||||
static unsigned int defaultrcs = 15;
|
static unsigned int defaultrcs = 257;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default shape of cursor
|
* Default shape of cursor
|
||||||
|
|
2
config.h
2
config.h
|
@ -151,7 +151,7 @@ static const char *altcolorname[] = {
|
||||||
*/
|
*/
|
||||||
unsigned int defaultfg = 12;
|
unsigned int defaultfg = 12;
|
||||||
unsigned int defaultbg = 8;
|
unsigned int defaultbg = 8;
|
||||||
static unsigned int defaultcs = 14;
|
unsigned int defaultcs = 14;
|
||||||
static unsigned int defaultrcs = 15;
|
static unsigned int defaultrcs = 15;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
86
st.c
86
st.c
|
@ -1912,6 +1912,42 @@ csireset(void)
|
||||||
memset(&csiescseq, 0, sizeof(csiescseq));
|
memset(&csiescseq, 0, sizeof(csiescseq));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
osc4_color_response(int num)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
char buf[32];
|
||||||
|
unsigned char r, g, b;
|
||||||
|
|
||||||
|
if (xgetcolor(num, &r, &g, &b)) {
|
||||||
|
fprintf(stderr, "erresc: failed to fetch osc4 color %d\n", num);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = snprintf(buf, sizeof buf, "\033]4;%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
|
||||||
|
num, r, r, g, g, b, b);
|
||||||
|
|
||||||
|
ttywrite(buf, n, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
osc_color_response(int index, int num)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
char buf[32];
|
||||||
|
unsigned char r, g, b;
|
||||||
|
|
||||||
|
if (xgetcolor(index, &r, &g, &b)) {
|
||||||
|
fprintf(stderr, "erresc: failed to fetch osc color %d\n", index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = snprintf(buf, sizeof buf, "\033]%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
|
||||||
|
num, r, r, g, g, b, b);
|
||||||
|
|
||||||
|
ttywrite(buf, n, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
strhandle(void)
|
strhandle(void)
|
||||||
{
|
{
|
||||||
|
@ -1950,14 +1986,56 @@ strhandle(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
case 10:
|
||||||
|
if (narg < 2)
|
||||||
|
break;
|
||||||
|
|
||||||
|
p = strescseq.args[1];
|
||||||
|
|
||||||
|
if (!strcmp(p, "?"))
|
||||||
|
osc_color_response(defaultfg, 10);
|
||||||
|
else if (xsetcolorname(defaultfg, p))
|
||||||
|
fprintf(stderr, "erresc: invalid foreground color: %s\n", p);
|
||||||
|
else
|
||||||
|
redraw();
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
if (narg < 2)
|
||||||
|
break;
|
||||||
|
|
||||||
|
p = strescseq.args[1];
|
||||||
|
|
||||||
|
if (!strcmp(p, "?"))
|
||||||
|
osc_color_response(defaultbg, 11);
|
||||||
|
else if (xsetcolorname(defaultbg, p))
|
||||||
|
fprintf(stderr, "erresc: invalid background color: %s\n", p);
|
||||||
|
else
|
||||||
|
redraw();
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
if (narg < 2)
|
||||||
|
break;
|
||||||
|
|
||||||
|
p = strescseq.args[1];
|
||||||
|
|
||||||
|
if (!strcmp(p, "?"))
|
||||||
|
osc_color_response(defaultcs, 12);
|
||||||
|
else if (xsetcolorname(defaultcs, p))
|
||||||
|
fprintf(stderr, "erresc: invalid cursor color: %s\n", p);
|
||||||
|
else
|
||||||
|
redraw();
|
||||||
|
return;
|
||||||
case 4: /* color set */
|
case 4: /* color set */
|
||||||
if (narg < 3)
|
if (narg < 3)
|
||||||
break;
|
break;
|
||||||
p = strescseq.args[2];
|
p = strescseq.args[2];
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
case 104: /* color reset, here p = NULL */
|
case 104: /* color reset */
|
||||||
j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
|
j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
|
||||||
if (xsetcolorname(j, p)) {
|
|
||||||
|
if (p && !strcmp(p, "?"))
|
||||||
|
osc4_color_response(j);
|
||||||
|
else if (xsetcolorname(j, p)) {
|
||||||
if (par == 104 && narg <= 1)
|
if (par == 104 && narg <= 1)
|
||||||
return; /* color reset without parameter */
|
return; /* color reset without parameter */
|
||||||
fprintf(stderr, "erresc: invalid color j=%d, p=%s\n",
|
fprintf(stderr, "erresc: invalid color j=%d, p=%s\n",
|
||||||
|
@ -2499,6 +2577,10 @@ check_control_code:
|
||||||
if (width == 2) {
|
if (width == 2) {
|
||||||
gp->mode |= ATTR_WIDE;
|
gp->mode |= ATTR_WIDE;
|
||||||
if (term.c.x+1 < term.col) {
|
if (term.c.x+1 < term.col) {
|
||||||
|
if (gp[1].mode == ATTR_WIDE && term.c.x+2 < term.col) {
|
||||||
|
gp[2].u = ' ';
|
||||||
|
gp[2].mode &= ~ATTR_WDUMMY;
|
||||||
|
}
|
||||||
gp[1].u = '\0';
|
gp[1].u = '\0';
|
||||||
gp[1].mode = ATTR_WDUMMY;
|
gp[1].mode = ATTR_WDUMMY;
|
||||||
}
|
}
|
||||||
|
|
1
st.h
1
st.h
|
@ -140,3 +140,4 @@ extern unsigned int defaultfg;
|
||||||
extern unsigned int defaultbg;
|
extern unsigned int defaultbg;
|
||||||
extern const int boxdraw, boxdraw_bold, boxdraw_braille;
|
extern const int boxdraw, boxdraw_bold, boxdraw_braille;
|
||||||
extern float alpha;
|
extern float alpha;
|
||||||
|
extern unsigned int defaultcs;
|
||||||
|
|
13
x.c
13
x.c
|
@ -854,6 +854,19 @@ xloadcols(void)
|
||||||
loaded = 1;
|
loaded = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
xgetcolor(int x, unsigned char *r, unsigned char *g, unsigned char *b)
|
||||||
|
{
|
||||||
|
if (!BETWEEN(x, 0, dc.collen))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
*r = dc.col[x].color.red >> 8;
|
||||||
|
*g = dc.col[x].color.green >> 8;
|
||||||
|
*b = dc.col[x].color.blue >> 8;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
xsetcolorname(int x, const char *name)
|
xsetcolorname(int x, const char *name)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue