… | |
… | |
11 | * Copyright (c) 1997 mj olesen <olesen@me.queensu.ca> |
11 | * Copyright (c) 1997 mj olesen <olesen@me.queensu.ca> |
12 | * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de> |
12 | * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de> |
13 | * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com> |
13 | * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com> |
14 | * - extensive modifications |
14 | * - extensive modifications |
15 | * Copyright (c) 2003-2008 Marc Lehmann <schmorp@schmorp.de> |
15 | * Copyright (c) 2003-2008 Marc Lehmann <schmorp@schmorp.de> |
|
|
16 | * Copyright (c) 2015 Emanuele Giaquinta <e.giaquinta@glauco.it> |
16 | * |
17 | * |
17 | * This program is free software; you can redistribute it and/or modify |
18 | * This program is free software; you can redistribute it and/or modify |
18 | * it under the terms of the GNU General Public License as published by |
19 | * it under the terms of the GNU General Public License as published by |
19 | * the Free Software Foundation; either version 3 of the License, or |
20 | * the Free Software Foundation; either version 3 of the License, or |
20 | * (at your option) any later version. |
21 | * (at your option) any later version. |
… | |
… | |
149 | close (skfd); |
150 | close (skfd); |
150 | |
151 | |
151 | return rval; |
152 | return rval; |
152 | } |
153 | } |
153 | #endif |
154 | #endif |
|
|
155 | |
|
|
156 | #define NULL_5 \ |
|
|
157 | NULL, \ |
|
|
158 | NULL, \ |
|
|
159 | NULL, \ |
|
|
160 | NULL, \ |
|
|
161 | NULL, |
|
|
162 | |
|
|
163 | #define NULL_10 \ |
|
|
164 | NULL_5 \ |
|
|
165 | NULL_5 |
|
|
166 | |
|
|
167 | #define NULL_40 \ |
|
|
168 | NULL_10 \ |
|
|
169 | NULL_10 \ |
|
|
170 | NULL_10 \ |
|
|
171 | NULL_10 |
|
|
172 | |
|
|
173 | #define NULL_50 \ |
|
|
174 | NULL_40 \ |
|
|
175 | NULL_10 |
|
|
176 | |
|
|
177 | #define NULL_100 \ |
|
|
178 | NULL_50 \ |
|
|
179 | NULL_50 |
154 | |
180 | |
155 | static const char *const def_colorName[] = |
181 | static const char *const def_colorName[] = |
156 | { |
182 | { |
157 | COLOR_FOREGROUND, |
183 | COLOR_FOREGROUND, |
158 | COLOR_BACKGROUND, |
184 | COLOR_BACKGROUND, |
… | |
… | |
255 | "rgb:8b/8b/8b", |
281 | "rgb:8b/8b/8b", |
256 | "rgb:a2/a2/a2", |
282 | "rgb:a2/a2/a2", |
257 | "rgb:b9/b9/b9", |
283 | "rgb:b9/b9/b9", |
258 | "rgb:d0/d0/d0", |
284 | "rgb:d0/d0/d0", |
259 | "rgb:e7/e7/e7", |
285 | "rgb:e7/e7/e7", |
|
|
286 | NULL_100 |
|
|
287 | NULL_40 |
|
|
288 | NULL, |
|
|
289 | NULL, |
|
|
290 | NULL, |
|
|
291 | NULL, |
260 | #else |
292 | #else |
261 | // 256 xterm colours |
293 | // 256 xterm colours |
262 | "rgb:00/00/00", |
294 | "rgb:00/00/00", |
263 | "rgb:00/00/5f", |
295 | "rgb:00/00/5f", |
264 | "rgb:00/00/87", |
296 | "rgb:00/00/87", |
… | |
… | |
497 | "rgb:c6/c6/c6", |
529 | "rgb:c6/c6/c6", |
498 | "rgb:d0/d0/d0", |
530 | "rgb:d0/d0/d0", |
499 | "rgb:da/da/da", |
531 | "rgb:da/da/da", |
500 | "rgb:e4/e4/e4", |
532 | "rgb:e4/e4/e4", |
501 | "rgb:ee/ee/ee", |
533 | "rgb:ee/ee/ee", |
|
|
534 | NULL_100 |
|
|
535 | NULL_100 |
|
|
536 | NULL_40 |
|
|
537 | NULL_5 |
502 | #endif |
538 | #endif |
503 | |
539 | |
504 | #ifndef NO_CURSORCOLOR |
540 | #ifndef NO_CURSORCOLOR |
505 | COLOR_CURSOR_BACKGROUND, |
541 | COLOR_CURSOR_BACKGROUND, |
506 | COLOR_CURSOR_FOREGROUND, |
542 | COLOR_CURSOR_FOREGROUND, |
… | |
… | |
523 | #endif |
559 | #endif |
524 | COLOR_SCROLLBAR, |
560 | COLOR_SCROLLBAR, |
525 | #ifdef RXVT_SCROLLBAR |
561 | #ifdef RXVT_SCROLLBAR |
526 | COLOR_SCROLLTROUGH, |
562 | COLOR_SCROLLTROUGH, |
527 | #endif |
563 | #endif |
528 | #if BG_IMAGE_FROM_ROOT |
|
|
529 | NULL, |
|
|
530 | #endif |
|
|
531 | #if OFF_FOCUS_FADING |
564 | #if OFF_FOCUS_FADING |
532 | "rgb:00/00/00", |
565 | "rgb:00/00/00", |
533 | #endif |
566 | #endif |
534 | }; |
567 | }; |
535 | |
568 | |
… | |
… | |
565 | set_option (Opt_iso14755); |
598 | set_option (Opt_iso14755); |
566 | set_option (Opt_iso14755_52); |
599 | set_option (Opt_iso14755_52); |
567 | set_option (Opt_buffered); |
600 | set_option (Opt_buffered); |
568 | } |
601 | } |
569 | |
602 | |
|
|
603 | #if ENABLE_PERL |
|
|
604 | static void |
|
|
605 | rxvt_perl_parse_resource (rxvt_term *term, const char *k, const char *v) |
|
|
606 | { |
|
|
607 | rxvt_perl.parse_resource (term, k, false, false, 0, v); |
|
|
608 | } |
|
|
609 | #endif |
|
|
610 | |
570 | /*----------------------------------------------------------------------*/ |
611 | /*----------------------------------------------------------------------*/ |
571 | const char ** |
612 | const char ** |
572 | rxvt_term::init_resources (int argc, const char *const *argv) |
613 | rxvt_term::init_resources (int argc, const char *const *argv) |
573 | { |
614 | { |
574 | int i; |
615 | int i; |
… | |
… | |
612 | if ((rs[Rs_perl_ext_1] && *rs[Rs_perl_ext_1]) |
653 | if ((rs[Rs_perl_ext_1] && *rs[Rs_perl_ext_1]) |
613 | || (rs[Rs_perl_ext_2] && *rs[Rs_perl_ext_2]) |
654 | || (rs[Rs_perl_ext_2] && *rs[Rs_perl_ext_2]) |
614 | || (rs[Rs_perl_eval] && *rs[Rs_perl_eval])) |
655 | || (rs[Rs_perl_eval] && *rs[Rs_perl_eval])) |
615 | { |
656 | { |
616 | rxvt_perl.init (this); |
657 | rxvt_perl.init (this); |
|
|
658 | enumerate_resources (rxvt_perl_parse_resource); |
617 | HOOK_INVOKE ((this, HOOK_INIT, DT_END)); |
659 | HOOK_INVOKE ((this, HOOK_INIT, DT_END)); |
618 | } |
660 | } |
619 | #endif |
661 | #endif |
620 | |
662 | |
621 | // must be called after initialising the perl interpreter as it |
663 | // must be called after initialising the perl interpreter as it |
… | |
… | |
653 | ext_bwidth = min (i, std::numeric_limits<int16_t>::max ()); |
695 | ext_bwidth = min (i, std::numeric_limits<int16_t>::max ()); |
654 | |
696 | |
655 | if (rs[Rs_lineSpace] && (i = atoi (rs[Rs_lineSpace])) >= 0) |
697 | if (rs[Rs_lineSpace] && (i = atoi (rs[Rs_lineSpace])) >= 0) |
656 | lineSpace = min (i, std::numeric_limits<int16_t>::max ()); |
698 | lineSpace = min (i, std::numeric_limits<int16_t>::max ()); |
657 | |
699 | |
658 | if (rs[Rs_letterSpace]) |
700 | if (const char *v = rs[Rs_letterSpace]) |
659 | letterSpace = atoi (rs[Rs_letterSpace]); |
701 | letterSpace = atoi (v); |
|
|
702 | |
|
|
703 | rewrap_always = rewrap_never = 0; |
|
|
704 | if (const char *v = rs[Rs_rewrapMode]) |
|
|
705 | if (!strcmp (v, "never")) |
|
|
706 | rewrap_never = 1; |
|
|
707 | else if (!strcmp (v, "always")) |
|
|
708 | rewrap_always = 1; |
|
|
709 | else if (!strcmp (v, "auto")) |
|
|
710 | /* nop **/; |
|
|
711 | else |
|
|
712 | rxvt_warn ("invalid rewrapMode, must be auto, always or never.\n"); |
660 | #endif |
713 | #endif |
661 | |
714 | |
662 | #ifdef POINTER_BLANK |
715 | #ifdef POINTER_BLANK |
663 | if (rs[Rs_pointerBlankDelay] && (i = atoi (rs[Rs_pointerBlankDelay])) >= 0) |
716 | if (rs[Rs_pointerBlankDelay] && (i = atoi (rs[Rs_pointerBlankDelay])) >= 0) |
664 | pointerBlankDelay = i; |
717 | pointerBlankDelay = i; |
… | |
… | |
793 | |
846 | |
794 | #ifdef KEYSYM_RESOURCE |
847 | #ifdef KEYSYM_RESOURCE |
795 | keyboard->register_done (); |
848 | keyboard->register_done (); |
796 | #endif |
849 | #endif |
797 | |
850 | |
|
|
851 | { |
|
|
852 | ev_tstamp interval = 1. / 60.; |
|
|
853 | |
|
|
854 | #if ENABLE_FRILLS |
|
|
855 | if (rs[Rs_refreshRate]) |
|
|
856 | { |
|
|
857 | interval = atof (rs[Rs_refreshRate]); |
|
|
858 | if (interval <= 0.) |
|
|
859 | interval = -interval; |
|
|
860 | else |
|
|
861 | interval = 1. / interval; |
|
|
862 | } |
|
|
863 | #endif |
|
|
864 | |
|
|
865 | flush_ev.set (interval, interval); |
|
|
866 | } |
|
|
867 | |
798 | if (const char *path = rs[Rs_chdir]) |
868 | if (const char *path = rs[Rs_chdir]) |
799 | if (*path) // ignored if empty |
869 | if (*path) // ignored if empty |
800 | { |
870 | { |
801 | if (*path != '/') |
871 | if (*path != '/') |
802 | rxvt_fatal ("specified shell working directory must start with a slash, aborting.\n"); |
872 | rxvt_fatal ("specified shell working directory must start with a slash, aborting.\n"); |
… | |
… | |
820 | XSynchronize (dpy, True); |
890 | XSynchronize (dpy, True); |
821 | #endif |
891 | #endif |
822 | |
892 | |
823 | if (option (Opt_scrollBar)) |
893 | if (option (Opt_scrollBar)) |
824 | scrollBar.resize (); /* create and map scrollbar */ |
894 | scrollBar.resize (); /* create and map scrollbar */ |
825 | |
|
|
826 | #ifdef HAVE_BG_PIXMAP |
|
|
827 | bg_init (); |
|
|
828 | #endif |
|
|
829 | |
895 | |
830 | #if ENABLE_PERL |
896 | #if ENABLE_PERL |
831 | rootwin_ev.start (display, display->root); |
897 | rootwin_ev.start (display, display->root); |
832 | #endif |
898 | #endif |
833 | |
899 | |
… | |
… | |
935 | #ifdef RXVT_TERMINFO |
1001 | #ifdef RXVT_TERMINFO |
936 | putenv ("TERMINFO=" RXVT_TERMINFO); |
1002 | putenv ("TERMINFO=" RXVT_TERMINFO); |
937 | #endif |
1003 | #endif |
938 | |
1004 | |
939 | if (depth <= 2) |
1005 | if (depth <= 2) |
940 | putenv ("COLORTERM=" COLORTERMENV "-mono"); |
1006 | putenv ((char *)"COLORTERM=" COLORTERMENV "-mono"); |
941 | else |
1007 | else |
942 | putenv ("COLORTERM=" COLORTERMENVFULL); |
1008 | putenv ((char *)"COLORTERM=" COLORTERMENVFULL); |
943 | |
1009 | |
944 | if (rs[Rs_term_name] != NULL) |
1010 | if (rs[Rs_term_name] != NULL) |
945 | { |
1011 | { |
946 | env_term = (char *)rxvt_malloc (strlen (rs[Rs_term_name]) + 6); |
1012 | env_term = (char *)rxvt_malloc (strlen (rs[Rs_term_name]) + 6); |
947 | sprintf (env_term, "TERM=%s", rs[Rs_term_name]); |
1013 | sprintf (env_term, "TERM=%s", rs[Rs_term_name]); |
948 | putenv (env_term); |
1014 | putenv (env_term); |
949 | } |
1015 | } |
950 | else |
1016 | else |
951 | putenv ("TERM=" TERMENV); |
1017 | putenv ((char *)"TERM=" TERMENV); |
952 | |
1018 | |
953 | #ifdef HAVE_UNSETENV |
1019 | #ifdef HAVE_UNSETENV |
954 | /* avoid passing old settings and confusing term size */ |
1020 | /* avoid passing old settings and confusing term size */ |
955 | unsetenv ("LINES"); |
1021 | unsetenv ("LINES"); |
956 | unsetenv ("COLUMNS"); |
1022 | unsetenv ("COLUMNS"); |
… | |
… | |
975 | setlocale (LC_CTYPE, "C"); |
1041 | setlocale (LC_CTYPE, "C"); |
976 | } |
1042 | } |
977 | else |
1043 | else |
978 | rxvt_warn ("default locale unavailable, check LC_* and LANG variables. Continuing.\n"); |
1044 | rxvt_warn ("default locale unavailable, check LC_* and LANG variables. Continuing.\n"); |
979 | |
1045 | |
980 | this->locale = "C"; |
1046 | this->locale = (char *)"C"; /* strdup'ed below */ |
981 | } |
1047 | } |
982 | |
1048 | |
983 | |
1049 | |
984 | this->locale = strdup (this->locale); |
1050 | this->locale = strdup (this->locale); |
985 | SET_LOCALE (this->locale); |
1051 | SET_LOCALE (this->locale); |