Commit Graph

2338 Commits

Author SHA1 Message Date
Emmanuel Lepage Vallee 38185b161a wibar: Add a remove function 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee dafd29f2a3 awful.wibox: Rename to awful.wibar
Why:

 * Two different (but related) concepts had the same name
 * Users were confused for years on IRC
 * The wibar name was already in use in some doc to avoid confusion
2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 7d390a91f1 awful.wibox: Import some wibox documentation. 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 77380eb121 wibox: Move the documentation to a shared file
To be re-used by wibars, tooltips and menus
2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 833ad952f6 awful.wibox: Port to the placement API 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 50c97ed167 placement: Add a callback to detach the placement function 2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 21c9766aa6 placement: Fix under_mouse
The function stopped actually setting the geometry...

This was missed by tests because of an oversaw elsewhere.
2016-05-15 17:17:12 -04:00
Emmanuel Lepage Vallee 45ff7efce5 placement: Support 'attach' in composited placement functions 2016-05-15 17:17:11 -04:00
Emmanuel Lepage Vallee e78a07574b placement: Do not forward the args in get_parent_geometry
The args are for 'd', not the parent.
2016-05-15 17:17:11 -04:00
Emmanuel Lepage Vallee c490ca3803 placement: Fix margin support
This was only partially implemented. The margins were substracted from
the area too early in the pipeline. Now, they are added when getting
the size and substracted when setting it. This way, the margins will
"survive" when a placement function set an absolute value in one of
the field. Previously, this caused one (or more) of the margins to
be lost.
2016-05-15 17:17:11 -04:00
Emmanuel Lepage Vallee a141dbfd06 wibox: Add screen properties 2016-05-15 17:17:11 -04:00
Emmanuel Lepage Vallee 129b3b1d50 wibox: Add wibox property support
Just like the miss handler system, but for wiboxes.

This will simplify the API as there was a mix of properties
and accessors in the API doc.
2016-05-15 17:17:09 -04:00
Emmanuel Lepage Vallee 9a72062cac wibox: Turn into "real" objects.
Before this commit, it was necessary to call 'rawset' to be
able to add new fields to the wibox. This is no longer required.

This solution was choosen because wibox is itself a base class of
menus and wibars. Those classes can now add new properties without
hacks.
2016-05-15 17:15:55 -04:00
Emmanuel Lepage Vallee 43ef623dc6 client: Add x, y, width and height properties 2016-05-15 17:15:55 -04:00
Emmanuel Lepage Vallee 25f4f24791 layoutbox: Fix a leak with Lua 5.1 and luajit
Fixes #808
2016-05-15 17:15:55 -04:00
Emmanuel Lepage Vallee df6bc2f6bc wibox: Make the table argument optional
For consistency with other objects.
2016-05-15 17:15:55 -04:00
Emmanuel Lepage Vallée f9fa8538b9 Merge pull request #909 from psychon/screen-getbycoord
Fix awful.screen.getbycoord
2016-05-15 16:02:03 -04:00
Jajauma 4d7e8c804e naughty: change action markup to emphasize clickability
This commit changes the markup applied to the action description text to
emphasize the fact that the action zone is actually clickable. Bold is
replaced with underline, the Unicode 261B symbol (right pointer) is
added as well.
2016-05-15 18:46:09 +03:00
Jajauma b1dbbb0041 naughty: display the client-supplied localized action description in UI
According to the Desktop Notification specification document [1] the
clients supply actions available along with a notification in a form of
a list of pairs where first element is an identifier of an action and
the second is a localized message that will be displayed to the user.

Up to now the naughty code directly used the action identifier text as a
part of the notification layout exposed to the user. This commit makes
use of a localized action description for that purpose.

1) https://developer.gnome.org/notification-spec/
2016-05-15 18:43:25 +03:00
Uli Schlachter 7d792cea7d Merge branch 'allow-to-disable-history-tracking' of https://github.com/awesomewm/awesome 2016-05-15 16:47:57 +02:00
Uli Schlachter 8b3f263de3 Merge branch 'traceback-with-failed-to-load-error' of https://github.com/blueyed/awesome 2016-05-15 16:31:14 +02:00
Uli Schlachter c71b3d9f38 Merge branch 'wallpaper-while-randr-change' of https://github.com/psychon/awesome 2016-05-15 16:16:40 +02:00
Uli Schlachter ae738db58a Fix awful.screen.getbycoord when no screens exist
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-15 14:43:25 +02:00
Uli Schlachter 13bce88fa0 Fix awful.screen.getbycoord() for top-left corner of a screen
The problem was that get_square_distance() made the screen one pixel larger to
the bottom/right than it really was. Thus, the (x+0,y+0)-pixel of a screen that
was below or to the right of some other screen had distance zero to both of
these screens.

