rename last jdwm to awesome and make config a little more robust

This commit is contained in:
Julien Danjou 2007-09-10 16:11:57 +02:00
parent 0f4fbc51cc
commit baa1e422fe
15 changed files with 127 additions and 93 deletions

View File

@ -29,8 +29,8 @@
* To understand everything else, start reading main.c:main(). * To understand everything else, start reading main.c:main().
*/ */
#ifndef JDWM_JDWM_H #ifndef AWESOME_AWESOME_H
#define JDWM_JDWM_H #define AWESOME_AWESOME_H
#include "config.h" #include "config.h"

View File

@ -312,7 +312,7 @@ loadprops(Client * c, int ntags)
prop = p_new(char, ntags + 2); prop = p_new(char, ntags + 2);
if(gettextprop(c->display, c->win, JDWMPROPS_ATOM(c->display), prop, ntags + 2)) if(gettextprop(c->display, c->win, AWESOMEPROPS_ATOM(c->display), prop, ntags + 2))
{ {
for(i = 0; i < ntags && prop[i]; i++) for(i = 0; i < ntags && prop[i]; i++)
if((c->tags[i] = prop[i] == '1')) if((c->tags[i] = prop[i] == '1'))
@ -511,7 +511,7 @@ saveprops(Client * c, int ntags)
prop[++i] = '\0'; prop[++i] = '\0';
XChangeProperty(c->display, c->win, JDWMPROPS_ATOM(c->display), XA_STRING, 8, XChangeProperty(c->display, c->win, AWESOMEPROPS_ATOM(c->display), XA_STRING, 8,
PropModeReplace, (unsigned char *) prop, i); PropModeReplace, (unsigned char *) prop, i);
p_delete(&prop); p_delete(&prop);

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_CLIENT_H #ifndef AWESOME_CLIENT_H
#define JDWM_CLIENT_H #define AWESOME_CLIENT_H
/* mask shorthands, used in event.c and client.c */ /* mask shorthands, used in event.c and client.c */
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) #define BUTTONMASK (ButtonPressMask | ButtonReleaseMask)

160
config.c
View File

@ -167,6 +167,9 @@ set_default_config(awesome_config *awesomeconf)
strcpy(awesomeconf->statustext, "awesome-" VERSION); strcpy(awesomeconf->statustext, "awesome-" VERSION);
awesomeconf->statusbar.width = 0; awesomeconf->statusbar.width = 0;
awesomeconf->statusbar.height = 0; awesomeconf->statusbar.height = 0;
awesomeconf->opacity_unfocused = -1;
awesomeconf->nkeys = 0;
awesomeconf->nrules = 0;
} }
/** Parse configuration file and initialize some stuff /** Parse configuration file and initialize some stuff
@ -181,59 +184,70 @@ parse_config(Display * disp, int scr, DC * drawcontext, awesome_config *awesomec
config_setting_t *conflayouts, *confsublayouts; config_setting_t *conflayouts, *confsublayouts;
config_setting_t *confrules, *confsubrules; config_setting_t *confrules, *confsubrules;
config_setting_t *confkeys, *confsubkeys, *confkeysmasks, *confkeymaskelem; config_setting_t *confkeys, *confsubkeys, *confkeysmasks, *confkeymaskelem;
int i, j; int i = 0, j = 0;
double f = 0.0;
const char *tmp, *homedir; const char *tmp, *homedir;
char *confpath; char *confpath;
KeySym tmp_key;
set_default_config(awesomeconf); set_default_config(awesomeconf);
homedir = getenv("HOME"); homedir = getenv("HOME");
confpath = p_new(char, strlen(homedir) + strlen(JDWM_CONFIG_FILE) + 2); confpath = p_new(char, strlen(homedir) + strlen(AWESOME_CONFIG_FILE) + 2);
strcpy(confpath, homedir); strcpy(confpath, homedir);
strcat(confpath, "/"); strcat(confpath, "/");
strcat(confpath, JDWM_CONFIG_FILE); strcat(confpath, AWESOME_CONFIG_FILE);
config_init(&awesomelibconf); config_init(&awesomelibconf);
if(config_read_file(&awesomelibconf, confpath) == CONFIG_FALSE) if(config_read_file(&awesomelibconf, confpath) == CONFIG_FALSE)
eprint("error parsing configuration file at line %d: %s\n", eprint("awesome: error parsing configuration file at line %d: %s\n",
config_error_line(&awesomelibconf), config_error_text(&awesomelibconf)); config_error_line(&awesomelibconf), config_error_text(&awesomelibconf));
/* font */ /* font */
initfont(config_lookup_string(&awesomelibconf, "awesome.font"), disp, drawcontext); tmp = config_lookup_string(&awesomelibconf, "awesome.font");
initfont(tmp ? tmp : "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*", disp, drawcontext);
/* layouts */ /* layouts */
conflayouts = config_lookup(&awesomelibconf, "awesome.layouts"); conflayouts = config_lookup(&awesomelibconf, "awesome.layouts");
if(!conflayouts) if(!conflayouts)
eprint("layouts not found in configuration file\n"); fprintf(stderr, "layouts not found in configuration file\n");
else
awesomeconf->nlayouts = config_setting_length(conflayouts);
awesomeconf->layouts = p_new(Layout, awesomeconf->nlayouts + 1);
for(i = 0; (confsublayouts = config_setting_get_elem(conflayouts, i)); i++)
{ {
awesomeconf->layouts[i].symbol = config_setting_get_string_elem(confsublayouts, 0); awesomeconf->nlayouts = config_setting_length(conflayouts);
awesomeconf->layouts[i].arrange = awesomeconf->layouts = p_new(Layout, awesomeconf->nlayouts + 1);
name_func_lookup(config_setting_get_string_elem(confsublayouts, 1), LayoutsList); for(i = 0; (confsublayouts = config_setting_get_elem(conflayouts, i)); i++)
if(!awesomeconf->layouts[i].arrange) {
eprint("unknown layout in configuration file\n"); awesomeconf->layouts[i].arrange =
name_func_lookup(config_setting_get_string_elem(confsublayouts, 1), LayoutsList);
if(!awesomeconf->layouts[i].arrange)
{
fprintf(stderr, "awesome: unknown layout #%d in configuration file\n", i);
awesomeconf->layouts[i].symbol = NULL;
continue;
}
awesomeconf->layouts[i].symbol = config_setting_get_string_elem(confsublayouts, 0);
j = textw(awesomeconf->layouts[i].symbol); j = textw(awesomeconf->layouts[i].symbol);
if(j > awesomeconf->statusbar.width) if(j > awesomeconf->statusbar.width)
awesomeconf->statusbar.width = j; awesomeconf->statusbar.width = j;
}
awesomeconf->layouts[i].symbol = NULL;
awesomeconf->layouts[i].arrange = NULL;
} }
awesomeconf->layouts[i].symbol = NULL;
awesomeconf->layouts[i].arrange = NULL;
if(!awesomeconf->layouts[0].arrange)
eprint("awesome: fatal: no default layout available\n");
/** \todo put this in set_default_layout */ /** \todo put this in set_default_layout */
awesomeconf->current_layout = awesomeconf->layouts; awesomeconf->current_layout = awesomeconf->layouts;
/* tags */ /* tags */
conftags = config_lookup(&awesomelibconf, "awesome.tags"); conftags = config_lookup(&awesomelibconf, "awesome.tags");
if(!conftags) if(!conftags)
eprint("tags not found in configuration file\n"); eprint("awesome: fatal: no tags found in configuration file\n");
awesomeconf->ntags = config_setting_length(conftags); awesomeconf->ntags = config_setting_length(conftags);
awesomeconf->tags = p_new(const char *, awesomeconf->ntags); awesomeconf->tags = p_new(const char *, awesomeconf->ntags);
awesomeconf->selected_tags = p_new(Bool, awesomeconf->ntags); awesomeconf->selected_tags = p_new(Bool, awesomeconf->ntags);
@ -257,22 +271,25 @@ parse_config(Display * disp, int scr, DC * drawcontext, awesome_config *awesomec
confrules = config_lookup(&awesomelibconf, "awesome.rules"); confrules = config_lookup(&awesomelibconf, "awesome.rules");
if(!confrules) if(!confrules)
eprint("rules not found in configuration file\n"); fprintf(stderr, "awesome: no rules found in configuration file\n");
else
awesomeconf->nrules = config_setting_length(confrules);
awesomeconf->rules = p_new(Rule, awesomeconf->nrules);
for(i = 0; (confsubrules = config_setting_get_elem(confrules, i)); i++)
{ {
awesomeconf->rules[i].prop = config_setting_get_string(config_setting_get_member(confsubrules, "name")); awesomeconf->nrules = config_setting_length(confrules);
awesomeconf->rules[i].tags = config_setting_get_string(config_setting_get_member(confsubrules, "tags")); awesomeconf->rules = p_new(Rule, awesomeconf->nrules);
if(awesomeconf->rules[i].tags && !strlen(awesomeconf->rules[i].tags)) for(i = 0; (confsubrules = config_setting_get_elem(confrules, i)); i++)
awesomeconf->rules[i].tags = NULL; {
awesomeconf->rules[i].isfloating = awesomeconf->rules[i].prop = config_setting_get_string(config_setting_get_member(confsubrules, "name"));
config_setting_get_bool(config_setting_get_member(confsubrules, "float")); awesomeconf->rules[i].tags = config_setting_get_string(config_setting_get_member(confsubrules, "tags"));
if(awesomeconf->rules[i].tags && !strlen(awesomeconf->rules[i].tags))
awesomeconf->rules[i].tags = NULL;
awesomeconf->rules[i].isfloating =
config_setting_get_bool(config_setting_get_member(confsubrules, "float"));
}
} }
/* modkey */ /* modkey */
awesomeconf->modkey = key_mask_lookup(config_lookup_string(&awesomelibconf, "awesome.modkey")); tmp_key = key_mask_lookup(config_lookup_string(&awesomelibconf, "awesome.modkey"));
awesomeconf->modkey = tmp_key ? tmp_key : Mod1Mask;
/* find numlock mask */ /* find numlock mask */
awesomeconf->numlockmask = get_numlockmask(disp); awesomeconf->numlockmask = get_numlockmask(disp);
@ -281,31 +298,36 @@ parse_config(Display * disp, int scr, DC * drawcontext, awesome_config *awesomec
confkeys = config_lookup(&awesomelibconf, "awesome.keys"); confkeys = config_lookup(&awesomelibconf, "awesome.keys");
if(!confkeys) if(!confkeys)
eprint("keys not found in configuration file\n"); fprintf(stderr, "awesome: no keys found in configuration file\n");
else
awesomeconf->nkeys = config_setting_length(confkeys);
awesomeconf->keys = p_new(Key, awesomeconf->nkeys);
for(i = 0; (confsubkeys = config_setting_get_elem(confkeys, i)); i++)
{ {
confkeysmasks = config_setting_get_elem(confsubkeys, 0); awesomeconf->nkeys = config_setting_length(confkeys);
for(j = 0; (confkeymaskelem = config_setting_get_elem(confkeysmasks, j)); j++) awesomeconf->keys = p_new(Key, awesomeconf->nkeys);
awesomeconf->keys[i].mod |= key_mask_lookup(config_setting_get_string(confkeymaskelem));
awesomeconf->keys[i].keysym = XStringToKeysym(config_setting_get_string_elem(confsubkeys, 1)); for(i = 0; (confsubkeys = config_setting_get_elem(confkeys, i)); i++)
awesomeconf->keys[i].func = {
name_func_lookup(config_setting_get_string_elem(confsubkeys, 2), KeyfuncList); confkeysmasks = config_setting_get_elem(confsubkeys, 0);
awesomeconf->keys[i].arg = config_setting_get_string_elem(confsubkeys, 3); for(j = 0; (confkeymaskelem = config_setting_get_elem(confkeysmasks, j)); j++)
awesomeconf->keys[i].mod |= key_mask_lookup(config_setting_get_string(confkeymaskelem));
awesomeconf->keys[i].keysym = XStringToKeysym(config_setting_get_string_elem(confsubkeys, 1));
awesomeconf->keys[i].func =
name_func_lookup(config_setting_get_string_elem(confsubkeys, 2), KeyfuncList);
awesomeconf->keys[i].arg = config_setting_get_string_elem(confsubkeys, 3);
}
} }
/* barpos */ /* barpos */
tmp = config_lookup_string(&awesomelibconf, "awesome.barpos"); tmp = config_lookup_string(&awesomelibconf, "awesome.barpos");
if(!strncmp(tmp, "BarTop", 6)) if(tmp)
{
if(!strncmp(tmp, "BarOff", 6))
awesomeconf->statusbar_default_position = BarOff;
else if(!strncmp(tmp, "BarBot", 6))
awesomeconf->statusbar_default_position = BarBot;
}
else
awesomeconf->statusbar_default_position = BarTop; awesomeconf->statusbar_default_position = BarTop;
else if(!strncmp(tmp, "BarBot", 6))
awesomeconf->statusbar_default_position = BarBot;
else if(!strncmp(tmp, "BarOff", 6))
awesomeconf->statusbar_default_position = BarOff;
awesomeconf->statusbar.position = awesomeconf->statusbar_default_position; awesomeconf->statusbar.position = awesomeconf->statusbar_default_position;
@ -318,26 +340,38 @@ parse_config(Display * disp, int scr, DC * drawcontext, awesome_config *awesomec
awesomeconf->opacity_unfocused = -1; awesomeconf->opacity_unfocused = -1;
/* snap */ /* snap */
awesomeconf->snap = config_lookup_int(&awesomelibconf, "awesome.snap"); i = config_lookup_int(&awesomelibconf, "awesome.snap");
awesomeconf->snap = i ? i : 8;
/* nmaster */ /* nmaster */
awesomeconf->nmaster = config_lookup_int(&awesomelibconf, "awesome.nmaster"); i = config_lookup_int(&awesomelibconf, "awesome.nmaster");
awesomeconf->nmaster = i ? i : 1;
/* mwfact */ /* mwfact */
awesomeconf->mwfact = config_lookup_float(&awesomelibconf, "awesome.mwfact"); f = config_lookup_float(&awesomelibconf, "awesome.mwfact");
awesomeconf->mwfact = f ? f : 0.6;
/* resize_hints */ /* resize_hints */
awesomeconf->resize_hints = config_lookup_float(&awesomelibconf, "awesome.resize_hints"); awesomeconf->resize_hints = config_lookup_float(&awesomelibconf, "awesome.resize_hints");
/* colors */ /* colors */
dc.norm[ColBorder] = initcolor(config_lookup_string(&awesomelibconf, "awesome.normal_border_color"), tmp = config_lookup_string(&awesomelibconf, "awesome.normal_border_color");
disp, scr); dc.norm[ColBorder] = initcolor(tmp ? tmp : "#dddddd", disp, scr);
dc.norm[ColBG] = initcolor(config_lookup_string(&awesomelibconf, "awesome.normal_bg_color"), disp, scr);
dc.norm[ColFG] = initcolor(config_lookup_string(&awesomelibconf, "awesome.normal_fg_color"), disp, scr); tmp = config_lookup_string(&awesomelibconf, "awesome.normal_bg_color");
dc.sel[ColBorder] = initcolor(config_lookup_string(&awesomelibconf, "awesome.focus_border_color"), dc.norm[ColBG] = initcolor(tmp ? tmp : "#000000", disp, scr);
disp, scr);
dc.sel[ColBG] = initcolor(config_lookup_string(&awesomelibconf, "awesome.focus_bg_color"), disp, scr); tmp = config_lookup_string(&awesomelibconf, "awesome.normal_fg_color");
dc.sel[ColFG] = initcolor(config_lookup_string(&awesomelibconf, "awesome.focus_fg_color"), disp, scr); dc.norm[ColFG] = initcolor(tmp ? tmp : "#ffffff", disp, scr);
tmp = config_lookup_string(&awesomelibconf, "awesome.focus_border_color");
dc.sel[ColBorder] = initcolor(tmp ? tmp : "#008b8b", disp, scr);
tmp = config_lookup_string(&awesomelibconf, "awesome.focus_bg_color");
dc.sel[ColBG] = initcolor(tmp ? tmp : "#008b8b", disp, scr);
tmp = config_lookup_string(&awesomelibconf, "awesome.focus_fg_color");
dc.sel[ColFG] = initcolor(tmp ? tmp : "#ffffff", disp, scr);
p_delete(&confpath); p_delete(&confpath);
} }

View File

@ -1,9 +1,9 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_CONFIG_H #ifndef AWESOME_CONFIG_H
#define JDWM_CONFIG_H #define AWESOME_CONFIG_H
#define JDWM_CONFIG_FILE ".awesomerc" #define AWESOME_CONFIG_FILE ".awesomerc"
#include <X11/Xlib.h> #include <X11/Xlib.h>

4
draw.h
View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_DRAW_H #ifndef AWESOME_DRAW_H
#define JDWM_DRAW_H #define AWESOME_DRAW_H
#include <string.h> #include <string.h>
#include "config.h" #include "config.h"

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_EVENT_H #ifndef AWESOME_EVENT_H
#define JDWM_EVENT_H #define AWESOME_EVENT_H
#include "config.h" #include "config.h"

View File

@ -79,7 +79,7 @@ loadawesomeprops(Display *disp, awesome_config * awesomeconf)
prop = p_new(char, awesomeconf->ntags + 1); prop = p_new(char, awesomeconf->ntags + 1);
if(gettextprop(disp, DefaultRootWindow(disp), JDWMPROPS_ATOM(disp), prop, awesomeconf->ntags + 1)) if(gettextprop(disp, DefaultRootWindow(disp), AWESOMEPROPS_ATOM(disp), prop, awesomeconf->ntags + 1))
for(i = 0; i < awesomeconf->ntags && prop[i]; i++) for(i = 0; i < awesomeconf->ntags && prop[i]; i++)
awesomeconf->selected_tags[i] = prop[i] == '1'; awesomeconf->selected_tags[i] = prop[i] == '1';
@ -130,7 +130,7 @@ saveawesomeprops(Display *disp, awesome_config *awesomeconf)
prop[i] = awesomeconf->selected_tags[i] ? '1' : '0'; prop[i] = awesomeconf->selected_tags[i] ? '1' : '0';
prop[i] = '\0'; prop[i] = '\0';
XChangeProperty(disp, DefaultRootWindow(disp), XChangeProperty(disp, DefaultRootWindow(disp),
JDWMPROPS_ATOM(disp), XA_STRING, 8, AWESOMEPROPS_ATOM(disp), XA_STRING, 8,
PropModeReplace, (unsigned char *) prop, i); PropModeReplace, (unsigned char *) prop, i);
p_delete(&prop); p_delete(&prop);
} }

