changed default tag, allowing writing /def/tag

This commit is contained in:
Anselm R. Garbe 2006-03-06 16:35:07 +01:00
parent 19d6272285
commit 17a12e5c5d
7 changed files with 44 additions and 29 deletions

View File

@ -114,8 +114,11 @@ void
attach_toarea(Area *a, Client *c)
{
static unsigned short id = 1;
Frame *f = cext_emallocz(sizeof(Frame));
Frame *f;
if(is_clientof(a->tag, c))
return;
f = cext_emallocz(sizeof(Frame));
f->id = id++;
f->area = a;
f->client = c;

View File

@ -332,7 +332,7 @@ attach_client(Client *c)
{
Tag *t;
if(!ntag)
t = alloc_tag("nil");
t = alloc_tag(def.tag);
else
t = tag[sel];

View File

@ -38,6 +38,7 @@ static char Enocommand[] = "command not supported";
* /def/font FsFfont xlib font name
* /def/selcolors FsFselcolors sel color
* /def/normcolors FsFnormcolors normal colors
* /def/tag FsFtag default tag
* /keys/ FsDkeys
* /keys/foo FsFkey
* /tags/ FsDtags
@ -279,10 +280,12 @@ name2type(char *name, unsigned char dir_type)
return FsFdata;
if(!strncmp(name, "mode", 5))
return FsFmode;
if(!strncmp(name, "tag", 4))
return FsFtag;
if(name2key(name))
return FsFkey;
if(has_ctag(name))
return FsFtags;
return FsFtag;
if(!strncmp(name, "sel", 4))
goto dyndir;
i = (unsigned short) cext_strtonum(name, 0, 0xffff, &err);
@ -585,16 +588,14 @@ type2stat(Stat *stat, char *wname, Qid *dir)
return mkstat(stat, dir, wname, strlen(f->client->name), DMREAD);
break;
case FsFtags:
switch(dir_type) {
case FsDclient:
f = tag[dir_i1]->area[dir_i2]->frame[dir_i3];
return mkstat(stat, dir, wname, strlen(f->client->tags), DMREAD | DMWRITE);
break;
case FsDtags:
return mkstat(stat, dir, wname, 0, 0);
break;
}
break;
f = tag[dir_i1]->area[dir_i2]->frame[dir_i3];
return mkstat(stat, dir, wname, strlen(f->client->tags), DMREAD | DMWRITE);
break;
case FsFtag:
if(dir_type == FsDdef)
return mkstat(stat, dir, wname, strlen(def.tag), DMREAD | DMWRITE);
return mkstat(stat, dir, wname, 0, 0);
break;
case FsFkey:
return mkstat(stat, dir, wname, 0, DMWRITE);
break;
@ -872,6 +873,8 @@ xread(IXPConn *c, Fcall *fcall)
p = ixp_enc_stat(p, &stat);
fcall->count += type2stat(&stat, "font", &m->qid);
p = ixp_enc_stat(p, &stat);
fcall->count += type2stat(&stat, "tag", &m->qid);
p = ixp_enc_stat(p, &stat);
break;
case FsDws:
fcall->count = type2stat(&stat, "ctl", &m->qid);
@ -966,6 +969,10 @@ xread(IXPConn *c, Fcall *fcall)
if((fcall->count = strlen(label[i1]->colstr)))
memcpy(p, label[i1]->colstr, fcall->count);
break;
case FsFtag:
if((fcall->count = strlen(def.tag)))
memcpy(p, def.tag, fcall->count);
break;
case FsFselcolors:
if((fcall->count = strlen(def.selcolor)))
memcpy(p, def.selcolor, fcall->count);
@ -1143,6 +1150,10 @@ xwrite(IXPConn *c, Fcall *fcall)
blitz_loadcolor(dpy, screen, label[i1]->colstr, &label[i1]->color);
draw_bar();
break;
case FsFtag:
memcpy(def.tag, fcall->data, fcall->count);
def.tag[fcall->count] = 0;
break;
case FsFselcolors:
if((fcall->count != 23)
|| (fcall->data[0] != '#') || (fcall->data[8] != '#')

View File

@ -75,8 +75,8 @@ focus_tag(Tag *t)
sel = pi;
px = sel * rect.width;
/* gives all(!) clients proper geometry (for use of different tagrs) */
for(i = 0; i < nclient; i++) {
/* gives all(!) clients proper geometry (for use of different tags) */
for(i = 0; i < nclient; i++)
if(client[i]->frame) {
Frame *f = client[i]->frame;
pi = tag2index(f->area->tag);
@ -84,7 +84,6 @@ focus_tag(Tag *t)
if(f->area->tag == t)
draw_client(client[i]);
}
}
snprintf(buf, sizeof(buf), "WS %s\n", t->name);
write_event(buf);
XChangeProperty(dpy, root, net_atom[NetSelWS], XA_CARDINAL,
@ -148,7 +147,7 @@ get_tag(char *name)
t = alloc_tag(name);
for(i = 0; i < nclient; i++)
if(strstr(client[i]->tags, name))
if(!is_clientof(t, client[i]) && strstr(client[i]->tags, name))
attach_totag(t, client[i]);
return t;
}
@ -195,7 +194,6 @@ update_ctags()
char buf[256];
char *tags[128];
return;
for(i = 0; i < nctag; i++) {
Bool exists = False;
for(j = 0; j < nclient; j++)

View File

@ -324,6 +324,7 @@ main(int argc, char *argv[])
def.font = strdup(BLITZ_FONT);
def.border = DEF_BORDER;
def.snap = DEF_SNAP;
cext_strlcpy(def.tag, "1", sizeof(def.tag));
cext_strlcpy(def.selcolor, BLITZ_SELCOLORS, sizeof(def.selcolor));
blitz_loadcolor(dpy, screen, def.selcolor, &def.sel);
cext_strlcpy(def.normcolor, BLITZ_NORMCOLORS, sizeof(def.normcolor));

View File

@ -75,6 +75,7 @@ enum {
FsFctl,
FsFname,
FsFtags,
FsFtag,
FsFmode
};
@ -90,6 +91,15 @@ typedef struct Area Area;
typedef struct Frame Frame;
typedef struct Client Client;
struct Tag {
char name[256];
unsigned short id;
Area **area;
unsigned int areasz;
unsigned int narea;
unsigned int sel;
};
struct Area {
unsigned short id;
Frame **frame;
@ -101,15 +111,6 @@ struct Area {
XRectangle rect;
};
struct Tag {
char name[256];
unsigned short id;
Area **area;
unsigned int areasz;
unsigned int narea;
unsigned int sel;
};
struct Frame {
Area *area;
unsigned short id;
@ -154,6 +155,7 @@ typedef struct {
typedef struct {
char selcolor[24];
char normcolor[24];
char tag[256];
char *font;
Color sel;
Color norm;

View File

@ -40,7 +40,7 @@ do
done
xwrite /bar/new/colors $WMII_NORMCOLORS
xwrite /bar/new/colors $WMII_SELCOLORS
xwrite /bar/0/data nil
xwrite /bar/0/data 1
xwrite /bar/expand 1
# MISC