Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -ruN src-old/bubble.c src/bubble.c
- --- src-old/bubble.c 2009-10-20 11:48:09.000000000 +0300
- +++ src/bubble.c 2009-12-05 01:13:41.000000000 +0200
- @@ -122,25 +122,25 @@
- // FIXME: this is in class Defaults already, but not yet hooked up so for the
- // moment we use the macros here, these values reflect the visual-guideline
- // for jaunty notifications
- -#define TEXT_TITLE_COLOR_R 1.0f
- -#define TEXT_TITLE_COLOR_G 1.0f
- -#define TEXT_TITLE_COLOR_B 1.0f
- -#define TEXT_TITLE_COLOR_A 1.0f
- -
- -#define TEXT_BODY_COLOR_R 0.91f
- -#define TEXT_BODY_COLOR_G 0.91f
- -#define TEXT_BODY_COLOR_B 0.91f
- -#define TEXT_BODY_COLOR_A 1.0f
- +float TEXT_TITLE_COLOR_R = 1.0f;
- +float TEXT_TITLE_COLOR_G = 1.0f;
- +float TEXT_TITLE_COLOR_B = 1.0f;
- +float TEXT_TITLE_COLOR_A = 1.0f;
- +
- +float TEXT_BODY_COLOR_R = 0.91f;
- +float TEXT_BODY_COLOR_G = 0.91f;
- +float TEXT_BODY_COLOR_B = 0.91f;
- +float TEXT_BODY_COLOR_A = 1.0f;
- #define TEXT_SHADOW_COLOR_R 0.0f
- #define TEXT_SHADOW_COLOR_G 0.0f
- #define TEXT_SHADOW_COLOR_B 0.0f
- -#define TEXT_SHADOW_COLOR_A 1.0f
- +float TEXT_SHADOW_COLOR_A = 1.0f;
- -#define BUBBLE_BG_COLOR_R 0.15f
- -#define BUBBLE_BG_COLOR_G 0.15f
- -#define BUBBLE_BG_COLOR_B 0.15f
- -#define BUBBLE_BG_COLOR_A 0.9f
- +float BUBBLE_BG_COLOR_R = 0.07f;
- +float BUBBLE_BG_COLOR_G = 0.07f;
- +float BUBBLE_BG_COLOR_B = 0.07f;
- +float BUBBLE_BG_COLOR_A = 0.9f;
- #define INDICATOR_UNLIT_R 1.0f
- #define INDICATOR_UNLIT_G 1.0f
- diff -ruN src-old/defaults.c src/defaults.c
- --- src-old/defaults.c 2009-10-20 11:29:52.000000000 +0300
- +++ src/defaults.c 2009-12-04 04:46:41.000000000 +0200
- @@ -114,40 +114,41 @@
- /* these values are interpreted as em-measurements and do comply to the
- * visual guide for jaunty-notifications */
- #define DEFAULT_DESKTOP_BOTTOM_GAP 6.0f
- -#define DEFAULT_BUBBLE_WIDTH 24.0f
- -#define DEFAULT_BUBBLE_MIN_HEIGHT 5.0f
- -#define DEFAULT_BUBBLE_MAX_HEIGHT 12.2f
- -#define DEFAULT_BUBBLE_VERT_GAP 0.5f
- -#define DEFAULT_BUBBLE_HORZ_GAP 0.5f
- +float DEFAULT_BUBBLE_WIDTH = 24.0f;
- +float DEFAULT_BUBBLE_MIN_HEIGHT = 5.0f;
- +float DEFAULT_BUBBLE_MAX_HEIGHT = 12.2f;
- +float DEFAULT_BUBBLE_VERT_GAP = 0.5f;
- +float DEFAULT_BUBBLE_HORZ_GAP = 0.5f;
- #define DEFAULT_BUBBLE_SHADOW_SIZE 0.7f
- #define DEFAULT_BUBBLE_SHADOW_COLOR "#000000"
- #define DEFAULT_BUBBLE_BG_COLOR "#131313"
- #define DEFAULT_BUBBLE_BG_OPACITY "#cc"
- #define DEFAULT_BUBBLE_HOVER_OPACITY "#66"
- -#define DEFAULT_BUBBLE_CORNER_RADIUS 0.375f
- +float DEFAULT_BUBBLE_CORNER_RADIUS = 0.375f;
- #define DEFAULT_CONTENT_SHADOW_SIZE 0.125f
- #define DEFAULT_CONTENT_SHADOW_COLOR "#000000"
- -#define DEFAULT_MARGIN_SIZE 1.0f
- -#define DEFAULT_ICON_SIZE 3.0f
- -#define DEFAULT_GAUGE_SIZE 0.625f
- -#define DEFAULT_GAUGE_OUTLINE_WIDTH 0.125f
- +float DEFAULT_MARGIN_SIZE = 1.0f;
- +float DEFAULT_ICON_SIZE = 3.0f;
- +float DEFAULT_GAUGE_SIZE = 0.625f;
- +#define DEFAULT_GAUGE_OUTLINE_WIDTH 0.125f
- #define DEFAULT_TEXT_FONT_FACE "Sans"
- #define DEFAULT_TEXT_TITLE_COLOR "#ffffff"
- -#define DEFAULT_TEXT_TITLE_WEIGHT TEXT_WEIGHT_BOLD
- -#define DEFAULT_TEXT_TITLE_SIZE 1.0f
- +short DEFAULT_TEXT_TITLE_WEIGHT = TEXT_WEIGHT_BOLD;
- +float DEFAULT_TEXT_TITLE_SIZE = 1.0f;
- #define DEFAULT_TEXT_BODY_COLOR "#eaeaea"
- -#define DEFAULT_TEXT_BODY_WEIGHT TEXT_WEIGHT_NORMAL
- -#define DEFAULT_TEXT_BODY_SIZE 0.9f
- +short DEFAULT_TEXT_BODY_WEIGHT = TEXT_WEIGHT_NORMAL;
- +float DEFAULT_TEXT_BODY_SIZE = 0.9f;
- #define DEFAULT_PIXELS_PER_EM 10.0f
- #define DEFAULT_SYSTEM_FONT_SIZE 10.0f
- #define DEFAULT_SCREEN_DPI 96.0f
- #define DEFAULT_GRAVITY GRAVITY_NORTH_EAST
- +short SLOT_ALLOCATION = SLOT_ALLOCATION_DYNAMIC;
- /* these values are interpreted as milliseconds-measurements and do comply to
- * the visual guide for jaunty-notifications */
- -#define DEFAULT_FADE_IN_TIMEOUT 250
- -#define DEFAULT_FADE_OUT_TIMEOUT 1000
- -#define DEFAULT_ON_SCREEN_TIMEOUT 10000
- +float DEFAULT_FADE_IN_TIMEOUT = 250;
- +float DEFAULT_FADE_OUT_TIMEOUT = 1000;
- +float DEFAULT_ON_SCREEN_TIMEOUT = 10000;
- /* GConf-keys to watch */
- #define GCONF_UI_FONT_NAME "/desktop/gnome/interface/font_name"
- @@ -755,7 +756,7 @@
- }
- // use fixed slot-allocation for async. and sync. bubbles
- - self->slot_allocation = SLOT_ALLOCATION_FIXED;
- + self->slot_allocation = SLOT_ALLOCATION;
- }
- static void
- diff -ruN src-old/main.c src/main.c
- --- src-old/main.c 2009-10-20 11:29:52.000000000 +0300
- +++ src/main.c 2009-12-05 01:14:36.000000000 +0200
- @@ -25,6 +25,10 @@
- ** with this program. If not, see <http://www.gnu.org/licenses/>.
- **
- *******************************************************************************/
- +#define _GNU_SOURCE /* getline */
- +#include <unistd.h> /* getuid */
- +#include <pwd.h> /* getpwuid */
- +#include <sys/types.h>
- #include <string.h>
- #include <stdlib.h>
- @@ -39,6 +43,197 @@
- #define ICONS_DIR (DATADIR G_DIR_SEPARATOR_S "notify-osd" G_DIR_SEPARATOR_S "icons")
- +/* begin hack */
- +extern float TEXT_TITLE_COLOR_R;
- +extern float TEXT_TITLE_COLOR_G;
- +extern float TEXT_TITLE_COLOR_B;
- +extern float TEXT_TITLE_COLOR_A;
- +
- +extern float TEXT_BODY_COLOR_R;
- +extern float TEXT_BODY_COLOR_G;
- +extern float TEXT_BODY_COLOR_B;
- +extern float TEXT_BODY_COLOR_A;
- +
- +extern float TEXT_SHADOW_COLOR_A;
- +
- +extern float BUBBLE_BG_COLOR_R;
- +extern float BUBBLE_BG_COLOR_G;
- +extern float BUBBLE_BG_COLOR_B;
- +extern float BUBBLE_BG_COLOR_A;
- +
- +extern float DEFAULT_TEXT_TITLE_SIZE;
- +extern float DEFAULT_TEXT_BODY_SIZE;
- +extern float DEFAULT_ON_SCREEN_TIMEOUT;
- +
- +extern short DEFAULT_TEXT_TITLE_WEIGHT;
- +extern short DEFAULT_TEXT_BODY_WEIGHT;
- +extern short SLOT_ALLOCATION;
- +
- +extern float DEFAULT_MARGIN_SIZE;
- +extern float DEFAULT_BUBBLE_CORNER_RADIUS;
- +extern float DEFAULT_BUBBLE_WIDTH;
- +extern float DEFAULT_BUBBLE_VERT_GAP;
- +extern float DEFAULT_BUBBLE_HORZ_GAP;
- +extern float DEFAULT_ICON_SIZE;
- +extern float DEFAULT_GAUGE_SIZE;
- +
- +void parse_color(unsigned int c, float* r, float* g, float* b)
- +{
- + *b = (float)(c & 0xFF) / (float)(0xFF);
- + c >>= 8;
- + *g = (float)(c & 0xFF) / (float)(0xFF);
- + c >>= 8;
- + *r = (float)(c & 0xFF) / (float)(0xFF);
- +}
- +
- +
- +void load_settings(void)
- +{
- + char file[PATH_MAX];
- + uid_t uid = getuid();
- + const char* settings_file_name = ".notify-osd";
- +
- + struct passwd* pw = getpwuid(uid);
- + if (!pw) {
- + fprintf(stderr,
- + "failed to retrieve home directory. using default settings.\n");
- + return;
- + }
- + /* $HOME/.notify-osd */
- + snprintf(file, sizeof(file), "%s%s%s", pw->pw_dir,
- + G_DIR_SEPARATOR_S, settings_file_name);
- +
- + FILE* fp = fopen(file, "r");
- +
- + if (!fp) {
- + fprintf(stderr, "could not open '%s'. using default settings.\n", file);
- + return;
- +
- + }
- + printf("reading settings from '%s'\n", file);
- +
- + char* buf = NULL;
- + size_t size = 0;
- + char key[32], value[32];
- + float fvalue;
- + unsigned int ivalue;
- +
- + while(getline(&buf, &size, fp) != -1) {
- + if (sscanf(buf, "%31s = %31s", key, value) != 2)
- + continue;
- + if (!strcmp(key, "bubble-background-color") &&
- + sscanf(value, "%x", &ivalue)) {
- +
- + parse_color(ivalue, &BUBBLE_BG_COLOR_R, &BUBBLE_BG_COLOR_G,
- + &BUBBLE_BG_COLOR_B);
- +
- +
- + } else if (!strcmp(key, "bubble-background-opacity") &&
- + sscanf(value, "%f", &fvalue)) {
- +
- + BUBBLE_BG_COLOR_A = fvalue*0.01;
- +
- + } else if (!strcmp(key, "text-title-color") &&
- + sscanf(value, "%x", &ivalue) ) {
- +
- + parse_color(ivalue, &TEXT_TITLE_COLOR_R, &TEXT_TITLE_COLOR_G,
- + &TEXT_TITLE_COLOR_B);
- +
- + } else if (!strcmp(key, "text-title-opacity") &&
- + sscanf(value, "%f", &fvalue) ) {
- +
- + TEXT_TITLE_COLOR_A = fvalue*0.01;
- +
- + } else if (!strcmp(key, "text-body-color") &&
- + sscanf(value, "%x", &ivalue) ) {
- +
- + parse_color(ivalue, &TEXT_BODY_COLOR_R, &TEXT_BODY_COLOR_G,
- + &TEXT_BODY_COLOR_B);
- +
- + } else if (!strcmp(key, "text-body-opacity") &&
- + sscanf(value, "%f", &fvalue) ) {
- +
- + TEXT_BODY_COLOR_A = fvalue*0.01;
- +
- + } else if (!strcmp(key, "text-shadow-opacity") &&
- + sscanf(value, "%f", &fvalue) ) {
- +
- + TEXT_SHADOW_COLOR_A = fvalue*0.01;
- +
- + } else if (!strcmp(key, "text-title-size") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_TEXT_TITLE_SIZE = fvalue*0.01;
- +
- + } else if (!strcmp(key, "text-body-size") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_TEXT_BODY_SIZE = fvalue*0.01;
- +
- + } else if (!strcmp(key, "bubble-expire-timeout") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_ON_SCREEN_TIMEOUT = fvalue*1000;
- +
- + } else if (!strcmp(key, "text-title-weight")) {
- + if (!strcmp(value, "bold")) {
- + DEFAULT_TEXT_TITLE_WEIGHT = 700;
- + } else if (!strcmp(value, "normal")) {
- + DEFAULT_TEXT_TITLE_WEIGHT = 400;
- + } else if (!strcmp(value, "light")) {
- + DEFAULT_TEXT_TITLE_WEIGHT = 300;
- + }
- + } else if (!strcmp(key, "text-body-weight")) {
- + if (!strcmp(value, "bold")) {
- + DEFAULT_TEXT_BODY_WEIGHT = 700;
- + } else if (!strcmp(value, "normal")) {
- + DEFAULT_TEXT_BODY_WEIGHT = 400;
- + } else if (!strcmp(value, "light")) {
- + DEFAULT_TEXT_BODY_WEIGHT = 300;
- + }
- + } else if (!strcmp(key, "text-margin-size") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_MARGIN_SIZE = fvalue*0.1;
- +
- + } else if (!strcmp(key, "bubble-corner-radius") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_BUBBLE_CORNER_RADIUS = fvalue*0.01;
- +
- + } else if (!strcmp(key, "bubble-width") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_BUBBLE_WIDTH = fvalue*0.1;
- +
- + } else if (!strcmp(key, "slot-allocation")) {
- + if (!strcmp(value, "dynamic")) {
- + SLOT_ALLOCATION = SLOT_ALLOCATION_DYNAMIC;
- + } else if (!strcmp(value, "fixed")) {
- + SLOT_ALLOCATION = SLOT_ALLOCATION_FIXED;
- + }
- + } else if (!strcmp(key, "bubble-vertical-gap") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_BUBBLE_VERT_GAP = fvalue*0.1;
- +
- + } else if (!strcmp(key, "bubble-horizontal-gap") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_BUBBLE_HORZ_GAP = fvalue*0.1;
- +
- + } else if (!strcmp(key, "bubble-icon-size") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_ICON_SIZE = fvalue*0.1;
- +
- + } else if (!strcmp(key, "bubble-gauge-size") &&
- + sscanf(value, "%f", &fvalue) ) {
- + DEFAULT_GAUGE_SIZE = fvalue*0.1;
- +
- + }
- +
- + }
- +
- + if (buf) {
- + free(buf);
- + }
- +
- + fclose(fp);
- +}
- +/* end hack */
- +
- int
- main (int argc,
- char** argv)
- @@ -58,6 +253,8 @@
- gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),
- ICONS_DIR);
- + load_settings();
- +
- defaults = defaults_new ();
- observer = observer_new ();
- stack = stack_new (defaults, observer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement