Commit Graph

118 Commits

Author SHA1 Message Date
Michael Stapelberg
1ab3621656 re-add src/cmdparse.* to clean target for people who are switching from the master branch / have old build dirs 2012-02-16 23:44:18 +00:00
Michael Stapelberg
29aa28b623 commands_parser: use safewrapper functions 2012-01-28 10:35:18 +00:00
Michael Stapelberg
3229f7677f Rip out the old command parser, remove migration code 2012-01-27 22:11:03 +00:00
Michael Stapelberg
9381da2bf0 Also install /usr/share/applications/i3.desktop
With this file, you can use the following command to run i3 in GNOME:

    gconftool-2 -s /desktop/gnome/session/required_components/windowmanager i3 --type string
2012-01-26 18:16:13 +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
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