Tue Dec 14 17:22:23 2004 Michael Jennings (mej)
The benefits of being a passenger on a long road trip... The beginnings of EWMH opacity (a la xcompmgr) support and (hopefully) UTF-8 support. Both as yet untested. ---------------------------------------------------------------------- SVN revision: 12471
This commit is contained in:
parent
f8a0003371
commit
19cae1a53d
|
@ -5265,3 +5265,9 @@ Tue Dec 14 17:13:02 2004 Michael Jennings (mej)
|
||||||
|
|
||||||
0.9.3 release
|
0.9.3 release
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
Tue Dec 14 17:22:23 2004 Michael Jennings (mej)
|
||||||
|
|
||||||
|
The benefits of being a passenger on a long road trip... The
|
||||||
|
beginnings of EWMH opacity (a la xcompmgr) support and (hopefully)
|
||||||
|
UTF-8 support. Both as yet untested.
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
|
@ -4,11 +4,14 @@
|
||||||
|
|
||||||
Summary: Enlightened terminal emulator
|
Summary: Enlightened terminal emulator
|
||||||
Name: Eterm
|
Name: Eterm
|
||||||
Version: 0.9.3
|
Version: 0.9.4
|
||||||
Release: 1
|
#Release: 1
|
||||||
|
Release: 0.%(date '+%Y%m%d')
|
||||||
License: BSD
|
License: BSD
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
Requires: imlib2, imlib2-loader_jpeg, imlib2-loader_png
|
Requires: imlib2, imlib2-loader_jpeg, imlib2-loader_png
|
||||||
|
#BuildSuggests: XFree86-devel xorg-x11-devel freetype-devel
|
||||||
|
BuildRequires: imlib2-devel
|
||||||
Source0: ftp://ftp.eterm.org/pub/Eterm/%{name}-%{version}.tar.%{compression}
|
Source0: ftp://ftp.eterm.org/pub/Eterm/%{name}-%{version}.tar.%{compression}
|
||||||
Source1: ftp://ftp.eterm.org/pub/Eterm/%{name}-bg-%{version}.tar.%{compression}
|
Source1: ftp://ftp.eterm.org/pub/Eterm/%{name}-bg-%{version}.tar.%{compression}
|
||||||
URL: http://www.eterm.org/
|
URL: http://www.eterm.org/
|
||||||
|
|
|
@ -22,7 +22,7 @@ SAVE_AUTOMAKE="$AUTOMAKE"
|
||||||
SAVE_AUTOCONF="$AUTOCONF"
|
SAVE_AUTOCONF="$AUTOCONF"
|
||||||
|
|
||||||
AC_INIT(src/feature.h)
|
AC_INIT(src/feature.h)
|
||||||
AM_INIT_AUTOMAKE(Eterm, 0.9.3)
|
AM_INIT_AUTOMAKE(Eterm, 0.9.4)
|
||||||
|
|
||||||
dnl# Set some basic variables
|
dnl# Set some basic variables
|
||||||
DATE="`date '+%d %B %Y'`"
|
DATE="`date '+%d %B %Y'`"
|
||||||
|
|
|
@ -107,6 +107,11 @@ static const char cvs_ident[] = "$Id$";
|
||||||
#if defined(linux)
|
#if defined(linux)
|
||||||
# include <linux/tty.h> /* For N_TTY_BUF_SIZE. */
|
# include <linux/tty.h> /* For N_TTY_BUF_SIZE. */
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef MULTI_CHARSET
|
||||||
|
# include <locale.h>
|
||||||
|
# include <langinfo.h>
|
||||||
|
# include <iconv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Eterm-specific Headers */
|
/* Eterm-specific Headers */
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
@ -3464,9 +3469,7 @@ main_loop(void)
|
||||||
if (ch >= ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
|
if (ch >= ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
|
||||||
/* Read a text string from the input buffer */
|
/* Read a text string from the input buffer */
|
||||||
int nlines = 0;
|
int nlines = 0;
|
||||||
|
unsigned char *str;
|
||||||
/* unsigned char * str; */
|
|
||||||
register unsigned char *str;
|
|
||||||
|
|
||||||
D_CMD(("Command buffer contains %d characters.\n", cmdbuf_endp - cmdbuf_ptr));
|
D_CMD(("Command buffer contains %d characters.\n", cmdbuf_endp - cmdbuf_ptr));
|
||||||
D_VT(("\n%s\n\n", safe_print_string(cmdbuf_ptr - 1, cmdbuf_endp - cmdbuf_ptr + 1)));
|
D_VT(("\n%s\n\n", safe_print_string(cmdbuf_ptr - 1, cmdbuf_endp - cmdbuf_ptr + 1)));
|
||||||
|
@ -3489,18 +3492,59 @@ main_loop(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (ch >= ' ' || ch == '\t' || ch == '\r') {
|
if (ch >= ' ' || ch == '\t' || ch == '\r') {
|
||||||
/* nothing */
|
NOP;
|
||||||
} else if (ch == '\n') {
|
} else if (ch == '\n') {
|
||||||
nlines++;
|
nlines++;
|
||||||
if (++refresh_count >= (refresh_limit * (TERM_WINDOW_GET_ROWS() - 1)))
|
if (++refresh_count >= (refresh_limit * (TERM_WINDOW_GET_ROWS() - 1)))
|
||||||
break;
|
break;
|
||||||
} else { /* unprintable */
|
} else {
|
||||||
|
/* unprintable */
|
||||||
cmdbuf_ptr--;
|
cmdbuf_ptr--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == %8p, cmdbuf_endp == %8p\n", nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, cmdbuf_endp));
|
D_SCREEN(("Adding %d lines (%d chars); str == %8p, cmdbuf_ptr == %8p, cmdbuf_endp == %8p\n",
|
||||||
scr_add_lines(str, nlines, (cmdbuf_ptr - str));
|
nlines, cmdbuf_ptr - str, str, cmdbuf_ptr, cmdbuf_endp));
|
||||||
|
#ifdef MULTI_CHARSET
|
||||||
|
if (!strcmp(nl_langinfo(CODESET), "UTF-8")) {
|
||||||
|
iconv_t handle;
|
||||||
|
|
||||||
|
handle = iconv_open("UTF-8", "UCS2");
|
||||||
|
if (handle == SPIF_CAST_C(iconv_t) -1) {
|
||||||
|
print_error("Unable to decode UTF-8 locale %s to UCS-2. Defaulting to portable C locale.\n",
|
||||||
|
setlocale(LC_ALL, ""));
|
||||||
|
setlocale(LC_ALL, "C");
|
||||||
|
} else {
|
||||||
|
char *outbuff, *pinbuff, *poutbuff;
|
||||||
|
size_t bufflen, outlen = 0, retval;
|
||||||
|
|
||||||
|
pinbuff = (char *) str;
|
||||||
|
bufflen = cmdbuf_ptr - str;
|
||||||
|
poutbuff = outbuff = SPIF_CAST_C(char *) MALLOC(bufflen * 6);
|
||||||
|
errno = 0;
|
||||||
|
retval = iconv(handle, &pinbuff, &bufflen, &poutbuff, &outlen);
|
||||||
|
if (retval != (size_t) -1) {
|
||||||
|
errno = 0;
|
||||||
|
}
|
||||||
|
if (errno == E2BIG) {
|
||||||
|
print_error("My UTF-8 decode buffer was too small by %lu bytes?!", bufflen);
|
||||||
|
} else if (errno == EILSEQ) {
|
||||||
|
print_error("Illegal multibyte sequence encountered at \'%c\' (0x%02x); skipping.\n",
|
||||||
|
*pinbuff, *pinbuff);
|
||||||
|
*pinbuff = ' ';
|
||||||
|
pinbuff++;
|
||||||
|
} else if (errno == EINVAL) {
|
||||||
|
D_VT(("Incomplete multibyte sequence encountered.\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pinbuff > (char *) str) {
|
||||||
|
cmdbuf_ptr = (unsigned char *) pinbuff;
|
||||||
|
scr_add_lines(str, nlines, (cmdbuf_ptr - str));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
scr_add_lines(str, nlines, (cmdbuf_ptr - str));
|
||||||
} else {
|
} else {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
# ifdef NO_ENQ_ANS
|
# ifdef NO_ENQ_ANS
|
||||||
|
|
|
@ -202,7 +202,7 @@
|
||||||
#define META8_OPTION
|
#define META8_OPTION
|
||||||
|
|
||||||
/* Attempt to deactivate UTF-8 and similar locales. */
|
/* Attempt to deactivate UTF-8 and similar locales. */
|
||||||
#define NO_UTF8_LOCALE
|
/* #define NO_UTF8_LOCALE */
|
||||||
|
|
||||||
/********************* Miscellaneous options *********************/
|
/********************* Miscellaneous options *********************/
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,7 @@ int rs_delay = -1;
|
||||||
unsigned char rs_es_dock = BBAR_DOCKED_BOTTOM;
|
unsigned char rs_es_dock = BBAR_DOCKED_BOTTOM;
|
||||||
char *rs_es_font = NULL;
|
char *rs_es_font = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
spif_uint32_t rs_opacity = 0xffffffff;
|
||||||
unsigned int rs_line_space = 0;
|
unsigned int rs_line_space = 0;
|
||||||
unsigned int rs_meta_mod = 0, rs_alt_mod = 0, rs_numlock_mod = 0;
|
unsigned int rs_meta_mod = 0, rs_alt_mod = 0, rs_numlock_mod = 0;
|
||||||
#ifdef KEYSYM_ATTRIBUTE
|
#ifdef KEYSYM_ATTRIBUTE
|
||||||
|
@ -245,6 +246,7 @@ spifopt_t option_list[] = {
|
||||||
SPIFOPT_STR_LONG("trough-pixmap", "scrollbar background (trough) pixmap", rs_pixmaps[image_sb]),
|
SPIFOPT_STR_LONG("trough-pixmap", "scrollbar background (trough) pixmap", rs_pixmaps[image_sb]),
|
||||||
SPIFOPT_STR_LONG("anchor-pixmap", "scrollbar anchor pixmap", rs_pixmaps[image_sa]),
|
SPIFOPT_STR_LONG("anchor-pixmap", "scrollbar anchor pixmap", rs_pixmaps[image_sa]),
|
||||||
SPIFOPT_STR_LONG("menu-pixmap", "menu pixmap", rs_pixmaps[image_menu]),
|
SPIFOPT_STR_LONG("menu-pixmap", "menu pixmap", rs_pixmaps[image_menu]),
|
||||||
|
SPIFOPT_INT('o', "opacity", "window opacity (0-255; requires X COMPOSITE extension)", rs_opacity),
|
||||||
SPIFOPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", image_options, IMAGE_OPTIONS_TRANS),
|
SPIFOPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", image_options, IMAGE_OPTIONS_TRANS),
|
||||||
SPIFOPT_BOOL('0', "itrans", "use immotile-optimized transparency", image_options, IMAGE_OPTIONS_ITRANS),
|
SPIFOPT_BOOL('0', "itrans", "use immotile-optimized transparency", image_options, IMAGE_OPTIONS_ITRANS),
|
||||||
SPIFOPT_BOOL_LONG("viewport-mode", "use viewport mode for the background image", image_options, IMAGE_OPTIONS_VIEWPORT),
|
SPIFOPT_BOOL_LONG("viewport-mode", "use viewport mode for the background image", image_options, IMAGE_OPTIONS_VIEWPORT),
|
||||||
|
@ -2962,6 +2964,12 @@ post_parse(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (rs_opacity < 0x100) {
|
||||||
|
rs_opacity |= (rs_opacity << 24) | (rs_opacity << 16) | (rs_opacity << 8);
|
||||||
|
} else {
|
||||||
|
rs_opacity = 0xffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_REVERSE_VIDEO)) {
|
if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_REVERSE_VIDEO)) {
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,7 @@ extern int rs_delay;
|
||||||
extern unsigned char rs_es_dock;
|
extern unsigned char rs_es_dock;
|
||||||
extern char *rs_es_font;
|
extern char *rs_es_font;
|
||||||
#endif
|
#endif
|
||||||
|
extern spif_uint32_t rs_opacity;
|
||||||
extern unsigned int rs_line_space;
|
extern unsigned int rs_line_space;
|
||||||
extern unsigned int rs_meta_mod, rs_alt_mod, rs_numlock_mod;
|
extern unsigned int rs_meta_mod, rs_alt_mod, rs_numlock_mod;
|
||||||
#ifndef NO_BOLDFONT
|
#ifndef NO_BOLDFONT
|
||||||
|
|
18
src/screen.c
18
src/screen.c
|
@ -183,7 +183,8 @@ scr_reset(void)
|
||||||
buf_rend = CALLOC(rend_t *, total_rows);
|
buf_rend = CALLOC(rend_t *, total_rows);
|
||||||
drawn_rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
|
drawn_rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
|
||||||
swap.rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
|
swap.rend = CALLOC(rend_t *, TERM_WINDOW_GET_REPORTED_ROWS());
|
||||||
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
|
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n",
|
||||||
|
screen.text, screen.rend, swap.text, swap.rend));
|
||||||
|
|
||||||
for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
|
for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
|
||||||
j = i + TermWin.saveLines;
|
j = i + TermWin.saveLines;
|
||||||
|
@ -226,7 +227,8 @@ scr_reset(void)
|
||||||
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
|
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
|
||||||
drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
||||||
swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
||||||
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
|
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n",
|
||||||
|
screen.text, screen.rend, swap.text, swap.rend));
|
||||||
|
|
||||||
/* we have fewer rows so fix up number of scrolled lines */
|
/* we have fewer rows so fix up number of scrolled lines */
|
||||||
UPPER_BOUND(screen.row, TERM_WINDOW_GET_REPORTED_ROWS() - 1);
|
UPPER_BOUND(screen.row, TERM_WINDOW_GET_REPORTED_ROWS() - 1);
|
||||||
|
@ -242,7 +244,8 @@ scr_reset(void)
|
||||||
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
|
buf_rend = REALLOC(buf_rend, total_rows * sizeof(rend_t *));
|
||||||
drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
drawn_rend = REALLOC(drawn_rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
||||||
swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
swap.rend = REALLOC(swap.rend, TERM_WINDOW_GET_REPORTED_ROWS() * sizeof(rend_t *));
|
||||||
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n", screen.text, screen.rend, swap.text, swap.rend));
|
D_SCREEN(("screen.text == %8p, screen.rend == %8p, swap.text == %8p, swap.rend == %8p\n",
|
||||||
|
screen.text, screen.rend, swap.text, swap.rend));
|
||||||
|
|
||||||
k = MIN(TermWin.nscrolled, TERM_WINDOW_GET_REPORTED_ROWS() - prev_nrow);
|
k = MIN(TermWin.nscrolled, TERM_WINDOW_GET_REPORTED_ROWS() - prev_nrow);
|
||||||
for (i = prev_total_rows; i < total_rows - k; i++) {
|
for (i = prev_total_rows; i < total_rows - k; i++) {
|
||||||
|
@ -279,7 +282,8 @@ scr_reset(void)
|
||||||
screen.rend[i] = REALLOC(screen.rend[i], TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
|
screen.rend[i] = REALLOC(screen.rend[i], TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
|
||||||
screen.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, TERM_WINDOW_GET_REPORTED_COLS());
|
screen.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, TERM_WINDOW_GET_REPORTED_COLS());
|
||||||
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
||||||
blank_line(&(screen.text[i][prev_ncol]), &(screen.rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
blank_line(&(screen.text[i][prev_ncol]), &(screen.rend[i][prev_ncol]),
|
||||||
|
TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
|
for (i = 0; i < TERM_WINDOW_GET_REPORTED_ROWS(); i++) {
|
||||||
|
@ -291,10 +295,12 @@ scr_reset(void)
|
||||||
swap.rend[i] = REALLOC(swap.rend[i], TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
|
swap.rend[i] = REALLOC(swap.rend[i], TERM_WINDOW_GET_REPORTED_COLS() * sizeof(rend_t));
|
||||||
swap.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, TERM_WINDOW_GET_REPORTED_COLS());
|
swap.text[i][TERM_WINDOW_GET_REPORTED_COLS()] = MIN(tc, TERM_WINDOW_GET_REPORTED_COLS());
|
||||||
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
||||||
blank_line(&(swap.text[i][prev_ncol]), &(swap.rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
blank_line(&(swap.text[i][prev_ncol]), &(swap.rend[i][prev_ncol]),
|
||||||
|
TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
||||||
}
|
}
|
||||||
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
if (TERM_WINDOW_GET_REPORTED_COLS() > prev_ncol)
|
||||||
blank_line(&(drawn_text[i][prev_ncol]), &(drawn_rend[i][prev_ncol]), TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
blank_line(&(drawn_text[i][prev_ncol]), &(drawn_rend[i][prev_ncol]),
|
||||||
|
TERM_WINDOW_GET_REPORTED_COLS() - prev_ncol, DEFAULT_RSTYLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tabs)
|
if (tabs)
|
||||||
|
|
|
@ -150,6 +150,7 @@ eterm_bootstrap(int argc, char *argv[])
|
||||||
props[PROP_DND_PROTOCOL] = XInternAtom(Xdisplay, "DndProtocol", False);
|
props[PROP_DND_PROTOCOL] = XInternAtom(Xdisplay, "DndProtocol", False);
|
||||||
props[PROP_DND_SELECTION] = XInternAtom(Xdisplay, "DndSelection", False);
|
props[PROP_DND_SELECTION] = XInternAtom(Xdisplay, "DndSelection", False);
|
||||||
props[PROP_EWMH_ICON] = XInternAtom(Xdisplay, "_NET_WM_ICON", False);
|
props[PROP_EWMH_ICON] = XInternAtom(Xdisplay, "_NET_WM_ICON", False);
|
||||||
|
props[PROP_EWMH_OPACITY] = XInternAtom(Xdisplay, "_NET_WM_WINDOW_OPACITY", True);
|
||||||
|
|
||||||
if ((theme_dir = conf_parse_theme(&rs_theme, THEME_CFG, PARSE_TRY_ALL)) != NULL) {
|
if ((theme_dir = conf_parse_theme(&rs_theme, THEME_CFG, PARSE_TRY_ALL)) != NULL) {
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
|
@ -103,6 +103,7 @@ enum {
|
||||||
PROP_DND_PROTOCOL,
|
PROP_DND_PROTOCOL,
|
||||||
PROP_DND_SELECTION,
|
PROP_DND_SELECTION,
|
||||||
PROP_EWMH_ICON,
|
PROP_EWMH_ICON,
|
||||||
|
PROP_EWMH_OPACITY,
|
||||||
NUM_PROPS
|
NUM_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
50
src/term.c
50
src/term.c
|
@ -2017,7 +2017,8 @@ xterm_seq(int op, const char *str)
|
||||||
if ((valptr = (char *) strsep(&tnstr, ";")) == NULL) {
|
if ((valptr = (char *) strsep(&tnstr, ";")) == NULL) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n", mod, color, get_image_type(which), valptr));
|
D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n",
|
||||||
|
mod, color, get_image_type(which), valptr));
|
||||||
changed = 1;
|
changed = 1;
|
||||||
# ifdef PIXMAP_OFFSET
|
# ifdef PIXMAP_OFFSET
|
||||||
if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) {
|
if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) {
|
||||||
|
@ -2365,30 +2366,37 @@ xterm_seq(int op, const char *str)
|
||||||
xev.message_type = props[PROP_DESKTOP];
|
xev.message_type = props[PROP_DESKTOP];
|
||||||
xev.format = 32;
|
xev.format = 32;
|
||||||
xev.data.l[0] = rs_desktop;
|
xev.data.l[0] = rs_desktop;
|
||||||
XChangeProperty(Xdisplay, TermWin.parent, xev.message_type, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &rs_desktop, 1);
|
XChangeProperty(Xdisplay, TermWin.parent, xev.message_type, XA_CARDINAL, 32,
|
||||||
|
PropModeReplace, (unsigned char *) &rs_desktop, 1);
|
||||||
XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, (XEvent *) & xev);
|
XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, (XEvent *) & xev);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
case 51:
|
||||||
case 70:
|
/* Change opacity */
|
||||||
/* Exit Eterm */
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
case 71:
|
|
||||||
/* Save current config */
|
|
||||||
nstr = (char *) strsep(&tnstr, ";");
|
nstr = (char *) strsep(&tnstr, ";");
|
||||||
if (nstr && *nstr) {
|
if (nstr && *nstr) {
|
||||||
valptr = (char *) strsep(&tnstr, ";");
|
XClientMessageEvent xev;
|
||||||
if (!strcasecmp(nstr, "theme")) {
|
spif_uint32_t tmp;
|
||||||
save_config(valptr, SAVE_THEME_CONFIG);
|
|
||||||
|
tmp = (int) strtol(nstr, (char **) NULL, 0);
|
||||||
|
if (tmp < 0x100) {
|
||||||
|
rs_opacity = tmp | (tmp << 24) | (tmp << 16) | (tmp << 8);
|
||||||
} else {
|
} else {
|
||||||
save_config(valptr, SAVE_USER_CONFIG);
|
rs_opacity = 0xffffffff;
|
||||||
}
|
}
|
||||||
} else {
|
xev.type = ClientMessage;
|
||||||
save_config(NULL, SAVE_USER_CONFIG);
|
xev.window = TermWin.parent;
|
||||||
|
xev.message_type = props[PROP_EWMH_OPACITY];
|
||||||
|
xev.format = 32;
|
||||||
|
xev.data.l[0] = rs_opacity;
|
||||||
|
XChangeProperty(Xdisplay, TermWin.parent, xev.message_type, XA_CARDINAL, 32,
|
||||||
|
PropModeReplace, (unsigned char *) &rs_opacity, 1);
|
||||||
|
XChangeProperty(Xdisplay, TermWin.vt, xev.message_type, XA_CARDINAL, 32,
|
||||||
|
PropModeReplace, (unsigned char *) &rs_opacity, 1);
|
||||||
|
XSendEvent(Xdisplay, Xroot, False, SubstructureNotifyMask, (XEvent *) (&xev));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
case 72:
|
case 72:
|
||||||
/* Search scrollback buffer for a string. NULL to clear. */
|
/* Search scrollback buffer for a string. NULL to clear. */
|
||||||
nstr = (char *) strsep(&tnstr, ";");
|
nstr = (char *) strsep(&tnstr, ";");
|
||||||
|
@ -2398,15 +2406,7 @@ xterm_seq(int op, const char *str)
|
||||||
scr_search_scrollback(NULL);
|
scr_search_scrollback(NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if 0
|
|
||||||
case 73:
|
|
||||||
/* Spawn a subprogram */
|
|
||||||
nstr = (char *) strsep(&tnstr, ";");
|
|
||||||
if (nstr && *nstr) {
|
|
||||||
system_no_wait(nstr);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case 80:
|
case 80:
|
||||||
/* Set debugging level */
|
/* Set debugging level */
|
||||||
nstr = (char *) strsep(&tnstr, ";");
|
nstr = (char *) strsep(&tnstr, ";");
|
||||||
|
|
|
@ -380,7 +380,8 @@ Create_Windows(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
Attributes.colormap = cmap;
|
Attributes.colormap = cmap;
|
||||||
|
|
||||||
szHint.base_width = (2 * TermWin.internalBorder + ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
|
szHint.base_width = (2 * TermWin.internalBorder + ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR))
|
||||||
|
? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0));
|
||||||
szHint.base_height = (2 * TermWin.internalBorder) + bbar_calc_docked_height(BBAR_DOCKED);
|
szHint.base_height = (2 * TermWin.internalBorder) + bbar_calc_docked_height(BBAR_DOCKED);
|
||||||
|
|
||||||
flags = (rs_geometry ? XParseGeometry(rs_geometry, &x, &y, &width, &height) : 0);
|
flags = (rs_geometry ? XParseGeometry(rs_geometry, &x, &y, &width, &height) : 0);
|
||||||
|
@ -447,8 +448,10 @@ Create_Windows(int argc, char *argv[])
|
||||||
XSelectInput(Xdisplay, TermWin.parent, (KeyPressMask | FocusChangeMask | StructureNotifyMask | VisibilityChangeMask | PropertyChangeMask));
|
XSelectInput(Xdisplay, TermWin.parent, (KeyPressMask | FocusChangeMask | StructureNotifyMask | VisibilityChangeMask | PropertyChangeMask));
|
||||||
if (mwmhints.flags) {
|
if (mwmhints.flags) {
|
||||||
prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", False);
|
prop = XInternAtom(Xdisplay, "_MOTIF_WM_HINTS", False);
|
||||||
XChangeProperty(Xdisplay, TermWin.parent, prop, prop, 32, PropModeReplace, (unsigned char *) &mwmhints, PROP_MWM_HINTS_ELEMENTS);
|
XChangeProperty(Xdisplay, TermWin.parent, prop, prop, 32,
|
||||||
|
PropModeReplace, (unsigned char *) &mwmhints, PROP_MWM_HINTS_ELEMENTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vt cursor: Black-on-White is standard, but this is more popular */
|
/* vt cursor: Black-on-White is standard, but this is more popular */
|
||||||
TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm);
|
TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm);
|
||||||
set_pointer_colors(NULL, NULL);
|
set_pointer_colors(NULL, NULL);
|
||||||
|
@ -457,9 +460,12 @@ Create_Windows(int argc, char *argv[])
|
||||||
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
|
cursor = XCreateFontCursor(Xdisplay, XC_left_ptr);
|
||||||
|
|
||||||
/* the vt window */
|
/* the vt window */
|
||||||
TermWin.x = (((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT))) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
|
TermWin.x = (((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR))
|
||||||
|
&& !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)))
|
||||||
|
? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0);
|
||||||
TermWin.y = bbar_calc_docked_height(BBAR_DOCKED_TOP);
|
TermWin.y = bbar_calc_docked_height(BBAR_DOCKED_TOP);
|
||||||
TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, szHint.width, szHint.height, 0, Xdepth, InputOutput, CopyFromParent,
|
TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, szHint.width, szHint.height,
|
||||||
|
0, Xdepth, InputOutput, CopyFromParent,
|
||||||
CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWColormap, &Attributes);
|
CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWColormap, &Attributes);
|
||||||
D_X11(("Created terminal window 0x%08x at %dx%d\n", TermWin.vt, TermWin.x, TermWin.y));
|
D_X11(("Created terminal window 0x%08x at %dx%d\n", TermWin.vt, TermWin.x, TermWin.y));
|
||||||
if (!(background_is_pixmap()) && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS))) {
|
if (!(background_is_pixmap()) && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS))) {
|
||||||
|
@ -475,7 +481,16 @@ Create_Windows(int argc, char *argv[])
|
||||||
/* If the user wants a specific desktop, tell the WM that */
|
/* If the user wants a specific desktop, tell the WM that */
|
||||||
if (rs_desktop != -1) {
|
if (rs_desktop != -1) {
|
||||||
val = rs_desktop;
|
val = rs_desktop;
|
||||||
XChangeProperty(Xdisplay, TermWin.parent, props[PROP_DESKTOP], XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &val, 1);
|
XChangeProperty(Xdisplay, TermWin.parent, props[PROP_DESKTOP],
|
||||||
|
XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set window opacity if needed. */
|
||||||
|
if ((props[PROP_EWMH_OPACITY] != None) && (rs_opacity != 0xff)) {
|
||||||
|
XChangeProperty(Xdisplay, TermWin.parent, props[PROP_EWMH_OPACITY],
|
||||||
|
XA_CARDINAL, 32, PropModeReplace, SPIF_CAST_PTR(uchar) &rs_opacity, 1);
|
||||||
|
XChangeProperty(Xdisplay, TermWin.vt, props[PROP_EWMH_OPACITY],
|
||||||
|
XA_CARDINAL, 32, PropModeReplace, SPIF_CAST_PTR(uchar) &rs_opacity, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We're done creating our windows. Now let's initialize the event subsystem to handle them. */
|
/* We're done creating our windows. Now let's initialize the event subsystem to handle them. */
|
||||||
|
|
Loading…
Reference in New Issue