mirror of
https://salsa.debian.org/dskoll/remind.git
synced 2026-04-17 06:48:47 +02:00
Don't attempt to obtain terminal background color at startup. Instead, only obtain it if and when it is needed.
This commit is contained in:
@@ -556,11 +556,11 @@ static void goff(void)
|
||||
static void
|
||||
ClampColor(int *r, int *g, int *b)
|
||||
{
|
||||
if (TerminalBackground == TERMINAL_BACKGROUND_UNKNOWN) {
|
||||
if (GetTerminalBackground() == TERMINAL_BACKGROUND_UNKNOWN) {
|
||||
/* No special clamping if terminal background is unknown */
|
||||
return;
|
||||
}
|
||||
if (TerminalBackground == TERMINAL_BACKGROUND_DARK) {
|
||||
if (GetTerminalBackground() == TERMINAL_BACKGROUND_DARK) {
|
||||
if (*r <= 64 && *g <= 64 && *b <= 64) {
|
||||
int max = *r;
|
||||
double factor;
|
||||
@@ -579,7 +579,7 @@ ClampColor(int *r, int *g, int *b)
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (TerminalBackground == TERMINAL_BACKGROUND_LIGHT) {
|
||||
if (GetTerminalBackground() == TERMINAL_BACKGROUND_LIGHT) {
|
||||
if (*r > 191 && *g > 191 && *b > 191) {
|
||||
int min = *r;
|
||||
if (*g < min) min = *g;
|
||||
@@ -667,11 +667,11 @@ Colorize(int r, int g, int b, int bg, int clamp)
|
||||
if (b > 64) b = 1;
|
||||
else b = 0;
|
||||
|
||||
if (clamp && TerminalBackground == TERMINAL_BACKGROUND_DARK && !bg) {
|
||||
if (clamp && GetTerminalBackground() == TERMINAL_BACKGROUND_DARK && !bg) {
|
||||
/* Convert black-on-black to grey */
|
||||
if (!r && !g && !b) return VT100Colors[1][0][0][0];
|
||||
}
|
||||
if (clamp && TerminalBackground == TERMINAL_BACKGROUND_LIGHT && !bg) {
|
||||
if (clamp && GetTerminalBackground() == TERMINAL_BACKGROUND_LIGHT && !bg) {
|
||||
/* Convert white-on-white to grey */
|
||||
if (r && g && b) return VT100Colors[1][0][0][0];
|
||||
}
|
||||
|
||||
30
src/init.c
30
src/init.c
@@ -176,7 +176,6 @@ void InitRemind(int argc, char const *argv[])
|
||||
int x;
|
||||
int dse;
|
||||
int ttyfd;
|
||||
int r, g, b;
|
||||
|
||||
dse = NO_DATE;
|
||||
|
||||
@@ -649,17 +648,6 @@ void InitRemind(int argc, char const *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
if (should_guess_terminal_background) {
|
||||
guess_terminal_background(&r, &g, &b);
|
||||
if (r >= 0 && g >= 0 && b >= 0) {
|
||||
if (r+g+b <= 85*3 && r <= 128 && g <= 128 && b <= 128) {
|
||||
TerminalBackground = TERMINAL_BACKGROUND_DARK;
|
||||
} else {
|
||||
TerminalBackground = TERMINAL_BACKGROUND_LIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the filename. */
|
||||
if (!InvokedAsRem) {
|
||||
if (i >= argc) {
|
||||
@@ -1110,3 +1098,21 @@ tty_reset(int fd)
|
||||
{
|
||||
tcsetattr(fd, TCSAFLUSH, &orig_termios);
|
||||
}
|
||||
|
||||
int
|
||||
GetTerminalBackground(void)
|
||||
{
|
||||
int r, g, b;
|
||||
if (should_guess_terminal_background) {
|
||||
guess_terminal_background(&r, &g, &b);
|
||||
if (r >= 0 && g >= 0 && b >= 0) {
|
||||
if (r+g+b <= 85*3 && r <= 128 && g <= 128 && b <= 128) {
|
||||
TerminalBackground = TERMINAL_BACKGROUND_DARK;
|
||||
} else {
|
||||
TerminalBackground = TERMINAL_BACKGROUND_LIGHT;
|
||||
}
|
||||
}
|
||||
should_guess_terminal_background = 0;
|
||||
}
|
||||
return TerminalBackground;
|
||||
}
|
||||
|
||||
@@ -174,6 +174,8 @@ int AddGlobalOmit(int dse);
|
||||
void set_lat_and_long_from_components(void);
|
||||
void set_components_from_lat_and_long(void);
|
||||
|
||||
int GetTerminalBackground(void);
|
||||
|
||||
char const *get_day_name(int wkday);
|
||||
char const *get_month_name(int mon);
|
||||
|
||||
|
||||
@@ -167,6 +167,13 @@ static int latitude_func(int do_set, Value *val)
|
||||
return latitude_longitude_func(do_set, val, &Latitude, -90.0, 90.0);
|
||||
}
|
||||
|
||||
static int terminal_bg_func(int do_set, Value *val)
|
||||
{
|
||||
UNUSED(do_set);
|
||||
val->type = INT_TYPE;
|
||||
val->v.val = GetTerminalBackground();
|
||||
return OK;
|
||||
}
|
||||
|
||||
static int trig_date_func(int do_set, Value *val)
|
||||
{
|
||||
@@ -866,7 +873,7 @@ static SysVar SysVarArr[] = {
|
||||
{"SysInclude", 0, STR_TYPE, &SysDir, 0, 0 },
|
||||
{"T", 0, SPECIAL_TYPE, trig_date_func, 0, 0 },
|
||||
{"Td", 0, SPECIAL_TYPE, trig_day_func, 0, 0 },
|
||||
{"TerminalBackground", 0, INT_TYPE, &TerminalBackground, 0, 0 },
|
||||
{"TerminalBackground", 0, SPECIAL_TYPE, terminal_bg_func, 0, 0 },
|
||||
{"Thursday", 1, STR_TYPE, &DynamicDayName[3], 0, 0 },
|
||||
{"TimeSep", 1, SPECIAL_TYPE, time_sep_func, 0, 0 },
|
||||
{"Tm", 0, SPECIAL_TYPE, trig_mon_func, 0, 0 },
|
||||
|
||||
Reference in New Issue
Block a user