This commit fixes the screen size computation and adds a small unit test for
getbycoord() and get_square_distance().

Reported by Elv13 here:
https://github.com/awesomeWM/awesome/pull/878#issuecomment-219272864

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-15 14:40:00 +02:00
Daniel Hahler 11f3c7b8af awful.client.history: allow to disable history tracking
Based on the code from Uli Schlachter at
https://github.com/awesomeWM/awesome/issues/572#issuecomment-160080378.

Fixes https://github.com/awesomeWM/awesome/issues/572.
2016-05-14 17:42:01 +02:00
Daniel Hahler c25c0527a6 gears.surface: add a traceback for "Failed to load" errors
This is useful to see where the error is coming from.
2016-05-11 21:50:02 +02:00
Emmanuel Lepage Vallee ca02ec1bbe widget.button: Release the button when the mouse leave
This isn't correct, but it avoid a bug where the button stay
pressed forever if the mouse leave while it's pressed.
2016-05-10 16:06:46 -04:00
Uli Schlachter a6d61ed39e Merge branch 'doc_shared' of https://github.com/Elv13/awesome-1 2016-05-09 18:42:49 +02:00
Uli Schlachter c62da0dcc7 Merge branch 'fake-screen2' of https://github.com/psychon/awesome 2016-05-09 18:40:50 +02:00
Uli Schlachter 4c9280d2bb Merge branch 'no-screens' of https://github.com/psychon/awesome 2016-05-09 18:40:35 +02:00
Emmanuel Lepage Vallee b0571a8128 stack: Use the shared documentation and fix the doc 2016-05-09 01:37:48 -04:00
Emmanuel Lepage Vallee f8845fd970 ratio: Use the shared documentation and fix the doc 2016-05-09 01:37:48 -04:00
Emmanuel Lepage Vallee 76cb62a744 flex: Use the shared documentation and fix the doc 2016-05-09 01:37:48 -04:00
Emmanuel Lepage Vallee 533a4bfd8f fixed: Use the shared documentation and fix the doc 2016-05-09 01:37:48 -04:00
Uli Schlachter aed571eb48 gears.wallpaper: Handle concurrent screen changes
The code in gears.wallpaper currently sets a wallpaper in a deferred fashion.
Only a while after it is told to do something does it actually do the wallpaper
change. This is to incorporate many wallpaper changes right after another. These
changes happens during startup where the wallpaper for each screen is set one
after another.

However, since we no longer restart on RandR changes, the screen configuration
could change while we have a pending wallpaper. In this case, part of the
wallpaper could be "chopped off", because the surface that we draw the wallpaper
to is too small.

This commit makes gears.wallpaper track the size of the pending wallpaper and
create a new surface if the already-pending one is too small.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 17:48:40 +02:00
Uli Schlachter 5b9509d612 naughty: Delete a screen's notification on removal
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 15:01:06 +02:00
Uli Schlachter 5b1f8cd35c Emit more signals when removing a screen's tags
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 15:01:05 +02:00
Uli Schlachter 975aac5c0c awful.tag: Delete a screen's tag on removal
Any clients with these tags end up somewhere random (the first tag on the first
remaining screen). This certainly can be improved in the future, but at least
this is a start.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter 851e0065fe awful.tag.object.delete: Delete a tag's data
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter a641d88d4e awful.tag.object.delete: Add option to force deletion
When this force-argument is not given, the code will refuse to delete a tag
which has a non-sticky client. With this force argument, the client will just be
moved to the fallback tag.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter 962a73c18c awful.tag.object.delete: Remove dead code
The case fallback_tag == nil was already checked some lines above.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter b0038c8ddb awful.autofocus: Skip invalid screens
This code uses delayed calls to lazily update things. Thanks to this, it can try
to update a screen long after it was removed. Fix this by just doing nothing on
invalid screens.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter bc9b3ca751 tasklist: Stop updating after a screen was invalidated
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Uli Schlachter 5390913f5a taglist: Stop updating after a screen was invalidated
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-08 14:52:31 +02:00
Emmanuel Lepage Vallée 504018343b Merge pull request #873 from Elv13/geometry_overhaul_p3.01
Geometry overhaul p3.01
2016-05-05 16:23:11 -04:00
Emmanuel Lepage Vallee 3945f13fc4 placement: Fix an semi-infinite loop when attaching to geometries
It would add a new connection each time and eventually get very
slow.

