Commit Graph

4323 Commits

Author SHA1 Message Date
Marco Hunsicker
00ee86de79 Send IPC window events for focus and title changes
This patch fixes ticket #1168 to extend the window IPC event mechanism
to send IPC events for window focus and title changes. The newly added
window events use the same format as the already established "new"
event.

Specifically this patch:

* Moves the ipc_send_window_event() function from src/manage.c into
  src/ipc.c and adds an argument for the change property of the event
* Updates src/manage.c to use the new function signature. To ensure
  that the "new" event does not send the same event data as the
  "focus" event, setting focus now happens after the "new" event
  has been sent
* Adds IPC focus event notification to src/x.c. To workaround a problem
  during window close when accessing the window name, a function has been
  added to query whether a window is actually attached to its parent. To
  avoid obsolete focus notification, a new field has been added to keep
  track of the focus without any interference by the click handling
* Adds IPC title event notification to src/handlers.c. To avoid
  obsolete title notification, a function has been added to determine
  whether a window title has actually changed
* Updates the IPC documentation to include the new events
* Updates testcases/t/205-ipc-windows.t to include the "focus" event
  in order to ensure the correct event sequence
* Adds two new unit tests, b/testcases/t/219-ipc-window-focus.t and
  b/testcases/t/220-ipc-window-title.t to ensure proper "focus" and
 "title" events
2014-02-26 22:24:19 +01:00
Michael Stapelberg
07d583d780 tests: sync_with_i3 before warping pointer
To be honest, I’m not entirely sure where the race condition originates
from, but when making sure that there are no pending events
(which is what sync_with_i3 accomplishes) before warping the pointer, we
have less flaky testsuite runs.

closes #1189
2014-02-25 20:44:17 +01:00
Alexander Berntsen
cdbf62d055 man/i3.man: Update font doc to reflect i3.config 2014-02-15 13:23:08 +01:00
Tony Crisci
48ec79ca02 Move grab_all_keys to bindings.[ch]
Also add checks for binding input_type to filter bindings that are not
keyboard bindings.
2014-02-15 12:55:38 +01:00
Tony Crisci
00909aa3b1 i3bar: Do not kill watcher on EOF
Wait for the child process to exit on its own before freeing
watcher-related resources.

i3bar shows the last received status line until the process exits.

Fixes a race condition where the termination signal was sometimes not
received to display a meaningful error message.
2014-02-15 12:55:30 +01:00
Tony Crisci
759c26fc02 Improve drag_pointer error handling
Log errors generated by failed pointer grabs and ungrab the pointer
after failed keyboard grabs.
2014-02-13 21:06:32 +01:00
Michael Stapelberg
62a4237ed0 t/130-close-empty-split: clean up old workspace
This hopefully increases the reliability of the test. Empty containers
created by “open” sometimes get spurious UnmapNotify events, and in at
least one run, this test failed because of such an event.
2014-02-13 21:05:42 +01:00
Michael Stapelberg
491274d8b3 handle ButtonPress events with child != XCB_NONE (Thanks xeen)
The X11 protocol description states:

  The window the event is reported with respect to is called the event
  window. The event window is found by starting with the source window
  and looking up the hierarchy for the first window on which any client
  has selected interest in the event.

For the case of urxvt with URxvt.internalBorder > 0, urxvt sets up a
subwindow for its actual contents that is placed “in the middle” of the
urxvt window. In terms of the X11 protocol, the source window is urxvt’s
window, but urxvt does not select ButtonPress events for that.
Therefore, X11 will go up in the hierarchy and deliver the event to i3
for i3’s window decoration, even though this was not actually a click on
the decoration, but into the managed window.

Therefore, we check whether child != XCB_NONE for clicks on window
decorations and then handle them as a click inside the window.

fixes #1176
2014-02-09 14:00:43 +01:00
Michael Stapelberg
22be7bc986 fix warnings: unsigned check for >= 0 is always true 2014-02-08 21:03:26 +01:00
Tony Crisci
6ae4ecb1de Bugfix: tree_split should not split floating cons
Use the more robust test of `con_is_floating` for testing a container
for being floating.

