mirror of
https://github.com/0intro/wmii
synced 2025-02-16 22:35:20 +03:00
changed default tag, allowing writing /def/tag
This commit is contained in:
parent
19d6272285
commit
17a12e5c5d
@ -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;
|
||||
|
@ -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];
|
||||
|
||||
|
33
cmd/wm/fs.c
33
cmd/wm/fs.c
@ -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] != '#')
|
||||
|
@ -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++)
|
||||
|
@ -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));
|
||||
|
20
cmd/wm/wm.h
20
cmd/wm/wm.h
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user