Commit Graph

6304 Commits

Author SHA1 Message Date
Emmanuel Lepage Vallee 1aacf1efc4 Add useless gap utility functions 2015-07-02 22:11:01 +02:00
Daniel Hahler 33a6ade4d7 Merge pull request #224 from blueyed/request-focus-signal
Add 'request::focus' signal, use it with autofocus
2015-06-25 07:00:22 +02:00
Daniel Hahler cb7f4b06eb Use `hints` table argument with `request::activate` signal 2015-06-25 06:47:39 +02:00
Daniel Hahler b7e2508144 docs: include lib/awful/ewmh.lua 2015-06-25 06:47:39 +02:00
Daniel Hahler 2e2d60a1f9 client.focus.byidx: handle raising in the function itself 2015-06-25 06:47:39 +02:00
Daniel Hahler ed09d8ed4f Use request::activate with raise=false instead
Ref: https://github.com/awesomeWM/awesome/pull/224#issuecomment-101790416
2015-06-25 06:47:39 +02:00
Daniel Hahler 6dc355cf71 autofocus: use request::focus instead of request::activate
In #152 I've changed the autofocus handler to emit the request::activate
signal, instead of setting client.focus only.

This is wrong IMHO, and can be annoying:

If you have two floating clients above a tiled / maximized one, and
close one of the floating ones, with the tiled one being the one
selected by autofocus, it will be raised above the other floating
client.

This is changed now to use the new `request::focus` signal instead.

This basically reverts 20cdb5d (#152), but allows for customizing this
behavior, by overriding the default `request::focus` handler
(`ewmh.focus`).

It would be nice if there was a helper to check if a window's content
isn't visible at all (i.e. covered by other windows), and that could be
used then by the (new) default handler for request::focus - raising the
client only, if it's completely covered by another window.

Fixes https://github.com/awesomeWM/awesome/issues/217
2015-06-25 06:47:39 +02:00
Daniel Hahler 401f21f8e2 Add request::focus signal, with ewmh.focus being the default handler
This still does `client.focus = c` by default, but allows to customize
it.

This was initially suggested in #194, but by using `request::activate`
instead, which would not be the same.  Therefore a new signal is being
used instead.

Helped-by: Samir Benmendil <samir.benmendil@gmail.com>
2015-06-25 06:47:39 +02:00
actionless cec04b2684 Add DPI support and 'xresources' theme
This makes awesome respect DPI settings, and adds a new theme based on
xrdb and xsettingsd color settings ("xresources").

Closes https://github.com/awesomeWM/awesome/pull/229
2015-06-25 06:40:38 +02:00
Daniel Hahler 61275ccba0 Merge branch 'psychon-weak_connect'
Closes https://github.com/awesomeWM/awesome/pull/263
2015-06-25 06:37:42 +02:00
Uli Schlachter d990e7918f Use :weak_connect_signal() for connecting to widget::updated
This way "that other widget" doesn't prevent the current widget from being
garbage collected.

Please note that this in all of these cases the widget under consideration does
have a strong reference to the callback function. This means that the callback
cannot be garbage collected until "this widget" itself is collected. Thanks to
this, this change is safe.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-25 06:37:05 +02:00
Uli Schlachter 089ed0e8dd gears.object: Add :weak_connect_signal()
Connecting to a signal weakly has the same effect as connecting to it strongly,
but it allows the garbage collector to disconnect the signal in case nothing
else references this function.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-25 06:37:04 +02:00
Daniel Hahler 38840c911b default config: raise with "maximize" and "fullscreen"
After using sloppy mouse focus to select a client (which does not raise
it already), maximizing/fullscreening it should then raise it.

This also uses the new shortcut `c.maximized = not c.maximized`.

Closes https://github.com/awesomeWM/awesome/pull/270
2015-06-24 05:17:00 +02:00
Emmanuel Lepage Vallée 7d430cf51a Merge pull request #274 from blueyed/spawn-warn-for-errors
Call `warn` in case of errors in luaA_spawn
2015-06-22 16:28:42 -04:00
Daniel Hahler ccb6843144 Call `warn` in case of errors in luaA_spawn
This is useful to have, as it might indicate a missing program etc.
2015-06-22 14:01:16 +02:00
Daniel Hahler 32b584258b CMakeLists.txt: fix installation of themes
Install *.lua from ${BUILD_DIR}/themes.
2015-06-22 13:26:36 +02:00
actionless 89beaf12e5 fix: rename the rest of *.lua.in files 2015-06-22 11:28:36 +02:00
Daniel Hahler d4d5bbcd5d Merge pull request #266 from awesomeWM/juw-docs
docs: move documentation to C source
2015-06-21 21:33:22 +02:00
Daniel Hahler 3b366f993c Make stdout/stderr line buffered
This improves the behaviour with print()ing for debugging, when the
output is redirected to a file.

I was using `setbuf(…, 0)` initially, but it makes sense to buffer it
per line.  This uses `setvbuf` instead of `setlinebuf`, which might not
be available everywhere.

Closes https://github.com/awesomeWM/awesome/pull/267
2015-06-20 13:05:25 +02:00
Uli Schlachter 1408e8b952 Unset object's metatable in __gc
Run the following code:

  do
      local d
      local f = function() d.visible = true end
      if _VERSION >= "Lua 5.2" then
          setmetatable({}, { __gc = f })
      else
          getmetatable(newproxy(true)).__gc = f
      end
      d = drawin({})
  end
  collectgarbage("collect")

Awesome will segfault.

The reason for this is that after the above code ran, all variables in it are
unreferenced and will be garbage-collected at the next sweep phase. Lua runs
garbage collectors in the inverse order that their corresponding objects were
"marked" which means for the above code that the drawin's garbage collector will
run before function f runs. So the code will access the drawin after its
destructor already ran. Obviously, awesome's C code does not expect nor
correctly deal with this situation and was dereferencing a NULL pointer.

To fix this, this commit "unsets" the metatable of a userdata object when it is
being garbage collected. Since the type of a userdata is inferred via its
metatable, the object will no longer be accepted by luaA_toudata().

For the above code this will result in an unhelpful error message saying that
something tried to index a userdata, but userdata cannot be indexed. At least we
no longer crash and the traceback of the error will hopefully point at some __gc
metamethod which should be enough of a hint to figure out the problem.

Thanks-to: http://blog.reverberate.org/2014/06/beware-of-lua-finalizers-in-c-modules.html
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-20 12:33:17 +02:00
Daniel Hahler d2e25c3594 cmake: s/ESCAPE_QUOTE/ESCAPE_QUOTES
This appears to be the correct name for 2.8.12 [1] already, but CMake
3.2.3 complains loud(er) now.

1: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:configure_file
2015-06-20 01:56:21 +02:00
Daniel Hahler 7989096cc2 Travis: install CMake 3+ (for newer FindLua) 2015-06-20 01:55:31 +02:00
Julian Wollrath ba62665fd6 Remove some trailing whitespaces. 2015-06-19 23:13:31 +02:00
Julian Wollrath 26f15a13f3 Document C API directly in the C source code
v2: Add available signals to the docs.

Signed-off-by: Julian Wollrath <jwollrath@web.de>
2015-06-19 23:13:31 +02:00
Julian Wollrath 6cc7be512c Remove the *.in from all files.
Signed-off-b: Julian Wollrath <jwollrath@web.de>
2015-06-19 22:33:32 +02:00
Julian Wollrath 130504a3d0 Rip out useless Doxygen support
Signed-off-by: Julian Wollrath <jwollrath@web.de>
2015-06-19 22:31:13 +02:00
Heiko Becker b0d4f4eb0e Use version agnostic FindLua from cmake-3.0.0 2015-06-19 22:31:13 +02:00
Emmanuel Lepage Vallée 4bea4554fb Merge pull request #265 from blueyed/doc-improve-key
doc: improve doc for key.key and awful.key
2015-06-19 16:09:26 -04:00
Daniel Hahler e25bc558c4 doc: fix typos with root.c and beautiful 2015-06-19 21:04:17 +02:00
Daniel Hahler c2ee98b69c doc: improve doc for key.key and awful.key 2015-06-19 20:59:14 +02:00
jaysonwillson 3fe663fc60 Fix interactive notifications: use uint32 instead of int32
Fixes https://github.com/awesomeWM/awesome/issues/259.
Closes https://github.com/awesomeWM/awesome/pull/261.
2015-06-15 02:23:57 +02:00
Daniel Hahler 76fc6b3306 doc: LDoc config (version in desc); improve 02-contributing.md
Adding @AWESOME_VERSION@ to the LDoc description is useful to have on
the index page.  While at it, it makes the description more
verbose/correct.

For docs/02-contributing.md, it lists the current aliases for typed
parameters, prefers/mentions `@tparam` and `@treturn` only, and fixes
some minor wording.

Closes #262.
2015-06-15 01:58:45 +02:00
Daniel Hahler e4c547d36b Travis: 'make build' for luarocks
I am not sure if this is required, but documented like that.
2015-06-13 16:40:54 +02:00
Uli Schlachter d2f583d839 Screen __index: Don't turn argument into a string
Calling lua_tostring() on a number/integer, turns that stack slot into a string.
This patch changes the code to only call lua_tostring() if the function argument
really is a string.

This partly also caused https://github.com/awesomeWM/awesome/issues/238.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-13 11:18:47 +02:00
Uli Schlachter 5cf13dba6b awful.layout.inc: Hide API breakage
In commit 3cbdc2a79f, the argument order for awful.layout.inc was changed
from (layouts, i, s) to (i, s, layouts), so that layouts can become an optional
parameter. However, this change (obviously) breaks user configs.

To hide this breakage, we assume the old argument order if the number i is a
table. This cannot break anything, since the operator "+" will error out on
tables anyway. :-)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 19:07:31 +02:00
Uli Schlachter 9555c2d4a6 Emit property::focusable where needed
Before this, doing c.focusable = nil didn't emit this signal.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 11:00:19 +02:00
Uli Schlachter 31fcc11272 textclock: Load GLib.DateTime only once
I doubt that this makes much of a difference since lgi surely caches things, but
this still seems nicer to me.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 10:57:42 +02:00
Uli Schlachter fe0a96d7f1 keyboardlayout: Don't mess with undefined variables
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 10:57:22 +02:00
Uli Schlachter 75f2f6bf86 corner layout: Don't set geometries directly
Since commit 52ec0ebd93, layouts should return the geometries to their caller
instead of setting them directly. The caller will also fix up the geometries for
border width.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 10:54:59 +02:00
Uli Schlachter a64cd26f62 corner layout: Properly "local"ize variables
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-06-12 10:52:44 +02:00
Ganesh Ajjanagadde f2e74994f2 awful.textclock: fix timezone handling
This fixes issue #249.
2015-06-12 02:28:06 +02:00
Salorium c30fe5b166 wibox.widget.systray: fix error while drawing widget
> bad argument #2 to 'systray' (number has no integer representation)

