Commit graph

174 commits

Author SHA1 Message Date
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
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
867b427356 Use the proper type for the return value of getopt 2016-04-11 18:37:49 +02:00
Bastien Dejean
12edac86fa Reinstate built-in pointer bindings 2016-04-07 18:08:32 +02: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
1e3b13465b Fix handling of ID/name frictions
It seems that `resource_base_id` isn't the lower bound of the set of
possible IDs.
2016-03-20 10:38:11 +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
eb07d2fc06 Generalize window commands to nodes 2015-12-22 19:25:45 +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
d98c3d17ae Document and homogenize subscriber events 2015-11-09 15:00:47 +01:00
Bastien Dejean
2f93d90d3d Add class and instance names to bspwm's windows 2015-10-31 22:19:17 +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
645ad38885 Unlink the socket before binding
This is a recurring request (the probability of removing an important
file is probably low).

Also: don't start the X setup unless we have a working socket.
2015-08-17 10:14:07 +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
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
9dd581faaf Allow subscribers to choose what they listen to 2015-05-09 21:12:19 +02:00
Bastien Dejean
5c1f76fdd6 Be verbose regarding broken connections 2015-02-09 13:56:46 +01:00
Bastien Dejean
28e04dced1 Use explicit screen number in socket path template 2014-11-23 15:38:49 +01:00
Bastien Dejean
c49bc92d12 Use generic BSD 2-clause license
Fixes #176
2014-10-22 11:53:03 +02:00
Bastien Dejean
73905a6223 Load default settings before adding desktops 2014-05-07 11:00:18 +02:00
Bastien Dejean
ab6b6c5e36 Use proper function names 2014-05-05 11:35:06 +02:00
Bastien Dejean
42a0fdd253 Refactor error reporting
Fixes #123
2014-02-17 11:55:34 +01:00
Bastien Dejean
b8f9e567b9 Add a --get-status option to the *control* command
Fixes #120.
2014-02-11 18:40:34 +01:00
Bastien Dejean
b9dcab1900 Remove trailing spaces in headers 2014-01-19 14:41:37 +01:00
Bastien Dejean
c231e8cf41 Indentation: convert spaces to tabs
http://lea.verou.me/2012/01/why-tabs-are-clearly-superior/
2014-01-18 16:30:00 +01:00
Bastien Dejean
ad5d5a9390 Handle SIG{INT,HUP,TERM} signals 2014-01-01 10:36:01 +01:00
Bastien Dejean
6d2f407da3 Remove obsolete opacity atom 2013-12-28 14:42:48 +01:00
Bastien Dejean
986825a118 Just quit when the connection is closed 2013-12-23 20:39:14 +01:00
Bastien Dejean
a7fe634bf0 Incorporate the display name into the default socket path
Fixes #105
2013-12-23 11:41:10 +01:00
jvvv
2341efd48d Whitespace fix. 2013-12-15 20:27:33 -05:00
John Vogel
923e2d10ef Add xinerama support back in. 2013-12-15 20:24:21 -05:00
Bastien Dejean
cd97a3290a Reinstate the *rule* command
External rules are truly optional. At last.
2013-12-12 14:38:48 +01:00
Daniel Walter
abb4094ce2 Fix endless loop due to missing cast
On armv7 bspwm startup hangs during startup
due to a missing cast.
2013-12-04 12:07:55 +01:00
Bastien Dejean
3f23255a59 Handle zombies via SIGCHLD 2013-11-09 11:08:36 +01:00
Bastien Dejean
4451d8f0e7 Asynchronously parse rule command output 2013-11-08 20:31:23 +01:00
Bastien Dejean
40f7a438a6 End status lines by a new line 2013-11-07 17:58:22 +01:00
Bastien Dejean
493eaa78aa Print status informations via control --subscribe 2013-11-07 14:28:39 +01:00
Bastien Dejean
948b8046f7 Externalize rules 2013-11-05 20:09:24 +01:00
Bastien Dejean
343759bf77 Handle _NET_CLOSE_WINDOW 2013-10-26 18:06:04 +02:00
Bastien Dejean
08e1c85ce0 Remove tags
Tags should generalize desktops.

To accomplish this, the main node attributes: (type, ratio) would have
to become a dictionary: ((tf1, (type1, ratio1)), (tf2, (type2, ratio2),
...). (`tf<n>` being a tag field.).
2013-10-19 10:56:34 +02:00
Bastien Dejean
6bc128554e Implement frames 2013-10-10 18:24:21 +02:00
Bastien Dejean
15695c066b Add copyright header 2013-10-08 21:05:56 +02:00
Bastien Dejean
ecb1b72263 Add history navigation selectors 2013-10-08 13:59:17 +02:00
Bastien Dejean
27d4556392 Include missing OpenBSD header 2013-10-07 22:25:42 +02:00
Bastien Dejean
752e87b7da Enhance and clarify rule interface 2013-10-06 18:35:08 +02:00
Bastien Dejean
35e9927ed9 Make sticky windows stick to their monitor 2013-10-06 16:58:02 +02:00
Bastien Dejean
a75979be62 Implement tags 2013-10-05 22:32:40 +02:00