Go to file
Uli Schlachter a86d1137ee Select button press/release events on drawins
Some words about X11 event handling: Every X11 client can select input on any
window. For this, inside the X11 server each window has for each client a
bitmask for the kind of events that this client is interested in. When a mouse
button is pressed inside of a window, a corresponding event is generated for
that window and sent to all X11 clients which asked for
XCB_EVENT_MASK_BUTTON_PRESS. When no client is interested in this event, the
event is propagated to the parent window and the same procedure is done again
here. This continues up until the root window is reached.

Some words about the event masks that awesome uses: For clients, we ask for
button press events on the frame window that we reparent the client window into
so that we get any kind of press on the titlebar (and also events inside of the
client window if the client itself doesn't care for click events?). We are also
interested in button presses / releases on the root window. However, before this
commit, we didn't actually ask for button events on drawins (e.g. the wibox).
This worked fine, because no one asked for these events and the event propagated
to the root window where it was then sent to awesome.

However, newer Qt versions do something weird and the above broke. I don't
actually know what is going on. I know about the above propagation rules, but
looking at protocol traces of what Qt does, awesome should still get the button
events. During startup, Qt asks for button events on its own windows. After a
hotplug event, it asks the same again, but now also includes the root window.
So... how can Qt asking for button events on the root window cause awesome not
to get them? I have no idea.

(And yes, I guess that Qt asking for mouse events on the root window is a bug,
but I have no idea how exactly this happens nor about any other side effects of
it).

This commit makes us ask for button events on our drawins so that the server
will send them to us. This is the right thing to do anyway and it was reported
to have some positive effects.

Ref: https://github.com/awesomeWM/awesome/issues/415
Signed-off-by: Uli Schlachter <psychon@znc.in>
2015-12-13 18:10:29 +01:00
build-tests Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
build-utils Add vim modelines to all shell scripts 2015-12-12 17:36:35 +01:00
common Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
docs Add the right vim modeline to all lua files 2015-12-12 17:42:33 +01:00
icons icons: remove invaders 2009-09-08 13:29:25 +02:00
lib doc fixes to awful.menu.clients 2015-12-12 20:12:08 +01:00
manpages Document "--replace" better 2015-10-11 15:00:08 +02:00
objects Select button press/release events on drawins 2015-12-13 18:10:29 +01:00
spec Add the right vim modeline to all lua files 2015-12-12 17:42:33 +01:00
tests Merge pull request #593 from psychon/editorconfig 2015-12-12 19:13:53 +01:00
themes Add the right vim modeline to all lua files 2015-12-12 17:42:33 +01:00
utils Add vim modelines to all shell scripts 2015-12-12 17:36:35 +01:00
.editorconfig Add an EditorConfig file 2015-12-12 17:48:42 +01: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 Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
awesome.c add an option to set the preferred client icon size 2015-12-07 22:59:32 +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 Add a vim modeline to all C source 2015-12-12 17:42:16 +01: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 add an option to set the preferred client icon size 2015-12-07 22:59:32 +01:00
ewmh.h add an option to set the preferred client icon size 2015-12-07 22:59:32 +01:00
globalconf.h add an option to set the preferred client icon size 2015-12-07 22:59:32 +01: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 add an option to set the preferred client icon size 2015-12-07 22:59:32 +01: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 add an option to set the preferred client icon size 2015-12-07 22:59:32 +01:00
property.h Clean up header includes 2014-03-30 20:07:48 +02: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 awesome.spawn: Add exit status support 2015-11-29 11:53:12 +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 Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
xkb.h Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
xrdb.c Add a vim modeline to all C source 2015-12-12 17:42:16 +01:00
xrdb.h Add a vim modeline to all C source 2015-12-12 17:42:16 +01: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).