Commit graph

322 commits

Author SHA1 Message Date
Bastien Dejean
e70f826c94 Consolidate focus_follows_pointer
Fixes #454.
2016-04-18 13:54:00 +02:00
Bastien Dejean
fefc9953f5 Catch some of the invalid queries 2016-04-16 18:43:42 +02:00
Bastien Dejean
331cc9e2d5 Add node flag: hidden
Fixes #229.
2016-04-16 18:13:31 +02:00
Bastien Dejean
2b2ed4eb56 Implement focus_follows_pointer via enter_notify
I found a simple fix for #268.
2016-04-15 19:11:30 +02:00
Bastien Dejean
71a2fb91b0 Allow multiple constraints for the *query* domain
Example:
    bspc query -N -d '^3' -n .window

The above command will list the IDs of the windows of the third desktop.
2016-04-14 23:15:58 +02:00
Bastien Dejean
789cb8a504 Don't restrict node --flag to windows
This fixes a regression introduced by e8aa679.
2016-04-14 16:56:14 +02:00
Bastien Dejean
56b543ef2d Add getter for pointer_action<n> 2016-04-10 22:33:02 +02:00
Bastien Dejean
c6c52e240e Don't needlessly ungrab/grab the buttons 2016-04-10 22:12:22 +02:00
Campbell Barton
81e5e72fa2 Make mouse button actions configurable
Previously this was possible via key bindings, since this operation was removed,
its useful to be able to configure which mouse keys do what.

This example swaps LMB/RMB

```
bspc config pointer_action1 resize_corner
bspc config pointer_action3 move
```
2016-04-11 06:03:50 +10:00
Bastien Dejean
12edac86fa Reinstate built-in pointer bindings 2016-04-07 18:08:32 +02:00
Bastien Dejean
3e60b44c29 Only allow null nodes for the PATH descriptor
Fixes #434.
2016-03-27 10:48:57 +02:00
Bastien Dejean
e8aa679cd1 Introduce receptacles
A receptacle is an unfocusable empty leaf node.

Receptacles are used for building a tree without creating windows.

Example:

    bspc node -i
    bspc node @/ -p east -i
    bspc node @/2 -p north -i

    bspc rule -a Abc:abc -o node=@/1
    bspc rule -a Ijk:ijk -o node=@/2/1
    bspc rule -a Xyz:xyz -o node=@/2/2

Fixes #259.
2016-03-26 11:47:17 +01:00
Bastien Dejean
ebad909ed1 Fail verbosely
Along the way, we also fixed the handling of the `*_padding`,
`window_gap` and `border_width` settings. The previous behavior was the
result of a bad decision (9fed780), as a response to #141. Many issues
followed: #143, #158, #260, etc. We now handle those settings as
intuitively as possible.

We also fixed a potential segfault in `cmd_node`, triggered by `bspc
node -d`[sic].

Fixes #402 #252.
2016-03-21 14:28:04 +01:00
Bastien Dejean
9ae96ebdcd Add IDs to desktops and monitors
There's no constraints on desktop and monitor names, therefore, using a
desktop or monitor name as descriptor is ambiguous.

We put an end to this ambiguity by introducing desktop and monitor IDs.

`bspc query -{M,D}` now yields IDs instead of names.

Fixes #397.
2016-03-16 15:15:27 +01:00
Bastien Dejean
b973353a7d Add event: monitor_swap 2016-02-01 11:46:03 +01:00
Bastien Dejean
b1d96531c4 Add global setting: *paddingless_monocle*
Fixes #365.
2016-01-10 18:29:51 +01:00
Bastien Dejean
a8c2468968 Add the --rectangle command the *monitor* domain 2015-12-30 11:36:14 +01:00
Bastien Dejean
eb07d2fc06 Generalize window commands to nodes 2015-12-22 19:25:45 +01:00
Bastien Dejean
4fbd961311 Remove settings: auto_cancel and auto_alternate
auto_cancel can be emulated with:

	super + ctrl + {h,j,k,l}
		dir={left,down,up,right}; \
		cur=$(bspc query -T -w focused.!automatic | jshon -e splitDir -u 2>&-); \
		[ "$dir" = "$cur" ] && dir=cancel; \
		bspc window -p "$dir"

and auto_alternate with:

	super + {_,alt + }{1-9,0}
		kind={desktop,monitor}; \
		item="^{1-9,10}"; \
		bspc query --"$kind"s --"$kind" "$\{item\}.focused" > /dev/null && item=last; \
		bspc "$kind" -f "$item"
2015-11-26 20:13:05 +01:00
Bastien Dejean
d3166dd399 Add *focused* modifier to desktops and monitors 2015-11-26 20:07:46 +01:00
Bastien Dejean
5e9c8e068f Use JSON as the output format of query -T
It is now easy to access any attribute by piping the output of
`query -T` to a JSON extractor/filter.

