Commit graph

330 commits

Author SHA1 Message Date
Bastien Dejean
4d04c0211e Sometimes a break isn't enough
Fixes #488.
2016-05-19 20:18:56 +02:00
Bastien Dejean
fc02698f46 Set the WM_NAME property of each monitor's root
For example, `xdo id -N Bspwm -n root -a LVDS1` now returns the ID of
the root window of the monitor named LVDS1.
2016-05-18 21:13:27 +02:00
Bastien Dejean
0b56bdefa3 Don't show presel feedbacks for the monocle layout
Fixes #367.
2016-05-16 10:33:22 +02:00
Bastien Dejean
1e98b9116a Don't use a domain target as reference
Otherwise, the behavior of, for example, `desktop prev -s next` is
unexpected.
2016-05-09 18:43:03 +02:00
Bastien Dejean
e471298d0a Add node modifiers: {descendant,ancestor}_of
Fixes #473.
2016-05-09 16:55:31 +02:00
Bastien Dejean
bbc34068e7 Handle failure of activate_desktop 2016-05-09 13:40:31 +02:00
Bastien Dejean
c32f30aa7e Remove setting: history_aware_focus
The new implementation of the DIR descriptor is based on
[right-window](https://github.com/ntrrgc/right-window).

Fixes #467.
2016-04-28 10:33:30 +02:00
Bastien Dejean
57b12d8f47 Remove setting: focus_by_distance
Unfortunately nearest_from_tree is rather useless because it can't skip
vacant or receptacle nodes.

Therefore, *focus_by_distance* is now the default.
2016-04-21 10:45:05 +02:00
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