View File

@ -1,14 +1,14 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_LAYOUT_H #ifndef AWESOME_LAYOUT_H
#define JDWM_LAYOUT_H #define AWESOME_LAYOUT_H
#include "client.h" #include "client.h"
/** Check if current layout is arranged with a layout */ /** Check if current layout is arranged with a layout */
#define IS_ARRANGE(layout) (layout == awesomeconf->current_layout->arrange) #define IS_ARRANGE(layout) (layout == awesomeconf->current_layout->arrange)
#define JDWMPROPS_ATOM(disp) XInternAtom(disp, "_JDWM_PROPERTIES", False) #define AWESOMEPROPS_ATOM(disp) XInternAtom(disp, "_AWESOME_PROPERTIES", False)
void arrange(Display *, awesome_config *); /* arranges all windows depending on the layout in use */ void arrange(Display *, awesome_config *); /* arranges all windows depending on the layout in use */
void restack(Display *, awesome_config *); /* restores z layers of all clients */ void restack(Display *, awesome_config *); /* restores z layers of all clients */

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_FLOATING_H #ifndef AWESOME_FLOATING_H
#define JDWM_FLOATING_H #define AWESOME_FLOATING_H
void floating(Display *, awesome_config *); /* floating layout */ void floating(Display *, awesome_config *); /* floating layout */

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_GRID_H #ifndef AWESOME_GRID_H
#define JDWM_GRID_H #define AWESOME_GRID_H
#include "config.h" #include "config.h"

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_SPIRAL_H #ifndef AWESOME_SPIRAL_H
#define JDWM_SPIRAL_H #define AWESOME_SPIRAL_H
void dwindle(Display *, awesome_config *); /* dwindle windows */ void dwindle(Display *, awesome_config *); /* dwindle windows */
void spiral(Display *, awesome_config *); /* spiral windows */ void spiral(Display *, awesome_config *); /* spiral windows */

View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_TILE_H #ifndef AWESOME_TILE_H
#define JDWM_TILE_H #define AWESOME_TILE_H
#include <config.h> #include <config.h>

4
tag.h
View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_TAG_H #ifndef AWESOME_TAG_H
#define JDWM_TAG_H #define AWESOME_TAG_H
#include <regex.h> #include <regex.h>
#include "client.h" #include "client.h"

4
util.h
View File

@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */ /* See LICENSE file for copyright and license details. */
#ifndef JDWM_MEM_H #ifndef AWESOME_MEM_H
#define JDWM_MEM_H #define AWESOME_MEM_H
#include "config.h" #include "config.h"