Commit graph

9176 commits

Author SHA1 Message Date
Uli Schlachter
4744a744f0 gears.table.join: Ignore nil arguments (#2440)
When calling join with e.g. arguments (nil, {"a"}), then everything past
the nil was ignored, because the code internally used ipairs() to
iterate over the arguments and this stops at the first nil it
encounters.

Fix this by using select() to iterate over the arguments.

This also adds a unit test for this problem.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-10-16 10:17:45 -04:00
Emmanuel Lepage Vallée
aa16d77d15
Merge pull request #2423 from Elv13/better_rules_doc
Better awful.rules doc
2018-10-16 08:44:58 -04:00
Emmanuel Lepage Vallée
35130169c9
keygrabber: Rename release_event to stop_event (#2422)
In the earlier revision of the keygrabber PR, there was a `release_key`
and it was suggested to rename it `stop_key`. However its sibling
`release_event` wasn't, so it is now confusing.

The commit adds a mild deprecation codepath to avoid breaking configs
based on git-master. However it isn't a "long term" deprecation notice
and the code can probably be removed in 5.0 without further delay.
2018-10-16 08:42:56 -04:00
mergify[bot]
0475ff12c9
Merge pull request #2432 from actionless/dont-raise-on-startup
fix(awful: rules): don't raise every focusable client on awesome startup
2018-10-15 12:43:33 +00:00
actionless
3cef72bb30 fix(awful: rules): don't raise every focusable client on awesome startup
re #2095
2018-10-14 20:41:45 +02:00
Emmanuel Lepage Vallee
bb357dd33e doc: Restore the example width limit to fit in 1024x768.
The old stylesheet did this and it forced the examples to be smaller.

This commit restore this limit.
2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
43a82f34f0 doc: Add more examples about the spawn.easy_async
Ref #1373
Ref https://stackoverflow.com/questions/52634985/awesome-wm-os-execute-vs-afwul-spawn
2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
cd6979618f doc: Update the CSS to support our custom table class
Other change:

 * Use GitHub style <code> border
 * Add support for HTML <kbd> tags
2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
845b9a930c doc: Refactor awful.spawn doc to have a property list. 2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
b4e0363ac3 doc: Move the awful.rules to the header.
It's easier to find.
2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
b49f7e22dd doc: Add an index of valid properties to awful.spawn and awful.rules. 2018-10-12 14:19:25 -04:00
Emmanuel Lepage Vallee
62c95d5fe6 build: Move the meta file parser to an helper module
The commit also re-work the build target so if the file are deleted,
then they are created again. Using `file(COPY ...)` and
`file(MAKE_DIRECTORY ...)` as done previously caused some file to be out
of date or not being regenerated at all.

This commit also fixes some broken target that depended on `file(` and
`configure_file` CMake command not being part of any target.

Fix #2342
2018-10-12 14:18:32 -04:00
Emmanuel Lepage Vallee
6ac8f30d62 build: Add more dependencies to the ldoc target
Right now it was possible to modify `rc.lua` without the doc being
aware of it.
2018-10-12 14:03:33 -04:00
Emmanuel Lepage Vallee
90b17bdc09 awful.rules: Add proper documentation to the extra client properties.
Until now there wasn't much documentation available about how to use
these properties. With the new work on `awful.spawn` that rely more and
more on `awful.rules` integration, it is worth fixing.

This commit add a new documentation section and a future commit will
aggregate them to generate an index.
2018-10-10 01:58:18 -04:00
mergify[bot]
7020a9707f
Merge pull request #2421 from Elv13/fix_2419
Fix 2419
2018-10-08 16:46:46 +00:00
gabriel klawitter
7519c6966a dbus: fix nil notifications (#2180)
When mangling notifications via naughty.config.notify_callback it is
advised (1) to return nil to reject a notification. The underlaying dbus
library tries to access a field of that notification table and fails.

(1) https://awesomewm.org/doc/api/libraries/naughty.html
2018-10-07 16:09:12 +02:00
Uli Schlachter
75fc93d9c1 Merge branch 'more_gravity' of https://github.com/psychon/awesome 2018-10-07 13:45:50 +02:00
mergify[bot]
2f70fd6cce
Merge pull request #2409 from Elv13/spawn_once
A better run_or_raise/spawn.once/singleton API
2018-10-07 11:35:11 +00:00
Emmanuel Lepage Vallée
768184d152
Merge pull request #2368 from psychon/motif_hints
Add c.requests_no_titlebar based on motif hints
2018-10-06 22:00:03 -04:00
mergify[bot]
7ca8f3618c
Merge pull request #2420 from blueyed/void
signal_child: use "(void) res" to silence compiler warning
2018-10-06 22:59:18 +00:00
Emmanuel Lepage Vallee
6229783e16 tests: Add a titlebar integration suite
It doesn't do all that much, but will prevent #2419 from regressing
2018-10-06 18:57:27 -04:00
Emmanuel Lepage Vallee
789cf11d8d titlebar: Emit request::titlebars from awful.titlebar.
The toggle/show/hide function were incompatible with the current
`rc.lua` is `titlebars_enabled` was removed from the rules because
they were never created. This has always been the case but the
introduction os `request::titlebars` in Awesome 4.0 allows to solve
this longstanding issue. However until now it didn't.

Fix #2419
2018-10-06 18:46:50 -04:00
Alyssa Ross
ee9670b1ea Gracefully fail when history file is inaccessible (#2410)
If the history file (or its parents) can't be created, running a command
will fail entirely. Since saving command history is not an integral part
of running a command, it would be nicer if it carried on, just without
saving history. This is what shells usually do.

This patch removes assertions in the history saving function and
instead adds an early return, so if the history isn't saved the command
invocation simply carries on.

Signed-off-by: Alyssa Ross <hi@alyssa.is>
2018-10-06 22:53:48 +02:00
Daniel Hahler
aaed083755 signal_child: use "(void) res" to silence compiler warning
Fixes https://github.com/awesomeWM/awesome/issues/2418.
2018-10-06 22:49:29 +02:00
Emmanuel Lepage Vallee
4c7bcf044c tests: Add more spawn tests 2018-10-05 10:57:55 -04:00
Daniel Hahler
c21e8b980a
minor: spawn_child_exited: use "signal" for signals in warning (#2417) 2018-10-04 19:09:01 +02:00
Emmanuel Lepage Vallee
021a1feec8 awful.spawn: Add a raise_or_spawn method. 2018-10-04 09:16:00 -04:00
Emmanuel Lepage Vallee
0ac99a5dc5 awful.rules: Rename switchtotag to switch_to_tags.
First of all, it select many tags, so there is an "s". Also, Awesome
standardised naming to snake case in v4.0, but this was missed.
2018-10-04 09:16:00 -04:00
Emmanuel Lepage Vallee
927e7b2796 awful.spawn: Add an once and single_instance methods.
This commit adds a way to leverage the xproperty and startup_id APIs
to persist an execution token across restarts. It allows to use
`awful.rules` on clients that were executed by a previous Awesome
instance.

The main limitations of these methods is the lack of entropy used to
build the token. If the command is the same in multiple
`awful.spawn.once`, then it will not work as expected. To mitigate this
issue, the system try to concatenate the `awful.rules` table after the
command and hash the resulting string. Given rules are a table, it can
have loops and/or issues with keys ordering. The hash function sort and
limite recursion to prevent a stack overflow. Another issue is the
unreliability of startup notifications.
2018-10-04 09:16:00 -04:00
mergify[bot]
622a330e63
Merge pull request #2412 from blueyed/deprecate-raw
themes/xresources/assets.lua: use raw=true with deprecation
2018-10-03 23:42:18 +00:00
Daniel Hahler
03b8a35c5c themes/xresources/assets.lua: use raw=true with deprecation 2018-10-03 17:37:35 +02:00
Emmanuel Lepage Vallee
9250610a77 activate: Add switch_tag_tag and switch_to_tags.
Also bring some consistency with `awful.rules` naming. A future commit
will add a `TODO v5` to resolve this naming issue.
2018-10-03 08:38:12 -04:00
Emmanuel Lepage Vallee
9e45e016e9 tag.viewmore: Add an optional limit to the number of selection. 2018-10-03 08:38:12 -04:00
Emmanuel Lepage Vallee
da68b3cbaf table.join: Make deterministic.
`pairs` order isn't defined and `{...}` will always be ordered.
There is no reason to have random behavior where it can be
predicted at no additional cost.
2018-10-01 14:57:55 -04:00
Yauhen Kirylau
3931ae370c feat(menubar): expose menubar styling to beautiful (#2375) 2018-09-28 00:35:10 -04:00
mergify[bot]
bed42a10ed
Merge pull request #2401 from psychon/fix_doc_names
Fix incorrect @name annotation in gears.string
2018-09-26 19:18:10 +00:00
Uli Schlachter
3927dbcf02 Fix incorrect @name annotation in gears.string
gears.string.xml_escape was annotated with "@name escape" and
gears.string.xml_unescape was annotated with "@name unescape".

Reference: https://github.com/awesomeWM/awesome/issues/2397#issuecomment-424630100
Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-09-26 10:37:59 +02:00
mergify[bot]
68e4dd430f
Merge pull request #2388 from sigprof/fix-awful-placement
Fix awful.placement.no_overlap + awful.placement.no_offscreen
2018-09-13 07:38:17 +00:00
Sergey Vlasov
16b5803fda Add a test for awful.placement.no_overlap+awful.placement.no_offscreen
Test that the placement function used in the default configuration
behaves as intended.  This test was failing before the no_overlap and
no_offscreen fixes in two previous commits.

Signed-off-by: Sergey Vlasov <sigprof@gmail.com>
2018-09-13 08:23:36 +03:00
Sergey Vlasov
61cdc40595 awful.placement: Fix no_offscreen when composed with other functions
The awful.placement.no_offscreen function did not work properly when
composed with other placement functions; in particular, the default
configuration (awful.placement.no_overlap+awful.placement.no_offscreen)
was broken.  The compose function sets args.pretend=true and puts the
result of the previous placement function into args.override_geometry
before calling the next placement function, but no_offscreen did not use
args.override_geometry, therefore the result of the previous placement
function was discarded.

All other placement functions use `geometry_common(c, args)` to get the
current client geometry; `area_common(c)` should be used only when
getting geometry of other clients.

This change also fixes the problem with margin handling (adding margins
should not affect the window size, only the window position should
change); the test output which was adjusted in commit 0275d3537d
is adjusted again to account for this change.

Signed-off-by: Sergey Vlasov <sigprof@gmail.com>
2018-09-13 08:23:36 +03:00
Sergey Vlasov
db11c7e9da awful.placement: Fix client size corruption in no_overlap
The awful.placement.no_overlap function was adding the window border
width to the client width and height (this is performed in
area_common(), which is called by geometry_common()), but did not
reverse this operation by calling remove_border() before returning the
final geometry; because of this, using no_overlap resulted in increasing
the window width and height by 2*border_width.

The bug was probably introduced in commit ebcc19844e (before
that commit no_overlap changed the window position directly instead of
relying on the new placement infrastructure), but was not noticed
because of other problems (e.g., in the default configuration the result
of no_overlap was overridden by the buggy no_offscreen).

Signed-off-by: Sergey Vlasov <sigprof@gmail.com>
2018-09-13 08:23:36 +03:00
Sergey Vlasov
7f11bc1108 tests: Add initial size support to the test client
Signed-off-by: Sergey Vlasov <sigprof@gmail.com>
2018-09-12 08:20:53 +03:00
Sergey Vlasov
0e3979b8e4 tests: Fix resize width/height mixup in the test client
Signed-off-by: Sergey Vlasov <sigprof@gmail.com>
2018-09-12 08:15:38 +03:00
mergify[bot]
d0afcaa338
Merge pull request #2359 from Elv13/add_common_source
Add common source
2018-08-27 11:36:12 +00:00
Emmanuel Lepage Vallee
96bbbc82f3 widget.common: Add custom sources for the taglist and tasklist.
The current taglist/tasklist allow filter function to remove elements
from the list. However they don't allow sorting or additional entries
to be listed.

This commit introduced such a concept. It will later be used by the
layoutlist where it becomes more relevant since layouts are used created
"objects".
2018-08-27 00:03:22 -04:00
Emmanuel Lepage Vallee
3fe5798a97 ldoc: Add a @sourcefunction section.
It will be used by features introduced in the next commit.
2018-08-27 00:03:22 -04:00
Uli Schlachter
45430daf7f rc.lua: Move Motif hints example to generated docs
Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-08-26 19:26:19 +02:00
mergify[bot]
69bb30181d
Merge pull request #2367 from psychon/poll_save_errno
a_glib_poll: Preserve errno from g_poll()
2018-08-26 16:40:06 +00:00
mergify[bot]
e8955ba52b
Merge pull request #2364 from psychon/handle_SIGCHLD_directly
Handle SIGCHLD ourselves instead of through GLib
2018-08-26 16:39:19 +00:00
Yauhen Kirylau
e332e2d868 fix(menubar): apply both menu bg and fg, not only bg (#2372) 2018-08-26 12:35:14 -04:00