An regression test will be published later.
2016-05-04 23:47:44 -04:00
Emmanuel Lepage Vallee 58ecc69af8 mouse: Add 'current_widget' 2016-05-04 17:25:05 -04:00
Emmanuel Lepage Vallee cf0a4b42b4 mouse: Add `current_widgets` 2016-05-04 17:25:05 -04:00
Emmanuel Lepage Vallee 81064daa42 doc: Fix find_widgets() doc. 2016-05-04 17:25:05 -04:00
Emmanuel Lepage Vallee c1fc222d89 mouse: Fix `current_wibox` 2016-05-04 17:25:05 -04:00
Emmanuel Lepage Vallee baf290a8b2 drawin: Add a get_wibox function
As wibox contain a drawin, but isn't one, it is necessary to map
drawin to wibox.

This could eventually be fixed by turning wibox into drawin just
like the client, tag and screen do.
2016-05-04 17:25:05 -04:00
Emmanuel Lepage Vallee 5404b3c374 drawin: Add a property miss handler 2016-05-04 16:37:39 -04:00
Emmanuel Lepage Vallee 1a114e4e57 wibox: Import drawin documentation
This improve consistency.
2016-05-03 17:12:54 -04:00
Daniel Hahler 7bd9cd7fd1 doc: fix usage of "mouse.move" as a string (#871)
Ref: https://github.com/awesomeWM/awesome/issues/834#issuecomment-216141389.
2016-05-03 12:06:50 +02:00
Daniel Hahler 6b6cbf4a1f Merge pull request #828 from psychon/screen-scan2
Stop restarting on RandR changes
2016-05-01 17:00:05 +02:00
Daniel Hahler e4623d0e20 Merge pull request #864 from psychon/menubar-query-file-type
menubar.utils.parse_dir: Ask Gio for file type
2016-05-01 16:56:07 +02:00
Uli Schlachter 9a42ae87cf awful.wibox: Handle screen removal
When a screen is removed, awful.wibox now hides all wiboxes that it created for
this screen.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-01 10:12:04 +02:00
Uli Schlachter ac81a8df1f c.to_selected_tags(): Handle screenless clients
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-05-01 10:09:26 +02:00
Emmanuel Lepage Vallée dbd0931343 Merge pull request #844 from Elv13/geometry_overhaul_p2
Geometry overhaul part 2.5
2016-04-30 23:29:29 -04:00
Uli Schlachter a37f12c0a1 menubar.utils.parse_dir: Ask Gio for file type
When not including standard::type in the query for children of a file then Gio
may not look up this information. This might work on some file systems (e.g.
ext4), but other (apparently XFS) do not provide the needed file type
information (see man readdir on the d_type field). The result was that the
menubar contained no entries because no .desktop files were identified as
regular files and thus read.

Fix this by including standard::type in the queries.

Also, this commit makes the code use some pre-defined string constants from Gio
to make "double sure" that typos are caught.

Thanks to @Jajauma for doing the hard part on debugging this.

Fixes: https://github.com/awesomeWM/awesome/issues/863
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-30 19:23:46 +02:00
Emmanuel Lepage Vallee 3dab42e6a2 mouse: Restore support for layouts with their own mousegrabber 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee cd632e4a84 mouse.dragtotag: Fix and port to the new move API
It wasn't really working as it would in other WM. It might have
been a feature, but I got the behavior in line with KDE and Gnome.
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee a62e749216 mouse.snap: Add some configuration options 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee e31563b056 mouse.move: Return the corner 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee a39b93f2e3 mouse: Add is_*_mouse_button_pressed helper properties. 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee e78ad709e7 doc: Move request:: handler to their own documentation section 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 47fffb5eee mouse: Add current_client property
It is called wibox instead of drawin because from the user
point of view, it will be a wibox anyway.
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee fc2d359722 doc: Add a coords example
This forced the `coords()` documentation to be moved to Lua.
Keeping it in the C file caused yet another example CMake hack.
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 800b8c7d4a doc: Merge awful.mouse and mouse documentation pages
Just like client, tag and screen, this is to avoid new users some
confusing implementation details.
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 0b6cd90dce mouse: Implement the Lua custom property handler 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee f0546b900d tests: Improve the placement compositing tests 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 07e1b975a7 mouse.snap: Use a composed placement function 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 1802e9e2fe awful.placement: Add a `scale` function 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 80ee4e9f5d awful.mouse.snap: Add a visual cue 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 91cdc4a899 awful.mouse.snap: Support windows 7 style screen edges snap 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee baec2efe2d awful.mouse.move: Fix snapping support 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 86ca6222e2 awful.mouse.snap: Add a configurable default distance 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 2624370cc0 awful.mouse: Move snap into a submodule 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee b5a1a8d6e5 layout: Handle tiled client request::geometry 'mouse.move' 2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee 688021d087 ewmh: Ignore request::geometry for tiled clients
It causes flicker
2016-04-30 04:27:34 -04:00
Emmanuel Lepage Vallee cdcfb913f1 awful.mouse: Move clients using request::geometry 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee c286470c17 awful.placement: Port `under_mouse` to the new argument syntax 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 2f819df7f7 awful.placement: Add 'offset' argument 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee e6a04a5922 awful.placement: Extend the compositing feature
It can now keep the different return values and use them in
later chain nodes.

It also add a "virtual" geometry argument so the geometry is applied
only after the last node is executed.

Finally, it fixes using pretend and a composite chain at the same time.
2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee be455cb140 awful.mouse: Add a request::geometry handler. 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee f8f57fb6b7 awful.mouse: Add a generic mousegrabber
Previously, all layouts had their own mouse grabbing logic. The
new one is based on the client request::geometry feature.
2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee e93e2913b6 awful.placement: Fix a closest_corner corner case
When the mouse was exactly on the right or bottom edge, there was a
rounding error.
2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 7242b30c01 awful.mouse: Deprecate awful.mouse.client.corner 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 75af0a24c7 awful.placement: Add a 'pretend' option 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 75764108e1 awful.placement: Make all functions return the geometry 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 3e7a7f23c2 tests: Test awful.placement.resize_to_mouse 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 5f17f1aa83 resize_to_mouse: Support size_hints 2016-04-30 04:27:33 -04:00
Emmanuel Lepage Vallee 604ea15c45 awful.placement: Add a 'resize_to_mouse' function 2016-04-30 03:34:14 -04:00
Uli Schlachter a1e340d118 Merge branch 'replace-popen-to-async' of https://github.com/actionless/awesome 2016-04-30 09:11:50 +02:00
Uli Schlachter a60b718db2 Merge branch 'placement-fallback-to-screen.workarea' of https://github.com/blueyed/awesome 2016-04-30 09:11:33 +02:00
Uli Schlachter 2da981afdd Merge branch 'screen-gc' of https://github.com/psychon/awesome 2016-04-30 09:10:26 +02:00
Uli Schlachter ede88d8bce Fix awful.screen.getbycoord when no screens exist
When there are no screens, screen[1] causes an error. Thus, this isn't a safe
fallback for these functions. Instead, this commit makes the code prefer the
primary screen, if possible. If no screen exists, then screen.primary will be
nil, but at least it won't throw an error like screen[1] does.

(This also changes the outdated copy of getbycoord that exists in
wibox.drawable)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-28 17:42:15 +02:00
actionless 4eb80853c2 feat(lib: menubar): replace io.popen to lgi 2016-04-28 17:07:24 +02:00
Emmanuel Lepage Vallée 201090100b Merge pull request #854 from actionless/use-gio-in-awful-util-is-dir
refactor(awful: util): use lgi.Gio for is_dir
2016-04-28 00:06:11 -04:00
Emmanuel Lepage Vallee 693a87ef2e mouse: Avoid an error when the client is killed while moving
to reproduce:

1) spawn an xterm
2) enter 'sleep 10 && killall xterm'
3) start moving the terminal

