badwm-devel Mailing List for BadWM (Page 2)
Status: Beta
Brought to you by:
ran_at
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
(19) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(2) |
Feb
(7) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Alexander K. <god...@bk...> - 2004-10-03 18:41:06
|
Hi all, Oke, i recoded the icccm stuf. 1: it's all in the hints.c file now 2: iv'e rtfmd even more and renamed all atoms to the Standard names (tnx Berney) 3: BadWM is now even working with one of the standard Pagers (iv'e tested it with OBPager). Enjoy :) P.S the new files are packed in a tgz and mailed in the next mail. -- Best Regards, Alexander Kremer. |
From: Berny <2b...@se...> - 2004-10-02 20:33:58
|
Hi Alexander, it sounds very good :-). I also wanted to add Atoms support to BadWM. Maybe it would be a good idea to use some "allmost standart" atoms - it looks like you created new _BAD atoms. Descritpion of more than ICCCM atoms can be found on freedesktop.org. The curren specification is http://freedesktop.org/Standards/wm-spec/wm-spec-1.1.html Maybe some atoms could be compatible also with nonBADWM world. For example there is defined _NET_NUMBER_OF_DESKTOPS It looks like _BADWM_TOTAL_VDESKS. _NET_CLIENT_LIST - _BADWM_CLIENTS_LIST _NET_CURRENT_DESKTOP - _BADWM_CUR_VDESK _NET_CLOSE_WINDOW - _BADWM_DEL_WIN Berny Alexander Kremer wrote: > Hi all, > > I was rtfming the whole night, and then many hours of trying to make it, and now, finally, it all seems to work :) > > Here is the little spec file on the non icccm comunications, it's made for clients like pagers, we share many info trough atoms now, info like total vdesks, current vdesk, total clients, current vdesk clients, last added/deleted/focused window, and many others including a clients list (long ** array of window id's ;) ) > All this is being automaticly updated. > > I will give out the new source soon. in tar.gz coz there are to many changes to make a patch :) > > I also made a little pager, it's text based now, but it shows all the info about BadWMs clients/desktops and it gets the clients list. > > SPEC: > { > Info atoms: > [x] _BADWM_CUR_VDESK - current vdesk atom. > [x] _BADWM_TOTAL_VDESKS - total vdesks available. > > Mega Info atoms what sets other atoms as well: > [x] _BADWM_CHANGE_VDESK - If Vdesk is being changed, > SETS _BADWM_TOTAL_CLIENTS_CUR_VDESK, and it self to the Vdesk id. > > [x] _BADWM_ADD_WIN - Notification of new client, > SETS _BADWM_TOTAL_CLIENTS, _BADWM_TOTAL_CLIENTS_CUR_VDESK. > > [x] _BADWM_DEL_WIN - Notification of deletig a client, > SETS the same stuf as _BADWM_ADD_WIN. > > [x] _BADWM_FOCUS_WIN - Notification of focusing a client, > SETS it self to the FOCUSED client Window id. > > [x] _BADWM_CLIENTS_LIST - This is the list of clients. > Ok, now we can get total clients right? so we can make smf like: > long** arr; > arr = malloc(total * sizeof(long*)); > and then: > for(i=0; i<total; i++) { > arr[i] = clientDummy->window; > clientDummy = clientDummy->next; > } > } > |
From: Alexander K. <god...@bk...> - 2004-10-02 19:36:05
|
Hi. This is the sources of the icccm+ compatible BadWM for now. The BadPager will be available then the new BadWM version will be released. -- Best Regards, Alexander Kremer. |
From: Alexander K. <god...@bk...> - 2004-10-02 18:18:37
|
Hi all. This is a screenshot demonstrating the power of icccm :) Soon we will have the new stuff. i'm now debuging BadWMs new stuf. -- Best Regards, Alexander Kremer. |
From: Alexander K. <god...@bk...> - 2004-10-02 15:30:22
|
Hi all, I was rtfming the whole night, and then many hours of trying to make it, and now, finally, it all seems to work :) Here is the little spec file on the non icccm comunications, it's made for clients like pagers, we share many info trough atoms now, info like total vdesks, current vdesk, total clients, current vdesk clients, last added/deleted/focused window, and many others including a clients list (long ** array of window id's ;) ) All this is being automaticly updated. I will give out the new source soon. in tar.gz coz there are to many changes to make a patch :) I also made a little pager, it's text based now, but it shows all the info about BadWMs clients/desktops and it gets the clients list. SPEC: { Info atoms: [x] _BADWM_CUR_VDESK - current vdesk atom. [x] _BADWM_TOTAL_VDESKS - total vdesks available. Mega Info atoms what sets other atoms as well: [x] _BADWM_CHANGE_VDESK - If Vdesk is being changed, SETS _BADWM_TOTAL_CLIENTS_CUR_VDESK, and it self to the Vdesk id. [x] _BADWM_ADD_WIN - Notification of new client, SETS _BADWM_TOTAL_CLIENTS, _BADWM_TOTAL_CLIENTS_CUR_VDESK. [x] _BADWM_DEL_WIN - Notification of deletig a client, SETS the same stuf as _BADWM_ADD_WIN. [x] _BADWM_FOCUS_WIN - Notification of focusing a client, SETS it self to the FOCUSED client Window id. [x] _BADWM_CLIENTS_LIST - This is the list of clients. Ok, now we can get total clients right? so we can make smf like: long** arr; arr = malloc(total * sizeof(long*)); and then: for(i=0; i<total; i++) { arr[i] = clientDummy->window; clientDummy = clientDummy->next; } } -- Best Regards, Alexander Kremer. |
From: Robert A. <ro...@an...> - 2004-10-02 11:29:53
|
Alexander Kremer wrote: > Hi all, > > I made a new config option, it's in the [theme] section, the option is "borderwd" -> setting border width as integer value. > > Sorry for the full tar.gz inplace of a patch. > Hi, I modified the changes a bit and uploaded it to cvs@sf. bye, Robert |
From: Robert A. <ro...@an...> - 2004-10-01 19:44:09
|
Alexander Kremer wrote: > Hi all, > > I think iv'e fixed the bug what did badwm to set position of a new client even if the client wanted another one. > > in new.c: > around line 115 we have this code: > > 115 c->ignore_unmap++; > 116 } else { > 117 init_position(c); > 118 if ((hints = XGetWMHints(dpy, w))) { > > replace it by: > > 115 c->ignore_unmap++; > 116 } else { > 117 if(c->x == 0 && c->y == 0) init_position(c); > 118 if ((hints = XGetWMHints(dpy, w))) { > > This is working because we are getting WM_NORMAL_HINTS before that. > If no x,y is setten by the client -> set the BadWM's preffered once. > submitted it to cvs @sf. Thanks (: bye, Robert |
From: Alexander K. <god...@bk...> - 2004-10-01 17:54:59
|
Hi all, I think iv'e fixed the bug what did badwm to set position of a new client even if the client wanted another one. in new.c: around line 115 we have this code: 115 c->ignore_unmap++; 116 } else { 117 init_position(c); 118 if ((hints = XGetWMHints(dpy, w))) { replace it by: 115 c->ignore_unmap++; 116 } else { 117 if(c->x == 0 && c->y == 0) init_position(c); 118 if ((hints = XGetWMHints(dpy, w))) { This is working because we are getting WM_NORMAL_HINTS before that. If no x,y is setten by the client -> set the BadWM's preffered once. -- Best Regards, Alexander Kremer. |
From: Alexander K. <god...@bk...> - 2004-09-21 09:52:02
|
Hi all, I made a new config option, it's in the [theme] section, the option is "borderwd" -> setting border width as integer value. Sorry for the full tar.gz inplace of a patch. -- Best Regards, Alexander Kremer. |
From: Robert A. <ro...@an...> - 2004-09-16 18:57:37
|
Bernard Lidicky wrote: > Hi, Hi Berny, > I have some time this morning to collect my enhancements and put them to 0.1.1 > There are 7 of them. > > ( I'm not sure about formatig - I'm sendig this via webmail, so > I enclose the whole text once more ) > your changes are great! Could you be so kind to make a patch file (diff -urN) and send it to me? > 5) I think that this version is changing position of new > windows even if they wanted to set position themselv. Thats bad. ): I added it as a possible bug to the TODO file. > > That is all :-) > > > Berny > > PS: Sorry about my english :-) bye, Robert |
From: <2b...@se...> - 2004-09-16 09:01:32
|
Hi, I have some time this morning to collect my enhancements and put them to 0.1.1 There are 7 of them. ( I'm not sure about formatig - I'm sendig this via webmail, so I enclose the whole text once more ) 1) I have encountered screen.c 402 assetion failure. It was my bug :-) ( that code was mine ) It happens when there are no windows. There should be if (newc==NULL) return; // no windows at all 2) I suggest enhancing line 19 from BadWM.h and - old code #define bad_debug(y,x...) baddebug(__FILE__, __LINE__, __FUNCTION__,y,x) -new code #include <include/config.h> // we need to know about DEBUG #ifdef DEBUG #define bad_debug(y,x...) baddebug(__FILE__, __LINE__, __FUNCTION__,y,x) #else #define bad_debug(y,x...) #endif This makes source code clearer - it isn't necessary to allways use this construction #ifdef DEBUG bad_debug(..) #endif The compiler will do it for us. 3) -> Upgrade function from events.c - this makes that when "KEY" pressed and mouse is in client window, you can switch workspace by wheel. I use this feature when using mozilla || anjuta - I use them in fullscreen -> I see no workspace and I have left hand near "KEY" and second hand on mouse. It is comfortable to change workspace this way for me. Also when moving over more workspaces - it happens that free space on one workspace is full on other. It sometimes happen that we get this event (handle_button_event) even if the pointer of mouse is inside client window and no "magic key" is pressed. It happens in for example gtk2 applications on some decoration lines // line 92 void handle_button_event(XButtonEvent *e) { Client *c = find_client(e->window); if (c && e->window != c->screen->root) { if (config.global->flip_resizelower == 0) { switch (e->button) { case Button1: move(c, 0); break; case Button2: XLowerWindow(dpy, c->parent); break; case Button3: resize(c, 0); break; } } else { switch (e->button) { case Button1: move(c, 0); break; case Button2: resize(c, 0); break; case Button3: XLowerWindow(dpy, c->parent); break; } } /* berny start */ switch (e->button) { case Button4: switch_vdesk_up(); break; case Button5: switch_vdesk_down(); break; } /*berny end*/ } else { /* if we are on the root window switch vdesks with the mouse wheel */ switch (e->button) { case Button2: switch_vdesk(1); break; case Button4: switch_vdesk_up(); break; case Button5: switch_vdesk_down(); break; } } } 4) Nice to see debug function like this one. I suggest reordering instructions in bad_debug - it makes the function more effective if debug level is low. ( debug.c ) // OLD int baddebug(const char *file, int line, const char *function, int level, const char *format, ...) { va_list ap; char msg[1024]; int r; va_start(ap, format); vsnprintf(msg, 1024, format, ap); if(config.global->debug >= level) { r = fprintf(stderr, "[BadWM DEBUG%d]: %s:%d in %s(): %s", level, file, line, function, msg); return r; } else { return 0; } } // NEW int baddebug(const char *file, int line, const char *function, int level, const char *format, ...) { va_list ap; char msg[1024]; int r; if(config.global->debug < level) return 0; /* here is the change */ va_start(ap, format); vsnprintf(msg, 1024, format, ap); r = fprintf(stderr, "[BadWM DEBUG%d]: %s:%d in %s(): %s", level, file, line, function, msg); return r; } 5) I think that this version is changing position of new windows even if they wanted to set position themselv. 6) I wrote patch for detecting borderless windows - I didn't like border around XMMS I hope I haven't forgotten anything for it :-) It work with motif hints. We need to add some code a) in BadWM.h we need to add: around line 160: extern Atom xa_motif_wm_hints; /* used for deciding about border of window*/ around 180: under section client.c int wm_border(Client *c); b) In main.c around 43: Atom xa_motif_wm_hints; /* motif atom for border size*/ around 170: xa_motif_wm_hints = XInternAtom(dpy, "_MOTIF_WM_HINTS", False); c) new.c line 99: old: c->border = opt_bw; c->border = wm_border(c); d) client.c Add function: int wm_border(Client *c) { unsigned long n; unsigned long *hints; int border = opt_bw; /* default border */ hints = __wm_get_data(c->window, xa_motif_wm_hints, &n); /* flags == hints[0]; functions == hints[1]; decorations == hints[2]; */ if (hints && n >= 3 && hints[2] == 0 ) border = 0; /* no border */ bad_debug(1, "Border size == %d\n", border); return border; } And we need to upgrade functions from client.c static long * _g_wm_state(const Window win, const Atom where) static int __wm_state(const Window win, const Atom where) I suggest rename function _g_wm_state to __wm_get_data /* extracts data about window using XGetWindowProperty from X */ static long * __wm_get_data(const Window win, const Atom property, unsigned long *n ) { Atom real_type; int real_format; unsigned long extra; unsigned char *data; if ((XGetWindowProperty(dpy, win, property, 0L, 2000L, False, AnyPropertyType , &real_type, &real_format, n, &extra, &data) == Success) && *n) { return (l0ong *)data; } return NULL; } static int __wm_state(const Window win, const Atom where) { long *data, state = WithdrawnState; unsigned long n; data = __wm_get_data(win, where, &n); if (data) { state = *data; setmouse(newc->window, newc->width/2, newc->height/2); XFree(data); } return state; } 7) As there may be windows without borders it may be a good idea to add to screen.c to function next on line aroun 415: // old if ( newc ) { /* focusing new window */ unhide(newc,RAISE); focus_client(newc); // new if ( newc ) { /* focusing new window */ unhide(newc,RAISE); focus_client(newc); /*this*/ setmouse(newc->window, newc->width/2, newc->height/2); -> When "KEY" tabbing it is hard to find which windows is active withou borders :-) Maybe it could be as an option. That is all :-) Berny PS: Sorry about my english :-) |
From: Alexander K. <god...@bk...> - 2004-09-15 13:23:02
|
Ok, this is working fine: just change the line "if ( newc->vdesk == vdesk || ...STICKY ) break;" to "if ( newc->vdesk == vdesk ) break;" screen.c: 408 if ( newc->vdesk == vdesk ) break; -- Best Regards, Alexander Kremer. |
From: Alexander K. <god...@bk...> - 2004-09-15 12:38:06
|
On Wed, Sep 15, 2004 at 09:55:49AM +0200, Robert Annessi wrote: > Alexander Kremer wrote: > >Hi all :) > > > >The default value of keys::term is Enter -> should be Return. > > > > [x] fixed. > > thanks. (: > > bye, > Robert Hi. Ok, no problem :) Robert, we really should do like you said in icq. i mean unset the ALT+TAB access to STICKY windows. -- Best Regards, Alexander Kremer. |
From: Robert A. <ro...@an...> - 2004-09-15 07:56:05
|
Alexander Kremer wrote: > Hi all :) > > The default value of keys::term is Enter -> should be Return. > [x] fixed. thanks. (: bye, Robert |
From: Alexander K. <god...@bk...> - 2004-09-13 10:47:12
|
Hi all :) The default value of keys::term is Enter -> should be Return. -- Best Regards, Alexander Kremer. |
From: Robert A. <ro...@an...> - 2004-09-12 17:48:48
|
Alexander Kremer wrote: > heh, hi all. > > BadWM 0.1.0 pre2 is nice :) > > Why making new config system? why not just using the old one? > Debug - great. > > Now, i had a little time for badwm last 3 days - i made some code for the old config system: > stickyapp = blabla (Adds an STICKY app on startup (may be implemented in [startup] section in the new config sys)) > rootcmd = blabla (Just executes a app, for example it's usefull for "bsetbg ~/pics/bla.png" or "bsetroot -solid color") > > I hope someone who made the new config system will implement this REALLY usefull config options. > > Also i would like to have a slit or just a config option like > startapp [x][y] AppCpmmand > To start the app at the given x and y cords. > > Please reply to this mail as soon as posible. if you have a plan like WHO is doing WHAT at the moment, so i dont have to code useless tonns of code anymore :) > Hi, unfortunatly two config systems were done at the same time, so I had to decide which one to use. /: The startup stuff sounds nice. What about adding "vdesk" to the startup config option? startapp [x] [y] [vdesk] command (x,y and vdesk are optional) So people can start eg. some shells on the first vdesk, a browser on the second vdesk. a mail client on the third ... ) at startup. bye, Robert |
From: Alexander K. <god...@bk...> - 2004-09-11 18:36:19
|
heh, hi all. BadWM 0.1.0 pre2 is nice :) Why making new config system? why not just using the old one? Debug - great. Now, i had a little time for badwm last 3 days - i made some code for the old config system: stickyapp = blabla (Adds an STICKY app on startup (may be implemented in [startup] section in the new config sys)) rootcmd = blabla (Just executes a app, for example it's usefull for "bsetbg ~/pics/bla.png" or "bsetroot -solid color") I hope someone who made the new config system will implement this REALLY usefull config options. Also i would like to have a slit or just a config option like startapp [x][y] AppCpmmand To start the app at the given x and y cords. Please reply to this mail as soon as posible. if you have a plan like WHO is doing WHAT at the moment, so i dont have to code useless tonns of code anymore :) -- Best Regards, Alexander Kremer. |
From: Robert A. <ro...@an...> - 2004-09-11 09:40:18
|
Hi, This is the BadWM-0.1.0 prerelease2. You can get it at http://badwm.sourceforge.net/pre/BadWM-0.1.0-pre2.tar.gz . Most noticeable changes are: -) metakey changed from the windows-key back to the left <ALT> key. This is not the best solution, but the metakey is not configureable at the moment. So people without a windows key can´t use it. Beside that I had a problem with xorg and mozilla based applications (the AltGr key didn´t work within firefox and thunderbird). So this should be reimplemented. -) config file support - yeah finally (: It should be well documented in the BadWMrc manpage. (config.c) -) new debugging system adds a new function bad_debug (debug.c). You need to compile BadWM with ./configure --enable-debug . Then you can run BadWM with -d5 to get the debugging output. -) Windows can be moved between vdesks. Just move the window over the left/right edge to change the vdesk one down/up - thanks berny. But there are many more changes... Complete changelog: Changes in 0.1.0-pre2 (11/09/2004) - config file support (cappa,godexsoft,ra,dfx) - new debug system implemented (cappa) - added configureable resize/lower mouse button (ra) - completely rewrote spawn() (cappa,dfx) - new command line arguments (cappa) - changed amount of virtual desktops to 10 (berny) - windows can be moved between vdesks when dragged (berny) - added solid window moving and resizing from evilwm (berny) - added manpage and other docs (ra,gem) - changed metakey to left ALT key (ra) - many small changes (cappa,ra,godexsoft,berny) - removed one pixel distance when snapping - needs fixing (ra) - removed "jumpy mouse" (ra) Don´t hesitate to give feedback. bye, Robert |