Commit graph

131 commits

Author SHA1 Message Date
Bastien Dejean
dc805f9a6a Consolidate fit_monitor 2013-10-20 20:33:34 +02:00
Bastien Dejean
229d5797dd Simplify fit_monitor 2013-10-20 14:39:01 +02:00
Bastien Dejean
d396210f41 Revert "Initially center floating windows on their monitor"
In fact we can't do that, otherwise floating windows that do specify non
silly initial coordinates would be ignored.
2013-10-19 22:01:40 +02:00
Bastien Dejean
114881d958 Initially center floating windows on their monitor
And simplify fit_monitor along the way.
2013-10-19 21:31:34 +02:00
Bastien Dejean
6c51d8e3da Merge stack and stack_under 2013-10-19 17:46:28 +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
6daf058c5d Fix initial tagging of windows 2013-10-13 21:07:40 +02:00
Bastien Dejean
7334277454 Implement private windows 2013-10-12 21:16:51 +02:00
Bastien Dejean
6bc128554e Implement frames 2013-10-10 18:24:21 +02:00
Bastien Dejean
d07391af91 Handle tags in control --toggle-visibility 2013-10-09 17:33:42 +02:00
Bastien Dejean
15695c066b Add copyright header 2013-10-08 21:05:56 +02:00
Bastien Dejean
c5d4c6577d Handle _NET_WM_STATE more carefully
After all, it seems (see spectrwm) that the window manager should
maintain that property.
2013-10-07 11:41:54 +02:00
Bastien Dejean
2fb21be70c Don't set _NET_WM_STATE
The window manager shouldn't do this (cf. EWMH).
2013-10-06 21:42:34 +02:00
Bastien Dejean
35e9927ed9 Make sticky windows stick to their monitor 2013-10-06 16:58:02 +02:00
Bastien Dejean
a7b42fad6e A vacant node can be visible 2013-10-06 10:20:37 +02:00
Bastien Dejean
a75979be62 Implement tags 2013-10-05 22:32:40 +02:00
Bastien Dejean
c6ceca7683 Support _NET_WM_STATE_STICKY client message 2013-10-01 19:34:38 +02:00
Bastien Dejean
ce25529e5c Implement sticky windows 2013-10-01 18:04:18 +02:00
Bastien Dejean
f2a578de2b Make the window border width a desktop setting 2013-10-01 14:15:50 +02:00
Bastien Dejean
bfded1effc History is global and stacking is independent
The last desktop and monitor are now deduced from the history.

The stacking order is now independent from the history of the focused
nodes: this prevents hacks on both sides.

All windows are now considered in the stacking algorithm: it prevents
tiled windows from one monitor to appear above the floating windows of
another monitor.

Transfered windows are stacked below the windows of the same kind.
2013-10-01 10:48:03 +02:00
Bastien Dejean
d5b84c082a Don't unmap windows in adopt_orphans 2013-09-22 21:46:41 +02:00
Bastien Dejean
70c6cada07 Make focus_follows_pointer work on empty desktops 2013-09-22 11:16:06 +02:00
Bastien Dejean
80caab4445 Make sure strings are null-terminated 2013-09-21 12:39:59 +02:00
Bastien Dejean
3dda8e7f6f Move a few functions from tree to desktop/monitor 2013-09-20 11:57:09 +02:00
Bastien Dejean
85f67b2164 Remove a few useless header inclusion via deheader 2013-09-19 15:38:22 +02:00
Bastien Dejean
d168e919e3 Split types.c into {monitor,desktop,history}.c 2013-09-19 15:02:49 +02:00
Bastien Dejean
b1d793031b Don't support ICCCM's WM_STATE
It seems that it might cause more harm than good.

E.g.: Skype.
2013-09-19 10:29:19 +02:00
Bastien Dejean
afcbf4795e Consider unmapped windows as withdrawn 2013-09-18 12:38:44 +02:00
Bastien Dejean
84572b0204 Set the WM_STATE atom
`xkill` needs this work without the `-frame` option.
2013-09-18 12:07:55 +02:00
Bastien Dejean
5e00bfe688 Add --fullscreen and --locked to rule -a 2013-09-18 11:42:20 +02:00
Bastien Dejean
cc4492d9ca Remove --float-upcoming from control
The following:
    bspc control --float-upcoming
