Go to file
Uli Schlachter ce965424c3 gears.object:weak_connect_signal: Use a weak-value table (#520)
Lua will remove objects as values from a weak table before these objects are
finalized, but as values only in the next garbage collection cycle after the
object was finalized. Up to now, gears.object uses a table with weak keys so
that :disconnect_signal() works. This means that a signal can still call methods
which were already considered garbage by the garbage collector and thus can use
userdata from the C side which was already finalized. Crashes and other bugs
result.

This commit changes the code so that the function is also a value in the weak
table. Thus, the GC will remove the entry before the object is finalized.

Special magic is needed for Lua 5.1, because there only userdata has the
behavior that we want while we have a function. We do some magic with function
environments to make this work...

Closes https://github.com/awesomeWM/awesome/pull/567.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-12-10 23:19:52 +01:00
build-tests use CMake check_function_exists() for execinfo 2010-10-11 22:52:20 +02:00
build-utils travis-apidoc: swap 'relevant' and 'boilerplate' commits 2015-10-30 00:02:19 +01:00
common Remove useless information from awesome -v 2015-12-01 20:17:21 +01:00
docs doc: distinguish between client.object and client.class 2015-07-26 00:45:38 +02:00
icons icons: remove invaders 2009-09-08 13:29:25 +02:00
lib gears.object:weak_connect_signal: Use a weak-value table (#520) 2015-12-10 23:19:52 +01:00
manpages Document "--replace" better 2015-10-11 15:00:08 +02:00
objects Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00
spec Add a test case capturing problems with weak_connect_signal (#520) 2015-12-10 23:19:52 +01:00
tests Add failing test: c.startup_id should be nil when snid is disabled 2015-11-05 23:03:59 +01:00
themes feat(themes: default): add icons for minimize button 2015-09-13 14:41:07 +02:00
utils awesome-client: do not send empty requests 2015-07-26 00:40:43 +02:00
.gitignore gitignore: remove awesome-client 2009-04-11 16:10:42 +02:00
.travis.yml Get LuaRocks via HTTPS instead of HTTP 2015-11-20 17:17:52 +01:00
CMakeLists.txt Modify CFLAGS handling 2015-09-19 12:02:03 +02:00
LICENSE chance license to GPLv2 2007-09-12 14:29:51 +02:00
Makefile Makefile: add "tags" to .PHONY targets 2015-07-11 22:50:11 +02:00
README.md Add README.md symlink 2015-02-28 23:14:13 +01:00
awesome-version-internal.h Remove useless information from awesome -v 2015-12-01 20:17:21 +01:00
awesome.c Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00
awesome.desktop Remove NoDisplay from desktop file 2013-02-25 11:50:00 +01:00
awesome.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
awesomeConfig.cmake Remove useless information from awesome -v 2015-12-01 20:17:21 +01:00
awesomerc.lua feat(lib: awful: hotkeys_popup): widget to show awesome and third-party keybindings 2015-12-02 01:02:15 +01:00
banning.c doc: fix warnings from doxygen 2015-02-14 20:17:13 +01:00
banning.h Clean up header includes 2014-03-30 20:07:48 +02:00
color.c Clean up header includes 2014-03-30 20:07:48 +02:00
color.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
config.h Remove the *.in from all files. 2015-06-19 22:33:32 +02:00
dbus.c properly flush dbus connection after send 2015-11-21 16:36:02 +01:00
dbus.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
draw.c Merge pull request #142 from psychon/check-cairo-setup 2015-02-18 21:37:56 +01:00
draw.h Emit property::geometry only if something changed 2015-10-14 19:40:18 +02:00
event.c Grab client keys on the client window (#496) 2015-10-16 17:30:46 +02:00
event.h drawin: lazily configure drawin windows 2015-08-23 15:25:23 +02:00
ewmh.c Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00
ewmh.h Clean up header includes 2014-03-30 20:07:48 +02:00
globalconf.h Exit when we loose the WM_Sn selection 2015-10-10 21:59:12 +02:00
keygrabber.c keygrabber: ignore modifiers for name of control keys 2015-08-10 23:05:16 +02:00
keygrabber.h Clean up header includes 2014-03-30 20:07:48 +02:00
luaa.c Make awesome.quit() during startup work 2015-10-10 22:25:56 +02:00
luaa.h drawin.c: check for integer for x, y, width, height 2015-08-12 14:07:22 +02:00
mouse.c doc: distinguish between client.object and client.class 2015-07-26 00:45:38 +02:00
mouse.h Revert "Support more than 5 mouse buttons" (FS#1082) 2013-03-29 16:07:13 +01:00
mousegrabber.c Document C API directly in the C source code 2015-06-19 23:13:31 +02:00
mousegrabber.h Revert "Support more than 5 mouse buttons" (FS#1082) 2013-03-29 16:07:13 +01:00
property.c Merge pull request #122 from blueyed/fix-ldoc-doxygen-warnings 2015-02-15 11:49:50 +01:00
property.h Add new request::urgent signal 2015-02-10 19:27:46 +00:00
root.c Do not call `xcb_ungrab_key` twice (before `xwindow_grabkeys`) 2015-08-01 14:16:06 +02:00
selection.c Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00
selection.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
spawn.c Spawn: Improve handling of startup notification 2015-11-05 23:02:20 +01:00
spawn.h Clean up header includes 2014-03-30 20:07:48 +02:00
stack.c doc: fix warnings from doxygen 2015-02-14 20:17:13 +01:00
stack.h Clean up header includes 2014-03-30 20:07:48 +02:00
strut.c remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
strut.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
systray.c Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00
systray.h remove encoding=utf-8 from modelines 2011-09-11 17:34:09 +02:00
xkb.c Enable detectable autorepeat (#550) 2015-11-07 12:45:04 +01:00
xkb.h Less reloading of keymap, fixes from psychon comments 2015-05-28 23:20:17 +02:00
xrdb.c minor: fix/improve doc comments 2015-07-12 17:42:53 +02:00
xrdb.h Add DPI support and 'xresources' theme 2015-06-25 06:40:38 +02:00
xwindow.c Fix obvious typo in xwindow_translate_for_gravity() 2015-10-10 17:38:51 +02:00
xwindow.h Set WM_CLASS and WM_NAME on all our windows (#551) 2015-11-19 22:23:25 +01:00

README.md

Readme

About awesome

awesome is a highly configurable, next generation framework window manager for X.

Building and installation

After extracting the dist tarball, run:

make

This will create a build directory, run cmake in it and build awesome.

After building is finished, you can install:

make install  # you might need root permissions

Running awesome

You can directly select awesome from your display manager. If not, you can add the following line to your .xinitrc to start awesome using startx or to .xsession to start awesome using your display manager:

exec awesome

In order to connect awesome to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.:

DISPLAY=foo.bar:1 exec awesome

(This will start awesome on display :1 of the host foo.bar.)

Configuration

The configuration of awesome is done by creating a $XDG_CONFIG_HOME/awesome/rc.lua file, typically ~/.config/awesome/rc.lua.

An example configuration named awesomerc.lua.in is provided in the source.

Troubleshooting

On most systems any message printed by awesome (including warnings and errors) is written to ~/.xsession-errors.

If awesome does not start or the configuration file is not producing the desired results the user should examine this file to gain insight into the problem.

Reporting issues

Please report any issues you may find on our bugtracker. You can submit pull requests on the github repository. Please read the @{02-contributing.md} guide for any coding, documentation or patch guidelines.

Status

Build Status

Documentation

Online documentation is available at http://awesome.naquadah.org/doc/, and can be built using make ldoc.

License

The project is licensed under GNU General Publice License v2 or later. You can read it online at (v2 or v3).