Sun Mar 2 23:40:39 2003 Michael Jennings (mej)
Fixed a bug with foreground/background color change pointed out by Thomas <arnognul@tiscali.se>. Also added support for all the other OSC color change sequences (at least those for the colors that Eterm uses). The sequences are of the form "\e];n;color[;color[...]]\a", where n is between 10 and 19. You can specify up to (20 - n) semicolon-separated colors representing the following attributes in order: foreground, background, cursor, mouse pointer, mouse pointer background (*), Tek foreground (*), Tek background (*), highlight color (*), bold color, and underline color. Attributes marked with a (*) are ignored by Eterm and may be left empty, but their trailing semicolons must be present for xterm compatibility. For example, to set a white foreground, black background, yellow text cursor, green mouse cursor, #ffaa00 for bold, and cyan for underline, you could use either of the following: echo -e "\e]10;white;black;yellow;green;;;;;#ffaa00;cyan\007" or echo -e "\e]10;white\007" echo -e "\e]11;black\007" echo -e "\e]12;yellow\007" echo -e "\e]13;green\007" echo -e "\e]18;#ffaa00\007" echo -e "\e]19;cyan\007" Note that the setting of bold and underline colors using 18 and 19 are Eterm extensions. SVN revision: 6739
This commit is contained in:
parent
4b8a58d8a2
commit
df078dd652
34
ChangeLog
34
ChangeLog
|
@ -4986,3 +4986,37 @@ Mon Feb 24 21:05:00 2003 Michael Jennings (mej)
|
|||
Screw it. I don't see any way to "sanitize" these, as they put it,
|
||||
so we'll just disable that for now until someone can throw me a clue.
|
||||
----------------------------------------------------------------------
|
||||
Sun Mar 2 23:40:39 2003 Michael Jennings (mej)
|
||||
|
||||
Fixed a bug with foreground/background color change pointed out by
|
||||
Thomas <arnognul@tiscali.se>.
|
||||
|
||||
Also added support for all the other OSC color change sequences (at
|
||||
least those for the colors that Eterm uses). The sequences are of
|
||||
the form "\e];n;color[;color[...]]\a", where n is between 10 and 19.
|
||||
You can specify up to (20 - n) semicolon-separated colors representing
|
||||
the following attributes in order: foreground, background, cursor,
|
||||
mouse pointer, mouse pointer background (*), Tek foreground (*), Tek
|
||||
background (*), highlight color (*), bold color, and underline color.
|
||||
Attributes marked with a (*) are ignored by Eterm and may be left
|
||||
empty, but their trailing semicolons must be present for xterm
|
||||
compatibility.
|
||||
|
||||
For example, to set a white foreground, black background, yellow text
|
||||
cursor, green mouse cursor, #ffaa00 for bold, and cyan for underline,
|
||||
you could use either of the following:
|
||||
|
||||
echo -e "\e]10;white;black;yellow;green;;;;;#ffaa00;cyan\007"
|
||||
|
||||
or
|
||||
|
||||
echo -e "\e]10;white\007"
|
||||
echo -e "\e]11;black\007"
|
||||
echo -e "\e]12;yellow\007"
|
||||
echo -e "\e]13;green\007"
|
||||
echo -e "\e]18;#ffaa00\007"
|
||||
echo -e "\e]19;cyan\007"
|
||||
|
||||
Note that the setting of bold and underline colors using 18 and 19 are
|
||||
Eterm extensions.
|
||||
----------------------------------------------------------------------
|
||||
|
|
|
@ -460,8 +460,48 @@ Portions of this document were taken from the XTerm documentation.</P>
|
|||
<A HREF="#eterm_esc">below</A>.)
|
||||
<LI><I>n</I> == 6: Eterm-specific escape sequences (See
|
||||
<A HREF="#eterm_esc">below</A>.)
|
||||
<LI><I>n</I> == 10: Set foreground color to <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 11.
|
||||
<LI><I>n</I> == 11: Set background color to <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 12.
|
||||
<LI><I>n</I> == 12: Set cursor color to <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 13.
|
||||
<LI><I>n</I> == 13: Set mouse pointer color to <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 14.
|
||||
<LI><I>n</I> == 14: Ignore <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 15.
|
||||
<LI><I>n</I> == 15: Ignore <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 16.
|
||||
<LI><I>n</I> == 16: Ignore <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 17.
|
||||
<LI><I>n</I> == 17: Ignore <I>string</I>.
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 18.
|
||||
<LI><I>n</I> == 18: Set bold color to <I>string</I>.
|
||||
Eterm extension (see <A HREF="#image">below</A>).
|
||||
If additional semicolon-delimited
|
||||
<I>string</I> values are specified,
|
||||
continue with <I>n</I> == 19.
|
||||
<LI><I>n</I> == 19: Set underline color to <I>string</I>.
|
||||
Eterm extension (see <A HREF="#image">below</A>).
|
||||
<LI><I>n</I> == 20: Image commands (see <A HREF="#image">below</A>)
|
||||
<LI><I>n</I> == 30: Dump contents of scrollback to file <I>string</I>
|
||||
<LI><I>n</I> == 30: Dump contents of scrollback to file
|
||||
<I>string</I>. (Disabled by default.)
|
||||
<LI><I>n</I> == 39: Set the default foreground color to <I>string</I>
|
||||
<LI><I>n</I> == 49: Set the default background color to <I>string</I>
|
||||
<LI><I>n</I> == 50: Set font to <I>string</I>. rxvt/Eterm extensions:
|
||||
|
@ -1232,7 +1272,7 @@ are: <TT><B>1</B></TT>, <TT><B>on</B></TT>, <TT><B>yes</B></TT>, or (of course)
|
|||
<TR>
|
||||
<TD><TT>ESC <B>] 6 ; 50 ;</B> <I>desktop</I> BEL</TT></TD>
|
||||
<TD>Move Eterm to desktop <I>desktop</I> and make it the current desktop.
|
||||
This requires a GNOME-compliant Window Manager, such as
|
||||
This requires a compliant Window Manager, such as
|
||||
<A HREF="http://www.enlightenment.org/" TARGET="_top">Enlightenment</A>.
|
||||
</TD>
|
||||
</TR>
|
||||
|
@ -1246,6 +1286,14 @@ are: <TT><B>1</B></TT>, <TT><B>on</B></TT>, <TT><B>yes</B></TT>, or (of course)
|
|||
<TD><TT>ESC <B>] 6 ; 80 ;</B> <I>level</I> BEL</TT></TD>
|
||||
<TD>Set the debugging level to <I>level</I>.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><TT>ESC <B>] 18 ;</B> <I>string</I> BEL</TT></TD>
|
||||
<TD>Set bold color to <I>string</I>.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><TT>ESC <B>] 19 ;</B> <I>string</I> BEL</TT></TD>
|
||||
<TD>Set underline color to <I>string</I>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<H3><A NAME="trans">Transparency</A></H3>
|
||||
|
|
|
@ -3109,7 +3109,7 @@ check_pixmap_change(int sig)
|
|||
imlib_context_set_image(images[image_bg].current->iml->im);
|
||||
imlib_free_image_and_decache();
|
||||
images[image_bg].current->iml->im = NULL;
|
||||
xterm_seq(XTerm_Pixmap, rs_anim_pixmaps[image_idx++]);
|
||||
xterm_seq(ESCSEQ_XTERM_PIXMAP, rs_anim_pixmaps[image_idx++]);
|
||||
last_update = now;
|
||||
old_handler = signal(SIGALRM, check_pixmap_change);
|
||||
alarm(rs_anim_delay);
|
||||
|
|
|
@ -224,7 +224,7 @@ parse_escaped_string(char *str)
|
|||
}
|
||||
|
||||
char *
|
||||
safe_print_string(char *str, unsigned long len)
|
||||
safe_print_string(const char *str, unsigned long len)
|
||||
{
|
||||
static char *ret_buff = NULL;
|
||||
static unsigned long rb_size = 0;
|
||||
|
|
|
@ -40,7 +40,7 @@ extern const char *my_basename(const char *str);
|
|||
extern unsigned long str_leading_match(register const char *, register const char *);
|
||||
extern char *str_trim(char *str);
|
||||
extern int parse_escaped_string(char *str);
|
||||
extern char *safe_print_string(char *buff, unsigned long len);
|
||||
extern char *safe_print_string(const char *buff, unsigned long len);
|
||||
extern unsigned long add_carriage_returns(unsigned char *buff, unsigned long cnt);
|
||||
extern unsigned char mkdirhier(const char *);
|
||||
|
||||
|
|
|
@ -256,7 +256,7 @@ set_pixmap_scale(const char *geom, pixmap_t *pmap)
|
|||
D_PIXMAP(("scale_pixmap(\"%s\")\n", geom));
|
||||
if (!strcmp(geom, "?")) {
|
||||
sprintf(str, "[%dx%d+%d+%d]", pmap->w, pmap->h, pmap->x, pmap->y);
|
||||
xterm_seq(XTerm_title, str);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, str);
|
||||
return 0;
|
||||
}
|
||||
if ((opstr = strchr(geom, ':')) != NULL) {
|
||||
|
|
134
src/term.c
134
src/term.c
|
@ -327,7 +327,7 @@ lookup_key(XEvent * ev)
|
|||
LK_RET();
|
||||
break;
|
||||
case SunXK_Front:
|
||||
xterm_seq(XTerm_Takeover, "");
|
||||
xterm_seq(ESCSEQ_XTERM_TAKEOVER, "");
|
||||
LK_RET();
|
||||
break;
|
||||
default:
|
||||
|
@ -412,10 +412,10 @@ lookup_key(XEvent * ev)
|
|||
#ifdef GREEK_SUPPORT
|
||||
greek_mode = !greek_mode;
|
||||
if (greek_mode) {
|
||||
xterm_seq(XTerm_title, (greek_getmode() == GREEK_ELOT928 ? "[Greek: iso]" : "[Greek: ibm]"));
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, (greek_getmode() == GREEK_ELOT928 ? "[Greek: iso]" : "[Greek: ibm]"));
|
||||
greek_reset();
|
||||
} else
|
||||
xterm_seq(XTerm_title, APL_NAME "-" VERSION);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, APL_NAME "-" VERSION);
|
||||
LK_RET();
|
||||
#endif
|
||||
break;
|
||||
|
@ -1143,7 +1143,7 @@ process_csi_seq(void)
|
|||
break;
|
||||
#endif
|
||||
case 8:
|
||||
xterm_seq(XTerm_title, APL_NAME "-" VERSION);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, APL_NAME "-" VERSION);
|
||||
break;
|
||||
case 9:
|
||||
#ifdef PIXMAP_OFFSET
|
||||
|
@ -1165,7 +1165,7 @@ process_csi_seq(void)
|
|||
tint = (tint & 0xffff00) | (images[image_bg].current->iml->bmod->brightness & 0xff);
|
||||
}
|
||||
snprintf(tbuff, sizeof(tbuff), APL_NAME "-" VERSION ": Transparent - %d%% shading - 0x%06lx tint mask", shading, tint);
|
||||
xterm_seq(XTerm_title, tbuff);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, tbuff);
|
||||
} else
|
||||
#endif
|
||||
#ifdef PIXMAP_SUPPORT
|
||||
|
@ -1181,10 +1181,10 @@ process_csi_seq(void)
|
|||
len = strlen(fname) + sizeof(APL_NAME) + sizeof(VERSION) + 5;
|
||||
tbuff = MALLOC(len);
|
||||
snprintf(tbuff, len, APL_NAME "-" VERSION ": %s", fname);
|
||||
xterm_seq(XTerm_title, tbuff);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, tbuff);
|
||||
FREE(tbuff);
|
||||
} else {
|
||||
xterm_seq(XTerm_title, APL_NAME "-" VERSION ": No Pixmap");
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, APL_NAME "-" VERSION ": No Pixmap");
|
||||
}
|
||||
}
|
||||
#endif /* PIXMAP_SUPPORT */
|
||||
|
@ -1298,10 +1298,10 @@ process_xterm_seq(void)
|
|||
}
|
||||
switch (arg) {
|
||||
case 'l':
|
||||
xterm_seq(XTerm_title, (char *) string);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, (char *) string);
|
||||
break;
|
||||
case 'L':
|
||||
xterm_seq(XTerm_iconName, (char *) string);
|
||||
xterm_seq(ESCSEQ_XTERM_ICONNAME, (char *) string);
|
||||
break;
|
||||
case 'I':
|
||||
set_icon_pixmap((char *) string, NULL);
|
||||
|
@ -1377,7 +1377,8 @@ process_window_mode(unsigned int nargs, int args[])
|
|||
BOUND(y, 1, scr->height / TermWin.fheight);
|
||||
BOUND(x, 1, scr->width / TermWin.fwidth);
|
||||
XResizeWindow(Xdisplay, TermWin.parent,
|
||||
Width2Pixel(x) + 2 * TermWin.internalBorder + (scrollbar_is_visible()? scrollbar_trough_width() : 0), Height2Pixel(y) + 2 * TermWin.internalBorder);
|
||||
Width2Pixel(x) + 2 * TermWin.internalBorder + (scrollbar_is_visible()? scrollbar_trough_width() : 0),
|
||||
Height2Pixel(y) + 2 * TermWin.internalBorder);
|
||||
break;
|
||||
case 11:
|
||||
break;
|
||||
|
@ -1397,20 +1398,16 @@ process_window_mode(unsigned int nargs, int args[])
|
|||
tt_write((unsigned char *) buff, strlen(buff));
|
||||
break;
|
||||
case 20:
|
||||
#if FIXME_BLOCK
|
||||
XGetIconName(Xdisplay, TermWin.parent, &name);
|
||||
snprintf(buff, sizeof(buff), "\033]L%s\033\\", name);
|
||||
tt_write((unsigned char *) buff, strlen(buff));
|
||||
XFree(name);
|
||||
#endif
|
||||
break;
|
||||
case 21:
|
||||
#if FIXME_BLOCK
|
||||
XFetchName(Xdisplay, TermWin.parent, &name);
|
||||
snprintf(buff, sizeof(buff), "\033]l%s\033\\", name);
|
||||
tt_write((unsigned char *) buff, strlen(buff));
|
||||
XFree(name);
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1825,10 +1822,15 @@ xterm_seq(int op, const char *str)
|
|||
#endif
|
||||
|
||||
switch (op) {
|
||||
case XTerm_title:
|
||||
case ESCSEQ_XTERM_NAME: /* 0 */
|
||||
set_title(str); /* drop */
|
||||
case ESCSEQ_XTERM_ICONNAME: /* 1 */
|
||||
set_icon_name(str);
|
||||
break;
|
||||
case ESCSEQ_XTERM_TITLE: /* 2 */
|
||||
set_title(str);
|
||||
break;
|
||||
case XTerm_prop:
|
||||
case ESCSEQ_XTERM_PROP: /* 3 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) == NULL) {
|
||||
break;
|
||||
}
|
||||
|
@ -1837,23 +1839,17 @@ xterm_seq(int op, const char *str)
|
|||
}
|
||||
set_text_property(TermWin.parent, nstr, valptr);
|
||||
break;
|
||||
case XTerm_name:
|
||||
set_title(str); /* drop */
|
||||
case XTerm_iconName:
|
||||
set_icon_name(str);
|
||||
break;
|
||||
case XTerm_Takeover:
|
||||
case ESCSEQ_XTERM_TAKEOVER: /* 5 */
|
||||
XSetInputFocus(Xdisplay, TermWin.parent, RevertToParent, CurrentTime);
|
||||
XRaiseWindow(Xdisplay, TermWin.parent);
|
||||
break;
|
||||
|
||||
case XTerm_EtermSeq:
|
||||
|
||||
case ESCSEQ_XTERM_ETERMSEQ: /* 6 */
|
||||
/* Eterm proprietary escape sequences. See technical reference for details. */
|
||||
D_CMD(("Got XTerm_EtermSeq sequence\n"));
|
||||
D_CMD(("Got ESCSEQ_XTERM_ETERMSEQ sequence\n"));
|
||||
nstr = (char *) strsep(&tnstr, ";");
|
||||
eterm_seq_op = (unsigned char) strtol(nstr, (char **) NULL, 10);
|
||||
D_CMD((" XTerm_EtermSeq operation is %d\n", eterm_seq_op));
|
||||
D_CMD((" ESCSEQ_XTERM_ETERMSEQ operation is %d\n", eterm_seq_op));
|
||||
/* Yes, there is order to the numbers for this stuff. And here it is:
|
||||
0-9 Image Class/Mode Configuration
|
||||
10-19 Scrollbar/Buttonbar/Menu Configuration
|
||||
|
@ -2369,20 +2365,62 @@ xterm_seq(int op, const char *str)
|
|||
}
|
||||
break;
|
||||
|
||||
case XTerm_ccolor:
|
||||
/* Change cursor color */
|
||||
#ifndef NO_CURSORCOLOR
|
||||
nstr = (char *) strsep(&tnstr, ";");
|
||||
if (nstr) {
|
||||
if (XParseColor(Xdisplay, cmap, nstr, &xcol) && XAllocColor(Xdisplay, cmap, &xcol)) {
|
||||
PixColors[cursorColor] = xcol.pixel;
|
||||
scr_refresh(DEFAULT_REFRESH);
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
case ESCSEQ_XTERM_FGCOLOR: /* 10 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
set_window_color(fgColor, nstr);
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_BGCOLOR: /* 11 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
set_window_color(bgColor, nstr);
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_CURSOR_COLOR: /* 12 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
# ifndef NO_CURSORCOLOR
|
||||
set_window_color(cursorColor, nstr);
|
||||
# endif
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_PTR_FGCOLOR: /* 13 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
set_pointer_colors(nstr, NULL);
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_PTR_BGCOLOR: /* 14 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
/* UNSUPPORTED */
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_TEK_FGCOLOR: /* 15 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
/* UNSUPPORTED */
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_TEK_BGCOLOR: /* 16 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
/* UNSUPPORTED */
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_HILIGHT_COLOR: /* 17 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
/* UNSUPPORTED */
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_BOLD_COLOR: /* 18 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
set_window_color(colorBD, nstr);
|
||||
}
|
||||
/* drop */
|
||||
case ESCSEQ_XTERM_ULINE_COLOR: /* 19 */
|
||||
if ((nstr = (char *) strsep(&tnstr, ";")) != NULL) {
|
||||
set_window_color(colorUL, nstr);
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case XTerm_Pixmap:
|
||||
case ESCSEQ_XTERM_PIXMAP: /* 20 */
|
||||
#ifdef PIXMAP_SUPPORT
|
||||
FOREACH_IMAGE(if (!image_mode_is(idx, MODE_IMAGE) && image_mode_is(idx, ALLOW_IMAGE)) {
|
||||
image_set_mode(idx, MODE_IMAGE);}
|
||||
|
@ -2413,17 +2451,7 @@ xterm_seq(int op, const char *str)
|
|||
#endif /* PIXMAP_SUPPORT */
|
||||
break;
|
||||
|
||||
case XTerm_restoreFG:
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
set_window_color(fgColor, str);
|
||||
#endif
|
||||
break;
|
||||
case XTerm_restoreBG:
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
set_window_color(bgColor, str);
|
||||
#endif
|
||||
break;
|
||||
case XTerm_DumpScreen:
|
||||
case ESCSEQ_XTERM_DUMPSCREEN: /* 30 */
|
||||
#if 0
|
||||
nstr = (char *) strsep(&tnstr, ";");
|
||||
if (nstr && *nstr) {
|
||||
|
@ -2431,7 +2459,17 @@ xterm_seq(int op, const char *str)
|
|||
}
|
||||
break;
|
||||
#endif
|
||||
case XTerm_logfile:
|
||||
case ESCSEQ_XTERM_RESTOREFG: /* 39 */
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
set_window_color(fgColor, str);
|
||||
#endif
|
||||
break;
|
||||
case ESCSEQ_XTERM_RESTOREBG: /* 40 */
|
||||
#ifdef XTERM_COLOR_CHANGE
|
||||
set_window_color(bgColor, str);
|
||||
#endif
|
||||
break;
|
||||
case ESCSEQ_XTERM_LOGFILE: /* 46 */
|
||||
nstr = (char *) strsep(&tnstr, ";");
|
||||
if (nstr && *nstr && BOOL_OPT_ISTRUE(nstr)) {
|
||||
/* Logging on */
|
||||
|
@ -2439,7 +2477,7 @@ xterm_seq(int op, const char *str)
|
|||
/* Logging off */
|
||||
}
|
||||
break;
|
||||
case XTerm_font:
|
||||
case ESCSEQ_XTERM_FONT: /* 50 */
|
||||
change_font(0, str);
|
||||
break;
|
||||
default:
|
||||
|
|
35
src/term.h
35
src/term.h
|
@ -59,21 +59,30 @@
|
|||
} } while (0)
|
||||
|
||||
/* XTerm escape sequences: ESC ] Ps;Pt BEL */
|
||||
# define XTerm_name 0
|
||||
# define XTerm_iconName 1
|
||||
# define XTerm_title 2
|
||||
# define XTerm_prop 3
|
||||
# define XTerm_ccolor 12
|
||||
# define XTerm_logfile 46
|
||||
# define XTerm_font 50
|
||||
# define ESCSEQ_XTERM_NAME 0
|
||||
# define ESCSEQ_XTERM_ICONNAME 1
|
||||
# define ESCSEQ_XTERM_TITLE 2
|
||||
# define ESCSEQ_XTERM_PROP 3
|
||||
# define ESCSEQ_XTERM_FGCOLOR 10
|
||||
# define ESCSEQ_XTERM_BGCOLOR 11
|
||||
# define ESCSEQ_XTERM_CURSOR_COLOR 12
|
||||
# define ESCSEQ_XTERM_PTR_FGCOLOR 13
|
||||
# define ESCSEQ_XTERM_PTR_BGCOLOR 14
|
||||
# define ESCSEQ_XTERM_TEK_FGCOLOR 15
|
||||
# define ESCSEQ_XTERM_TEK_BGCOLOR 16
|
||||
# define ESCSEQ_XTERM_HILIGHT_COLOR 17
|
||||
# define ESCSEQ_XTERM_BOLD_COLOR 18
|
||||
# define ESCSEQ_XTERM_ULINE_COLOR 19
|
||||
# define ESCSEQ_XTERM_LOGFILE 46
|
||||
# define ESCSEQ_XTERM_FONT 50
|
||||
|
||||
/* rxvt/Eterm extensions of XTerm escape sequences: ESC ] Ps;Pt BEL */
|
||||
# define XTerm_Takeover 5 /* Steal keyboard focus and raise window */
|
||||
# define XTerm_EtermSeq 6 /* Eterm proprietary escape sequences */
|
||||
# define XTerm_Pixmap 20 /* new bg pixmap */
|
||||
# define XTerm_DumpScreen 30 /* Dump contents of scrollback to a file */
|
||||
# define XTerm_restoreFG 39 /* change default fg color */
|
||||
# define XTerm_restoreBG 49 /* change default bg color */
|
||||
# define ESCSEQ_XTERM_TAKEOVER 5 /* Steal keyboard focus and raise window */
|
||||
# define ESCSEQ_XTERM_ETERMSEQ 6 /* Eterm proprietary escape sequences */
|
||||
# define ESCSEQ_XTERM_PIXMAP 20 /* new bg pixmap */
|
||||
# define ESCSEQ_XTERM_DUMPSCREEN 30 /* Dump contents of scrollback to a file */
|
||||
# define ESCSEQ_XTERM_RESTOREFG 39 /* change default fg color */
|
||||
# define ESCSEQ_XTERM_RESTOREBG 49 /* change default bg color */
|
||||
|
||||
# define restoreFG 39 /* restore default fg color */
|
||||
# define restoreBG 49 /* restore default bg color */
|
||||
|
|
|
@ -331,6 +331,26 @@ process_colors(void)
|
|||
stored_palette(SAVE);
|
||||
}
|
||||
|
||||
void
|
||||
set_pointer_colors(const char *fg_name, const char *bg_name)
|
||||
{
|
||||
XColor fg, bg;
|
||||
|
||||
if (fg_name != NULL) {
|
||||
fg.pixel = get_color_by_name(fg_name, COLOR_NAME(pointerColor));
|
||||
} else {
|
||||
fg.pixel = PixColors[pointerColor];
|
||||
}
|
||||
XQueryColor(Xdisplay, cmap, &fg);
|
||||
if (bg_name != NULL) {
|
||||
bg.pixel = get_color_by_name(bg_name, COLOR_NAME(bgColor));
|
||||
} else {
|
||||
bg.pixel = PixColors[bgColor];
|
||||
}
|
||||
XQueryColor(Xdisplay, cmap, &bg);
|
||||
XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
|
||||
}
|
||||
|
||||
/* Create_Windows() - Open and map the window */
|
||||
void
|
||||
Create_Windows(int argc, char *argv[])
|
||||
|
@ -409,8 +429,8 @@ Create_Windows(int argc, char *argv[])
|
|||
#endif
|
||||
CWBackPixel | CWBorderPixel | CWColormap | CWOverrideRedirect, &Attributes);
|
||||
|
||||
xterm_seq(XTerm_title, rs_title);
|
||||
xterm_seq(XTerm_iconName, rs_iconName);
|
||||
xterm_seq(ESCSEQ_XTERM_TITLE, rs_title);
|
||||
xterm_seq(ESCSEQ_XTERM_ICONNAME, rs_iconName);
|
||||
classHint.res_name = (char *) rs_name;
|
||||
classHint.res_class = APL_NAME;
|
||||
wmHint.window_group = TermWin.parent;
|
||||
|
@ -431,16 +451,7 @@ Create_Windows(int argc, char *argv[])
|
|||
}
|
||||
/* vt cursor: Black-on-White is standard, but this is more popular */
|
||||
TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm);
|
||||
{
|
||||
|
||||
XColor fg, bg;
|
||||
|
||||
fg.pixel = PixColors[pointerColor];
|
||||
XQueryColor(Xdisplay, cmap, &fg);
|
||||
bg.pixel = PixColors[bgColor];
|
||||
XQueryColor(Xdisplay, cmap, &bg);
|
||||
XRecolorCursor(Xdisplay, TermWin_cursor, &fg, &bg);
|
||||
}
|
||||
set_pointer_colors(NULL, NULL);
|
||||
|
||||
/* cursor (menu/scrollbar): Black-on-White */
|
||||
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
|
||||
|
@ -704,10 +715,10 @@ set_window_color(int idx, const char *color)
|
|||
print_warning("Unable to resolve \"%s\" as a color name.\n", color);
|
||||
return;
|
||||
}
|
||||
redraw_image(image_bg);
|
||||
set_colorfgbg();
|
||||
scr_touch();
|
||||
scr_refresh(DEFAULT_REFRESH);
|
||||
redraw_image(image_bg);
|
||||
}
|
||||
#endif /* XTERM_COLOR_CHANGE */
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ extern Pixel get_top_shadow_color(Pixel, const char *);
|
|||
extern Pixel get_color_by_name(const char *, const char *);
|
||||
extern Pixel get_color_by_pixel(Pixel, Pixel);
|
||||
extern void process_colors(void);
|
||||
extern void set_pointer_colors(const char *, const char *);
|
||||
extern void Create_Windows(int, char * []);
|
||||
extern void resize_parent(unsigned int, unsigned int);
|
||||
extern void set_width(unsigned short);
|
||||
|
|
Loading…
Reference in New Issue