]> git.sur5r.net Git - i3/i3/log
i3/i3
9 years agobugfix: copy binding before run
Tony Crisci [Mon, 10 Nov 2014 05:04:47 +0000 (00:04 -0500)]
bugfix: copy binding before run

Copy the binding struct before running it and use this copy to emit the
binding event.

This fixes a crash when the command `reload` is used in a binding when
the binding event is emitted.

9 years agomerge the formerly debian-specific x-terminal-emulator patch
Michael Stapelberg [Thu, 6 Nov 2014 18:56:32 +0000 (19:56 +0100)]
merge the formerly debian-specific x-terminal-emulator patch

I think instead of maintaining distribution-specific patches forever,
it’s a bit easier to have them applied upstream, especially since they
don’t break anything.

fixes #876

9 years agoset DesktopNames (which gdm uses) (Thanks Yves-Alexis)
Michael Stapelberg [Thu, 23 Oct 2014 21:18:15 +0000 (23:18 +0200)]
set DesktopNames (which gdm uses) (Thanks Yves-Alexis)

9 years agoUse command -v (built-in) instead of which(1) (Thanks val)
Michael Stapelberg [Thu, 23 Oct 2014 21:05:01 +0000 (23:05 +0200)]
Use command -v (built-in) instead of which(1) (Thanks val)

fixes #1380

9 years agot/234-layout-restore-output: Remove unused import
Mats [Wed, 22 Oct 2014 12:08:30 +0000 (14:08 +0200)]
t/234-layout-restore-output: Remove unused import

List::MoreUtils is imported but not used.

9 years agoMakefile.PL: Add Inline::C dependency
Mats [Wed, 22 Oct 2014 12:13:08 +0000 (14:13 +0200)]
Makefile.PL: Add Inline::C dependency

Inline::C is no longer shipped with Inline.

9 years agoTestcases: rename StartXDummy to StartXServer
Tony Crisci [Sat, 4 Oct 2014 19:01:22 +0000 (15:01 -0400)]
Testcases: rename StartXDummy to StartXServer

Rename the package StartXDummy to StartXServer in the testcases library
because XDummy is no longer used.

No logic changes.

9 years agoBugfix: check symbol for NULL in binding json dump
Tony Crisci [Sun, 5 Oct 2014 18:50:30 +0000 (14:50 -0400)]
Bugfix: check symbol for NULL in binding json dump

When dumping a binding, as is done during the binding event, check
symbol for NULL. If it is, dump json null. This prevents a crash when
running a binding that was configured with bindcode.

fixes #1379

9 years agocheck for AnyEvent::I3 ≥ 0.16 in the binding event test
Michael Stapelberg [Fri, 3 Oct 2014 07:40:22 +0000 (09:40 +0200)]
check for AnyEvent::I3 ≥ 0.16 in the binding event test

9 years agoImplement the ipc 'binding' event
Tony Crisci [Thu, 2 Oct 2014 23:04:53 +0000 (19:04 -0400)]
Implement the ipc 'binding' event

The binding event will be triggered when a binding is run as a result of
some a user action. The binding event has the following properties:

change: (str) Currently this will only be "run" but may be expanded in
the future. Included for consistency with other events.

binding: (map) the serialized binding

The "binding" member will have these properties:

input_type: (str) either "keyboard" or "mouse"

input_code: (int) the xcb keycode of the keyboard binding if it was
provided or the mouse button if it is a mouse binding.

symbol: (str) the string representation of the input code

command: (str) the bound command

mods: (list of str) a list of the modifiers that were pressed as string
symbols

fixes #1210

9 years agot/114-client-leader: fix race by waiting until the window is mapped
Michael Stapelberg [Thu, 2 Oct 2014 21:07:50 +0000 (23:07 +0200)]
t/114-client-leader: fix race by waiting until the window is mapped

9 years agoTestcases: Use Xephyr instead of XDummy
Tony Crisci [Wed, 1 Oct 2014 23:26:52 +0000 (19:26 -0400)]
Testcases: Use Xephyr instead of XDummy

Replace the XDummy script with Xephyr. This is done because of some
changes in the Xorg server that make XDummy difficult to use.