fixes #1177
2014-02-08 20:59:23 +01:00
Jonas Maaskola
1bd13ce555 Doc update: title right click resizes floating windows
This documentation update describes the change implemented in
905440d6d1
It avoids repetitive usage of the word 'also'.
2014-02-08 20:41:16 +01:00
Steve Jones
0e27ff3cd0 Set EWMH desktop properties on startup.
Calls ewmh_update_current_desktop on startup to set the
_NET_CURRENT_DESKTOP property. Without this change the property only
gets set after the workspaces have been manipulated. Also exclude
hidden workspaces (i.e. those starting with "__" from the workspace
index.

Adds tests for startup and workspace switching.
2014-02-08 20:38:16 +01:00
Jonas Maaskola
905440d6d1 Resize floating windows by right-clicking decoration 2014-02-05 22:41:26 +01:00
Tony Crisci
ba80f96009 Document the existence of a C ipc project
Add a link to https://github.com/acrisci/i3-ipc which is a new ipc
library in the design phase of development. When it is stable, it will
provide bindings to many high-level scripting languages with
GObject-introspection.

This project aims to replace the unmaintained Python library and offer
an ipc library in new languages such as Lua and JavaScript.
2014-02-05 22:22:38 +01:00
Tony Crisci
d6b32971df Really do not create con pixmap when not needed
The pixmap of a borderless leaf container will not be used except
for the titlebar in a stack or tabs.

Make sure these containers do not (really) have a pixmap because it can
only get in the way.

fixes #1013
2014-02-05 22:21:47 +01:00
Michael Stapelberg
f891a8a9af i3bar: fix resource leak: statusline_ctx needs to be freed first
In practice this is rarely noticeable, unless you very often switch
screen resolutions, I think.

fixes #1172
2014-02-02 11:24:17 +01:00
Michael Stapelberg
d51d2acc95 Revert "Do not create container pixmap when not needed"
This reverts commit 6578976b61.

fixes #1170
2014-01-30 22:55:26 +01:00
Tony Crisci
d24d8baeb5 Abstract binding configuration to bindings.[ch]
Create files bindings.[ch] to contain functions for configuring,
finding, and running bindings.

Use the new function `configure_binding` for binding configuration. This
function adds a binding from config parameters.

Export the function `modifiers_from_str` from config_directives.h.

This change is made in preparation for the new bindmouse functionality.
2014-01-28 08:21:21 +01:00
Michael Stapelberg
da0acb2080 contrib: add per-workspace-layout.pl 2014-01-26 16:51:32 +01:00
Michael Stapelberg
da3fc2ad6b contrib: add sticker that was actually printed
While sticker_stickma_black.svg is the file that we originally provided,
the file that we got back from stickma and actually ordered is the new
one.
2014-01-26 16:43:02 +01:00
Michael Stapelberg
5d468f3317 docs/NoName-2009-03-12: add missing screenshot 2014-01-26 16:39:09 +01:00
Michael Stapelberg
51f077b409 debian/rules: get rid of hardcoded release notes file name 2014-01-26 16:22:06 +01:00
Marco Hunsicker
92868cf6d3 update year in copyright notices to 2014
This patch updates the copyright year information the i3 and
i3bar binaries show to the user.
2014-01-26 16:10:57 +01:00
Michael Stapelberg
23763ca2a5 update debian/changelog 2014-01-23 23:11:49 +01:00
Michael Stapelberg
00cf2b21da Merge branch 'master' into next 2014-01-23 23:05:15 +01:00
Michael Stapelberg
da12c9f591 Merge branch 'release-4.7.2' 2014-01-23 22:53:21 +01:00
Michael Stapelberg
31c33df279 add release notes for 4.7.2 2014-01-23 22:51:55 +01:00
Michael Stapelberg
a708da684f asciidoc git config: fix impress link, update copyright (Thanks Jens) 2014-01-23 22:24:03 +01:00
Michael Stapelberg
25faefa498 Merge branch 'userguide-reset' 2014-01-23 22:20:39 +01:00
Michael Stapelberg
7cf0c632c3 Merge branch 'master' into next 2014-01-23 22:20:39 +01:00
Wieland Hoffmann
658abe2e11 docs/userguide: change 'reseted' to 'reset'
It's an irregular verb.
2014-01-23 22:20:36 +01:00
Michael Stapelberg
7aa5be9d41 Merge branch 'openbsd-fallocate' 2014-01-23 22:20:16 +01:00
Michael Stapelberg
cacc199a68 Merge branch 'master' into next 2014-01-23 22:20:16 +01:00
David Coppa
88300f0f30 OpenBSD lacks posix_fallocate() 2014-01-23 22:20:14 +01:00
Michael Stapelberg
d090bd5ac1 Merge branch 'fix-i3-with-shmlog' 2014-01-23 22:19:49 +01:00
Michael Stapelberg
61b53603e2 Merge branch 'master' into next 2014-01-23 22:19:49 +01:00
David Coppa
39bf343618 Fix install target of i3-with-shmlog.desktop 2014-01-23 22:19:45 +01:00
Michael Stapelberg
ca807ce1c5 update debian/ 2014-01-21 19:38:46 +01:00
Michael Stapelberg
3d5e6db0bc Merge branch 'release-4.7.1' 2014-01-21 19:23:25 +01:00
Michael Stapelberg
b0990c183a Merge branch 'release-4.7.1' into next 2014-01-21 19:22:43 +01:00
Michael Stapelberg
92694c7983 add release notes for 4.7.1, update manpage version 2014-01-21 19:20:36 +01:00
Tony Crisci
6578976b61 Do not create container pixmap when not needed
The pixmap of a borderless container will not be used (except for the
titlebar in a stack or tabs). Make sure these containers do not have a
pixmap because it can only get in the way.

fixes #1013
2014-01-19 23:11:25 +01:00
Vivien Didelot
ae555386b7 docs/i3bar-protocol: add missing newline 2014-01-18 16:26:12 +01:00
Tony Crisci
dee6264d57 Respect Motif hint for window decorations
When the _MOTIF_WM_HINTS property of a window specifies it should have
no title bar, or no decorations at all, respond by setting the border
style of that container to BS_PIXEL or BS_NONE respectively.

This comes from the old Motif window manager. It was originally intended
to specify exactly what sort of decorations a window should have, and
exactly what sort of user input it should respond to. The EWMH spec
intended to replace Motif hints with _NET_WM_WINDOW_TYPE, but it is
still in use by popular widget toolkits such as GTK+ and Java AWT.

i3's implementation simply mirrors Gnome's Metacity. Official
documentation of this hint is nowhere to be found.

For more information see:
https://people.gnome.org/~tthurman/docs/metacity/xprops_8h-source.html
http://stackoverflow.com/questions/13787553/detect-if-a-x11-window-has-decorations

fixes #832
2014-01-18 16:25:37 +01:00
Michael Stapelberg
10d7c1a993 Merge branch 'master' into next 2014-01-13 23:36:47 +01:00
Michael Stapelberg
b8ba545733 Merge branch 'fix-move-focus' 2014-01-13 23:36:34 +01:00
Tony Crisci
7639337716 Bugfix: move <direction> sends workspace focus
Make sure the command `move <direction>` properly sends the workspace
focus ipc event required for i3bar to be properly updated and redrawn.

Make `ipc_send_workspace_focus_event publicly available from ipc.h for
more flexible event sending.
2014-01-13 23:36:31 +01:00
Michael Stapelberg
cd0cd0c3d2 Merge branch 'master' into next 2014-01-13 23:35:22 +01:00
Michael Stapelberg
4893f04e0c Merge branch 'fix-eof-msg' 2014-01-13 23:35:22 +01:00
Tony Crisci
612d25c12c i3bar Bugfix: don't show "EOF" status line error
When the `status_command` sends EOF, it is terminated. Terminating this
process prints an error message to the status line (hence, a race
condition). This error message is always more useful than the former
"EOF" status line error because it shows the exit code.
2014-01-13 23:35:20 +01:00