Theo Buehler [Sat, 23 May 2015 11:12:18 +0000 (13:12 +0200)]
mkdirp: do not throw an error if directory exists
If I restart i3 4.10.2 twice, e.g. with
$ i3-msg restart; sleep 3; i3-msg restart
the second time I get the following two errors:
05/22/15 10:46:03 - ERROR: mkdir(/tmp/i3-theo.toAK7N) failed: File exists
05/22/15 10:46:03 - ERROR: Could not create "/tmp/i3-theo.toAK7N" for storing the restart layout, layout will be lost.
The first one is from mkdirp() in src/ipc.c and the second one is from
store_restart_layout() in src/util.c.
Notice that I do _not_ get the ``open()'' or ``Could not write restart layout to
...'' error messages, so the layout writing code after line 260 in
store_restart_layout() succeeded and the layout isn't actually lost. Thus,
these error messages are a bit misleading, especially the second one (which is
triggered by the failure of mkdirp()).
POSIX says about `mkdir -p':
``Each dir operand that names an existing directory shall be ignored without
error.''
Therefore, I suggest the following simple patch that makes mkdirp() succeed if
the named file exists and actually is a directory. This silences the second
error as well.
Ingo Bürk [Tue, 12 May 2015 22:07:01 +0000 (18:07 -0400)]
Made syntax of syntax descriptions consistent:
* <xyz> denotes that some string must be used which is not a fixed value (e.g., a command), but a variable string (text, a number, ...)
* [xyz] denotes that the parameter is optional
* abc|xyz denotes that either abc or xyz must be given
Ingo Bürk [Thu, 14 May 2015 17:07:56 +0000 (13:07 -0400)]
Protect "move position mouse" against a NULL access.
This could happen if two outputs are set up to have a gap in between them and the mouse cursor
being in said gap when the command is triggered.
Added a section to the debugging docs:
* Motivate users to come up with clear and minimal instructions on how to reproduce a problem before submitting an issue.
* Encourage users to restart i3 before reproducing the problem so that the log file can stay small and noise-free.
* Mention the non-support of closed source software.
Deiz [Sun, 26 Apr 2015 18:23:08 +0000 (14:23 -0400)]
Initialize workspace rect to the output's upon creation
The comment immediately following implied that this was the intended
behaviour. Not doing so means that compound commands that both move a
window to a new workspace as well as do something that depends on the
workspace's geometry (e.g. 'move position center' or 'floating enable'
on a tiled window) would use the workspace's calloc'd 0x0+0x0 geometry.
Tony Crisci [Sun, 26 Apr 2015 02:43:46 +0000 (22:43 -0400)]
Ignore InputHint when not in WM_HINTS
When InputHint is not in WM_HINTS (i.e., the flag is not set), treat the window
as if the InputHint was set (the default behavior). This means that i3 will
focus the window when it becomes managed.
Tony Crisci [Sun, 26 Apr 2015 00:05:55 +0000 (20:05 -0400)]
Bugfix: serialize con_id with %p in run_binding()
%p is equivalent to either %x or %lx, depending on the pointer size of the
platform. Before this commit, we always used %d, which has the same behavior
on Linux, but is not automatically expanded to %ld on e.g. FreeBSD.
If the user clicks on the very top of i3bar above a tray icon, i3bar might
mistakenly trigger the click event for the last status block. This is due to
the fact that the click detection considers the separator width of the block
even though on the last block this is ignored, incorrectly spanning the block's
width partially (or entirely) across the tray area.
Added 'con_is_hidden' to check whether a given container is visible to the user assuming its workspace is visible.
This is useful for determining whether we want to set the _NET_WM_STATE_HIDDEN atom on the window.
Small cleanups:
* Implement criterion specs just like it is done in the spec for the config
* Declare variables in test case early so the 'my' keyword can be dropped in the actual test cases
Extract a function from con_move_to_workpsace that deals with moving a container to some other container rather than being restricted to moving to a specific workspace.
Thomas Anderson [Fri, 10 Apr 2015 21:09:00 +0000 (14:09 -0700)]
Respect EXEC_PREFIX and a users' choice of PKG_CONFIG.
The Makefiles should put binaries in $(EXEC_PREFIX) and
architecture-independent files in $(PREFIX). Also a user may have a
prefixed- pkg-config, as in the case of cross compiling on Exherbo
Linux, so respect the well-accepted $(PKG_CONFIG) variable for this
purpose.
Outputs may disappear momentarily and come back later.
To prevent i3 from exit when no output is available momentarily, add a timeout delay_exit_on_zero_displays.