Rename library internal variables and function names to replace "xdummy"
with "xserver" to show this change (except for renaming the package and
lib file for better git history).

Rename the switch `--keep-xdummy-output` to `--keep-xserver-output`.
This switch should now be rarely used because Xephyr requires less set
up.

Replace "xdummy" with "xephyr" in comments and utility help
information. Update docs to show the new dependency.

fixes #1367

9 years agoBugfix: use the command parser to properly extract workspace names
Michael Stapelberg [Wed, 1 Oct 2014 20:50:48 +0000 (22:50 +0200)]
Bugfix: use the command parser to properly extract workspace names

fixes #1377

9 years agoDon't draw borders wider than actual width
Mats [Thu, 25 Sep 2014 17:45:15 +0000 (19:45 +0200)]
Don't draw borders wider than actual width

Rectangles passed to function xcb_poly_fill_rectangle are of type
xcb_rectangle_t and defined as:

    struct xcb_rectangle_t {
        int16_t  x;
        int16_t  y;
        uint16_t width;
        uint16_t height;
    }

The rectangles for the right and lower border had a width and height,
respectively, greater than the actual border width.

Furthermore, offset the bottom border to not overlap with the right one
and, for the top border, use r->width instead of con->rect.width as with
the other borders.

9 years agoIPC: set ws reply "num" member to -1 when named
Tony Crisci [Mon, 22 Sep 2014 05:09:25 +0000 (01:09 -0400)]
IPC: set ws reply "num" member to -1 when named

When a named workspace (i.e., a workspace that has a name that does not
begin with text that can be parsed as an integer greater than or equal
to zero) is represented by the ipc as a workspace json object such as
can be queried with `i3-msg -t get_workspaces`, set the num property to
-1 instead of json null.

This is for convenience of ipc consumers using type-constrained
languages such as C which have difficulty cleanly expressing nullable
integers.

fixes #1368

9 years agoDo not resend focus on click
Tony Crisci [Sat, 20 Sep 2014 21:21:08 +0000 (17:21 -0400)]
Do not resend focus on click

Do not set focused_id to XCB_NONE in route click to force resend focus,
in some cases to an already focused window.

Sending focus again on click is not necessary and may cause problems
with certain wine or mono apps. Resending focus makes combo boxes not
work in Office 2010.

This effectively reverts commit 250577da, so in case this commit causes
any problems with Eclipse to resurface, we’ll revert this commit in
favor of 250577da (the Eclipse-related bug fix).

9 years agoProperly handle windows unsetting WM_TRANSIENT_FOR (Thanks Janus)
Michael Stapelberg [Tue, 26 Aug 2014 08:00:14 +0000 (10:00 +0200)]
Properly handle windows unsetting WM_TRANSIENT_FOR (Thanks Janus)

fixes #1351

9 years agoAllow to validate the config file without X.
aszlig [Sat, 2 Aug 2014 05:01:15 +0000 (07:01 +0200)]
Allow to validate the config file without X.

We're going to call parse_configuration() very early if -C is given on
the command line. Instead of the previous "only_check_config", which has
been a global variable, we now simply pass use_nagbar as false if we're
just validating.

This causes the whole parsing to run without X and of course without
starting nagbar and displaying the errors to standard out/error instead.

The return code of parse_configuration() is now a boolean which
represents whether an error occured during parsing and the programs exit
code is returned accordingly.

Although the config parser still has a lot of side-effects, we now can
parse without the need to have an XCB connection. A nicer implementation
would be to just set the new font and load it just after we're done
parsing, but to ensure we don't break functionality we just load a dummy
FONT_TYPE_NONE if XCB isn't available. The main reason for going this
route is that it's a bit difficult to test fonts in a distribution
agnostic way without bundling fonts with i3 (or Xdummy to be more
exact).

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
9 years agoParse tray_output as a word, not string (Thanks Peter)
Michael Stapelberg [Mon, 25 Aug 2014 15:55:59 +0000 (17:55 +0200)]
Parse tray_output as a word, not string (Thanks Peter)

This makes it robust against trailing whitespace.

fixes #1352

9 years agoTreat everything up to 120 dpi as 96 dpi (Thanks jefvel)
Michael Stapelberg [Sat, 23 Aug 2014 14:02:30 +0000 (16:02 +0200)]
Treat everything up to 120 dpi as 96 dpi (Thanks jefvel)

