[dev] [dwm] [PATCH] Tags grid and xxkb-like behaviour
Hi, I'm newbie in dwm, so I felt the luck of desktops grid like in other Window Managers like XFCE or OpenBox. And I couldn't find any solution for multiple rows of tags, so I decided to make it by myself. In addition I got assumed to xxkb's functionality, but it have some problems with dwm, described here: http://lists.suckless.org/dwm/0808/6471.html So I decided to implement this functionality directly in dwm. While implementation I had some problems with applications like guake which have hide-restore behaviour. Unfortunately, dwm removes information about any unmapping client so I had to store list of xkb info separately. I lived with this two patches for a week and they seems to work nice, but I think they need to be checked. P.S. xkb patch have small conflict with systemtray patch which easy to solve manually. P.P.S Sorry for my English. diff --git a/config.def.h b/config.def.h index 875885b..d6670dc 100644 --- a/config.def.h +++ b/config.def.h @@ -16,6 +16,22 @@ static const Bool topbar= True; /* False means bottom bar */ /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +/* grid of tags */ +#define DRAWCLASSICTAGS 1 << 0 +#define DRAWTAGGRID 1 << 1 + +#define SWITCHTAG_UP1 << 0 +#define SWITCHTAG_DOWN 1 << 1 +#define SWITCHTAG_LEFT 1 << 2 +#define SWITCHTAG_RIGHT 1 << 3 +#define SWITCHTAG_TOGGLETAG 1 << 4 +#define SWITCHTAG_TAG 1 << 5 +#define SWITCHTAG_VIEW 1 << 6 +#define SWITCHTAG_TOGGLEVIEW1 << 7 + +static const unsigned int drawtagmask = DRAWTAGGRID; /* | DRAWCLASSICTAGS to show classic row of tags */ +static const int tagrows = 3; + static const Rule rules[] = { /* xprop(1): * WM_CLASS(STRING) = instance, class @@ -89,6 +105,16 @@ static Key keys[] = { TAGKEYS(XK_8, 7) TAGKEYS(XK_9, 8) { MODKEY|ShiftMask, XK_q, quit, {0} }, + +{ MODKEY|ControlMask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_VIEW } }, + +{ MODKEY|Mod4Mask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, }; /* button definitions */ diff --git a/dwm.c b/dwm.c index 1bbb4b3..e211b74 100644 --- a/dwm.c +++ b/dwm.c @@ -163,6 +163,7 @@ static void detachstack(Client *c); static Monitor *dirtomon(int dir); static void drawbar(Monitor *m); static void drawbars(void); +static void drawtaggrid(Monitor *m, int *x_pos, unsigned int occ); static void enternotify(XEvent *e); static void expose(XEvent *e); static void focus(Client *c); @@ -205,6 +206,7 @@ static void setup(void); static void showhide(Client *c); static void sigchld(int unused); static void spawn(const Arg *arg); +static void switchtag(const Arg *arg); static void tag(const Arg *arg); static void tagmon(const Arg *arg); static void tile(Monitor *); @@ -702,6 +704,7 @@ drawbar(Monitor *m) { urg |= c->tags; } x = 0; +if (drawtagmask & DRAWCLASSICTAGS) for(i = 0; i < LENGTH(tags); i++) { w = TEXTW(tags[i]); drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]); @@ -710,6 +713,9 @@ drawbar(Monitor *m) { occ & 1 << i, urg & 1 << i); x += w; } +if (drawtagmask & DRAWTAGGRID) { +drawtaggrid(m,&x,occ); +} w = blw = TEXTW(m->ltsymbol); drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, m->ltsymbol, 0); @@ -748,6 +754,47 @@ drawbars(void) { for(m = mons; m; m = m->next) drawbar(m); } +void drawtaggrid(Monitor *m, int *x_pos, unsigned int occ) +{ +unsigned int x, y, h, max_x, columns; +int invert, i,j, k; + +h = bh / tagrows; +x = max_x = *x_pos; +y = 0; +columns = LENGTH(tags) / tagrows + ((LENGTH(tags) % tagrows > 0) ? 1 : 0); + +/* Firstly we will fill the borders of squares */ +XSetForeground(drw->dpy, drw->gc, scheme[SchemeNorm].bg->rgb); +XFillRectangle(dpy, drw->drawable, drw->gc, x, y, h*columns + 1, bh); + +/* We well draw LENGTH(tags) squares in tagraws raws. */ + for(j = 0, i=
Re: [dev] [dwm] [PATCH] Tags grid and xxkb-like behaviour
But I thought they must pass some kind of verification don't they? On 02/14/2014 09:16 PM, Carlos Torres wrote: Thanks for you patches, you can push them on to the wiki too.. just clone git://git.suckless.org/sites and somewhere in there is a dwm wiki, you can add your patches and documentation for them there. --Carlos On 2/14/14, Yury Shvedov wrote: Hi, I'm newbie in dwm, so I felt the luck of desktops grid like in other Window Managers like XFCE or OpenBox. And I couldn't find any solution for multiple rows of tags, so I decided to make it by myself. In addition I got assumed to xxkb's functionality, but it have some problems with dwm, described here: http://lists.suckless.org/dwm/0808/6471.html So I decided to implement this functionality directly in dwm. While implementation I had some problems with applications like guake which have hide-restore behaviour. Unfortunately, dwm removes information about any unmapping client so I had to store list of xkb info separately. I lived with this two patches for a week and they seems to work nice, but I think they need to be checked. P.S. xkb patch have small conflict with systemtray patch which easy to solve manually. P.P.S Sorry for my English.
[dev] Re: [dwm] [PATCH] Tags grid and xxkb-like behaviour
Hi, I had problems with pushing my patches to the site. Maybe I need to push them to master? Anyway, here some updates of my patches: 1. handling mouse input in bar with taggrid correctly; 2. new Rule field for default language of application. Unfortunately, Rule functionality doesn't working with dmenu, but it could be very useful for it. Does someone has an idea how to handle such problems? On 02/14/2014 09:07 PM, Yury Shvedov wrote: Hi, I'm newbie in dwm, so I felt the luck of desktops grid like in other Window Managers like XFCE or OpenBox. And I couldn't find any solution for multiple rows of tags, so I decided to make it by myself. In addition I got assumed to xxkb's functionality, but it have some problems with dwm, described here: http://lists.suckless.org/dwm/0808/6471.html So I decided to implement this functionality directly in dwm. While implementation I had some problems with applications like guake which have hide-restore behaviour. Unfortunately, dwm removes information about any unmapping client so I had to store list of xkb info separately. I lived with this two patches for a week and they seems to work nice, but I think they need to be checked. P.S. xkb patch have small conflict with systemtray patch which easy to solve manually. P.P.S Sorry for my English. -- Kind regards Yury Shvedov diff --git a/config.def.h b/config.def.h index 875885b..d6670dc 100644 --- a/config.def.h +++ b/config.def.h @@ -16,6 +16,22 @@ static const Bool topbar= True; /* False means bottom bar */ /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +/* grid of tags */ +#define DRAWCLASSICTAGS 1 << 0 +#define DRAWTAGGRID 1 << 1 + +#define SWITCHTAG_UP1 << 0 +#define SWITCHTAG_DOWN 1 << 1 +#define SWITCHTAG_LEFT 1 << 2 +#define SWITCHTAG_RIGHT 1 << 3 +#define SWITCHTAG_TOGGLETAG 1 << 4 +#define SWITCHTAG_TAG 1 << 5 +#define SWITCHTAG_VIEW 1 << 6 +#define SWITCHTAG_TOGGLEVIEW1 << 7 + +static const unsigned int drawtagmask = DRAWTAGGRID; /* | DRAWCLASSICTAGS to show classic row of tags */ +static const int tagrows = 3; + static const Rule rules[] = { /* xprop(1): * WM_CLASS(STRING) = instance, class @@ -89,6 +105,16 @@ static Key keys[] = { TAGKEYS(XK_8, 7) TAGKEYS(XK_9, 8) { MODKEY|ShiftMask, XK_q, quit, {0} }, + +{ MODKEY|ControlMask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_VIEW } }, +{ MODKEY|ControlMask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_VIEW } }, + +{ MODKEY|Mod4Mask, XK_Up, switchtag, { .ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Down, switchtag, { .ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Right, switchtag, { .ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, +{ MODKEY|Mod4Mask, XK_Left, switchtag, { .ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW } }, }; /* button definitions */ diff --git a/dwm.c b/dwm.c index 1bbb4b3..d1b8799 100644 --- a/dwm.c +++ b/dwm.c @@ -163,6 +163,7 @@ static void detachstack(Client *c); static Monitor *dirtomon(int dir); static void drawbar(Monitor *m); static void drawbars(void); +static void drawtaggrid(Monitor *m, int *x_pos, unsigned int occ); static void enternotify(XEvent *e); static void expose(XEvent *e); static void focus(Client *c); @@ -205,6 +206,7 @@ static void setup(void); static void showhide(Client *c); static void sigchld(int unused); static void spawn(const Arg *arg); +static void switchtag(const Arg *arg); static void tag(const Arg *arg); static void tagmon(const Arg *arg); static void tile(Monitor *); @@ -409,11 +411,13 @@ attachstack(Client *c) { void buttonpress(XEvent *e) { unsigned int i, x, click; + unsigned int columns; Arg arg = {0}; Client *c; Monitor *m; XButtonPressedEvent *ev = &e->xbutton; + columns = LENGTH(tags) / tagrows + ((LENGTH(tags) % tagrows > 0) ? 1 : 0); click = ClkRootWin; /* focus monitor if necessary */ if((m = wintomon(ev->window)) && m != selmon) { @@ -423,14 +427,24 @@ buttonpress(XEvent *e) { } if(ev->window == selmon->barwin) { i = x = 0; +if (drawt
Re: [dev] Plain text editor that sucks less - an alternative to VIM?
Hello, Pat As I know, VIM - is VI improved, so VI can be consider as lightweight alternative to VIM. What do you thing about it? On 06/29/2014 03:24 PM, patrick295767 patrick295767 wrote: Hello, For many years I have been looking for a lightweight alternative to VIM. (sthg else than Emacs, elvis, nano,... and all the billion of text editor). I was reading the emailed topic "Text-only browser that sucks less" on our list, and herewith the following question: - Which alternative to VIM would you propose (which would be according to the suckless-phylosophy) ? What about some dos - like editors running on Linux/Bsd,... *nix? ( Having windowed-look: http://tvision.sourceforge.net/tv2-QNX-tvscreen.jpg ) I looking forward to reading you. Thank you and best regards, Pat -- Kind regards Yury Shvedov
[dev][dwm] Systray and hipchat
Hello, Jan Christoph Ebersbach. The hipchat client(https://www.hipchat.com/downloads#linux) has a tray icon, but it doesn't shown in systray, applied by<http://dwm.suckless.org/patches/systray> patch (http://dwm.suckless.org/patches/systray). Can you check this, please. Thank you. -- Kind regards Yury Shvedov
Re: [dev][dwm] Systray and hipchat
Yep! Sometimes I have the same glitches but It doesn't hurt me. But absence of an icon any time the client runs distress me. I have not much time to investigate this too but when I will, I would look to the code of something like trayer or stalonetray as an example. Kind regards Yury Shvedov On 03/05/2015 04:17 AM, Eric Pruitt wrote: On Wed, Mar 04, 2015 at 02:01:06PM +0300, Yury Shvedov wrote: The hipchat client(https://www.hipchat.com/downloads#linux) has a tray icon, but it doesn't shown in systray, applied by<http://dwm.suckless.org/patches/systray> patch (http://dwm.suckless.org/patches/systray). I use this same patch and have encountered a number of oddities with it myself, but I haven't taken the time to investigate why they happen. Sometimes, icons don't update (most often seen with Pidgin), and right now, I currently have 2 phantom icons that seem to be duplicates of another icon: in my systray, there are two gaps with no icons, but when I mouse-over the non-existent icons, I can see hover-text, and the hover-text matches one of the visible icons; see attached. Eric
Re: [dev][dwm] Systray and hipchat
No I've never seen hipchat client's tray icon working within dwm tray. Maybe I would have some time on this weekends to check this issue by myself. My suggestion is to take one of the applications I mentioned before and compare with it. -- Kind regards Yury Shvedov On 03/07/2015 05:57 AM, Eric Pruitt wrote: On Thu, Mar 05, 2015 at 09:40:56AM +0300, Yury Shvedov wrote: Yep! Sometimes I have the same glitches but It doesn't hurt me. But absence of an icon any time the client runs distress me. I have not much time to investigate this too but when I will, I would look to the code of something like trayer or stalonetray as an example. I figured out how to get rid of the phantom icons -- I added this block inside the SYSTEM_TRAY_REQUEST_DOCK conditional: if (!(c->win = cme->data.l[2])) { free(c); return; } I haven't figured out how to fix the issue with icons not updating yet, but that only ever seems to happen for me if I launch Pidgin and there are no other icons in the tray yet. When you use hipchat then launch another application that uses the systray, does the icon appear? Eric
Re: [dev][dwm] Systray and hipchat
Lol! This is the solution too but it is really kludge and I think you gave up too early. I solved up the issue with hipchat. I found out that hipchat unmapping its icon right after creation. From the unmap_notify() function at stalontray/src/main.c:665 /* KLUDGE! sometimes icons occasionally * unmap their windows, but do _not_ destroy * them. We map those windows back */ XMapRaised(tray_data.dpy, ti->wid); This is the kludge too, but it is the only known way to handle such buggy applications. So, we solve two of three problems with dwm's systray. I'll check last one tomorrow. On 03/07/2015 10:30 PM, Eric Pruitt wrote: On Thu, Mar 05, 2015 at 09:40:56AM +0300, Yury Shvedov wrote: Yep! Sometimes I have the same glitches but It doesn't hurt me. But absence of an icon any time the client runs distress me. I have not much time to investigate this too but when I will, I would look to the code of something like trayer or stalonetray as an example. I ended up solving my systray problems by writing a patch that treats systray applications as special windows. I've attached the patch to this email, but I wrote the patch on top of my existing patch set, so it will not apply cleanly to dwm 6.x without some work. It's a bit kludgey, and the patch was hastily cobbled together, but I will probably refine it later. I first used the patch with trayer, but trayer [does not allow you to specify the amount of padding between icons][1], and the default padding is [way too thin for my tastes. On top of that, I ran into [Debian Bug #749031][2] which is a non-issue with stalonetray. Here's the stalonetray invocation I'm currently using: stalonetray -bg '#00' -d --icon-gravity NE --grow-gravity E \ --skip-taskbar --window-layer top -i 16 \ --kludges force_icons_size --decorations none \ --geometry 1x1-0+0 --slot-size 18 [1]: https://github.com/sargon/trayer-srg/issues/16 [2]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=749031 Eric -- Kind regards Yury Shvedov
Re: [dev][dwm] Systray and hipchat
Yes, I did. And it works well for me with version 2.2.1328 in any case and I'm happily using it. Btw with this kludge the pidging bug was partly gone: the icon shown but doesn't update properly. It is easy to understand what happens with it, using debug output as I did for hipchat. -- Kind regards Yury Shvedov On 03/09/2015 02:55 AM, Eric Pruitt wrote: Did you actually try implementing the kludge? I attempting to do so in a couple of ways, and in the best case scenario, I got a space in the tray where the icon should be, and although I could click it and have HipChat vanish and re-appear, there was no actual icon shown. I tried running HipChat with stalonetray, and there was no icon. I did the same with trayer, and a thin black line appeared where the icon should be, but as with my attempt to implement stalonetray's kludge, there was no picture. Searching a bit, I came across this long-standing issue on the HipChat tracker: http://help.hipchat.com/forums/138883-suggestions-ideas/suggestions/4013212-linux-client-is-missing-notification-area-icon Eric
Re: [dev][dwm] Systray and hipchat
Of course I will. But I want firstly to check it with original dwm and to resolve the last issue with pidgin. I'll do it as soon as possible. On 03/09/2015 05:45 PM, Eric Pruitt wrote: On Mon, Mar 09, 2015 at 10:42:37AM +0300, Yury Shvedov wrote: Yes, I did. And it works well for me with version 2.2.1328 in any case and I'm happily using it. Then please post your modified version of the dwm systray patch for others to benefit from it. Thanks, Eric -- Kind regards Yury Shvedov
Re: [dev][dwm] Systray and hipchat
Ok, I apologize for your waiting. I still couldn't find a time for this. But this patch is not very different from the original. The only differences is your check within SYSTEM_TRAY_REQUEST_DOCK handler and my one line withing unmapnotify() function. Kind regards Yury Shvedov On 03/12/2015 06:27 AM, Eric Pruitt wrote: On Mon, Mar 09, 2015 at 06:22:23PM +0300, Yury Shvedov wrote: Of course I will. But I want firstly to check it with original dwm and to resolve the last issue with pidgin. I'll do it as soon as possible. Could you please post the patch that you have so far? I don't think it makes sense to make people to wait on you (although I suspect I may be the only one) to make the finishing touches, whenever that may be, when they could already be benefiting from what's been done so far. Thanks, Eric Authors: Jan Christoph Ebersbach , inspired by http://code.google.com/p/dwm-plus Eric Pruitt Yury Shvedov URL: http://dwm.suckless.org/patches/systray Implements a system tray for dwm. Contributors: - Carlos Pita, thanks for investigating multi monitor issues and sending in a patch diff --git a/config.def.h b/config.def.h index 7e1907f..3bbc98a 100644 --- a/config.def.h +++ b/config.def.h @@ -10,6 +10,10 @@ static const char selbgcolor[] = "#005577"; static const char selfgcolor[] = "#ee"; static const unsigned int borderpx = 1;/* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ +static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */ +static const unsigned int systrayspacing = 2; /* systray spacing */ +static const Bool systraypinningfailfirst = True; /* True: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/ +static const Bool showsystray = True; /* False means no systray */ static const Bool showbar = True; /* False means no bar */ static const Bool topbar= True; /* False means bottom bar */ diff --git a/dwm.c b/dwm.c index c935a3b..749a9da 100644 --- a/dwm.c +++ b/dwm.c @@ -57,12 +57,30 @@ #define TAGMASK ((1 << LENGTH(tags)) - 1) #define TEXTW(X)(drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h) +#define SYSTEM_TRAY_REQUEST_DOCK0 +#define _NET_SYSTEM_TRAY_ORIENTATION_HORZ 0 + +/* XEMBED messages */ +#define XEMBED_EMBEDDED_NOTIFY 0 +#define XEMBED_WINDOW_ACTIVATE 1 +#define XEMBED_FOCUS_IN 4 +#define XEMBED_MODALITY_ON 10 + +#define XEMBED_MAPPED (1 << 0) +#define XEMBED_WINDOW_ACTIVATE 1 +#define XEMBED_WINDOW_DEACTIVATE2 + +#define VERSION_MAJOR 0 +#define VERSION_MINOR 0 +#define XEMBED_EMBEDDED_VERSION (VERSION_MAJOR << 16) | VERSION_MINOR + /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ enum { SchemeNorm, SchemeSel, SchemeLast }; /* color schemes */ -enum { NetSupported, NetWMName, NetWMState, - NetWMFullscreen, NetActiveWindow, NetWMWindowType, - NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ +enum { NetSupported, NetSystemTray, NetSystemTrayOP, NetSystemTrayOrientation, + NetWMName, NetWMState, NetWMFullscreen, NetActiveWindow, NetWMWindowType, + NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ +enum { Manager, Xembed, XembedInfo, XLast }; /* Xembed atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ @@ -150,6 +168,12 @@ typedef struct { int xkb_layout; } Rule; +typedef struct Systray Systray; +struct Systray { + Window win; + Client *icons; +}; + /* function declarations */ static void applyrules(Client *c); static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact); @@ -182,8 +206,10 @@ static void focus(Client *c); static void focusin(XEvent *e); static void focusmon(const Arg *arg); static void focusstack(const Arg *arg); +static Atom getatomprop(Client *c, Atom prop); static Bool getrootptr(int *x, int *y); static long getstate(Window w); +static unsigned int getsystraywidth(); static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); static void grabbuttons(Client *c, Bool focused); static void grabkeys(void); @@ -201,13 +227,16 @@ static void pop(Client *); static void propertynotify(XEvent *e); static void quit(const Arg *arg); static Monitor *recttomon(int x, int y, int w, int h); +static void removesystrayicon(Client *i); static void resize(Client *c, int x, int y, int w, int h, Bool interact); +static void resizebarwin(Monitor *m); static void resizeclient(Client *c, int x, i
Re: [dev] Re: [dwm] [libsl] Xft and fallback fonts support
Hi, Eric. Please don't be hurry. I got close to the last systray's problem solution. I hope I will fix it today. On 03/14/2015 06:54 AM, Eric Pruitt wrote: On Thu, Mar 12, 2015 at 08:01:37AM +0100, Anselm R Garbe wrote: Yes. Best regards, Anselm Thanks for applying the patch and using git-am this time. This makes maintaining my personal copy of dwm a and its patches a lot easier. If anyone is currently using the systray patch and would like to update their copy of dwm, I will be submitting an updated version of the patch to the wiki this weekend. Eric -- Kind regards Yury Shvedov
Re: [dev] Re: [dwm] [libsl] Xft and fallback fonts support
No, unfortunately I'm failed. There is something strange with the one one first icon. It simply maps only first time. After that it don't want to redraw. The code, which makes it to do so works on time (XMapSubwindows), but cant make this icon to map correctly. I will try later. On 03/15/2015 06:28 PM, Eric Pruitt wrote: On Sun, Mar 15, 2015 at 01:41:11PM +0300, Yury Shvedov wrote: Please don't be hurry. I got close to the last systray's problem solution. I hope I will fix it today. Alright. On a related note, it turns out my fix for the missing icons doesn't actually work. I'm not sure why I kept seeing (c->win == 0) especially since I have compiler optimizations disabled. After looking into the issue some more, I did discover that the size properties of the invisible icons are unusually large. For example, using gdb to inspect wa.width and wa.height on the phantom icons yields that the icon is 200x200 pixels. Interestingly enough, the phantom icon problem never happens on my work machine which runs a variant of Ubuntu whereas I use Debian stable on my home PC, so I can't help but wonder if the phantom icon problem is a library issue that's been solved in a newer release of X11. Eric -- Kind regards Yury Shvedov
Re: [dev] [dwm] alpha+ systray patches not working together
Hi, what exactly happens when you trying to start it? Does it chrash? If so, try to run under valgrind. Put in your xinitrc or whatever you use something like: valgrind --log-file=/tmp/dwm-crash.log dwm instead of dwm. And then check in /tmp/dwm-crash.log where error exactly happens. Bth you probarly need to compile it with -g option. On 10/28/2016 04:48 AM, joelb...@gmail.com wrote: Hi, I'm new in this list (I don't even know that this is the right place). I'm trying to patch systray and alpha patch together, and I can make them compile but I coudn't get dwm to start. I don't know how to access a more detailed to get a better idea of what is not working. If someone have managed to apply and use these two patches together and can help me, I'll be very greatful. Best regards. Joel -- С уважением, Юрий Шведов WiMark Systems