There will be an error

(found by a yet to be commited integration test)
2016-04-27 19:55:39 -04:00
actionless 14f7d20d0f refactor(awful: util): use lgi.Gio for is_dir 2016-04-27 18:30:41 +02:00
Wolfgang Popp 76313263b6 Add clear() function to awful.widget.graph and doc fixes (#847)
* awful.widget.graph: add clear() function.

* awful.widget.graph: doc fixes for add_value.
add_value did not show up in generated luadoc. And the value parameter does not need to be between 0 and 1.

* awful.widget.graph: local functions clear and add_value as methods of graph.
2016-04-26 22:14:09 +02:00
Daniel Hahler ad304a2596 Make awful.client.focus.history.list public (#842)
There used to be `awful.client.data.focus`, which was moved to
`awful.client.focus.history.internal`.
While the former was accessible, the latter is not.

This is useful to get a list of most recently focused clients, without
having to hook into the signal yourself.

Closes https://github.com/awesomeWM/awesome/issues/841.
2016-04-26 10:02:23 +02:00
Uli Schlachter a0d47f8ea5 awful.wibox: Fix some minor things
capi.awesome is unused and capi.screen is unused, but really should be used.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-26 09:34:54 +02:00
Uli Schlachter 9b44e9a011 tag:delete(): Allow deletion of the last tag
When a tag is deleted, this code tries to select some other tag. If the tag
which is to delete is the last tag of a screen, this code failed and indexed a
nil value. Fix this with a simple "if".

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-26 09:34:54 +02:00
Uli Schlachter 2485d334cf awful.layout.arrange(): Handle screen removal
If a screen is removed while a re-layout is pending, previously this code would
cause errors and problems. Since the screen is gone, there is nothing to arrange
anyway and we can just not do anything.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-26 09:34:54 +02:00
Uli Schlachter fc390ff405 Use weak keys for referring to screens
This commit changes some tables that are used for per-screen stuff to have weak
keys, so that the screens can be garbage-collected, if needed.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-26 09:34:54 +02:00
Daniel Hahler 02b6f9893d awful.placement.no_overlap: use screen.workarea as fallback
When there is a maximized and floating client,
`awful.placement.no_overlap` would end up with an empty list of areas to
place the client into.

This patch fixes it to use the default `screen.workarea` in that case.

Closes https://github.com/awesomeWM/awesome/issues/813.
2016-04-26 00:48:19 +02:00
actionless cdb5a0f046 fix(awful: rules): floating property 2016-04-25 15:43:14 +02:00
Emmanuel Lepage Vallee 2ccc7c88d6 awful.mouse.snap: Fix invalid fallback 2016-04-23 22:12:28 -04:00
Daniel Hahler 135ff4b0c8 Use gears.protected_call with awful.rules callbacks (#843)
Fixes https://github.com/awesomeWM/awesome/issues/840#issuecomment-211823483.
2016-04-20 22:34:16 +02:00
Emmanuel Lepage Vallée cdc6909bc7 Merge pull request #824 from Elv13/rules_refactor
Rules refactor, part 1

This fix the following awful.rules bugs:

 * **x**: Broken when "border_width" is set or left titlebars are used
 * **y**: Borken when"border_width" is set or top titlebars are used
 * **width**: See above + right litlebar
 * **height**: Same as above
 * **switchtotag**: Have a race with the "manage" -> "tag.withcurrent" code in `awful.tag`
 * **tag**: Had dead code
 * **screen**: Had a race condition with switchtotag
 * **urgent**: Had a race with screen and another with switchtotag+focus
 * **focusable**: Was broken yet again when request::activate was introduced (and also because of FS1098, that I also fixed)
 * **no_overlap**: The "no_overlap" call in rc.lua "manage" section conflict with the geometry rules as the hints are not set (idk why).
 * **size_hints_honor**: If set to false, it would be applied too late, causing height and width offsets due to placement or various geometry related properties
2016-04-20 00:39:45 -04:00
Emmanuel Lepage Vallee a4f1b760bd awful.rules: Apply size_hints_honor early
There is a property race with width, height and geometry
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee e54387904b client: Add request::geometry
Remove request::fullscreen and request::maximized_* and use
a single request for them. The other client resizing features
will soon also start to use this.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee f681ace587 ewmh: Take focusable into account in request::activate 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee c678a0d426 awful.rules: Apply floating early 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 06716df05a awful.rules: Apply border_width early 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 89edc92110 awful.rules: Add the 'tags' property
Due to recent changes, it was no longer possible to disable the
default tag selection handler. This commit extend the already
existing request::tag mechanism to let handlers select the tags.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee f72dcce4bd titlebars: Use the request system rather than 'manage'.
As awesomerc.lua "manage" section is executed after the rules, using
a 'geometry' or 'placement' property in the rules was broken.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 299e155acc client: Extend request::tag instead of awful.tag.withcurrent
There was a regression when refactoring the API. It was no longer
possible to disable the automatic tag selection.

Due to recent changes, it was no longer possible to disable the
default tag selection handler. This commit extend the already
existing request::tag mechanism to let handlers select the tags.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 7cd76e0529 awful.rules: Add 'placement' property 2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee b0aedcda67 awful.rules: Add `new_tag` property
Create a new dynamic tag for the client.
2016-04-20 00:11:04 -04:00
Emmanuel Lepage Vallee 090f2b83ac awful.rules: Avoid trying to set some properties
This avoid unwanted signals or properties being set twice.
2016-04-20 00:10:42 -04:00
Emmanuel Lepage Vallee ddf14a3ffc awful.rules: Refactor the code to avoid many race conditions.
Testing demonstrated that many rule properties were broken when used
together. This commit try to address this by forcing an execution order
that doesn't trigger the problems.

It is still possible to write broken rules, but it should not happen by
accident anymore. Users should not try to assign the client a tag on
screen 2 and also use screen=screen[1].
2016-04-20 00:08:28 -04:00
Emmanuel Lepage Vallee a2a5448442 awful.rules: Remove dead code
Also change the focus callback signature to match the others
2016-04-20 00:02:38 -04:00
Emmanuel Lepage Vallee 2a8cc08ca1 awful.rules: Make adding new properties easier.
This commit also add a 3 step process to apply rules.

Testing showed that many rules are currently broken because
of execution races.

Create a new dynamic tag for the client.
2016-04-20 00:02:01 -04:00
Daniel Hahler 761e244b32 Handle `awful.util.deprecate('Use …')` style (#837) 2016-04-19 22:37:14 +02:00
Emmanuel Lepage Vallee fe8beaeaac placement: Fix incorect use of the border_width
The code and tests assumed the border was equaly applied around
the geometry while the {x,y} pair of the geometry include the
border.
2016-04-18 23:56:23 -04:00
Emmanuel Lepage Vallee bfc8f35fb9 placement: Support composition.
Multiple placement function can now be daisy chained like
in gears.matrix. This is useful for building rules.
2016-04-18 23:55:52 -04:00
Emmanuel Lepage Vallee 2b5d918a8d awful.placement: Add a memento system.
It is used by the ewmh methods.
2016-04-18 23:55:52 -04:00
Emmanuel Lepage Vallee fcd320c7f6 Make awful.rules mandatory
There was many unfixable race conditions that could only be
solved by better integrating the request:: system and
awful.rules. This has the side effect to make rules mandatory.
2016-04-18 23:55:52 -04:00
Daniel Hahler 473df11e1f Streamline/cleanup util.deprecate calls 2016-04-18 23:20:16 +02:00
Emmanuel Lepage Vallée bc2ddfe82d Merge pull request #820 from Elv13/layout_tests
tests: Test all client layouts
2016-04-18 04:27:11 -04:00
Emmanuel Lepage Vallee 7654abcedc layout.tile: Avoid negative geometries 2016-04-18 04:20:23 -04:00
Emmanuel Lepage Vallee b938a99e1e layout: Avoid creating negative geometries when adding gaps 2016-04-18 04:20:22 -04:00
Daniel Hahler 58068ff538 Merge pull request #831 from psychon/naughty-no-screen
naughty: Print notification content in "no screen" warning
2016-04-18 00:36:17 +02:00
Abdo Roig-Maranges 3c3e2daeb2 fix deprecation warning 2016-04-17 16:35:08 +02:00
Uli Schlachter 76266abcfa naughty: Print notification content in "no screen" warning
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-17 15:21:02 +02:00
Uli Schlachter bf652914dd Merge branch 'rules-screen' of https://github.com/psychon/awesome 2016-04-15 19:35:23 +02:00
Uli Schlachter cd55c57937 Merge branch 'root-size' of https://github.com/psychon/awesome 2016-04-15 19:35:12 +02:00
Uli Schlachter 79e16cf950 awful.rules.execute: Make for loop easier to read
Signed-off-by: Uli Schlachter <uli.schlachter@informatik.uni-oldenburg.de>
2016-04-12 09:33:39 +02:00
Uli Schlachter fb8c70b07d awful.rules: Fix switchtotag with tag names
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:32:32 +02:00
Uli Schlachter 65fa565cef Update awful.rules tag-related examples
Fixes: https://github.com/awesomeWM/awesome/issues/799
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:31:46 +02:00
Uli Schlachter 9cc28a8da5 awful.rules: Allow specifying tags by name
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:31:46 +02:00
Uli Schlachter 7d5e80a8ee Add awful.tag.find_by_name
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:30:52 +02:00
Uli Schlachter 53bebfde02 awful.rules: Add support for screen names
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:27:37 +02:00
Uli Schlachter 2fe9a6dfdf awful.rules: Fix a typo in the docs
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-12 09:26:21 +02:00
Emmanuel Lepage Vallee f9add1c49a awful.tag: Rename nmaster to master_count 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee e8908e2c62 awful.tag: Rename mwfact to master_width_factor 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee ff9e74ac0b awful.tag: Remove the old dynamic property system
It is no longer relevant.
2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee dd52f1ce86 awful.tag: Move functions to awful.client and screen 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 493684a5c0 awful.tag: Merge API documentation with tag 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee eb133175ba awful.screen: Add some client getter properties 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 00d782f3d3 awful.screen: Deprecate functions, add methods 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee a4bc49b540 awful.screen: Merge screen and awful.screen API doc 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 16fe91d5f3 awful.client: Add a new section for layout related functions
The new stateful layout system try to avoid coupling and therefor
doesn't use these methods. It is not planned to deprecate the
stateless layout API, so these functions are just kept as-is with
the old naming convention.
2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee d44d83fdb6 awful.client: Refactor all marked function into a property
This is unused internally since Awesome 3.2. There is probably 0 users
of this left, but I don't want to break the API.
2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee 43f1561f26 awful.client: Convert all remaining functions to methods. 2016-04-11 23:54:28 -04:00
Emmanuel Lepage Vallee e15fea6a46 awful.client: Use the explicit @function tag for each helpers
This allow them to be placed in the right category.
2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee 0c1e4e3a2b awful.client: Move `urgent` in their own submodule 2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee 587fc1fbb4 awful.client.shape: Turn into a client submodule. 2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee 608f3eb7cf awful.client: Add an is_fixed property 2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee dfdb6aedf7 awful.client: Document the new signals. 2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee 9027cabd8c awful.client: Move `dockable` to the property system
Note that the setter is no longer necessary and is implicitly
generated.
2016-04-11 23:54:27 -04:00
Emmanuel Lepage Vallee fad55a868b awful.client: Move the focus related methods into a submodule 2016-04-11 23:54:22 -04:00
Emmanuel Lepage Vallee 29feceb80d documentation: Merge awful.client and client pages
ldoc doesn't allow to specify fields from class "A" into class "B",
so the only solution is to merge the 2.

Also, one of the most common complain on IRC since Awesome 3.0 is
that the client API doc is  confusing since it is in 2 different files.

Also restore the `awful.client` doc link, point to `client`

This will avoid broken links.
2016-04-11 23:46:10 -04:00
Emmanuel Lepage Vallee 82342f055c awful.client: Deprecate .floating.get/set
Begin to formalize the getter/setter syntax into a coherent one
2016-04-11 23:46:10 -04:00
Emmanuel Lepage Vallee 828543c838 gears.object.properties: Support 'obj.is_something'
Used when there a property is set by mutators instead of accessors.
2016-04-11 23:46:10 -04:00
Emmanuel Lepage Vallee 11f0620d7c awful.key: Add a function to execute keybindings 2016-04-11 23:46:10 -04:00
Emmanuel Lepage Vallee 8d95610363 placement: Fix a minor issue with closest_corner
It was using the wrong matrix in 2x2 mode.
2016-04-10 03:27:20 -04:00
Uli Schlachter 7863a5e65b gears.wallpaper: Use root.size()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-04-09 15:19:46 +02:00
Emmanuel Lepage Vallee 8a0738a4bc gears.screen: Merge into awful.screen
gears modules usually don't depend on Awesome C-API. This code has
been placed there for unclear reasons.

Also, there is ongoing work to unify each "concepts" API into one
single page. Having `gears.screen` go against this effort.
2016-04-06 23:32:44 -04:00
Daniel Hahler c85bbeafdb naughty.notify: handle non-existing screen, print a warning
Ref: https://github.com/awesomeWM/awesome/issues/796
2016-04-05 00:31:45 +02:00
Daniel Hahler 742717ec22 doc: improve doc for awful.screen.focused 2016-04-04 23:49:43 +02:00
Daniel Hahler c86c873779 minor: clarify mod-ctrl-shift-X comment; fix typo 2016-04-04 20:30:48 +02:00
Daniel Hahler df21a85a9a doc: fixes for spawn.with_line_callback 2016-04-04 20:30:48 +02:00
Daniel Hahler 5db280ab73 minor: doc / formatting 2016-04-04 20:30:44 +02:00
Emmanuel Lepage Vallee e24cb901cb Typo: Ajust -> Adjust 2016-04-04 00:56:11 -04:00
Daniel Hahler 3e5b1b3ba9 Merge pull request #782 from psychon/wallpaper-change
Changes to wallpaper change
2016-04-03 18:35:27 +02:00
Daniel Hahler 3ad0a9d8d2 Merge pull request #780 from psychon/screen-add-signal
Add screen add signal
2016-04-03 18:35:08 +02:00
Daniel Hahler 0f615670e3 Merge pull request #787 from awesomeWM/lgi-stream-end
awful.spawn: Reliably detect end-of-file
2016-04-03 18:34:04 +02:00
Emmanuel Lepage Vallee f7b5240571 awful.placement: Improve documentation 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 12c80e3977 awful.placement: Add `maximize` aliases
Use the same conventions as `align` and `stretch` aliases
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 7ab83afbbc tests: Test `awful.placement.maximize` 2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 59b24cbd35 awful.placement: Add a `maximize` method
It should eventually be re-used by ewmh.lua
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 19913ba62d awful.placement: Add various `stretch` aliases
Use the same convention as `align` aliases
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee b4d2a5c541 awful.placement: Add a `stretch` method
This will eventually be re-used by `awful.wibox`
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee d85b7eb3e5 awful.placement: Add aliases for the `align` method
This re-use the `align` code for the existing `centered`,
`center_horizontal` and `center_vertical` methods. It also
add all the other edges and corners alias.
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 456f0bb70c awful.placement: Add `align` method
This allow to place a client, wibox or cursor at the
edges, corners or center of the parent geometry.

This also add code from `awful.wibox` to ajust the workarea.
Future commit will use `awful.placement` to place `awful.wibox`.
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallee 5a5f0167cf awful.placement: Add `closest_corner`
This commit also add many local helper functions. They will be
re-used by the next few commits.
2016-03-31 05:04:24 -04:00
Emmanuel Lepage Vallée b1a93e4540 Merge pull request #773 from Elv13/add_testing_framework
tests: Add a new GUI testing framework
2016-03-31 04:50:32 -04:00
Emmanuel Lepage Vallee c64c223ede tests: Improve wibox.widget.background documentation 2016-03-31 04:45:46 -04:00
Emmanuel Lepage Vallee e7652a053d tests: Add a new testing framework 2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallee 9da40d010c gears.surface: Add methods to convert widgets to surfaces
It can be saved directly to a PNG or SVG file or used as a cairo
surface or pattern.
2016-03-31 04:45:45 -04:00
Emmanuel Lepage Vallée fdc25bbb99 Merge pull request #789 from aroig/gh/layout-names
fixes to keyboard layout names
2016-03-31 00:30:35 -04:00
Emmanuel Lepage Vallée 0953db56d8 Merge pull request #757 from Elv13/properties
C-API objects properties
2016-03-30 23:32:12 -04:00
Emmanuel Lepage Vallee 3322a17182 screen: Support property fallback 2016-03-30 23:25:44 -04:00
Emmanuel Lepage Vallee 89a1dab845 client: Support property fallback 2016-03-30 23:25:44 -04:00
Emmanuel Lepage Vallee e0897cf170 tag: Support property fallback 2016-03-30 23:25:44 -04:00
Abdo Roig-Maranges cb46f09361 make keyboard layout naming function easily overridable 2016-03-30 15:41:30 +02:00