The coordinates as used by X11 place (0, 0) at the top-left corner of the
window, including its border. However, this code wants the position relative to
the drawin's content, thus we also need to substract the border width.
Signed-off-by: Uli Schlachter <psychon@znc.in>
The (x,y) position of a client is outside of the border, but the width/height
does not include the border (so the real width is width+2*border).
This means that we have to also subtract 2*border to make sure that the client
including its border really is inside of the expected area.
Signed-off-by: Uli Schlachter <psychon@znc.in>
No clue why this code is here, but it only allowed floating clients to be
resized beyond the edge of their screen. Clients on a floating layout were
forced to stay on their screen. Quite an unintuitive behavior and now this
behavior is gone.
Signed-off-by: Uli Schlachter <psychon@znc.in>
X11 is a great protocol. When a window manager dies, it can make sure that
client windows don't get destroyed via the save-set. However, revert-to-parent
focus handling means that the focus now shifts to the parent which gets
destroyed and afterwards the focus is "none", which is a really bad state.
Fix this in two places:
First, when shutting down, we switch to PointerRoot mode. This makes sure that
the input focus follows the mouse pointer if no window manager is started.
Also make sure that we set the input focus the way we want it to be after start
up. This obviously cleans up any weird state which might exist before we manage
the input focus.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Sticky clients showed up in the tasklist without being minimized when using the minimizedcurrenttags filter.
This patch fixes that.
Signed-off-by: Björn Åström <bjoast@gmail.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
When parsing .desktop, we care only about [Desktop Entry] group.
Everything else is ignored.
Signed-off-by: Arvydas Sidorenko <asido4@gmail.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
The modules awful.menu and awful.util were placing variables in the global
environment which is a bad thing. Fix this by adding the right module name
prefixes to these variables.
Signed-off-by: Uli Schlachter <psychon@znc.in>
The current code relied on some widget to cause a redraw when the focus changes.
Obviously, this assumption is wrong.
Instead, the code now uses the proper "focus" and "unfocus" signals for setting
titlebar colors, but it also needs to set these colors when a new titlebar is
created (v1 of this patch forgot that). For this reason, update_colors has to be
saved for when a titlebar's colors are updated.
This commit also reverts the ugly redraw_hook hack from commit a1918b8306.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This patch gets rid of lots of errors that happen when beautiful.init() is not
called in the config. Most of them were missing default values.
Thanks to panthar for reporting this.
Signed-off-by: Uli Schlachter <psychon@znc.in>
In 3.4, an imagebox' image is set via "box.image = foo". Since widgets are just
ordinary tables in 3.5, this will actually mess with the imagebox' image without
setting it correctly.
Fix this by renaming the entry to "_image".
A similar patch was applied to the textbox widget ages ago.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This was passing c.icon as the icon of a menu entry. However, this is just a
light userdata which has to be turned into an lgi cairo surface object. Luckily,
surface.load() does that for us.
Signed-off-by: Uli Schlachter <psychon@znc.in>
We only need lgi for running, not for building. This means that our lgi
dependency is easily missed. This commit makes this dependency more explicit.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This saves space when constructing widgets, because some common cases can now be
done in a single line of code.
Signed-off-by: Uli Schlachter <psychon@znc.in>
* Add -O1 to make -wuninitialized work
* Remote -Wredundant-decls because it gave useless warnings
Signed-off-by: Gregor Best <gbe@ring0.de>
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit makes it possible to change the wm_name attribute, which
means that programs can be shown/hidden according to the wishes of the
user.
Possible usecase: A user is using Gnome and Awesome together, but sinc
wm_name by default is awesome, all the apps shipped with GNOME DE are
hidden by default. Changing wm_name attribute in this case would solve
the issue.
Signed-off-by: Ignas Anikevicius (gns_ank) <anikevicius@gmail.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
This just makes the code for ignoring screens on Xinerama apply to RANDR screens
as well. The code now also applies to protocol screens, but there is only ever a
single one of those, so nothing should change here.
Signed-off-by: Uli Schlachter <psychon@znc.in>
The port to glib failed to actually watch the file descriptor for events and
thus awesome silently ignored all dbus messages. My bad.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit ports awesome from libev to the glib main loop. This means that
awesome has fewer dependencies, because we were already depending on glib before
and now no longer need glib.
However, the main reason for this change is that, thanks to lgi, we have glib
bindings for lua. This means that lua code can add all kinds of event sources to
the main loop (timeouts, fd watchers, SIGCHLD watchers, ....). Yay
Signed-off-by: Uli Schlachter <psychon@znc.in>
Since we are no longer using module(), luadoc no longer understands our modules.
With this commit we use LDoc instead which seems more modern.
Signed-off-by: Uli Schlachter <psychon@znc.in>
This replaces lots of function foo.bar(this, ...) with function foo:bar(...).
There should be no other changes in this commit.
The point is to make it easier for api documentation tools to figure out that
these are methods on objects.
Signed-off-by: Uli Schlachter <psychon@znc.in>
The notification spec allow sending icons as data with a dbus message. The
rowstride for this can be set which means there can be bytes after each row of
icon data which must be ignored.
Before this commit, naughty wasn't properly ignoring these garbage bytes which
resulted in weird notifications.
Thanks to dadrc for reporting that gmusicbrowser's notifications didn't work.
Signed-off-by: Uli Schlachter <psychon@znc.in>
The code assumed that a window gets resized when it enters/leaves the fullscreen
mode. This was needed because the code for resizing a window hides and shows the
titlebars.
However, it is possible for a window to enter/leave fullscreen mode without
getting resized, because it already has the correct geometry. In this case,
titlebars were not handled correctly.
This commit fixes that by forcing a resize to the current geometry when the
fullscreen flag is toggled.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Commit 03e0ee53d2 removed window shapes, because at the time I was too
lazy to port them from the old image system to oocairo.
This commit re-adds them, but for now only as a way to set the shape.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Fullscreen windows only worked on a screen which had x and y coordinates 0.
Otherwise, the window inside the frame window was completely misplaced.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Drawables could never be garbage-collected, because of the "wallpaper_changed"
signal. The callback function for this signal kept a strong reference to the
drawable.
Fix this by putting all drawable's draw() methods into a weakly keyed tabled so
that the strong reference to them disappears.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Fullscreen clients shouldn't be decorated, thus hide titlebars on those.
This commits assumes that clients get resized when they enter or leave the
fullscreen state. I don't think that this assumption is necessarily true, but
let's just wait for bug reports. :-)
Signed-off-by: Uli Schlachter <psychon@znc.in>