Closes https://github.com/awesomeWM/awesome/pull/247
2015-06-12 02:24:44 +02:00
Alexis BRENON c2842fe8f3 Add a new tag layout: corner
Closes https://github.com/awesomeWM/awesome/pull/251
2015-06-12 02:18:07 +02:00
Daniel Hahler 3d8db91602 doc: fix ldoc for client.focus.history.get 2015-06-10 21:39:50 +02:00
Daniel Hahler bf389e4cce Travis: workaround: actually install/pin busted 2.0.rc8
This fixes the previous commit (6733cff).
2015-06-10 21:29:39 +02:00
Daniel Hahler 6733cff842 Travis: workaround: use luassert 1.7.6 / busted 2.0.rc8
Temporarily fix infinite loop with luassert 1.7.7 (required by busted
2.0.rc9).  Ref: https://github.com/awesomeWM/awesome/issues/258
2015-06-10 20:58:32 +02:00
Daniel Hahler 6d5973cb8c Travis: update luarocks to 2.2.2 2015-06-10 20:01:38 +02:00
Daniel Hahler 256ecd4d8e Improve git-version-stamp's error messages 2015-06-10 19:41:48 +02:00
Daniel Hahler f9a3b97b50 Travis: use tarballs instead of git-clone
This should improve performance and make it more reliable in general
(also in terms of timeouts when cloning).
2015-06-10 18:19:19 +02:00
Daniel Hahler 84d764f3ba Merge pull request #227 from petoju/master
Support for XKB - changing keyboard layouts

Closes https://github.com/awesomeWM/awesome/pull/227
2015-06-10 17:52:24 +02:00