a86d1137ee
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> |
||
---|---|---|
build-tests | ||
build-utils | ||
common | ||
docs | ||
icons | ||
lib | ||
manpages | ||
objects | ||
spec | ||
tests | ||
themes | ||
utils | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
CMakeLists.txt | ||
LICENSE | ||
Makefile | ||
README.md | ||
awesome-version-internal.h | ||
awesome.c | ||
awesome.desktop | ||
awesome.h | ||
awesomeConfig.cmake | ||
awesomerc.lua | ||
banning.c | ||
banning.h | ||
color.c | ||
color.h | ||
config.h | ||
dbus.c | ||
dbus.h | ||
draw.c | ||
draw.h | ||
event.c | ||
event.h | ||
ewmh.c | ||
ewmh.h | ||
globalconf.h | ||
keygrabber.c | ||
keygrabber.h | ||
luaa.c | ||
luaa.h | ||
mouse.c | ||
mouse.h | ||
mousegrabber.c | ||
mousegrabber.h | ||
property.c | ||
property.h | ||
root.c | ||
selection.c | ||
selection.h | ||
spawn.c | ||
spawn.h | ||
stack.c | ||
stack.h | ||
strut.c | ||
strut.h | ||
systray.c | ||
systray.h | ||
xkb.c | ||
xkb.h | ||
xrdb.c | ||
xrdb.h | ||
xwindow.c | ||
xwindow.h |
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
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).