* Copyright (c) 2011-2012 Lawrence Teo <lteo@lteo.net>
* Copyright (c) 2011-2012 Tiago Cunha <tcunha@gmx.com>
* Copyright (c) 2012-2015 David Hill <dhill@mindcry.org>
+ * Copyright (c) 2014-2015 Yuri D'Elia <yuri.delia@eurac.edu>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
int font_adjusted = 0;
unsigned int mod_key = MODKEY;
bool warp_pointer = false;
-unsigned int mouse_button_move = XCB_BUTTON_INDEX_1;
-unsigned int mouse_button_resize = XCB_BUTTON_INDEX_3;
+bool visible_noswap = false;
/* dmenu search */
struct swm_region *search_r;
bool stack_enabled = true;
bool clock_enabled = true;
bool iconic_enabled = false;
+bool maximize_hide_bar = false;
bool urgent_enabled = false;
bool urgent_collapse = false;
char *clock_format = NULL;
#define SWM_ARG_ID_LOWER (106)
#define SWM_ARG_ID_BAR_TOGGLE (110)
#define SWM_ARG_ID_BAR_TOGGLE_WS (111)
+#define SWM_ARG_ID_CYCLERG_MOVE_UP (112)
+#define SWM_ARG_ID_CYCLERG_MOVE_DOWN (113)
char **argv;
};
KF_RG_7,
KF_RG_8,
KF_RG_9,
+ KF_RG_MOVE_NEXT,
+ KF_RG_MOVE_PREV,
KF_RG_NEXT,
KF_RG_PREV,
KF_SCREEN_NEXT,
KF_SEARCH_WIN,
KF_SEARCH_WORKSPACE,
KF_SPAWN_CUSTOM,
+ KF_STACK_BALANCE,
KF_STACK_INC,
KF_STACK_DEC,
KF_STACK_RESET,
- KF_STACK_BALANCE,
KF_SWAP_MAIN,
KF_SWAP_NEXT,
KF_SWAP_PREV,
int setconfbinding(const char *, const char *, int);
int setconfcolor(const char *, const char *, int);
int setconfmodkey(const char *, const char *, int);
-int setconfmousebuttonmove(const char *, const char *, int);
-int setconfmousebuttonresize(const char *, const char *, int);
int setconfquirk(const char *, const char *, int);
int setconfregion(const char *, const char *, int);
int setconfspawn(const char *, const char *, int);
void updatenumlockmask(void);
void update_floater(struct ws_win *);
void update_modkey(unsigned int);
-unsigned char update_mousebutton(unsigned char, unsigned int);
void update_win_stacking(struct ws_win *);
void update_window(struct ws_win *);
void update_window_color(struct ws_win *);
strlcat(s, "- ", sz);
}
}
+ if(urgent_collapse && s[0])
+ s[strlen(s) - 1] = 0;
}
void
old_ws->r = NULL;
unmap_old = true;
} else {
+ if (visible_noswap) {
+ center_pointer(other_r);
+ return;
+ }
+
/* the other ws is visible in another region, exchange them */
other_r->ws_prior = new_ws;
other_r->ws = old_ws;
void
cyclerg(struct swm_region *r, union arg *args)
{
+ union arg a;
struct swm_region *rr = NULL;
int i, num_screens;
switch (args->id) {
case SWM_ARG_ID_CYCLERG_UP:
+ case SWM_ARG_ID_CYCLERG_MOVE_UP:
rr = TAILQ_NEXT(r, entry);
if (rr == NULL)
rr = TAILQ_FIRST(&screens[i].rl);
break;
case SWM_ARG_ID_CYCLERG_DOWN:
+ case SWM_ARG_ID_CYCLERG_MOVE_DOWN:
rr = TAILQ_PREV(r, swm_region_list, entry);
if (rr == NULL)
rr = TAILQ_LAST(&screens[i].rl, swm_region_list);
if (rr == NULL)
return;
- focus_region(rr);
- center_pointer(rr);
- focus_flush();
+ switch (args->id) {
+ case SWM_ARG_ID_CYCLERG_UP:
+ case SWM_ARG_ID_CYCLERG_DOWN:
+ focus_region(rr);
+ center_pointer(rr);
+ focus_flush();
+ break;
+ case SWM_ARG_ID_CYCLERG_MOVE_UP:
+ case SWM_ARG_ID_CYCLERG_MOVE_DOWN:
+ a.id = rr->ws->idx;
+ switchws(r, &a);
+ break;
+ default:
+ return;
+ };
+
DNPRINTF(SWM_D_FOCUS, "cyclerg: done\n");
}
win->g = r->g;
- if (bar_enabled && ws->bar_enabled) {
+ if (bar_enabled && ws->bar_enabled && !maximize_hide_bar) {
if (!bar_at_bottom)
Y(win) += bar_height;
HEIGHT(win) -= bar_height;
ws->l_state.vertical_mwin = 1;
ws->l_state.vertical_stacks = 1;
break;
- case SWM_ARG_ID_STACKBALANCE:
- ws->l_state.vertical_msize = SWM_V_SLICE / (ws->l_state.vertical_stacks + 1);
- break;
case SWM_ARG_ID_MASTERSHRINK:
if (ws->l_state.vertical_msize > 1)
ws->l_state.vertical_msize--;
if (ws->l_state.vertical_mwin > 0)
ws->l_state.vertical_mwin--;
break;
+ case SWM_ARG_ID_STACKBALANCE:
+ ws->l_state.vertical_msize = SWM_V_SLICE / (ws->l_state.vertical_stacks + 1);
+ break;
case SWM_ARG_ID_STACKINC:
ws->l_state.vertical_stacks++;
break;
ws->l_state.horizontal_msize = SWM_H_SLICE / 2;
ws->l_state.horizontal_stacks = 1;
break;
- case SWM_ARG_ID_STACKBALANCE:
- ws->l_state.horizontal_msize = SWM_H_SLICE / (ws->l_state.horizontal_stacks + 1);
- break;
case SWM_ARG_ID_MASTERSHRINK:
if (ws->l_state.horizontal_msize > 1)
ws->l_state.horizontal_msize--;
if (ws->l_state.horizontal_mwin > 0)
ws->l_state.horizontal_mwin--;
break;
+ case SWM_ARG_ID_STACKBALANCE:
+ ws->l_state.horizontal_msize = SWM_H_SLICE / (ws->l_state.horizontal_stacks + 1);
+ break;
case SWM_ARG_ID_STACKINC:
ws->l_state.horizontal_stacks++;
break;
{ "rg_7", focusrg, {.id = 6} },
{ "rg_8", focusrg, {.id = 7} },
{ "rg_9", focusrg, {.id = 8} },
+ { "rg_move_next", cyclerg, {.id = SWM_ARG_ID_CYCLERG_MOVE_UP} },
+ { "rg_move_prev", cyclerg, {.id = SWM_ARG_ID_CYCLERG_MOVE_DOWN} },
{ "rg_next", cyclerg, {.id = SWM_ARG_ID_CYCLERG_UP} },
{ "rg_prev", cyclerg, {.id = SWM_ARG_ID_CYCLERG_DOWN} },
{ "screen_next", cyclerg, {.id = SWM_ARG_ID_CYCLERG_UP} },
{ "search_win", search_win, {0} },
{ "search_workspace", search_workspace, {0} },
{ "spawn_custom", NULL, {0} },
+ { "stack_balance", stack_config, {.id = SWM_ARG_ID_STACKBALANCE} },
{ "stack_inc", stack_config, {.id = SWM_ARG_ID_STACKINC} },
{ "stack_dec", stack_config, {.id = SWM_ARG_ID_STACKDEC} },
{ "stack_reset", stack_config, {.id = SWM_ARG_ID_STACKRESET} },
- { "stack_balance", stack_config, {.id = SWM_ARG_ID_STACKBALANCE} },
{ "swap_main", swapwin, {.id = SWM_ARG_ID_SWAPMAIN} },
{ "swap_next", swapwin, {.id = SWM_ARG_ID_SWAPNEXT} },
{ "swap_prev", swapwin, {.id = SWM_ARG_ID_SWAPPREV} },
buttons[i].mask = mod;
}
-unsigned char
-update_mousebutton(unsigned char type, unsigned int but)
-{
- int i;
-
- switch (type) {
- case 0:
- mouse_button_move = but;
- break;
- case 1:
- mouse_button_resize = but;
- break;
- }
-
- for (i = 0; i < LENGTH(buttons); i++) {
- if (buttons[i].func == move)
- buttons[i].button = mouse_button_move;
-
- if (buttons[i].func == resize)
- buttons[i].button = mouse_button_resize;
- }
-
- return(1);
-}
-
int
spawn_expand(struct swm_region *r, union arg *args, const char *spawn_name,
char ***ret_args)
setkeybinding(MODKEY_SHIFT, XK_comma, KF_STACK_INC, NULL);
setkeybinding(MODKEY_SHIFT, XK_period, KF_STACK_DEC, NULL);
setkeybinding(MODKEY_SHIFT, XK_space, KF_STACK_RESET, NULL);
- setkeybinding(MODKEY_SHIFT, XK_h, KF_STACK_BALANCE, NULL);
setkeybinding(MODKEY, XK_Return, KF_SWAP_MAIN, NULL);
setkeybinding(MODKEY_SHIFT, XK_j, KF_SWAP_NEXT, NULL);
setkeybinding(MODKEY_SHIFT, XK_k, KF_SWAP_PREV, NULL);
SWM_S_FOCUS_MODE,
SWM_S_ICONIC_ENABLED,
SWM_S_JAVA_WORKAROUND,
+ SWM_S_MAXIMIZE_HIDE_BAR,
SWM_S_REGION_PADDING,
SWM_S_SPAWN_ORDER,
SWM_S_SPAWN_TERM,
SWM_S_URGENT_COLLAPSE,
SWM_S_URGENT_ENABLED,
SWM_S_VERBOSE_LAYOUT,
+ SWM_S_VISIBLE_NOSWAP,
SWM_S_WARP_POINTER,
SWM_S_WINDOW_CLASS_ENABLED,
SWM_S_WINDOW_INSTANCE_ENABLED,
case SWM_S_JAVA_WORKAROUND:
java_workaround = (atoi(value) != 0);
break;
+ case SWM_S_MAXIMIZE_HIDE_BAR:
+ maximize_hide_bar = atoi(value);
+ break;
case SWM_S_REGION_PADDING:
region_padding = atoi(value);
if (region_padding < 0)
layouts[i].l_string = plain_stacker;
}
break;
+ case SWM_S_VISIBLE_NOSWAP:
+ visible_noswap = (atoi(value) != 0);
+ break;
case SWM_S_WARP_POINTER:
warp_pointer = (atoi(value) != 0);
break;
return (0);
}
-int
-setconfmousebuttonmove(const char *selector, const char *value, int flags)
-{
- /* suppress unused warnings since vars are needed */
- (void)selector;
- (void)flags;
-
- if (strncasecmp(value, "But1", strlen("But1")) == 0) {
- if (!update_mousebutton(0, XCB_BUTTON_INDEX_1))
- return (1);
- } else if (strncasecmp(value, "But2", strlen("But2")) == 0) {
- if (!update_mousebutton(0, XCB_BUTTON_INDEX_2))
- return (1);
- } else if (strncasecmp(value, "But3", strlen("But3")) == 0) {
- if (!update_mousebutton(0, XCB_BUTTON_INDEX_3))
- return (1);
- } else
- return (1);
- return (0);
-}
-
-int
-setconfmousebuttonresize(const char *selector, const char *value, int flags)
-{
- /* suppress unused warnings since vars are needed */
- (void)selector;
- (void)flags;
-
- if (strncasecmp(value, "But1", strlen("But1")) == 0) {
- if (!update_mousebutton(1, XCB_BUTTON_INDEX_1))
- return (1);
- } else if (strncasecmp(value, "But2", strlen("But2")) == 0) {
- if (!update_mousebutton(1, XCB_BUTTON_INDEX_2))
- return (1);
- } else if (strncasecmp(value, "But3", strlen("But3")) == 0) {
- if (!update_mousebutton(1, XCB_BUTTON_INDEX_3))
- return (1);
- } else
- return (1);
- return (0);
-}
-
int
setconfcolor(const char *selector, const char *value, int flags)
{
{ "java_workaround", setconfvalue, SWM_S_JAVA_WORKAROUND },
{ "keyboard_mapping", setkeymapping, 0 },
{ "layout", setlayout, 0 },
+ { "maximize_hide_bar", setconfvalue, SWM_S_MAXIMIZE_HIDE_BAR },
{ "modkey", setconfmodkey, 0 },
- { "move_button", setconfmousebuttonmove, 0 },
- { "resize_button", setconfmousebuttonresize, 0 },
{ "program", setconfspawn, 0 },
{ "quirk", setconfquirk, 0 },
{ "region", setconfregion, 0 },
{ "urgent_collapse", setconfvalue, SWM_S_URGENT_COLLAPSE },
{ "urgent_enabled", setconfvalue, SWM_S_URGENT_ENABLED },
{ "verbose_layout", setconfvalue, SWM_S_VERBOSE_LAYOUT },
+ { "visible_noswap", setconfvalue, SWM_S_VISIBLE_NOSWAP },
{ "warp_pointer", setconfvalue, SWM_S_WARP_POINTER },
{ "window_class_enabled", setconfvalue, SWM_S_WINDOW_CLASS_ENABLED },
{ "window_instance_enabled", setconfvalue, SWM_S_WINDOW_INSTANCE_ENABLED },
if (line)
free(line);
fclose(config);
-
- if (mouse_button_move == mouse_button_resize) {
- add_startup_exception("%s: move and resize mouse buttons match",
- filename);
- }
-
DNPRINTF(SWM_D_CONF, "conf_load: end\n");
return (0);