Галерея — Скриншоты Гжель 1 0 чуть пропатченный dwm, почти стандартные коньки, самодельная обоина, шрифт - CyrillicOld, к dwm пока не прикрутил http://img206.imageshack.us/img206/8599/snapshotcr5.png >>> Просмотр (1280x1024, 192 Kb) Ссылка
Ответ на: комментарий от michwill 11.10.08 16:43:11 MSD Круть, концептуально, но долго за таким не поработаешь. ярко очень, хотя может это у меня моник слишком светлый. +1 anonymous (11.10.08 17:30:56 MSD) Ссылка
Херасе! За последние лет 5 - это единственный скрин, который однозначно рулит. Gharik ☆ (11.10.08 18:55:55 MSD) Показать ответ Ссылка
Ответ на: комментарий от Gharik 11.10.08 18:55:55 MSD Да и пузырь на скрине явно прославляет шнапсоведение. Gharik ☆ (11.10.08 18:56:47 MSD) Ссылка
ну что, кто хотел нормальные шрифты на панельке???? http://img134.imageshack.us/img134/1074/snapshotiw6.png z0D5e8n7x (11.10.08 19:06:27 MSD) автор топика Показать ответы Ссылка
Ответ на: комментарий от gnomino 11.10.08 15:41:49 MSD > А хохлы будут срать в комментах? Уже. anonymous (11.10.08 19:44:47 MSD) Ссылка
Ответ на: комментарий от z0D5e8n7x 11.10.08 19:06:27 MSD >ну что, кто хотел нормальные шрифты на панельке???? эпик вин. алсо, патчи-то доставь. anonymous (11.10.08 21:15:52 MSD) Показать ответ Ссылка
Ат, что ж такое та, от жеж бл.. ну ё.. да тыж чтож.. порадовал! xintrea ★ (11.10.08 23:52:49 MSD) Ссылка
Ответ на: комментарий от z0D5e8n7x 11.10.08 19:06:27 MSD >ну что, кто хотел нормальные шрифты на панельке???? Ну не смотрится латиница в контексте. gnomino (12.10.08 01:18:43 MSD) Показать ответ Ссылка
Ответ на: комментарий от anonymous 11.10.08 21:15:52 MSD >эпик вин. алсо, патчи-то доставь. завтра днем, как раз dmenu до ума доведу z0D5e8n7x (12.10.08 02:41:08 MSD) автор топика Ссылка
оригинально... оригинально убийственно) ужас-ужас-ужас) delirio ★ (12.10.08 02:59:51 MSD) Показать ответ Ссылка
Ответ на: комментарий от delirio 12.10.08 02:59:51 MSD питёрка по Русски. 3ачётный мужык ggrn ★★★★★ (12.10.08 03:49:26 MSD) Ссылка
Какая прелесть, просто потрясающе! Автор, спасибо Вам огромное! (: Хватит уже всякой кислоты на любимом месте, пора возвратиться к нашим корням, нашему искусству, ничто западное не сравниться с такими чудесами! anonymous (12.10.08 08:36:20 MSD) Ссылка
Шикарно! Самый оригинальный скрин за ооочень долгое время lazyklimm ★★★★★ (12.10.08 11:59:37 MSD) Ссылка
Ответ на: комментарий от gnomino 12.10.08 01:18:43 MSD согласен, автор, поименуй теги кириллицей lazyklimm ★★★★★ (12.10.08 12:01:13 MSD) Показать ответ Ссылка
Ответ на: комментарий от lazyklimm 12.10.08 12:01:13 MSD зашибись! +++! kb0t_tk (12.10.08 12:11:53 MSD) Ссылка
вся, я попал, яндекс.директ теперь в каждом блоке предлагает мне гжель и хохолому (( уроды, буду пользоваться только гуглом (( z0D5e8n7x (12.10.08 12:45:11 MSD) автор топика Ссылка
меня внезапно осенило: на белом EeePC эта тема будет очень классно смотреться вот еще бы на нем самом подобные росписи сделать wd ★ (12.10.08 12:55:09 MSD) Показать ответы Ссылка
Ответ на: комментарий от wd 12.10.08 12:55:09 MSD >вот еще бы на нем самом подобные росписи сделать То его можно будет продавать на 100 баксив дороже ;) Кстати, класснющий сувенир -- всяк поприкольнее матрешки. gnomino (12.10.08 12:58:58 MSD) Ссылка
Ответ на: комментарий от wd 12.10.08 12:55:09 MSD >меня внезапно осенило: на белом EeePC эта тема будет очень классно смотреться вот еще бы на нем самом подобные росписи сделать меня это посетило еще вчера, осталось купить eeepc z0D5e8n7x (12.10.08 13:13:02 MSD) автор топика Ссылка
Автор - молодец. Добрая картинка, никакой агрессии, и родная. И не сильно контрастная - глаза не режет. mvm (12.10.08 15:16:28 MSD) Ссылка
Рулез!!! А ещё можно было бы роспись цветочками на черном (не знаю как называется)... :) fpga (12.10.08 15:28:41 MSD) Показать ответы Ссылка
Ответ на: комментарий от fpga 12.10.08 15:28:41 MSD Отличный скриншот! Только сеть в коньках поплыла, поправь (имхо, следует розтянуть графики) val-amart ★★★★★ (12.10.08 16:24:55 MSD) Ссылка
по просьбам трудящихся патч для Xft на dmenu --- original/dmenu-3.7/dmenu.c 2008-06-18 21:20:41.000000000 +0400 +++ dmenu-3.7/dmenu.c 2008-10-12 16:55:40.000000000 +0400 @@ -10,6 +10,7 @@ #include <X11/keysym.h> #include <X11/Xlib.h> #include <X11/Xutil.h> +#include <X11/Xft/Xft.h> #ifdef XINERAMA #include <X11/extensions/Xinerama.h> #endif @@ -27,14 +28,20 @@ int x, y, w, h; ulong norm[ColLast]; ulong sel[ColLast]; + XftColor *xftnorm; + XftColor *xftsel; Drawable drawable; + XftDraw *xftdrawable; GC gc; struct { - XFontStruct *xfont; +/* XFontStruct *xfont; XFontSet set; int ascent; - int descent; + int descent;*/ + XftFont *xftfont; + XGlyphInfo *extents; int height; + int width; } font; } DC; /* draw context */ @@ -161,10 +168,10 @@ free(allitems); allitems = itm; } - if(dc.font.set) + /*if(dc.font.set) XFreeFontSet(dpy, dc.font.set); else - XFreeFont(dpy, dc.font.xfont); + XFreeFont(dpy, dc.font.xfont);*/ XFreePixmap(dpy, dc.drawable); XFreeGC(dpy, dc.gc); XDestroyWindow(dpy, win); @@ -229,11 +236,15 @@ len = sizeof buf - 1; memcpy(buf, text, len); buf[len] = 0; - h = dc.font.ascent + dc.font.descent; + /*h = dc.font.ascent + dc.font.descent; y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent; - x = dc.x + (h / 2); + x = dc.x + (h / 2);*/ + h = dc.font.height; + y = mh/2 + h/2-3; + x = dc.x+h/2; /* shorten text if necessary */ - while(len && (w = textnw(buf, len)) > dc.w - h) + //while(len && (w = textnw(buf, len)) > dc.w - h) + while(len && (w = textnw(buf, len)) > dc.w) buf[--len] = 0; if(len < olen) { if(len > 1) @@ -246,10 +257,11 @@ if(w > dc.w) return; /* too long */ XSetForeground(dpy, dc.gc, col[ColFG]); - if(dc.font.set) + /*if(dc.font.set) XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); else - XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); + XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);*/ + XftDrawStringUtf8(dc.xftdrawable, (col==dc.norm) ? dc.xftnorm : dc.xftsel ,dc.font.xftfont,x,y,buf,len); } void * @@ -301,7 +313,7 @@ if(!fontstr || fontstr[0] == '\0') eprint("error, cannot load font: '%s'\n", fontstr); - missing = NULL; + /*missing = NULL; if(dc.font.set) XFreeFontSet(dpy, dc.font.set); dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); @@ -332,7 +344,16 @@ dc.font.ascent = dc.font.xfont->ascent; dc.font.descent = dc.font.xfont->descent; } - dc.font.height = dc.font.ascent + dc.font.descent; + dc.font.height = dc.font.ascent + dc.font.descent;*/ + dc.font.xftfont = XftFontOpenXlfd(dpy,screen,fontstr); + if(!dc.font.xftfont) + dc.font.xftfont = XftFontOpenName(dpy,screen,fontstr); + if(!dc.font.xftfont) + eprint("error, cannot load font: '%s'\n", fontstr); + dc.font.extents = malloc(sizeof(XGlyphInfo)); + XftTextExtentsUtf8(dpy,dc.font.xftfont,fontstr, strlen(fontstr), dc.font.extents); + dc.font.height = dc.font.xftfont->height; + dc.font.width = (dc.font.extents->width)/strlen(fontstr); } void @@ -617,6 +638,12 @@ dc.norm[ColFG] = getcolor(normfgcolor); dc.sel[ColBG] = getcolor(selbgcolor); dc.sel[ColFG] = getcolor(selfgcolor); + dc.xftsel=malloc(sizeof(XftColor)); + dc.xftnorm=malloc(sizeof(XftColor)); + XftColorAllocName(dpy,DefaultVisual(dpy,screen),DefaultColormap(dpy,screen),s elfgcolor, dc.xftsel); + XftColorAllocName(dpy,DefaultVisual(dpy,screen),DefaultColormap(dpy,screen),n ormfgcolor, dc.xftnorm); + if(!dc.xftnorm || !dc.xftnorm) + eprint("error, cannot allocate color\n"); initfont(font); /* menu window */ @@ -625,7 +652,8 @@ wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; /* menu window geometry */ - mh = dc.font.height + 2; +// mh = dc.font.height + 2; + mh = dc.font.extents->height + 2; #if XINERAMA if(XineramaIsActive(dpy)) { info = XineramaQueryScreens(dpy, &i); @@ -651,8 +679,11 @@ dc.drawable = XCreatePixmap(dpy, root, mw, mh, DefaultDepth(dpy, screen)); dc.gc = XCreateGC(dpy, root, 0, 0); XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); - if(!dc.font.set) - XSetFont(dpy, dc.gc, dc.font.xfont->fid); + /*if(!dc.font.set) + XSetFont(dpy, dc.gc, dc.font.xfont->fid);*/ + dc.xftdrawable = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy,screen),DefaultColormap(dpy,screen)); + if(!dc.xftdrawable) + eprint("error, cannot create drawable\n"); if(maxname) cmdw = textw(maxname); if(cmdw > mw / 3) @@ -668,18 +699,23 @@ int textnw(const char *text, uint len) { - XRectangle r; + /*XRectangle r; if(dc.font.set) { XmbTextExtents(dc.font.set, text, len, NULL, &r); return r.width; } - return XTextWidth(dc.font.xfont, text, len); -} + return XTextWidth(dc.font.xfont, text, len);*/ + XftTextExtentsUtf8(dpy,dc.font.xftfont,text, strlen(text), dc.font.extents); + if(dc.font.extents->height > dc.font.height) + dc.font.height = dc.font.extents->height; + return dc.font.extents->width; +} int textw(const char *text) { - return textnw(text, strlen(text)) + dc.font.height; + //return textnw(text, strlen(text)) + dc.font.height; + return textnw(text, strlen(text)) + 2*dc.font.width; } int z0D5e8n7x (12.10.08 17:14:33 MSD) автор топика Ссылка
алсо, патч для Xft на dwm, тут еще прикручена немного другая окарска тулбара, и мой авторан, если надо авторан тоже выложу --- original/dwm-5.0.1/dwm.c 2008-06-19 12:11:38.000000000 +0400 +++ dwm-5.0.1/dwm.c 2008-10-12 16:56:05.000000000 +0400 @@ -39,6 +39,7 @@ #include <X11/Xlib.h> #include <X11/Xproto.h> #include <X11/Xutil.h> +#include <X11/Xft/Xft.h> #ifdef XINERAMA #include <X11/extensions/Xinerama.h> #endif @@ -52,7 +53,7 @@ #define MAXTAGLEN 16 #define MOUSEMASK (BUTTONMASK|PointerMotionMask) #define TAGMASK ((int)((1LL << LENGTH(tags)) - 1)) -#define TEXTW(x) (textnw(x, strlen(x)) + dc.font.height) +#define TEXTW(x) (textnw(x, strlen(x)) + 2*dc.font.height) /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ @@ -99,14 +100,21 @@ int x, y, w, h; ulong norm[ColLast]; ulong sel[ColLast]; + XftColor *xftnorm; + XftColor *xftsel; Drawable drawable; + XftDraw *xftdrawable; GC gc; struct { - int ascent; +/* int ascent; int descent; int height; XFontSet set; - XFontStruct *xfont; + XFontStruct *xfont;*/ + XftFont *xftfont; + XGlyphInfo *extents; + int height; + int width; } font; } DC; /* draw context */ @@ -363,10 +371,10 @@ lt = &foo; while(stack) unmanage(stack); - if(dc.font.set) + /*if(dc.font.set) XFreeFontSet(dpy, dc.font.set); else - XFreeFont(dpy, dc.font.xfont); + XFreeFont(dpy, dc.font.xfont);*/ XUngrabKey(dpy, AnyKey, AnyModifier, root); XFreePixmap(dpy, dc.drawable); XFreeGC(dpy, dc.gc); @@ -522,8 +530,8 @@ if((dc.w = dc.x - x) > bh) { dc.x = x; if(c) { - drawtext(c->name, dc.sel, False); - drawsquare(c->isfixed, c->isfloating, False, dc.sel); + drawtext(c->name, dc.norm, False); + drawsquare(c->isfixed, c->isfloating, False, dc.norm); } else drawtext(NULL, dc.norm, False); @@ -540,7 +548,8 @@ gcv.foreground = col[invert ? ColBG : ColFG]; XChangeGC(dpy, dc.gc, GCForeground, &gcv); - x = (dc.font.ascent + dc.font.descent + 2) / 4; +// x = (dc.font.ascent + dc.font.descent + 2) / 4; + x = (dc.font.height + 2) / 4; r.x = dc.x + 1; r.y = dc.y + 1; if(filled) { @@ -566,20 +575,25 @@ olen = strlen(text); len = MIN(olen, sizeof buf); memcpy(buf, text, len); - h = dc.font.ascent + dc.font.descent; +/* h = dc.font.ascent + dc.font.descent; y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent; - x = dc.x + (h / 2); + x = dc.x + (h / 2);*/ + h = dc.font.height; + y = bh/2 + h/2-3; + x = dc.x+h/2; /* shorten text if necessary */ - for(; len && (i = textnw(buf, len)) > dc.w - h; len--); +// for(; len && (i = textnw(buf, len)) > dc.w - h; len--); + for(; len && (i = textnw(buf, len)) > dc.w; len--); if(!len) return; if(len < olen) for(i = len; i && i > len - 3; buf[--i] = '.'); XSetForeground(dpy, dc.gc, col[invert ? ColBG : ColFG]); - if(dc.font.set) +/* if(dc.font.set) XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); else - XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); + XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);*/ + XftDrawStringUtf8(dc.xftdrawable, (col==dc.norm) ? dc.xftnorm : dc.xftsel ,dc.font.xftfont,x,y,buf,len); } void @@ -780,7 +794,7 @@ initfont(const char *fontstr) { char *def, **missing; int i, n; - +/* missing = NULL; if(dc.font.set) XFreeFontSet(dpy, dc.font.set); @@ -813,7 +827,19 @@ dc.font.ascent = dc.font.xfont->ascent; dc.font.descent = dc.font.xfont->descent; } - dc.font.height = dc.font.ascent + dc.font.descent; + dc.font.height = dc.font.ascent + dc.font.descent;*/ + dc.font.xftfont = XftFontOpenXlfd(dpy,screen,fontstr); + if(!dc.font.xftfont) + dc.font.xftfont = XftFontOpenName(dpy,screen,fontstr); + if(!dc.font.xftfont) + eprint("error, cannot load font: '%s'\n", fontstr); + dc.font.extents = malloc(sizeof(XGlyphInfo)); + XftTextExtentsUtf8(dpy,dc.font.xftfont,fontstr, strlen(fontstr), dc.font.extents); + //dc.font.height = dc.font.extents->y+dc.font.extents->yOff; + //dc.font.height = dc.font.xftfont->ascent + dc.font.xftfont->descent; + dc.font.height = dc.font.xftfont->height; + dc.font.width = (dc.font.extents->width)/strlen(fontstr); + //dc.font.width = dc.font.xftfont->width; } Bool @@ -1210,6 +1236,21 @@ uint len, offset; XEvent ev; + /*my autorun*/ + int fd[2]; + pid_t childpid; + pipe(fd); + childpid = fork(); + if(childpid == 0) { + close(1); //closing stdout + dup(fd[1]); //dup fd1 to stdout + setsid(); + char *autorun[] = { "dwm_autorun", NULL}; + execvp(autorun[0],autorun); + } + close(0); //closing stdin + dup(fd[0]); //dup fd0 to stdin + /* main event loop, also reads status text from stdin */ XSync(dpy, False); xfd = ConnectionNumber(dpy); @@ -1324,7 +1365,9 @@ sy = 0; sw = DisplayWidth(dpy, screen); sh = DisplayHeight(dpy, screen); - bh = dc.h = dc.font.height + 2; +// bh = dc.h = dc.font.height + 2; + //dc.h = bh = dc.font.extents->y+dc.font.extents->height - 5; + dc.h = bh = dc.font.extents->height + 2; lt = layouts; updategeom(); @@ -1348,11 +1391,21 @@ dc.sel[ColBorder] = getcolor(selbordercolor); dc.sel[ColBG] = getcolor(selbgcolor); dc.sel[ColFG] = getcolor(selfgcolor); + dc.xftsel=malloc(sizeof(XftColor)); + dc.xftnorm=malloc(sizeof(XftColor)); + XftColorAllocName(dpy,DefaultVisual(dpy,screen),DefaultColormap(dpy,screen),s elfgcolor, dc.xftsel); + XftColorAllocName(dpy,DefaultVisual(dpy,screen),DefaultColormap(dpy,screen),n ormfgcolor, dc.xftnorm); + if(!dc.xftnorm || !dc.xftnorm) + eprint("error, cannot allocate colors\n"); + dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen)); dc.gc = XCreateGC(dpy, root, 0, 0); XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); - if(!dc.font.set) - XSetFont(dpy, dc.gc, dc.font.xfont->fid); +/* if(!dc.font.set) + XSetFont(dpy, dc.gc, dc.font.xfont->fid);*/ + dc.xftdrawable = XftDrawCreate(dpy, dc.drawable, DefaultVisual(dpy,screen),DefaultColormap(dpy,screen)); + if(!dc.xftdrawable) + eprint("error, cannot create drawable\n"); /* init bar */ for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { @@ -1415,13 +1468,17 @@ int textnw(const char *text, uint len) { - XRectangle r; +/* XRectangle r; if(dc.font.set) { XmbTextExtents(dc.font.set, text, len, NULL, &r); return r.width; } - return XTextWidth(dc.font.xfont, text, len); + return XTextWidth(dc.font.xfont, text, len);*/ + XftTextExtentsUtf8(dpy,dc.font.xftfont,text, strlen(text), dc.font.extents); + if(dc.font.extents->height > dc.font.height) + dc.font.height = dc.font.extents->height; + return dc.font.extents->width-15; } void за качество просьба сильно не пинать, это все один большой грязный хак, многое пришлось поменять. в частности геометрия панельки рассчитывалась при Xft весь паршиво.не забудьте поправить config.mk на предмет Xft z0D5e8n7x (12.10.08 17:15:35 MSD) автор топика Показать ответ Ссылка
Ответ на: комментарий от anonymous 11.10.08 11:25:34 MSD Правда лица какие-то анимешные vdm ★★ (12.10.08 17:34:09 MSD) Ссылка
Забавный скрин! Шрифты мне понравились очень в тему к обоине супер! Давайте хохлому жестовские подносы тоже наверно класно будут! Nikitost (12.10.08 17:39:16 MSD) Показать ответ Ссылка
Ответ на: комментарий от z0D5e8n7x 11.10.08 19:06:27 MSD >ну что, кто хотел нормальные шрифты на панельке???? >http://img134.imageshack.us/img134/1074/snapshotiw6.png Может панельку сделайть белой или вообще прозрачной? vdm ★★ (12.10.08 17:46:34 MSD) Ссылка