Commit message (Collapse)AuthorAgeFiles
* point out the limitation with reparenting window managersHEADmasterOmar Polo2020-11-052
* -etags ... || trueOmar Polo2020-10-081
| | | | | improves the error that most make implementation given when etags is not present: it doesn't seem scary anymore.
* grabkey only on the targeted windowsOmar Polo2020-10-082
| | | | | | | | | | | | | | | | | | | | now we grabkey() only on the window that matches what the user requested. That is, given match class 'Firefox' on "C-n" do "<Down>" we only bind C-n on windows that match the class Firefox, and not on the root window as we did before. In order to do this, we traverse the tree during startup and grabkey on matching windows, than we subscribe also to SubstructureNotify so that when a window gets mapped we receive an event. There are still some downsides to this. Firefox uses also '/usr/local/lib/firefox/firefox' as class name on my machine, and sometimes it seems like we don’t grab the key at the first try (maybe Firefox changes the class after the window gets mapped?)
* make grabkey accept the target window as parameterOmar Polo2020-10-082
| | | | | This is needed so we can later grabkey on particular window and not on the root one.
* exec only on key pressOmar Polo2020-10-041
| | | | it seems to me the most sensible approach
* rework send_fake: copy as much as possible from the original eventOmar Polo2020-10-042
| | | | | | | | | | | | | | send_fake now copies almost all field from the original event, except for the the window, keycode and state field. When we grab a key we grab it onto the root window, so every event we receive has a field window that is equal to the root. (this will change in the future), so we need to change that. The keycode and state obviously need to be changed, it's the whole point of the function. It doesn't seem to fix the known bug that occur in dino thought.
* improved readme. also mention bisonOmar Polo2020-10-011
* explicitly pass -b y to ${YACC}Omar Polo2020-10-011
| | | | | OpenBSD yacc doesn't require the option (it's the default value after all), but bison do.
* improved and added documentationOmar Polo2020-10-012
* trying to improve error messageOmar Polo2020-10-011
| | | | | | on some cases, user will get better errors, instead of "foo.conf:5 syntax error". This is the yacc complement for what's been done previously in the parser also.
* reworked the tokenizer -- breaking changeOmar Polo2020-10-012
| | | | | | | | | | | | | | The parser was pratically rewritten. Strings now are required to be quoted with single quotes, while keys (still) requires double quotes. In addition, the * is no longer a valid match argument: to match on everything you need to use the special keyword `all'. match all # before was `match *' on "C-a" do "<Home>" # unchanged match class 'Firefox' # before was `match class Firefox' # ...
* add exec action for keysOmar Polo2020-10-013
| | | | | | | users can now exec command on specifics keys. For example: match class Something on "C-<F5>" do exec my-program
* improved error messagesOmar Polo2020-09-304
| | | | | | yyerror now is a printf-like variadic function. This helps to generate custom error message like "invalid keysym %s" or "invalid key %s" during parsing.
* tabifyOmar Polo2020-09-291
* add ``match *'' to match everythingOmar Polo2020-09-294
| | | | | | | | | Rationale: sometimes it can be useful to globally bind a key. For instance, some users may like to bind on "C-<Up>" do "<Page_Up>" for every application.
* add an error handlerOmar Polo2020-09-292
| | | | | | | the default error handler violates the pledge "stdio" by trying to read (and possibly also write after) some files. Also, I don't like my program to be randomly killed if I try to get class hints on a window that doesn't have any.
* initial commitOmar Polo2020-09-2711