Michael Stapelberg
31b7ec29fd
Re-implement bar borders (by Angelo Haller)
...
This re-introduces borders around the workspace buttons in i3bar.
No additional pixels will be consumed (you will not lose any space for your
windows).
2012-01-20 21:36:50 +00:00
Michael Stapelberg
a532f5ac39
Implement a new parser for commands. (+test)
...
On the rationale of using a custom parser instead of a lex/yacc one, see this
quote from src/commands_parser.c:
We use a hand-written parser instead of lex/yacc because our commands are
easy for humans, not for computers. Thus, it’s quite hard to specify a
context-free grammar for the commands. A PEG grammar would be easier, but
there’s downsides to every PEG parser generator I have come accross so far.
This parser is basically a state machine which looks for literals or strings
and can push either on a stack. After identifying a literal or string, it
will either transition to the current state, to a different state, or call a
function (like cmd_move()).
Special care has been taken that error messages are useful and the code is
well testable (when compiled with -DTEST_PARSER it will output to stdout
instead of actually calling any function).
During the migration phase (I plan to completely switch to this parser before
4.2 will be released), the new parser will parse every command you send to
i3 and save the resulting call stack. Then, the old parser will parse your
input and actually execute the commands. Afterwards, both call stacks will be
compared and any differences will be logged.
The new parser works with 100% of the test suite and produces identical call
stacks.
2012-01-14 21:29:57 +00:00
Michael Stapelberg
f81c89ac28
Refactor the code out of src/cmdparse.y to src/commands.c
...
This is the first step towards our new parser.
2012-01-14 16:59:52 +00:00
Michael Stapelberg
814695d8bb
Implement 'move workspace to output <output>'
...
Fixes : #541
2012-01-10 22:16:50 +00:00
Michael Stapelberg
a4a59a797f
tests: use open_window to avoid motion notifies which in turn trigger endless loops
...
Using 'open' will not create an X11 window (while open_window does), so we will
get spurious motion notify events when switching focus, leading to endless loops.
2012-01-10 22:16:09 +00:00
Michael Stapelberg
df9b338175
Introduce synonyms: 'move to workspace' and 'move container to workspace' and 'move window to workspace'
...
This makes the new 'move workspace to output' command much more clear
2012-01-10 22:16:09 +00:00
Michael Stapelberg
6585d289cf
add testcase for workspace next_on_output/prev_on_output
2012-01-08 16:33:16 +00:00
Michael Stapelberg
07d07719f0
add testcase for 'focus output'
2012-01-08 11:59:24 +00:00
Michael Stapelberg
470ee00012
Merge branch 'master' into next
2012-01-07 18:50:46 +00:00
Michael Stapelberg
d4238c778a
Bugfix: Open new windows in the correct place when assignments match (+test) (Thanks Don)
2012-01-07 18:50:00 +00:00
Michael Stapelberg
6345124049
Merge branch 'master' into next
...
Conflicts:
src/con.c
2012-01-07 18:21:12 +00:00
Michael Stapelberg
f78caf8c58
Bugfix: Don’t lose focus on fullscreen windows when another window gets moved to that workspace (+test) (Thanks rami)
...
Fixes : #606
2012-01-07 18:18:36 +00:00
Michael Stapelberg
0e1b1dd984
Bugfix: Correctly handle 'move scratchpad' on workspace level (+test) (Thanks mseed)
...
Fixes : #597
2012-01-07 17:36:30 +00:00
Michael Stapelberg
3254188cda
Bugfix: Show scratchpad on the correct output (+test)
...
Fixes : #596
2012-01-07 16:53:37 +00:00
Michael Stapelberg
ed37a63942
tests: add scratchpad test
2012-01-05 21:41:23 +00:00
Michael Stapelberg
91499ed2c7
properly serialize floating/scratchpad state when restarting
2012-01-05 21:41:20 +00:00
Michael Stapelberg
ec7ed75c01
tests: make t/143 actually verify floating windows are restored properly
2012-01-05 21:20:53 +00:00
Michael Stapelberg
dd9743b272
tests: Implement multi-monitor tests using Xdmx
2011-12-26 20:48:57 +01:00
Michael Stapelberg
08986a1798
Implement scratchpad functionality (see userguide)
2011-12-21 23:15:32 +00:00
Michael Stapelberg
622b94f176
Merge branch 'master' into next
2011-12-20 18:44:26 +00:00
Michael Stapelberg
d963018990
Bugfix: Don’t close workspace when there are still floating windows on it (Thanks noxxun) (+test)
...
Fixes : #595
2011-12-20 18:44:15 +00:00
Michael Stapelberg
1f2c9306a2
Merge branch 'master' into next
...
Conflicts:
testcases/t/159-socketpaths.t
2011-12-18 18:02:08 +00:00
Michael Stapelberg
c21172a6f6
Create a secure temp path instead of a predictable one (Thanks Han)
...
With this commit, i3 will now use either $XDG_RUNTIME_DIR/i3 (XDG_RUNTIME_DIR
is only writable by the user, so this is not a problem) or a secure temporary
location in /tmp, following the pattern /tmp/i3-<user>.XXXXXX
2011-12-18 17:59:31 +00:00
Michael Stapelberg
2ba09f5419
Merge branch 'master' into next
2011-12-18 15:19:09 +00:00
Michael Stapelberg
ec28f3b982
Bugfix: Fix floating resize for floating split containers (+test)
...
Fixes : #588
2011-12-18 15:18:20 +00:00
Michael Stapelberg
a930994dc9
Merge branch 'master' into next
2011-12-17 17:16:39 +00:00
Michael Stapelberg
75c57c4eef
Bugfix: Ignore ConfigureRequests with out-of-bound coordinates (+test)
...
JDownloader seems to use these for its captcha popups when focus is not on the
same workspace, for some weird reason.
2011-12-17 17:15:52 +00:00
Michael Stapelberg
db174234ce
Merge branch 'master' into next
...
Conflicts:
debian/changelog
2011-12-17 15:28:51 +00:00
Michael Stapelberg
1ff321bc3f
Bugfix: Disallow focusing other windows when in fullscreen mode (Thanks aksr)
...
Fixes : #579
2011-12-17 15:28:17 +00:00
Michael Stapelberg
ef224cdb98
Merge branch 'master' into next
...
Conflicts:
testcases/t/173-get-marks.t
2011-12-17 14:22:57 +00:00
Michael Stapelberg
b46ab649f5
Bugfix: Fix setting the same mark repeatedly on different windows (+test)
...
Fixes : #582
2011-12-17 14:22:23 +00:00
Michael Stapelberg
da8d0baa74
tests: add test for previous commit
2011-12-17 11:18:43 +00:00
Maik Fischer
8349190e09
testcases: always start i3 through i3test::launch_with_config
...
this will pave the way to just call BAIL_OUT and stop the currently
running testfile if i3 died for whatever reason.
2011-12-04 14:14:20 +01:00
Michael Stapelberg
0f9fbcbd25
Merge branch 'master' into next
2011-11-29 22:37:11 +00:00
Michael Stapelberg
626e3efb48
Bugfix: Fix 'resize' command in nested containers (Thanks mseed)
...
Fixes : #559
2011-11-29 22:36:40 +00:00
Michael Stapelberg
f5dce848b8
Merge branch 'master' into next
2011-11-26 22:18:01 +00:00
Michael Stapelberg
31acb91d90
Bugfix: Fix crash on '[class="i3bar"] focus' (+test) (Thanks f8l)
...
Fixes #575
2011-11-26 22:17:34 +00:00
Michael Stapelberg
5c59c0296c
tests: add test for ticket #561 (floating window size when changing border)
2011-11-26 21:20:00 +00:00
Maik Fischer
475dc3c532
testcases: use open_window everywhere
2011-11-23 20:33:44 +00:00
Maik Fischer
c2229b905a
testcases: replace sleep with sync_with_i3 where appropiate
2011-11-23 20:33:44 +00:00
Maik Fischer
33e9c29022
testcases: t/144-*: use open_window instead of launching urxvt
2011-11-23 20:33:44 +00:00
Maik Fischer
6bf13b413e
testcases: t/116-*: reinvent ignore() from Test::Deep
2011-11-23 00:03:09 +00:00
Maik Fischer
8d83697cc2
testcases: use Test::More is_deeply, don't depend on Test::Deep
2011-11-23 00:02:57 +00:00
Maik Fischer
3a9d94bba4
testcases: don't sync_with_i3() before $x->input_focus
...
since input_focus calls it anyways
2011-11-23 00:02:54 +00:00
Maik Fischer
0702f1fb7b
testcases: drop sync_with_i3()s $x parameter, use global
2011-11-23 00:02:50 +00:00
Maik Fischer
293517fb2e
testcases: drop open_floating_window()s $x parameter, use global
2011-11-23 00:02:47 +00:00
Maik Fischer
fce7570f96
testcases: drop open_window()s $x parameter, use global one instead
2011-11-21 23:51:04 +00:00
Maik Fischer
e9acd36ce4
t/005-floating.t: fix potentional race condition
2011-11-21 23:51:01 +00:00
Maik Fischer
da403b3667
testcases: use $x in wait_for_(un)map change to wait_for_(un)map($win)
...
wait_for_unmap currently ignores its $window parameter, since
X11::XCB doesn't provide $event->{window} for unmap events yet.
2011-11-21 23:50:58 +00:00
Maik Fischer
ea2aba4319
testcases: undo 0f386a96
t/144-regress-floating-resize.t
...
wait_for_map can't be used, since we don't set structure_notify
on the urxvts windows
2011-11-21 23:50:52 +00:00
Maik Fischer
db6de84d0b
testcases: use global $x in wait_for_event, drop $x parameter
2011-11-21 23:50:48 +00:00
Maik Fischer
30ea33decb
testcases: let i3test.pm export $x, adapt testcases
2011-11-21 23:50:43 +00:00
Maik Fischer
1b1d7941ec
testcases: correctly enable lexical pragmata
...
eval 'package foo; use strict;' enables strict within eval, it does
not leak into the surrounding scope.
Also fix various warnings/compile errors found due to now enabled
strict and warnings.
2011-11-21 23:50:39 +00:00
Maik Fischer
e72899efb6
testcases: move i3test::X11 from 170-force_focus_wrapping.t into i3test.pm
2011-11-21 23:50:33 +00:00
Maik Fischer
0f386a96e7
testcases: fix race conditions in various tests
2011-11-21 19:21:14 +00:00
Michael Stapelberg
8a9b093bc3
tests: replace left-over move before/after commands (Thanks mxf)
2011-11-21 18:54:20 +00:00
Michael Stapelberg
2783aa9fc9
tests: add t/180-fd-leaks to ensure i3 does not leak fds on exec
2011-11-20 10:52:21 +00:00
Michael Stapelberg
60bfc3a600
Bugfix: Correctly handle --no-startup-id with quoted exec commands (Thanks aksr)
...
Parser changes shortly before a release. What could possibly go wrong.
2011-11-11 00:28:04 +00:00
Michael Stapelberg
e73538a56f
t/154-regress-multiple-dock: s/next v/focus right
2011-11-10 18:43:03 +00:00
Michael Stapelberg
bebd2fceb6
Bugfix: Correctly return to initial state after prev/next/back_and_forth (Thanks Brian)
...
Fixes : #552
2011-11-10 18:42:24 +00:00
Michael Stapelberg
50d14718f4
fix t/120-multiple-cmds: open a window before moving
2011-10-27 23:30:29 +01:00
Michael Stapelberg
edfa9febae
extend t/124-move.t to test move for floating containers
2011-10-27 21:46:01 +01:00
Michael Stapelberg
ca0c2a46e4
t/124-move.t: re-activate test for useless move commands
2011-10-27 21:22:41 +01:00
Michael Stapelberg
e710477a07
Bugfix: properly handle comments in colors {} blocks of bar config (+test) (Thanks fernandotcl)
2011-10-25 22:31:57 +01:00
Michael Stapelberg
91d589b176
tests: extend t/175-startup-notification to test the --no-startup-id flag
2011-10-25 22:21:37 +01:00
Fernando Tarlá Cardoso Lemos
d490bae8a2
Close empty workspaces if they're not visible.
...
Previously, we'd only close an empty workspace when we moved away
from it. Now we also close it when the last client exits, as long
as that workspace is not visible anymore.
2011-10-24 00:12:14 +01:00
Michael Stapelberg
29f9f8c090
Fix tests: s/i3bar/bar {/ and hash prefix for color codes in GET_BAR_CONFIG
2011-10-23 21:51:43 +01:00
Michael Stapelberg
3a99c914e0
tests: default bar mode changed
2011-10-21 23:00:38 +01:00
Michael Stapelberg
ad0f13a0a9
Clean bars before reloading the config (+test)
...
While the configuration gets updated in i3, the i3bar processes will not pick
up these changes. We have to think about a good way to do that.
2011-10-20 18:47:09 +01:00
Michael Stapelberg
15bface10d
Create different IDs for each bar (+test)
2011-10-19 19:57:39 +01:00
Michael Stapelberg
d9f3a31cb7
tests: add a test to check that bar configs are parsed correctly
2011-10-18 22:15:48 +01:00
Michael Stapelberg
82ec0169cb
tests: add t/176-workspace-baf for the workspace back_and_forth feature
2011-10-17 23:34:29 +01:00
Maik Fischer
fce422d99e
i3test.pm: use strict; use warnings; and fix related bugs
2011-10-12 22:21:57 +01:00
Michael Stapelberg
71a3da1ef3
t/175-startup-notification: don’t wait for i3 mapping the window
...
It is on a different workspace and will therefore not get mapped.
Syncing is enough.
2011-10-10 16:00:34 +01:00
Michael Stapelberg
6ac098a45e
support _NET_STARTUP_ID on the client leader window
...
(necessary for GIMP, geeqie, …)
2011-10-10 15:54:17 +01:00
Michael Stapelberg
7750382b89
test: set the _NET_STARTUP_ID before mapping the window
2011-10-10 15:54:17 +01:00
Michael Stapelberg
198f16ece9
add testcase for the startup notification protocol
2011-10-10 15:54:17 +01:00
Michael Stapelberg
ae1ab9eb27
tests: rename files (00x-*.t is basic stuff, >=100-*.t are tests using IPC)
2011-10-08 14:38:50 +01:00
Michael Stapelberg
3136573a70
tests: eliminate List::MoreUtils
2011-10-05 23:21:36 +01:00
Michael Stapelberg
b9cd9132d0
tests: remove unused Proc::Background
2011-10-05 20:48:34 +01:00
Michael Stapelberg
bd33c09845
tests: move i3test.pm from t/lib to lib/
2011-10-04 23:39:36 +01:00
Michael Stapelberg
57484553e6
tests: use a lot higher timeouts
...
This makes the tests more robust on a machine which is loaded.
Also, it makes the tests run (significantly) longer if anything goes wrong.
2011-10-04 23:36:57 +01:00
Michael Stapelberg
359717970d
tests: don’t overwrite $timeout, kill timer when done
2011-10-04 23:36:43 +01:00
Michael Stapelberg
4e1d50fa3a
tests: Convert all testcases to use the new launch_with_config API
...
It now returns a pid directly, not a Proc::Background object.
2011-10-04 23:34:23 +01:00
Michael Stapelberg
8d9b4c3c04
tests: launch_with_config: use socket activation
2011-10-04 23:33:38 +01:00
Michael Stapelberg
32ea923721
add a test for the 'move workspace next/prev' command
2011-10-02 22:18:21 +01:00
Michael Stapelberg
683bfa58d5
tests: Use AnyEvent::I3’s get_marks (requires AE::I3 >=0.08)
...
We also don’t bother with timeouts anymore. It’s expected to run the tests with
a sufficiently recent version of i3. The tests will just hang if it doesn’t
work.
2011-09-26 19:36:27 +01:00
Michael Stapelberg
1675499f15
docs/testsuite: a few corrections by fernandotcl
2011-09-25 14:23:47 +01:00
Michael Stapelberg
1eb011aae1
tests: make sure to leave no tempfiles behind
2011-09-24 16:28:21 +01:00
Michael Stapelberg
10a9d2a439
tests: Bugfix: 11-goto.t: use mktemp for generating a random mark, not base64
...
The base64 string could contain / and + which is treated specially since we
implemented PCRE support :)
2011-09-24 15:56:43 +01:00
Michael Stapelberg
761dac5514
tests: lib/i3test: Use //= instead of unless exists $args{key} (Thanks mxf)
2011-09-24 15:44:42 +01:00
Michael Stapelberg
378611c11c
tests: refactor t/58-wm_take_focus to use wait_for_event
2011-09-24 15:38:31 +01:00
Michael Stapelberg
de5286da59
tests: lib/i3test: Remove open_standard_window, introduce open_window
...
open_window has a better API than open_standard_window. It uses named
parameters and supplies default values for everything you don’t specify. This
way, you can use every feature which X11::XCB::Window supports.
2011-09-24 15:11:37 +01:00
Michael Stapelberg
4da5b7e784
tests: use wait_for_{map,unmap} to eliminate more sleep()s
2011-09-24 13:08:02 +01:00
Michael Stapelberg
4821b13cae
tests: lib/i3test: provide wait_for_map and wait_for_unmap
...
These functions should be used instead of calling wait_for_event directly when
waiting for MAP_NOTIFY or UNMAP_NOTIFY
2011-09-24 13:07:05 +01:00
Michael Stapelberg
38a9eabff1
tests: implement sync_with_i3 and use it instead of sleep()
...
Also use open_standard_window() in a few more places where appropriate
2011-09-24 11:15:08 +01:00
Michael Stapelberg
3167e9ad2d
lib/i3test.pm: reformat exports list
2011-09-22 23:13:13 +01:00
Michael Stapelberg
83560c85d8
lib/i3test.pm: Don’t sleep(0.25), but wait until the window was mapped
...
This makes it faster and less racey
2011-09-22 23:13:12 +01:00
Michael Stapelberg
5542af316f
t/65-for_window: add tests for window_role
2011-09-18 16:05:54 +01:00
Michael Stapelberg
99168a84a9
tests: also make launch_with_config() log to LOGPATH
2011-09-18 15:35:04 +01:00