can now be expressed as:
    bspc rule -a \* --floating --one-shot
2013-09-17 11:40:18 +02:00
Bastien Dejean
9a9693545d Add new option for control: --float-upcoming 2013-09-16 13:36:52 +02:00
Bastien Dejean
a0b9199df5 Stack in terms of relative actions
This rewrite is based on a TODO comment for the *stack_refresh*
function of *awesome*:
    It might be worth stopping to restack everyone and only stack `c'
    relatively to the first matching in the list.

And on the concept of relative stacking (via XDG_CONFIG_WINDOW_SIBLING).

Additionally the `adaptative_raise` setting was removed because it
became obsolete when the choice was made of not raising windows when
focusing via `focus_follows_pointer`.

Windows of type *desktop* are now supported (but not managed).
2013-09-12 16:26:01 +02:00
Bastien Dejean
e14ce44333 Factorize client message sending 2013-09-10 10:39:25 +02:00
Bastien Dejean
e757323885 Don't trust WM_PROTOCOLS
Some clients (e.g.: Skype), have WM_TAKE_FOCUS in their WM_PROTOCOLS but
don't respond to it.
2013-09-07 10:14:14 +02:00
Bastien Dejean
f399fb8797 Revert "Don't trust WM_PROTOCOLS"
This reverts commit 2bfaefa08f.
2013-09-06 11:02:50 +02:00
Bastien Dejean
2bfaefa08f Don't trust WM_PROTOCOLS 2013-09-06 10:53:31 +02:00
Bastien Dejean
387ece3688 Implement ICCCM's WM_TAKE_FOCUS behavior
Additionally, the `apply_shadow_property` was renamed to
`apply_floating_atom`.
2013-09-05 15:37:54 +02:00
Bastien Dejean
ea49ed35d7 Compute colors on the fly
When drawing window borders, we must consider the color map of the
window to compute the correct color *pixel*.
2013-09-04 21:57:26 +02:00
Bastien Dejean
72b8431be0 Prevent input focus from being stolen
Example: if one chromium window is opened and a link is opened in
newsbeuter then chromium will steal the input focus (without explicitly
requesting focus via the proper EWMH message).
2013-07-30 14:53:44 +02:00
Bastien Dejean
44414046b9 Don't raise windows via focus_follows_pointer 2013-07-15 20:28:28 +02:00
Bastien Dejean
8fd8521322 Rewrite message handling
The new message syntax:
- Provides 10 commands instead of 60.
- Allows multiple actions to be applied in one call.

The client now returns an non zero exit code when a message fails.

The `is_adjacent` function now handles vacant nodes.
2013-07-12 21:52:02 +02:00
Steven Allen
772da4dc5d Arrange after killing a window
When a window is killed, the unmap event is never fired leaving a hole
in the layout. This commit closes that hole by manually calling arrange
after killing.
2013-06-29 21:01:23 -04:00
Bastien Dejean
4bcb9886f9 Don't call update_current to set the input focus 2013-06-29 21:09:56 +02:00
Bastien Dejean
a6e90f472a Make split mode and direction local 2013-06-27 17:26:52 +02:00
Bastien Dejean
994235d172 Handle insertion at non focused nodes 2013-06-27 17:11:30 +02:00
Bastien Dejean
12403a5081 Handle fullscreen state in apply_layout 2013-06-08 18:31:55 +02:00
Bastien Dejean
b939bd7480 Consider only pointer_follows_monitor exceptions
We'd prefer not to have to clutter `messages.c` with redundant code and
hence we handle the two exceptions instead.
2013-06-08 11:53:48 +02:00
Bastien Dejean
cd97c9b971 Handle visibility within desktop_{show,hide} 2013-06-07 13:58:22 +02:00
Bastien Dejean
f19cf121d7 Call arrange in transfer_node
Fix a few regressions, and add numerous minor cosmetic improvements.
2013-06-06 23:51:30 +02:00