It is trivial to emulate this setting by subscribing to events.
get_atom(#a, &a);
GETATOM(WM_DELETE_WINDOW)
GETATOM(WM_TAKE_FOCUS)
- GETATOM(_BSPWM_FLOATING_WINDOW)
#undef GETATOM
const xcb_query_extension_reply_t *qep = xcb_get_extension_data(dpy, &xcb_randr_id);
xcb_window_t motion_recorder;
xcb_atom_t WM_TAKE_FOCUS;
xcb_atom_t WM_DELETE_WINDOW;
-xcb_atom_t _BSPWM_FLOATING_WINDOW;
int exit_status;
bool visible;
_bspc() {
local commands='window desktop monitor query pointer rule restore control config quit'
- local settings='external_rules_command status_prefix focused_border_color active_border_color normal_border_color presel_border_color focused_locked_border_color active_locked_border_color normal_locked_border_color focused_sticky_border_color normal_sticky_border_color focused_private_border_color active_private_border_color normal_private_border_color urgent_border_color border_width window_gap top_padding right_padding bottom_padding left_padding split_ratio initial_polarity borderless_monocle gapless_monocle leaf_monocle focus_follows_pointer pointer_follows_focus pointer_follows_monitor apply_floating_atom auto_alternate auto_cancel history_aware_focus focus_by_distance ignore_ewmh_focus center_pseudo_tiled remove_disabled_monitors remove_unplugged_monitors merge_overlapping_monitors'
+ local settings='external_rules_command status_prefix focused_border_color active_border_color normal_border_color presel_border_color focused_locked_border_color active_locked_border_color normal_locked_border_color focused_sticky_border_color normal_sticky_border_color focused_private_border_color active_private_border_color normal_private_border_color urgent_border_color border_width window_gap top_padding right_padding bottom_padding left_padding split_ratio initial_polarity borderless_monocle gapless_monocle leaf_monocle focus_follows_pointer pointer_follows_focus pointer_follows_monitor auto_alternate auto_cancel history_aware_focus focus_by_distance ignore_ewmh_focus center_pseudo_tiled remove_disabled_monitors remove_unplugged_monitors merge_overlapping_monitors'
COMPREPLY=()
_bspc() {
local -a commands settings
commands=('window' 'desktop' 'monitor' 'query' 'pointer' 'rule' 'restore' 'control' 'config' 'quit')
- settings=('external_rules_command' 'status_prefix' 'focused_border_color' 'active_border_color' 'normal_border_color' 'presel_border_color' 'focused_locked_border_color' 'active_locked_border_color' 'normal_locked_border_color' 'focused_sticky_border_color' 'normal_sticky_border_color' 'focused_private_border_color' 'active_private_border_color' 'normal_private_border_color' 'urgent_border_color' 'border_width' 'window_gap' 'top_padding' 'right_padding' 'bottom_padding' 'left_padding' 'split_ratio' 'initial_polarity' 'borderless_monocle' 'gapless_monocle' 'leaf_monocle' 'focus_follows_pointer' 'pointer_follows_focus' 'pointer_follows_monitor' 'apply_floating_atom' 'auto_alternate' 'auto_cancel' 'history_aware_focus' 'focus_by_distance' 'ignore_ewmh_focus' 'center_pseudo_tiled' 'remove_disabled_monitors' 'remove_unplugged_monitors' 'merge_overlapping_monitors')
+ settings=('external_rules_command' 'status_prefix' 'focused_border_color' 'active_border_color' 'normal_border_color' 'presel_border_color' 'focused_locked_border_color' 'active_locked_border_color' 'normal_locked_border_color' 'focused_sticky_border_color' 'normal_sticky_border_color' 'focused_private_border_color' 'active_private_border_color' 'normal_private_border_color' 'urgent_border_color' 'border_width' 'window_gap' 'top_padding' 'right_padding' 'bottom_padding' 'left_padding' 'split_ratio' 'initial_polarity' 'borderless_monocle' 'gapless_monocle' 'leaf_monocle' 'focus_follows_pointer' 'pointer_follows_focus' 'pointer_follows_monitor' 'auto_alternate' 'auto_cancel' 'history_aware_focus' 'focus_by_distance' 'ignore_ewmh_focus' 'center_pseudo_tiled' 'remove_disabled_monitors' 'remove_unplugged_monitors' 'merge_overlapping_monitors')
if (( CURRENT == 2 )) ; then
_values 'command' "$commands[@]"
elif (( CURRENT == 3 )) ; then
option\&.
.RE
.PP
-\fIapply_floating_atom\fR
-.RS 4
-Set the value of the
-\fI_BSPWM_FLOATING_WINDOW\fR
-atom of each window according to its floating state\&.
-.RE
-.PP
\fIignore_ewmh_focus\fR
.RS 4
Ignore EWMH focus requests coming from applications\&.
'auto_cancel'::
Interpret consecutive identical *--presel* arguments as *--cancel-presel* option.
-'apply_floating_atom'::
- Set the value of the '_BSPWM_FLOATING_WINDOW' atom of each window according to its floating state.
-
'ignore_ewmh_focus'::
Ignore EWMH focus requests coming from applications.
SETBOOL(leaf_monocle)
SETBOOL(pointer_follows_focus)
SETBOOL(pointer_follows_monitor)
- SETBOOL(apply_floating_atom)
SETBOOL(auto_alternate)
SETBOOL(auto_cancel)
SETBOOL(history_aware_focus)
GETBOOL(focus_follows_pointer)
GETBOOL(pointer_follows_focus)
GETBOOL(pointer_follows_monitor)
- GETBOOL(apply_floating_atom)
GETBOOL(auto_alternate)
GETBOOL(auto_cancel)
GETBOOL(history_aware_focus)
focus_follows_pointer = FOCUS_FOLLOWS_POINTER;
pointer_follows_focus = POINTER_FOLLOWS_FOCUS;
pointer_follows_monitor = POINTER_FOLLOWS_MONITOR;
- apply_floating_atom = APPLY_FLOATING_ATOM;
auto_alternate = AUTO_ALTERNATE;
auto_cancel = AUTO_CANCEL;
history_aware_focus = HISTORY_AWARE_FOCUS;
#define POINTER_FOLLOWS_MONITOR false
#define AUTO_ALTERNATE false
#define AUTO_CANCEL false
-#define APPLY_FLOATING_ATOM false
#define IGNORE_EWMH_FOCUS false
#define CENTER_PSEUDO_TILED true
#define REMOVE_DISABLED_MONITORS false
bool focus_follows_pointer;
bool pointer_follows_focus;
bool pointer_follows_monitor;
-bool apply_floating_atom;
bool auto_alternate;
bool auto_cancel;
bool history_aware_focus;
if (!csq->manage) {
free(csq->layer);
free(csq->state);
- disable_floating_atom(win);
window_show(win);
return;
}
c->layer = *(csq->layer);
}
- disable_floating_atom(c->window);
set_state(m, d, n, csq->state != NULL ? *(csq->state) : c->state);
set_locked(m, d, n, csq->locked);
set_sticky(m, d, n, csq->sticky);
return;
}
- client_t *c = n->client;
-
n->split_mode = MODE_AUTOMATIC;
n->vacant = value;
update_vacant_state(n->parent);
if (value) {
- enable_floating_atom(c->window);
unrotate_brother(n);
} else {
- disable_floating_atom(c->window);
rotate_brother(n);
if (d->focus == n) {
neutralize_obscuring_windows(m, d, n);
put_status(SBSC_MASK_REPORT);
}
-void set_floating_atom(xcb_window_t win, uint32_t value)
-{
- if (!apply_floating_atom)
- return;
- set_atom(win, _BSPWM_FLOATING_WINDOW, value);
-}
-
-void enable_floating_atom(xcb_window_t win)
-{
- set_floating_atom(win, 1);
-}
-
-void disable_floating_atom(xcb_window_t win)
-{
- set_floating_atom(win, 0);
-}
-
uint32_t get_border_color(client_t *c, bool focused_window, bool focused_monitor)
{
if (c == NULL)
void set_sticky(monitor_t *m, desktop_t *d, node_t *n, bool value);
void set_private(monitor_t *m, desktop_t *d, node_t *n, bool value);
void set_urgency(monitor_t *m, desktop_t *d, node_t *n, bool value);
-void set_floating_atom(xcb_window_t win, uint32_t value);
-void enable_floating_atom(xcb_window_t win);
-void disable_floating_atom(xcb_window_t win);
uint32_t get_border_color(client_t *c, bool focused_window, bool focused_monitor);
void update_floating_rectangle(client_t *c);
void restrain_floating_width(client_t *c, int *width);