See the comment in the source for rationale.

9 years agoAlign lower line of bar decoration to border width
Mats [Fri, 1 Aug 2014 18:07:04 +0000 (20:07 +0200)]
Align lower line of bar decoration to border width

In normal border style, two horizontal lines are drawn to outline the
bar decoration. The lower line leaves a gap to the left and right to
align with the border. This gap was hardcoded to 2 pixels. Now it
matches the current border width, if any.

In stacked layout, only the bottommost bar is aligned. In tabbed layout,
no gaps are left in order to close the outline and make the notion of a
tab more clear.

9 years agoretina support: convert logical to physical pixels for default_border_width
Michael Stapelberg [Mon, 11 Aug 2014 07:45:35 +0000 (09:45 +0200)]
retina support: convert logical to physical pixels for default_border_width

9 years agoMerge branch 'master' into next
Michael Stapelberg [Fri, 8 Aug 2014 18:16:40 +0000 (20:16 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-layout-focus'
Michael Stapelberg [Fri, 8 Aug 2014 18:16:40 +0000 (20:16 +0200)]
Merge branch 'fix-layout-focus'

9 years agoBugfix: don’t set focus in con_set_layout() on invisible workspaces
Michael Stapelberg [Fri, 8 Aug 2014 18:15:59 +0000 (20:15 +0200)]
Bugfix: don’t set focus in con_set_layout() on invisible workspaces

fixes #1338

9 years agot/*ewmh*: fix flakiness by syncing
Michael Stapelberg [Fri, 8 Aug 2014 10:22:41 +0000 (12:22 +0200)]
t/*ewmh*: fix flakiness by syncing

9 years agoRaise floating windows on `focus [direction]`
Tony Crisci [Mon, 28 Jul 2014 02:32:50 +0000 (22:32 -0400)]
Raise floating windows on `focus [direction]`

Raise a window when cycling focus between floating windows with `focus
[direction]` command so that newly focused windows are rendered on top
of other windows.

This is done by placing the window last in the floating nodes of the
parent and reordering the stack so the relative order is preserved.

fixes #1322

9 years agomake AnyEvent::I3 dependency versioned (Thanks sur5r)
Michael Stapelberg [Tue, 5 Aug 2014 09:49:16 +0000 (11:49 +0200)]
make AnyEvent::I3 dependency versioned (Thanks sur5r)

9 years agoMerge branch 'fix-tray-restart'
Michael Stapelberg [Thu, 24 Jul 2014 08:11:34 +0000 (10:11 +0200)]
Merge branch 'fix-tray-restart'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Thu, 24 Jul 2014 08:11:34 +0000 (10:11 +0200)]
Merge branch 'master' into next

9 years agoBugfix: add a sync call to i3bar to confirm reparents before exiting
Michael Stapelberg [Thu, 24 Jul 2014 08:09:53 +0000 (10:09 +0200)]
Bugfix: add a sync call to i3bar to confirm reparents before exiting

Without this call, sometimes the tray icon windows are reparented into
i3’s container around the i3bar window, i.e. into the next remaining
window in the window hierarchy. Since i3 then closes that container
(since the i3bar window itself was closed), the tray window will also
get closed. In general, this weird interaction (getting reparented and
then closed) is not well received by tray icon providers :).

closes: #1296

9 years agoMerge branch 'fix-decoration'
Michael Stapelberg [Wed, 23 Jul 2014 07:48:26 +0000 (09:48 +0200)]
Merge branch 'fix-decoration'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Wed, 23 Jul 2014 07:48:26 +0000 (09:48 +0200)]
Merge branch 'master' into next

9 years agoBugfix: missed case for decoration rerender
Tony Crisci [Tue, 24 Jun 2014 21:27:01 +0000 (17:27 -0400)]
Bugfix: missed case for decoration rerender

Rerender the decoration when the container requires a pixmap and does
not have one.

fixes #1292

9 years agoRemove TODO for cycling through the floating z-index.
Michael Stapelberg [Sun, 20 Jul 2014 21:49:08 +0000 (23:49 +0200)]
Remove TODO for cycling through the floating z-index.

I think this is not a good feature to have. It shouldn’t be necessary
for a tiling window manager that explicitly discourages the use of
floating windows.

fixes #1324

9 years agodon’t set names corresponding to debug colors, remove “sleep 1”.
Michael Stapelberg [Tue, 15 Jul 2014 08:35:52 +0000 (10:35 +0200)]
don’t set names corresponding to debug colors, remove “sleep 1”.

The names were (mostly) internal to i3 anyway.

Hopefully this doesn’t break anything, but I really think this old
behavior needs to go now :).

9 years agoMerge branch 'fix-layout-output'
Michael Stapelberg [Tue, 15 Jul 2014 08:28:51 +0000 (10:28 +0200)]
Merge branch 'fix-layout-output'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Tue, 15 Jul 2014 08:28:51 +0000 (10:28 +0200)]
Merge branch 'master' into next

9 years agoBugfix: properly restore workspace containers (Thanks vals)
Michael Stapelberg [Tue, 15 Jul 2014 08:15:04 +0000 (10:15 +0200)]
Bugfix: properly restore workspace containers (Thanks vals)

fixes #1306

9 years agoHandle WM_CLASS changes
Tony Crisci [Sat, 12 Jul 2014 02:23:23 +0000 (22:23 -0400)]
Handle WM_CLASS changes

http://tronche.com/gui/x/icccm/sec-4.html

> The WM_CLASS property (of type STRING without control characters)
> contains two consecutive null-terminated strings. These specify the
> Instance and Class names to be used by both the client and the window
> manager for looking up resources for the application or as identifying
> information.

i3 processes changes to WM_CLASS by updating the cached property and
running assignments. This allows the property to be used in criteria
selection.

fixes #1052

9 years agoMerge branch 'master' into next
Michael Stapelberg [Fri, 11 Jul 2014 07:51:28 +0000 (09:51 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-path'
Michael Stapelberg [Fri, 11 Jul 2014 07:51:27 +0000 (09:51 +0200)]
Merge branch 'fix-path'

9 years agoBugfix: i3-dmenu-desktop: quote path (Thanks nikolaus)
Michael Stapelberg [Fri, 11 Jul 2014 07:51:05 +0000 (09:51 +0200)]
Bugfix: i3-dmenu-desktop: quote path (Thanks nikolaus)

fixes #1316

9 years agoAlways explicitly set border widths on manage
Tony Crisci [Tue, 8 Jul 2014 01:01:14 +0000 (21:01 -0400)]
Always explicitly set border widths on manage

When a window becomes managed, explicitly set the current border width
to the default instead of relying on the default value of -1 to apply
the correct value.

Now that there are two different kinds of default borders, a border
width value of -1 is ambiguous. This can lead to different border widths
effectively being applied when the container changes from tiling to
floating, which is surprising behavior.

This commit extends behavior introduced in this commit to normal
borders:

7afe9cc78b4d22dfd5a0c5866382a0e001ea38b6

Explicitly set current border width when BS_PIXEL

fixes #1304

9 years agoMerge branch 'fix-first-line'
Michael Stapelberg [Thu, 10 Jul 2014 22:33:13 +0000 (00:33 +0200)]
Merge branch 'fix-first-line'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Thu, 10 Jul 2014 22:33:13 +0000 (00:33 +0200)]
Merge branch 'master' into next

9 years agoBugfix: render bars after the first chunk of JSON (Thanks javier)
Michael Stapelberg [Thu, 10 Jul 2014 22:32:42 +0000 (00:32 +0200)]
Bugfix: render bars after the first chunk of JSON (Thanks javier)

fixes #1315

9 years agoi3bar: implement custom mouse wheel commands
Tony Crisci [Fri, 4 Jul 2014 09:53:22 +0000 (05:53 -0400)]
i3bar: implement custom mouse wheel commands

Users can specify a command to run when a button was pressed on i3bar to
override the default behavior. Currently only the mouse wheel buttons
are supported. This is useful for disabling the scroll wheel action or
running scripts that implement custom behavior for these buttons.

Example:

bar {
    wheel_up_cmd nop
    wheel_down_cmd exec ~/.i3/scripts/custom_wheel_down
}

fixes #1104

9 years agoHandle EWMH requests to change current desktop
Tony Crisci [Fri, 4 Jul 2014 09:39:07 +0000 (05:39 -0400)]
Handle EWMH requests to change current desktop

This request is used by pagers and bars to change the current
desktop likely as a result of some user action. We interpret this as
a request to focus the given workspace.

for more information see:

http://standards.freedesktop.org/wm-spec/latest/ar01s03.html#idm140251368135008

9 years agobugfix: default floating border regression
Tony Crisci [Mon, 7 Jul 2014 22:42:15 +0000 (18:42 -0400)]
bugfix: default floating border regression

Fixes a bug where a normal floating default border is not applied when
the default tiling border is set to a pixel value.

This bug was introduced in this commit:

43b447855df095c56e860117d53acd0dd09ac42b

Consider motif border for floating geometry

Fixes a comment that claimed default floating border could override
motif hints, which was never the case.

fixes #1305

9 years agoAdd testcase for EWMH desktop viewport
Tony Crisci [Sun, 6 Jul 2014 21:26:16 +0000 (17:26 -0400)]
Add testcase for EWMH desktop viewport

Test that the EWMH specified property _NET_DESKTOP_VIEWPORT is updated
properly on the root window. We interpret this as a list of x/y
coordinate pairs for the upper left corner of the respective outputs of
the workspaces.

This test is for this commit:

feature: implement ewmh desktop viewport property

4205973135f28a0ab0e25a63dbc8c6fff0d3539e

9 years agotests: include error message when unable to create a FIFO
Michael Stapelberg [Thu, 10 Jul 2014 20:30:45 +0000 (22:30 +0200)]
tests: include error message when unable to create a FIFO

I have seen this message once or twice, but since the actual error
message was not included, I cannot definitely say what’s going on.

I think it might be a race condition where the file with the specified
tmpname() already exists, but let’s be sure before we attempt to fix it.

9 years agoAdd link to git repository in hacking docs
Tony Crisci [Sat, 5 Jul 2014 14:38:46 +0000 (10:38 -0400)]
Add link to git repository in hacking docs

9 years agoAdd testcase for EWMH desktop names
Tony Crisci [Sat, 5 Jul 2014 13:57:33 +0000 (09:57 -0400)]
Add testcase for EWMH desktop names

Test that the EWMH specified property _NET_DESKTOP_NAMES is updated
properly on the root window. We interpret this as a list of the open
workspace names.

This test is for this commit:

Implement EWMH desktop names

a9c094b7313b48491c182a5da1194a0bb06747aa

9 years agoMake absolute floating move work with criteria
Tony Crisci [Tue, 1 Jul 2014 06:12:28 +0000 (02:12 -0400)]
Make absolute floating move work with criteria

Make commands of type `move [window|container] [to] [absolute] position
<px> [px] <px> [px]` work with command selection criteria.

fixes #1301

9 years agoMerge branch 'master' into next
Michael Stapelberg [Wed, 2 Jul 2014 17:06:01 +0000 (19:06 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-i3bar-colors'
Michael Stapelberg [Wed, 2 Jul 2014 17:02:31 +0000 (19:02 +0200)]
Merge branch 'fix-i3bar-colors'

9 years agoUse FREE macro for freeing colors
Tony Crisci [Wed, 2 Jul 2014 03:17:02 +0000 (23:17 -0400)]
Use FREE macro for freeing colors

This macro will set the colors to NULL which avoids a double free on
reload when colors that were unconfigured become configured.

fixes #1299

9 years agoBugfix: _NET_SUPPORTED property fixes
Tony Crisci [Tue, 1 Jul 2014 00:40:31 +0000 (20:40 -0400)]
Bugfix: _NET_SUPPORTED property fixes

Fix a typing mistake that may cause _NET_SUPPORTED root property to
become corrupted.

This bug was introduced in:

Implement EWMH number of desktops property

http://code.stapelberg.de/git/i3/commit/?h=next&id=b47f480728a6d053c117e4b99ee4c78d99ba6a71

Additionally adds one missing atom to _NET_SUPPORTED.

fixes #1298

9 years agoMerge branch 'revert-warp'
Michael Stapelberg [Sat, 28 Jun 2014 11:05:40 +0000 (13:05 +0200)]
Merge branch 'revert-warp'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Sat, 28 Jun 2014 11:05:40 +0000 (13:05 +0200)]
Merge branch 'master' into next

9 years agoRevert "Disable render-time pointer warps if asked"
Michael Stapelberg [Sat, 28 Jun 2014 11:04:52 +0000 (13:04 +0200)]
Revert "Disable render-time pointer warps if asked"

This reverts commit b109b1b20dd51401dc929407453d3acdd8ff5566.

Turns out the change in behavior was unexpected by a number of users, so
let’s revert it and make those users that want this behavior configure
it explicitly.

Sorry for the back-and-forth here.

9 years agoMerge branch 'master' into next
Michael Stapelberg [Sat, 28 Jun 2014 11:01:48 +0000 (13:01 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-width'
Michael Stapelberg [Sat, 28 Jun 2014 11:01:28 +0000 (13:01 +0200)]
Merge branch 'fix-width'

9 years agoExplicitly set current border width when BS_PIXEL
Tony Crisci [Sat, 28 Jun 2014 01:20:12 +0000 (21:20 -0400)]
Explicitly set current border width when BS_PIXEL

When a window becomes managed, if the config specifies a pixel border
style, explicitly set the current border width so it does not change
when the container changes from tiling to floating.

fixes #1266

9 years agoMerge branch 'master' into next
Michael Stapelberg [Fri, 27 Jun 2014 07:05:32 +0000 (09:05 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-restart'
Michael Stapelberg [Fri, 27 Jun 2014 07:05:32 +0000 (09:05 +0200)]
Merge branch 'fix-restart'

9 years agoBugfix: create the directory for storing the restart state (Thanks hjem)
Michael Stapelberg [Fri, 27 Jun 2014 07:04:51 +0000 (09:04 +0200)]
Bugfix: create the directory for storing the restart state (Thanks hjem)

fixes #1303

9 years agocleanup: src/i3.mk: add XKB_COMMON_CFLAGS when compiling i3
Michael Stapelberg [Wed, 25 Jun 2014 15:58:16 +0000 (17:58 +0200)]
cleanup: src/i3.mk: add XKB_COMMON_CFLAGS when compiling i3

9 years agolibxkbcommon 0.4.0 is required, 0.2.0 is too old (Thanks Mii)
Michael Stapelberg [Wed, 25 Jun 2014 15:57:48 +0000 (17:57 +0200)]
libxkbcommon 0.4.0 is required, 0.2.0 is too old (Thanks Mii)

fixes #1295

9 years agoMerge branch 'fix-i3-save-tree-unicode-args'
Michael Stapelberg [Wed, 25 Jun 2014 08:00:59 +0000 (10:00 +0200)]
Merge branch 'fix-i3-save-tree-unicode-args'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Wed, 25 Jun 2014 08:00:59 +0000 (10:00 +0200)]
Merge branch 'master' into next

9 years agoBugfix: interpret commandline parameters as utf-8
Michael Stapelberg [Wed, 25 Jun 2014 08:00:23 +0000 (10:00 +0200)]
Bugfix: interpret commandline parameters as utf-8

fixes #1293

9 years agoMerge branch 'log-dpi'
Michael Stapelberg [Tue, 24 Jun 2014 07:57:05 +0000 (09:57 +0200)]
Merge branch 'log-dpi'

9 years agoMerge branch 'master' into next
Michael Stapelberg [Tue, 24 Jun 2014 07:57:05 +0000 (09:57 +0200)]
Merge branch 'master' into next

9 years agoadd log messages for the detected DPI
Michael Stapelberg [Tue, 24 Jun 2014 07:56:31 +0000 (09:56 +0200)]
add log messages for the detected DPI

Currently, the DPI is only logged when pango fonts are used, which is
often not the case when people report problems with the DPI detection.

9 years agoHandle WM_CHANGE_STATE requests for iconic state
Tony Crisci [Wed, 18 Jun 2014 08:23:00 +0000 (04:23 -0400)]
Handle WM_CHANGE_STATE requests for iconic state

http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.4

 > IconicState - The client's top-level window is iconic (whatever that
 > means for this window manager). The client can assume that its
 > top-level window is not viewable, its icon_window (if any) will be
 > viewable and, failing that, its icon_pixmap (if any) or its
 > WM_ICON_NAME will be displayed.

For these requests, we just close the window.

fixes #1279

9 years agoremove unneeded render on map request
Tony Crisci [Mon, 16 Jun 2014 06:34:22 +0000 (02:34 -0400)]
remove unneeded render on map request

manage_window() will call tree_render() when appropriate, so pushing
changes to X here is not needed.

9 years agoremove unneeded render on unmap
Tony Crisci [Mon, 16 Jun 2014 06:31:03 +0000 (02:31 -0400)]
remove unneeded render on unmap

tree_render() will call x_push_changes(), so calling it afterward is not
needed.

9 years agoConsider motif border for floating geometry
Tony Crisci [Fri, 20 Jun 2014 11:26:36 +0000 (07:26 -0400)]
Consider motif border for floating geometry

When calculating the geometry of a floating window with motif hints that
specify a border style, take into account that this window will have a
different border style when calculating its position with
floating_enable() when the window becomes managed.

A nice side effect of this is that users can override motif hints with
`new_float` config directives when they are specified other than
`normal`.

fixes #1270

9 years agoCross-output focus focus floating exception
Tony Crisci [Fri, 20 Jun 2014 09:19:30 +0000 (05:19 -0400)]
Cross-output focus focus floating exception

Focusing across outputs with `focus [direction]` should focus an
existing floating con when no tiling con exists on the output in
[direction].

9 years agoImplement the window::urgent event
Tony Crisci [Fri, 20 Jun 2014 12:33:02 +0000 (08:33 -0400)]
Implement the window::urgent event

The window::urgent event is emitted when a container becomes urgent or
loses its urgent status.

9 years agoImplement EWMH desktop names
Tony Crisci [Mon, 23 Jun 2014 21:44:24 +0000 (17:44 -0400)]
Implement EWMH desktop names

Maintain the _NET_DESKTOP_NAMES property on the root window.

http://standards.freedesktop.org/wm-spec/latest/ar01s03.html#idm140251368131760

> _NET_DESKTOP_NAMES
>
> _NET_DESKTOP_NAMES, UTF8_STRING[]
>
> The names of all virtual desktops. This is a list of NULL-terminated
> strings in UTF-8 encoding [UTF8]. This property MAY be changed by a
> Pager or the Window Manager at any time.

9 years agoMerge branch 'master' into next
Michael Stapelberg [Tue, 24 Jun 2014 07:01:59 +0000 (09:01 +0200)]
Merge branch 'master' into next

9 years agoMerge branch 'fix-focus-unmapped'
Michael Stapelberg [Tue, 24 Jun 2014 07:01:39 +0000 (09:01 +0200)]
Merge branch 'fix-focus-unmapped'

9 years agoBugfix: don't focus unmapped container on manage
Tony Crisci [Mon, 23 Jun 2014 21:25:23 +0000 (17:25 -0400)]
Bugfix: don't focus unmapped container on manage

A window may become unmapped on manage when an assignment command unmaps
the window, such as moving it to the scratchpad or killing it.

This can cause i3 focus to be an unmapped window and different than X
focus which can lead to complications

fixes #1283

9 years agoWorkspace command number selection
Tony Crisci [Sun, 22 Jun 2014 16:24:26 +0000 (12:24 -0400)]
Workspace command number selection

If a `workspace {N}` or `move to workspace {N}` command is given with N
as a plain number, the workspace of this number is selected for the
context of the command if one exists and there is no workspace with a
name that exactly matches N.

9 years agofeature: implement ewmh desktop viewport property
Tony Crisci [Sun, 22 Jun 2014 19:20:14 +0000 (15:20 -0400)]
feature: implement ewmh desktop viewport property

Set and update the _NET_DESKTOP_VIEWPORT property

http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#idm140146176862048

> _NET_DESKTOP_VIEWPORT x, y, CARDINAL[][2]/32
> Array of pairs of cardinals that define the top left corner of each
> desktop's viewport.

9 years agofix src/commands.c with clang-format
Michael Stapelberg [Mon, 23 Jun 2014 19:29:42 +0000 (21:29 +0200)]
fix src/commands.c with clang-format

9 years agoImplement the window::floating event
Tony Crisci [Fri, 20 Jun 2014 11:44:08 +0000 (07:44 -0400)]
Implement the window::floating event

The window::floating event should be emitted when a window transitions
to or from the floating state.

9 years agoMake command `move [direction]` work with criteria
Tony Crisci [Thu, 19 Jun 2014 12:09:31 +0000 (08:09 -0400)]
Make command `move [direction]` work with criteria

A container selected with criteria should be moved with the `move
[direction]` command, instead of this command always acting on the
focused container.

9 years agoConsistently parse workspace numbers
Tony Crisci [Sun, 22 Jun 2014 15:12:51 +0000 (11:12 -0400)]
Consistently parse workspace numbers

Use ws_name_to_number() to parse workspace numbers where this
transformation takes place.

9 years agoDEPENDS: add libxkbcommon{,-x11}, update lkgv (Thanks okraits)
Michael Stapelberg [Sun, 22 Jun 2014 12:42:28 +0000 (14:42 +0200)]
DEPENDS: add libxkbcommon{,-x11}, update lkgv (Thanks okraits)

9 years agoSwitch to xcb-xkb and libxkbcommon
Michael Stapelberg [Thu, 2 Jan 2014 07:40:03 +0000 (08:40 +0100)]
Switch to xcb-xkb and libxkbcommon

This removes our last dependency on Xlib! :)

(Okay, an Xlib dependency still comes in through other libraries that we
 link against, but it’s not us. Our code is simpler by this change and
 uses one less connection to X11.)

9 years agoImplement the window::move event
Tony Crisci [Thu, 19 Jun 2014 08:58:03 +0000 (04:58 -0400)]
Implement the window::move event

The window::move event should be emitted when the window moves position
in the tree.

9 years agoImplement the window::close event
Tony Crisci [Thu, 19 Jun 2014 07:17:52 +0000 (03:17 -0400)]
Implement the window::close event

The window::close event should be emitted when a window closes.

9 years agoFeature: implement mouse bindings
Tony Crisci [Tue, 17 Jun 2014 13:34:13 +0000 (09:34 -0400)]
Feature: implement mouse bindings

A configured mouse binding (for example `bindsym button3 kill`) runs
its command when the mouse button is pressed over parts of a container.

If the binding has no modifer, it will only run when the button is
clicked on the window titlebar.

Otherwise if the binding has a modifier, it will run over the titlebar
or any part of the contained window.

fixes #558

9 years agotests: explicitly set input hint
Michael Stapelberg [Thu, 19 Jun 2014 10:17:05 +0000 (12:17 +0200)]
tests: explicitly set input hint

Since i3 honors the “Globally Active Input” focus model, we need to
explicitly state that we are not using that in our testcases :).

This requires X11::XCB from git to work (commit
71b25dcaafc509e710b8fd7de20c97ac3549fc39).

9 years agobugfix: don't set input focus if not accepted
Tony Crisci [Tue, 17 Jun 2014 06:49:39 +0000 (02:49 -0400)]
bugfix: don't set input focus if not accepted

http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.7

> Clients using the Globally Active model can only use a SetInputFocus request
> to acquire the input focus when they do not already have it on receipt of one
> of the following events:
> * ButtonPress
> * ButtonRelease
> * Passive-grabbed KeyPress
> * Passive-grabbed KeyRelease

Since managing a window happens on a MapNotify (which is absent from this
list), the window cannot accept input focus, so we should not try to focus
the window at all.

Fixes an issue with xfce4-notifyd which (correctly) declines focus when
we send WM_TAKE_FOCUS, which puts i3 in a state where i3 focus and X
focus are different when a notification appears.

9 years agoImplement EWMH number of desktops property
Tony Crisci [Mon, 16 Jun 2014 06:50:47 +0000 (02:50 -0400)]
Implement EWMH number of desktops property

_NET_NUMBER_OF_DESKTOPS:

> This property SHOULD be set and updated by the Window Manager to
> indicate the number of virtual desktops.

We interpret this property as the number of noninternal workspaces.