Lines 82-87
Link Here
|
82 |
#include <X11/Xproto.h> |
82 |
#include <X11/Xproto.h> |
83 |
#include <X11/Xutil.h> |
83 |
#include <X11/Xutil.h> |
84 |
#include <X11/extensions/Xrandr.h> |
84 |
#include <X11/extensions/Xrandr.h> |
|
|
85 |
#include <X11/Xft/Xft.h> |
85 |
|
86 |
|
86 |
#if RANDR_MAJOR < 1 |
87 |
#if RANDR_MAJOR < 1 |
87 |
# error XRandR versions less than 1.0 are not supported |
88 |
# error XRandR versions less than 1.0 are not supported |
Lines 186-198
Link Here
|
186 |
GC bar_gc; |
187 |
GC bar_gc; |
187 |
XGCValues bar_gcv; |
188 |
XGCValues bar_gcv; |
188 |
int bar_fidx = 0; |
189 |
int bar_fidx = 0; |
189 |
XFontStruct *bar_fs; |
190 |
/* Things for XFT */ |
190 |
char *bar_fonts[] = { |
191 |
XftFont *bar_fs; |
191 |
"-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*", |
192 |
XftDraw *xftdraw; |
192 |
"-*-times-medium-r-*-*-*-*-*-*-*-*-*-*", |
193 |
char *default_font="terminus-10"; |
193 |
NULL |
194 |
char *bar_font_color="#cccccc"; |
194 |
}; |
|
|
195 |
|
196 |
/* terminal + args */ |
195 |
/* terminal + args */ |
197 |
char *spawn_term[] = { "xterm", NULL }; |
196 |
char *spawn_term[] = { "xterm", NULL }; |
198 |
char *spawn_screenshot[] = { "screenshot.sh", NULL, NULL }; |
197 |
char *spawn_screenshot[] = { "screenshot.sh", NULL, NULL }; |
Lines 607-615
Link Here
|
607 |
else if (!varmatch(var, "bar_color", &i)) |
606 |
else if (!varmatch(var, "bar_color", &i)) |
608 |
setscreencolor(val, i, SWM_S_COLOR_BAR); |
607 |
setscreencolor(val, i, SWM_S_COLOR_BAR); |
609 |
else if (!varmatch(var, "bar_font_color", &i)) |
608 |
else if (!varmatch(var, "bar_font_color", &i)) |
610 |
setscreencolor(val, i, SWM_S_COLOR_BAR_FONT); |
609 |
//setscreencolor(val, i, SWM_S_COLOR_BAR_FONT); |
|
|
610 |
asprintf(&bar_font_color, "#%s", val); |
611 |
else if (!strncmp(var, "bar_font", strlen("bar_font"))) |
611 |
else if (!strncmp(var, "bar_font", strlen("bar_font"))) |
612 |
asprintf(&bar_fonts[0], "%s", val); |
612 |
asprintf(&default_font, "%s", val); |
613 |
else if (!strncmp(var, "bar_action", strlen("bar_action"))) |
613 |
else if (!strncmp(var, "bar_action", strlen("bar_action"))) |
614 |
asprintf(&bar_argv[0], "%s", val); |
614 |
asprintf(&bar_argv[0], "%s", val); |
615 |
else if (!strncmp(var, "bar_delay", strlen("bar_delay"))) |
615 |
else if (!strncmp(var, "bar_delay", strlen("bar_delay"))) |
Lines 724-733
Link Here
|
724 |
void |
724 |
void |
725 |
bar_print(struct swm_region *r, char *s) |
725 |
bar_print(struct swm_region *r, char *s) |
726 |
{ |
726 |
{ |
|
|
727 |
int scr, len; |
728 |
XGlyphInfo ext; |
729 |
XftColor col; |
730 |
XftDraw *xftdraw; |
731 |
/* how many chars in it? */ |
732 |
scr = DefaultScreen(display); |
733 |
len = strlen(s); |
734 |
/* TODO: here we should check if the whole text |
735 |
* fits inside the bar */ |
736 |
XftColorAllocName(display, DefaultVisual(display, scr), |
737 |
DefaultColormap(display, scr), |
738 |
bar_font_color, |
739 |
&col); |
740 |
/* now draw text */ |
727 |
XClearWindow(display, r->bar_window); |
741 |
XClearWindow(display, r->bar_window); |
728 |
XSetForeground(display, bar_gc, r->s->c[SWM_S_COLOR_BAR_FONT].color); |
742 |
xftdraw = XftDrawCreate(display, r->bar_window, |
729 |
XDrawString(display, r->bar_window, bar_gc, 4, bar_fs->ascent, s, |
743 |
DefaultVisual(display, scr), |
730 |
strlen(s)); |
744 |
DefaultColormap(display, scr)); |
|
|
745 |
XftTextExtents8 (display, bar_fs, s, strlen(s), &ext); |
746 |
XftDrawString8 (xftdraw, &col, bar_fs, 4, bar_fs->ascent, s, strlen(s)); |
731 |
} |
747 |
} |
732 |
|
748 |
|
733 |
void |
749 |
void |
Lines 878-902
Link Here
|
878 |
void |
894 |
void |
879 |
bar_setup(struct swm_region *r) |
895 |
bar_setup(struct swm_region *r) |
880 |
{ |
896 |
{ |
881 |
int i; |
897 |
int scr = DefaultScreen (display); |
882 |
|
898 |
bar_fs = XftFontOpenName(display, 0, default_font); |
883 |
for (i = 0; bar_fonts[i] != NULL; i++) { |
|
|
884 |
bar_fs = XLoadQueryFont(display, bar_fonts[i]); |
885 |
if (bar_fs) { |
886 |
bar_fidx = i; |
887 |
break; |
888 |
} |
889 |
} |
890 |
if (bar_fonts[i] == NULL) |
891 |
errx(1, "couldn't load font"); |
892 |
bar_height = bar_fs->ascent + bar_fs->descent + 3; |
899 |
bar_height = bar_fs->ascent + bar_fs->descent + 3; |
893 |
|
900 |
|
894 |
r->bar_window = XCreateSimpleWindow(display, |
901 |
r->bar_window = XCreateSimpleWindow(display, |
895 |
r->s->root, X(r), Y(r), WIDTH(r) - 2, bar_height - 2, |
902 |
r->s->root, X(r), Y(r), WIDTH(r) - 2, bar_height - 2, |
896 |
1, r->s->c[SWM_S_COLOR_BAR_BORDER].color, |
903 |
1, r->s->c[SWM_S_COLOR_BAR_BORDER].color, |
897 |
r->s->c[SWM_S_COLOR_BAR].color); |
904 |
r->s->c[SWM_S_COLOR_BAR].color); |
898 |
bar_gc = XCreateGC(display, r->bar_window, 0, &bar_gcv); |
905 |
bar_gc = XCreateGC(display, r->bar_window, GCGraphicsExposures, &bar_gcv); |
899 |
XSetFont(display, bar_gc, bar_fs->fid); |
|
|
900 |
XSelectInput(display, r->bar_window, VisibilityChangeMask); |
906 |
XSelectInput(display, r->bar_window, VisibilityChangeMask); |
901 |
if (bar_enabled) |
907 |
if (bar_enabled) |
902 |
XMapRaised(display, r->bar_window); |
908 |
XMapRaised(display, r->bar_window); |
Lines 904-909
Link Here
|
904 |
|
910 |
|
905 |
if (signal(SIGALRM, bar_signal) == SIG_ERR) |
911 |
if (signal(SIGALRM, bar_signal) == SIG_ERR) |
906 |
err(1, "could not install bar_signal"); |
912 |
err(1, "could not install bar_signal"); |
|
|
913 |
xftdraw = XftDrawCreate (display, |
914 |
r->bar_window, DefaultVisual(display, scr), |
915 |
DefaultColormap(display, scr)); |
907 |
bar_refresh(); |
916 |
bar_refresh(); |
908 |
} |
917 |
} |
909 |
|
918 |
|
Lines 1140-1146
Link Here
|
1140 |
{ |
1149 |
{ |
1141 |
DNPRINTF(SWM_D_MISC, "spawnmenu\n"); |
1150 |
DNPRINTF(SWM_D_MISC, "spawnmenu\n"); |
1142 |
|
1151 |
|
1143 |
spawn_menu[SWM_MENU_FN] = bar_fonts[bar_fidx]; |
|
|
1144 |
spawn_menu[SWM_MENU_NB] = r->s->c[SWM_S_COLOR_BAR].name; |
1152 |
spawn_menu[SWM_MENU_NB] = r->s->c[SWM_S_COLOR_BAR].name; |
1145 |
spawn_menu[SWM_MENU_NF] = r->s->c[SWM_S_COLOR_BAR_FONT].name; |
1153 |
spawn_menu[SWM_MENU_NF] = r->s->c[SWM_S_COLOR_BAR_FONT].name; |
1146 |
spawn_menu[SWM_MENU_SB] = r->s->c[SWM_S_COLOR_BAR_BORDER].name; |
1154 |
spawn_menu[SWM_MENU_SB] = r->s->c[SWM_S_COLOR_BAR_BORDER].name; |
Lines 3511-3516
Link Here
|
3511 |
if (cfile) |
3519 |
if (cfile) |
3512 |
conf_load(cfile); |
3520 |
conf_load(cfile); |
3513 |
|
3521 |
|
|
|
3522 |
printf("Loaded conf file: %s\n", cfile); |
3514 |
/* setup all bars */ |
3523 |
/* setup all bars */ |
3515 |
for (i = 0; i < ScreenCount(display); i++) |
3524 |
for (i = 0; i < ScreenCount(display); i++) |
3516 |
TAILQ_FOREACH(r, &screens[i].rl, entry) |
3525 |
TAILQ_FOREACH(r, &screens[i].rl, entry) |