Compare commits
4 Commits
2f4b5d38dd
...
df048950ed
Author | SHA1 | Date |
---|---|---|
hazen2215 | df048950ed | |
Ashish Kumar Yadav | eb96c5071f | |
Ashish Kumar Yadav | d5e92fa6fc | |
Ashish Kumar Yadav | 492baaa71e |
|
@ -35,6 +35,7 @@ STLDFLAGS = $(LIBS) $(LDFLAGS)
|
||||||
#LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \
|
#LIBS = -L$(X11LIB) -lm -lX11 -lutil -lXft \
|
||||||
# `$(PKG_CONFIG) --libs fontconfig` \
|
# `$(PKG_CONFIG) --libs fontconfig` \
|
||||||
# `$(PKG_CONFIG) --libs freetype2`
|
# `$(PKG_CONFIG) --libs freetype2`
|
||||||
|
#MANPREFIX = ${PREFIX}/man
|
||||||
|
|
||||||
# compiler and linker
|
# compiler and linker
|
||||||
#CC = c99
|
#CC = c99
|
|
@ -5,7 +5,7 @@ open() {
|
||||||
exec setsid -f xdg-open "$1"
|
exec setsid -f xdg-open "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -f "$1" ] && open "$1"
|
{ [ -f "$1" ] || [ -d "$1" ] ;} && open "$1"
|
||||||
|
|
||||||
url="$(echo "$1" | perl -M'Regexp::Common=URI' -ne 'if (/($RE{URI})/) {print $1; exit}')"
|
url="$(echo "$1" | perl -M'Regexp::Common=URI' -ne 'if (/($RE{URI})/) {print $1; exit}')"
|
||||||
[ -n "$url" ] && open "$url"
|
[ -n "$url" ] && open "$url"
|
|
@ -196,9 +196,8 @@ static void csidump(void);
|
||||||
static void csihandle(void);
|
static void csihandle(void);
|
||||||
static void csiparse(void);
|
static void csiparse(void);
|
||||||
static void csireset(void);
|
static void csireset(void);
|
||||||
|
static void osc_color_response(int, int, int);
|
||||||
static int eschandle(uchar);
|
static int eschandle(uchar);
|
||||||
static void osc4_color_response(int);
|
|
||||||
static void osc_color_response(int, int);
|
|
||||||
static void strdump(void);
|
static void strdump(void);
|
||||||
static void strhandle(void);
|
static void strhandle(void);
|
||||||
static void strparse(void);
|
static void strparse(void);
|
||||||
|
@ -2200,35 +2199,27 @@ csireset(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
osc4_color_response(int num)
|
osc_color_response(int num, int index, int is_osc4)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
char buf[32];
|
char buf[32];
|
||||||
unsigned char r, g, b;
|
unsigned char r, g, b;
|
||||||
|
|
||||||
if (xgetcolor(num, &r, &g, &b)) {
|
if (xgetcolor(is_osc4 ? num : index, &r, &g, &b)) {
|
||||||
fprintf(stderr, "erresc: failed to fetch osc4 color %d\n", num);
|
fprintf(stderr, "erresc: failed to fetch %s color %d\n",
|
||||||
|
is_osc4 ? "osc4" : "osc",
|
||||||
|
is_osc4 ? num : index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
n = snprintf(buf, sizeof buf, "\033]4;%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
|
n = snprintf(buf, sizeof buf, "\033]%s%d;rgb:%02x%02x/%02x%02x/%02x%02x\007",
|
||||||
num, r, r, g, g, b, b);
|
is_osc4 ? "4;" : "", num, r, r, g, g, b, b);
|
||||||
ttywrite(buf, n, 1);
|
if (n < 0 || n >= sizeof(buf)) {
|
||||||
}
|
fprintf(stderr, "error: %s while printing %s response\n",
|
||||||
|
n < 0 ? "snprintf failed" : "truncation occurred",
|
||||||
void
|
is_osc4 ? "osc4" : "osc");
|
||||||
osc_color_response(int index, int num)
|
} else {
|
||||||
{
|
ttywrite(buf, n, 1);
|
||||||
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
|
||||||
|
@ -2236,6 +2227,11 @@ strhandle(void)
|
||||||
{
|
{
|
||||||
char *p = NULL, *dec;
|
char *p = NULL, *dec;
|
||||||
int j, narg, par;
|
int j, narg, par;
|
||||||
|
const struct { int idx; char *str; } osc_table[] = {
|
||||||
|
{ defaultfg, "foreground" },
|
||||||
|
{ defaultbg, "background" },
|
||||||
|
{ defaultcs, "cursor" }
|
||||||
|
};
|
||||||
|
|
||||||
term.esc &= ~(ESC_STR_END|ESC_STR);
|
term.esc &= ~(ESC_STR_END|ESC_STR);
|
||||||
strescseq.buf[strescseq.len] = '\0';
|
strescseq.buf[strescseq.len] = '\0';
|
||||||
|
@ -2275,37 +2271,19 @@ strhandle(void)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 10:
|
case 10:
|
||||||
if (narg < 2)
|
|
||||||
break;
|
|
||||||
p = STRESCARGJUST(1);
|
|
||||||
if (!strcmp(p, "?")) {
|
|
||||||
osc_color_response(defaultfg, 10);
|
|
||||||
} else if (xsetcolorname(defaultfg, p)) {
|
|
||||||
fprintf(stderr, "erresc: invalid foreground color : %s\n", p);
|
|
||||||
} else {
|
|
||||||
tfulldirt();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
case 11:
|
case 11:
|
||||||
if (narg < 2)
|
|
||||||
break;
|
|
||||||
p = STRESCARGJUST(1);
|
|
||||||
if (!strcmp(p, "?")) {
|
|
||||||
osc_color_response(defaultbg, 11);
|
|
||||||
} else if (xsetcolorname(defaultbg, p)) {
|
|
||||||
fprintf(stderr, "erresc: invalid background color: %s\n", p);
|
|
||||||
} else {
|
|
||||||
tfulldirt();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
case 12:
|
case 12:
|
||||||
if (narg < 2)
|
if (narg < 2)
|
||||||
break;
|
break;
|
||||||
p = STRESCARGJUST(1);
|
p = STRESCARGJUST(1);
|
||||||
|
if ((j = par - 10) < 0 || j >= LEN(osc_table))
|
||||||
|
break; /* shouldn't be possible */
|
||||||
|
|
||||||
if (!strcmp(p, "?")) {
|
if (!strcmp(p, "?")) {
|
||||||
osc_color_response(defaultcs, 12);
|
osc_color_response(par, osc_table[j].idx, 0);
|
||||||
} else if (xsetcolorname(defaultcs, p)) {
|
} else if (xsetcolorname(osc_table[j].idx, p)) {
|
||||||
fprintf(stderr, "erresc: invalid cursor color: %s\n", p);
|
fprintf(stderr, "erresc: invalid %s color: %s\n",
|
||||||
|
osc_table[j].str, p);
|
||||||
} else {
|
} else {
|
||||||
tfulldirt();
|
tfulldirt();
|
||||||
}
|
}
|
||||||
|
@ -2318,7 +2296,7 @@ strhandle(void)
|
||||||
case 104: /* color reset */
|
case 104: /* color reset */
|
||||||
j = (narg > 1) ? atoi(STRESCARGJUST(1)) : -1;
|
j = (narg > 1) ? atoi(STRESCARGJUST(1)) : -1;
|
||||||
if (p && !strcmp(p, "?")) {
|
if (p && !strcmp(p, "?")) {
|
||||||
osc4_color_response(j);
|
osc_color_response(j, 0, 1);
|
||||||
} else if (xsetcolorname(j, p)) {
|
} 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 */
|
Loading…
Reference in New Issue