E.g.:
	bspc query -T -d DESKTOP_SEL | jq -r .layout

And it also makes `restore -T` more robust.
2015-11-22 14:41:00 +01:00
Bastien Dejean
1795fbb78d Remove apply_floating_atom setting
It is trivial to emulate this setting by subscribing to events.
2015-11-13 12:10:39 +01:00
Bastien Dejean
f650984185 Don't automatically alternate between states
Fixes #310.
2015-11-12 19:49:56 +01:00
Bastien Dejean
d98c3d17ae Document and homogenize subscriber events 2015-11-09 15:00:47 +01:00
Bastien Dejean
22e0f6ce5b Add --activate to window 2015-11-07 12:21:13 +01:00
Bastien Dejean
f28f33448f Make a clear distinction between states and flags 2015-11-05 14:00:49 +01:00
Bastien Dejean
65bc79f0c0 Add a few selector modifiers 2015-10-27 21:26:09 +01:00
Bastien Dejean
40cdd64a7b Rewrite the stacking engine
Stacking now involves 3 layers: BELOW, NORMAL and ABOVE.

In each layers, floating windows are stacked above tiled windows.

The *stack* function is now extremely simple: it just inserts an item in
a sorted list, relying on *stack_cmp* to compare clients.

Fullscreen windows are no longer special.
2015-10-26 20:56:56 +01:00
Bastien Dejean
fc340110e5 Always update EWMH desktop names in monitor -d 2015-10-19 14:52:30 +02:00
Ryan
c5e672e0c2 There's no window_gap setting at the monitor level
Fixes #287.
2015-08-21 20:29:33 +02:00
Bastien Dejean
5f74f080b3 Just print the server response as is
Fixes #284.
2015-08-15 11:02:46 +02:00
Fredrik Bergroth
51e09ea11e New setting: leaf_monocle
Use monocle layout if there is a single node.
2015-08-05 23:20:07 +02:00
Bastien Dejean
dccb5e7be2 Add a few subscriber events 2015-08-01 14:37:15 +02:00
Bastien Dejean
639763c906 Reinstate the motion recorder for FFP
Because many clients (e.g. termite) prevent us (maybe unknowingly) from
capturing motion events on their windows, we're forced to create a
window for this sole purpose.

Grabbing the pointer isn't an option, because it forces us to consider
some of the enter notify events we should be ignoring.
2015-06-12 22:05:22 +02:00
Bastien Dejean
8821c69527 Only honor FFP in reaction to pointer motion events
It appears that unmapping windows might generate undesirable enter
notify events. It can lead a very nasty bug where the focus constantly
switches between two desktops ad infinitum (cf. #268).
2015-06-09 20:39:00 +02:00
Bastien Dejean
5a8f28c3b5 Fix the return value of the SETSTR macro 2015-06-09 10:07:09 +02:00
Bastien Dejean
56895ab9ab Implement focus_follows_pointer via enter notify events
The implementation based on a motion recorder had bad side effects.
2015-06-06 18:25:20 +02:00
Bastien Dejean
b10ee71714 Add desktop --bubble
Fixes #257
2015-05-26 23:31:19 +02:00
Bastien Dejean
9dd581faaf Allow subscribers to choose what they listen to 2015-05-09 21:12:19 +02:00
Bastien Dejean
1167e068b2 New setting: center_pseudo_tiled 2015-01-15 14:18:25 +01:00
Bastien Dejean
c13c678a54 Add new setting: initial_polarity
Fixes #193.
2015-01-06 20:10:09 +01:00
Bastien Dejean
c49bc92d12 Use generic BSD 2-clause license
Fixes #176
2014-10-22 11:53:03 +02:00
Bastien Dejean
b7fa492602 Add setting: pointer_follows_focus 2014-10-22 11:24:51 +02:00
Bastien Dejean
9f8f115534 Update monitors when setting *_monitors 2014-09-09 12:23:44 +02:00
Bastien Dejean
d85d3133f9 Reinstate focus_by_distance setting 2014-07-18 19:21:58 +02:00
Bastien Dejean
855fb42724 Fail on non-tiled windows in window --edge 2014-06-20 10:17:32 +02:00
Bastien Dejean
85d5b015b1 Reset desktop settings via monitor -d 2014-05-09 20:32:15 +02:00
Bastien Dejean
a94a9134e0 Reinstate getters for default border width and window gap 2014-05-07 11:09:48 +02:00
Bastien Dejean
9fed780fb9 Set the default value of border widths and window gaps via config 2014-05-06 18:24:25 +02:00
Bastien Dejean
9cbb95c31c Pluralize setting 2014-05-05 11:58:12 +02:00