Commit Graph

114 Commits

Author SHA1 Message Date
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 0af05710b2 add i3-dump-log, a tool to dump the SHM log 2011-12-10 11:27:40 +00:00
Michael Stapelberg acf29dbfd5 Makefiles: introduce $(FLEX) and $(BISON) 2011-11-22 00:01:01 +00:00
Michael Stapelberg 14abafb3c8 makefile: correctly depend on libi3/*.c to recompile libi3 when necessary 2011-10-23 13:16:39 +01:00
Michael Stapelberg 6927e899e6 makefile: use /bin/echo to get consistent results for the escaping
On the buildbot slave machine, we have a different version of zsh which seems
to handle this slightly different with the built-in echo…
2011-10-23 11:31:55 +01:00
Raphael Kubo da Costa 51116b46f1 Use $(MAKE) instead of hardcoding `make' in the Makefiles.
When one is using gmake or anything other than make itself, the same
command should be used in the Makefiles too.
2011-10-10 11:43:16 +01:00
Michael Stapelberg 0a1a32e06a Fix 'make dist' 2011-10-08 19:12:28 +01:00
Michael Stapelberg e3ba716d42 Makefile: include libi3/ in 'dist' 2011-10-02 16:36:49 +01:00
Michael Stapelberg 094c26556e Introduce libi3, an *internal* library to eliminate code duplication 2011-10-02 16:11:30 +01:00
Michael Stapelberg 4f6e58e250 Makefiles: prefix compilation messages (for parallel builds) 2011-10-02 16:04:18 +01:00
Michael Stapelberg e73812802c makefile: make SUBDIRS constant 2011-10-02 16:03:09 +01:00
Michael Stapelberg c0d198bbc9 Include i3-sensible-* in 'make dist' 2011-09-29 21:04:39 +01:00
Michael Stapelberg 6420b2b102 Introduce the i3-sensible-{pager,editor,terminal} scripts
The former two provide fallbacks in case $PAGER or $EDITOR is not set (which
might be more common than you think, because they have to be set in
~/.xsession, not in the shell configuration!) while the latter tries to launch
a terminal emulator. The scripts are most prominently used in i3-nagbar, which
alerts the user when the configuration is broken for some reason. Also,
i3-sensible-terminal is used in the default configuration.

This commit does not rely on the shell supporting ${PAGER:-less} anymore, which
is not the case for 'fish'.
2011-09-25 18:46:37 +01:00
Michael Stapelberg 009090093c make dist: include i3bar, pre-generate its manpage 2011-08-01 23:27:50 +02:00
Michael Stapelberg 29d579c4cc makefile: redirect stderr of 'which' to /dev/null when checking for lcov 2011-08-01 17:12:04 +02:00
Michael Stapelberg 339a7cb8c3 make i3bar use i3’s common.mk 2011-08-01 16:13:19 +02:00
Michael Stapelberg 8353b9625d i3-migrate-config-to-v4: drop the .pl suffix
As lintian (a Debian package checker) mentions, it is more clever to install it
without the extension, since the implementation language might change.
2011-07-31 23:11:45 +02:00
Michael Stapelberg 49cf7ff2d7 makefile: use $SUBDIRS for clean/distclean 2011-07-31 23:01:33 +02:00
Michael Stapelberg e0703b8150 make dist: cleanup τεχ files before copying 2011-07-31 22:19:06 +02:00
Michael Stapelberg 6a07e08320 makefiles: build subdirs (Thanks Kacper) 2011-07-25 00:31:35 +02:00
Michael Stapelberg 28a8df684f Exclude docs/*.svg from dist tarball 2011-07-23 22:07:19 +02:00
Michael Stapelberg 2eefb83b3b makefile: cleanup src/cfgparse.dot
Conflicts:

	Makefile
2011-07-23 22:06:50 +02:00
Michael Stapelberg 5ac7a52573 makefile: pre-generate docs/ 2011-07-23 22:05:33 +02:00
Michael Stapelberg 9c20e7f726 makefile: includue i3-wsbar in dist 2011-07-23 21:58:07 +02:00
Michael Stapelberg 7512f633a7 makefile: add i3-config-wizard to {dist,}clean, dist 2011-07-15 19:21:39 +02:00
Michael Stapelberg 12d3a349de makefile: add i3-migrate-config-to-v4.pl 2011-07-15 19:14:28 +02:00
Michael Stapelberg 2de5cb06c8 makefile: add i3-nagbar to {dist,}clean target, include i3-nagbar in dist 2011-07-15 19:08:21 +02:00
Michael Stapelberg 806ad77399 Makefile: use $(MAKE) instead of make 2011-07-13 13:29:39 +02:00
Michael Stapelberg 3749ed2fbe Makefile: respect and use LIBS (Thanks Kacper) 2011-07-13 13:28:31 +02:00
Michael Stapelberg 93f906308d makefiles: respect and use the CPPFLAGS variable (Thanks Kacper)
See also: http://stackoverflow.com/questions/2754966/cflags-vs-cppflags
2011-07-13 13:25:15 +02:00
Michael Stapelberg 868c804cb8 makefile: install i3-config-wizard 2011-07-11 19:45:22 +02:00
Michael Stapelberg 2897a761c8 makefile: bugfix: filter out auto-generated files 2011-07-11 19:30:26 +02:00
Michael Stapelberg 29e2e696ed makefile: install ${SYSCONFDIR}/i3/config.keycodes 2011-07-11 19:24:04 +02:00
Michael Stapelberg 05f7a50d44 makefile: use src/*.c again, we no longer have files which should not be compiled 2011-07-11 18:21:13 +02:00
Michael Stapelberg d0a3e673b8 Makefile: add i3-nagbar to install target 2011-07-10 14:41:00 +02:00
Michael Stapelberg cf124e18f9 Makefile: install i3-migrate-config-to-v4.pl 2011-07-06 20:51:49 +02:00
Michael Stapelberg e29891bdd4 makefile: include yajl-fallback in 'make dist' 2011-05-28 22:12:06 +02:00
Michael Stapelberg 5ae4620a24 Time Lord technology: for_window config directive to run arbitrary cmds
An example to set all XTerms floating:
    for_window [class="XTerm"] mode floating

To make all urxvts use a 1-pixel border:
    for_window [class="urxvt"] border 1pixel

A less useful, but rather funny example:
    for_window [title="x200: ~/work"] mode floating

The commands are not completely arbitrary. The commands above were tested,
others may need some fixing. Internally, windows are compared against your
criteria (class, title, …) when they are initially managed and whenever one of
the relevant values change. Then, the specified command is run *once* (per
window). It gets prefixed with a criteria to make it match only the specific
window that triggered it. So, if you configure "mode floating", i3 runs
something like '[id="8393923"] mode floating'.
2011-05-15 20:10:25 +02:00
Michael Stapelberg 7e587f3570 add coverage target to makefile to generate a coverage report 2011-05-08 20:08:46 +02:00
Fernando Tarlá Cardoso Lemos c0563af3e2 Bring back some more EWMH support. 2011-03-14 17:11:33 +01:00
Michael Stapelberg a9c549b43f properly clean all files in 'make clean' 2011-03-07 20:24:23 +01:00
Michael Stapelberg a92b9dca73 Bugfix: fix disabling RandR outputs 2011-02-21 01:43:39 +01:00
Michael Stapelberg 26a416e016 refactor tree_move() into src/move.c, change config (!), change testcase
Due to lots of cases which were added and added to tree_move(), the function
was not really easy to understand. For this refactoring, I wrote tree_move()
from scratch, thinking about (hopefully) all cases. The testsuite still passes.

The move command also has different parameters now. Instead of the hard to
understand 'before v' stuff, we use 'move [left|right|up|down]'.
2011-02-14 23:05:20 +01:00
Axel Wagner fb6d117c42 Port sighandler to tree-branch 2010-12-31 19:36:29 +01:00
Michael Stapelberg 87cffac03a remove i3-wsbar from 'make install', not supported at the moment 2010-12-06 13:20:37 +01:00
Michael Stapelberg edf4aa433f need more escaping for the version string when replacing in makefile 2010-12-06 13:14:14 +01:00
Michael Stapelberg ee45c92564 Implement resizing (still buggy)
Committing basic resizing functionality. We need testcases for the bugs and
then eliminate them.
2010-11-29 10:56:16 +01:00
Blekos EelVex Kostas fd79a3dd5b remove space for flex's -P flag 2010-11-28 13:05:06 +01:00
Fernando Tarlá Cardoso Lemos 69fc6449dc libXcursor support (themed cursors). 2010-11-28 13:01:45 +01:00
Michael Stapelberg a79d33fc7f Remove some dead code (to be re-implemented), rename nc.c to main.c 2010-07-11 22:12:25 +02:00