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
b098530201
Zero-pad printed IDs
...
It seems that people expect all IDs to have the same length (#361 ).
And the maximum possible ID is 0x1fffffff (cf. the X11 protocol).
2016-03-23 11:24:47 +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
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
a0aa6dd1fa
Make the window ID printf format consistent
...
Fixes #361 .
2016-01-04 15:17:47 +01:00
Bastien Dejean
dcc13f7e56
Skip unmapped windows in query_pointer
...
Fixes #353 .
2015-12-31 19:08:35 +01:00
Bastien Dejean
2db4613ac2
Restore primary monitor in restore_tree
2015-12-31 12:34:24 +01:00
Bastien Dejean
28e4fe6e9b
Start parsing modifiers after the last colon
...
Fixes #347 .
2015-12-26 21:22:24 +01:00
Bastien Dejean
eb07d2fc06
Generalize window commands to nodes
2015-12-22 19:25:45 +01:00
Bastien Dejean
98e30c5fc2
Reject invalid modifiers
2015-11-29 18:57:52 +01:00
Bastien Dejean
8d7850a096
Remove non-significant characters from JSON output
2015-11-28 10:40:30 +01:00
Bastien Dejean
d3166dd399
Add *focused* modifier to desktops and monitors
2015-11-26 20:07:46 +01:00
Bastien Dejean
512e9044e3
Allow modifiers on every selector
2015-11-25 13:59:56 +01:00
Bastien Dejean
f758829169
Regularize the layer modifiers
2015-11-23 10:40:10 +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
1482ef007b
Fix *[!]occupied* modifier
2015-11-17 11:35:40 +01:00
Bastien Dejean
b18cae7ab4
Use field designators when initializing structures
2015-11-17 11:18:21 +01:00
Bastien Dejean
c493835829
Prevent potential memory leak
2015-11-17 11:13:25 +01:00
Bastien Dejean
26cf449414
Make the modifier notation compact and uniform
...
We want to avoid irregular notations: STATES and FLAGS should translate
directly into modifiers.
2015-11-17 11:02:06 +01:00
Bastien Dejean
f28f33448f
Make a clear distinction between states and flags
2015-11-05 14:00:49 +01:00
Bastien Dejean
26f3f45084
Add extensive documentation for the new modifiers
2015-10-27 21:48:19 +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
Joseph Lansdowne
85f90c51f2
add new selector modifier: unfocused
2015-01-04 19:53:18 +00:00
Bastien Dejean
c49bc92d12
Use generic BSD 2-clause license
...
Fixes #176
2014-10-22 11:53:03 +02:00
Bastien Dejean
0a462d1246
Check if directional focus fallback matches
2014-07-24 21:52:34 +02:00
Bastien Dejean
4907ddc382
Handle NULL node ref. in node_matches
2014-07-18 18:59:16 +02:00
Bastien Dejean
da38f30c32
Don't return NULL nodes in node_from_desc
2014-03-13 21:57:59 +01:00
Bastien Dejean
da84c486ab
Replace deprecated index
function
...
http://pubs.opengroup.org/onlinepubs/009695399/functions/index.html
2014-03-13 21:30:34 +01:00
Bastien Dejean
f98162fc38
Extend directional focusing to nearby monitors
...
Fixes #121
2014-02-26 20:59:08 +01:00
Bastien Dejean
42a0fdd253
Refactor error reporting
...
Fixes #123
2014-02-17 11:55:34 +01:00
Bastien Dejean
2c50a15455
Add desktop selector: MONITOR_SEL:^<n>
2014-02-09 10:23:01 +01:00
Bastien Dejean
eabbdd1b4f
Reintroduce the *automatic* window modifier
2014-02-03 10:30:41 +01:00
Bastien Dejean
7542b5e6ff
Handle NULL nodes in node_matches
2014-02-02 14:36:23 +01:00
Bastien Dejean
7cbcc64e7d
Fix *restore* regression introduced by c231e8c
...
The lines of the output of `query -T` are now indented using tabs.
Hence, `restore_tree`'s *level* variable is now equal to the number of tabs.
2014-01-19 14:58:32 +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
edcb1f9aec
Show window instance names in the output of query -T
2014-01-04 11:07:20 +01:00
Bastien Dejean
41c91cefa0
Add new desktop selector: focused:MONITOR_SEL
2013-12-31 18:39:47 +01:00
Bastien Dejean
0073eff5dc
Simply treat transient windows as floating windows
...
http://tronche.com/gui/x/icccm/sec-4.html#WM_TRANSIENT_FOR
2013-12-29 19:53:42 +01:00
Bastien Dejean
b972f0abbd
Provide padding settings for monitors
...
If a padding space is requested for a status bar, it concerns the
underlying monitor.
2013-12-28 10:30:49 +01:00
Bastien Dejean
48e0043f84
Implement the pseudo-tiled window state
2013-12-27 14:23:25 +01:00
Bastien Dejean
e0b6cd3cd4
*Frames* are unnecessary
...
The padding settings are sufficient for this.
2013-12-27 10:43:37 +01:00
Bastien Dejean
471fd2c7fc
Turn {top,right,bottom,left}_padding into desktop settings
2013-12-25 10:06:02 +01:00
Bastien Dejean
d5672d09cd
Don't crop splitting ratio in query -T
2013-12-16 11:55:44 +01:00
Bastien Dejean
de94ecb267
Add a floating state to desktops
...
Modifying the floating state of a desktop doesn't change the floating
state of the existing windows.
2013-11-03 23:01:31 +01:00
Bastien Dejean
6829eede5c
Don't try to access the focused desktop of NULL
2013-10-29 14:23:58 +01: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