Commit Graph

3149 Commits

Author SHA1 Message Date
Uli Schlachter 731e4736e5 Do not recommend io.popen()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-27 10:26:16 +01:00
Emmanuel Lepage Vallée f049046332
Merge pull request #2696 from alfunx/naughty-legacy-resize-on-update
naughty: Resize notification when setting text
2019-02-24 15:12:35 -05:00
Alphonse Mariya 494474ba0a
naughty: Resize notification when setting text 2019-02-23 18:54:39 +01:00
Emmanuel Lepage Vallee 347d87418b naughty: Always have an id.
Fixes #2678
2019-02-22 11:47:46 -05:00
Daniel Hahler 36d7535cd5
Minor: typos, Makefile aesthetics (#2690)
* lib/awful/mouse/resize.lua: s/extendable/extensible

* Fix code comment typo: s/find/found

* Makefile: remove -n with echo

Missed in e9b5e28d1.
2019-02-22 08:42:43 +01:00
mergify[bot] 3cc364cef4
Merge pull request #2673 from alfunx/recolor-toggle_state
beatiful.theme_assets: recolor titlebar icons for `active` and `inactive` states
2019-02-19 23:05:25 +00:00
Alphonse Mariya 00d38b1a2d
beatiful.theme_assets: recolor titlebar icons for `active` and `inactive` states 2019-02-19 23:33:18 +01:00
Daniel Hahler 8072d717cf Fix extra newline with legacy naughty layout
Fixes 9df77e5c76 (commitcomment-32354198).
2019-02-18 08:34:59 +01:00
mergify[bot] 710278c4b9
Merge pull request #2654 from psychon/luajit-xpcall
gears.protected_call: Automatically detect xpcall features
2019-02-18 01:42:40 +00:00
mergify[bot] 8563895284
Merge pull request #2663 from psychon/rng_init
Initialise Lua's pseudo-RNG from C from a good source
2019-02-18 01:34:35 +00:00
mergify[bot] fd38e2fb5c
Merge pull request #2658 from psychon/delayed_call_run_now
Add and use gears.timer.run_delayed_calls_now()
2019-02-17 19:25:04 +00:00
Emmanuel Lepage Vallée dd3c270819
Print a warning when trying to destroy the same notification multiple time. (#2662)
* notification: Print a warning when destroying more than once.

* doc: Fix a copy paste issue.
2019-02-17 12:36:02 -05:00
Uli Schlachter 3a4bf103b3 Initialise Lua's pseudo-RNG from C from a good source
GLib has an internal pseudo-RNG that it initialises from /dev/urandom.
This commit adds code that uses this RNG to initialise various random
number generators that can be used by Lua.

This also removes some Lua code that initialises the random number
generator badly.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-17 10:17:47 +01:00
Emmanuel Lepage Vallee 7c96a98a0d naughty: Correctly update the content of the legacy popup 2019-02-16 15:49:39 -05:00
Emmanuel Lepage Vallee d859f671a1 naughty: Add hicolor to the default icon path.
Ref #2533
2019-02-16 15:49:39 -05:00
Emmanuel Lepage Vallee 66b39aee35 doc: Add a link to the base naughty documentation. 2019-02-16 15:49:39 -05:00
Emmanuel Lepage Vallee e13b9a48ff naughty: Use same object when the remote source request a replacement
Previously, it would create a new object. The leaves the old
`replaces_id` logic mostly intact for now to keep the full backward
compatibility. I don't think anybody would have noticed the changed, by
time and time again we had proof that some silent users have some
amazing and advanced code hidden somewhere. It could be cleaned later
when breaking compatibility isn't an issue.
2019-02-16 15:49:39 -05:00
Emmanuel Lepage Vallee 1b567cc06a notification: Rename text to message
There is many "text" and the default text is the title, not the body.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee faa553e47c notification: Allow to pause automatic expiration.
When the mouse is over or a keyboard driven menu is open, avoid
unexpected expiration to mess with the current notifications.

This commit also improve the `suspended` behavior to correctly
emit some signals.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee 6d5d016a2a naughty: Turn actions into object.
The current API is non-compliant with the 1.0 spec and cannot represent
the v1.2 spec at all. The pair of name and callback fails to represent
the explicit ordering and cannot support the icons cleanly.

Plus to support the keyboard navigation use case, the notification
action need to be able to get some sort of focus state. Having an
object makes this easy.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee e70822a6a4 naughty: Make sure the icon cannot be bigger then the box.
Without this change, parts of the icon were hidden.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee bfda6f64bb naughty: Display the notification with invalid icons.
They previously caused an error.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee 29cef2d615 notification: Add a new destroyed reason for "lack of space".
they were previously silently dismissed.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee c691a0842b notification: Prevent Lua errors from causing unlimited timer events.
It now runs user defined code, so it can happen. Extra safety is
required.
2019-02-16 15:26:38 -05:00
Emmanuel Lepage Vallee 9df77e5c76 naughty: Move the notification object into its own file.
Mostly for the documentation, but also as the new base upon which
to build the modular notification GUI.
2019-02-16 15:25:10 -05:00
Emmanuel Lepage Vallee 14eab7890f naughty: Add signal support 2019-02-16 14:08:45 -05:00
Emmanuel Lepage Vallee 3e70e87796 Revert "dbus: fix nil notifications (#2180)"
This reverts commit 7519c6966a.
2019-02-16 14:08:45 -05:00
Emmanuel Lepage Vallee 74ef4dd8b7 Revert "naughty: Fix replaces_id + changing colors (#2041)"
This reverts commit 4e42996d9a.
2019-02-16 14:08:45 -05:00
Emmanuel Lepage Vallee a2f314c349 Revert "Add support for resizing notification icon with respect to aspect (#2176)"
This reverts commit 584c5cedb1.
2019-02-16 14:08:45 -05:00
Emmanuel Lepage Vallee 0703156155 Revert "naughty: add notification max width and height (#2232)"
This reverts commit 5e6f534365.
2019-02-16 14:08:45 -05:00
Emmanuel Lepage Vallee 898db88443 Revert "fix(naughty: core): don't attempt to upscale small icons (#2283)"
This reverts commit b77ffa86e0.
2019-02-16 14:08:45 -05:00
Sorky 4831a46590 Add get_random_file_from_dir to gears.filesystem
Ref #2596
2019-02-16 13:58:24 -05:00
Uli Schlachter 8fdc89ff09 Add and use gears.timer.run_delayed_calls_now()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-15 17:04:19 +01:00
Uli Schlachter e50fa84f61 gears.protected_call: Automatically detect xpcall features
In Lua 5.1, xpcall() has exactly two arguments: The function to call and
the error handler. Everywhere else, xpcall() passes extra arguments on
to the function to call. This includes LuaJIT, however since LuaJIT sets
_VERSION to "Lua 5.1", so far gears.protected_call used the workaround
for Lua 5.1 here.

This commit switches gears.protected_call to actually test for this
feature instead of just guessing based on _VERSION. Thus, this now also
uses the better code with LuaJIT.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-15 09:25:06 +01:00
Uli Schlachter 7cb9ec4798 gears.timer: Use gears.debug.print_error (#2647)
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-14 10:21:55 -05:00
Sorky 3f26624160 Aligning 'regex' with other PR / Minor readability improvements
https://github.com/awesomeWM/awesome/issues/2596

Re-matched regex used elsewhere & updated test cases for "." in filename

Allowed for alternative extensions to be found even if specified

Reverted the change of behaviour but adjusted code for readability

Small readability change

Avoided delay searches that would never work

Untabify

Reverted possible [unlikely/undesired] behaviour changes

Untabify
2019-02-09 19:21:46 +11:00
Uli Schlachter 6a463da636 background container: Actually set the foreground color
Commit ba75da7976 worked around a bug in LGI. However, it did so by
just dropping the code that set the foreground color. Instead, it should
have changed the code so that cr:set_source() is only called if the
background container has a foreground color configured instead of "just
always".

Fixes: https://github.com/awesomeWM/awesome/pull/2609#issuecomment-459580395
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-01 15:28:29 +01:00
Uli Schlachter 5f2cdabc01 textclock: Produce reproducible output (#2622)
When $SOURCE_DIRECTORY is set, we are most likely currently running the
examples test, i.e. generating images. These images end up in the
documentation.

To make the images reproducable, i.e. independent from the current time,
this commit makes the textclock honor $SOURCE_DATE_EPOCH if
$SOURCE_DIRECTORY is set.

See commit 9d7eaf02 for some more details.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-31 20:34:41 +01:00
warptozero eca5c869fa
awful.rules: Fix shape function not being set as client property 2019-01-30 07:44:00 +01:00
mergify[bot] cdd6e360f5
Merge pull request #2609 from psychon/shape_outside
Change the way the shape is done in the background container
2019-01-29 18:21:24 +00:00
Uli Schlachter 84eb175ccd background container: Deprecate shape_clip property
The previous commit removed the implementation of this property.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-28 14:55:53 +01:00
Emmanuel Lepage Vallée 8b5d79792b
doc: Fix a copy+paste mistake
The current `awful.widget.layoutlist` is a fork of the so far uncommitted `naughty.widget.actionlist`. It was created because some of the support code for the new `naughty` implementation needed "easier to merge" usage examples. The `layoutlist` was chosen because it was both a low hanging fruit and genuinely useful.
2019-01-27 22:01:10 -05:00
Uli Schlachter ba75da7976 Work around a bug in LGI
cairo_get_source() is not bound correctly, leading to use-after-free
bugs. Cairo catches this and crashes.

Work around this by preserving the current source in a different way.
Instead of using cairo_get_source() and later cairo_set_source(), this
commit wraps everything that changes the current source between
cairo_save() and cairo_restore(). Thus, cairo saves the current source
for us without us having to grab an explicit reference.

Works-around: https://github.com/pavouk/lgi/issues/210
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-27 11:42:51 +01:00
Uli Schlachter 67cf1469f0 Change the way the shape is done in the background container
Previously, the background container "just" used the shape and drew a
line around it. This means that half the line will be inside of the
shape and half of it will be outside. Thus, this hides the actual shape
that is used.

This commit changes that so that the line is added outside of the shape.
It does this via some tricks:

- In :before_draw_children(), :push_group() is used to redirect drawing
  of the child widget to a temporary surface.
- In :after_draw_children(), the border is added to this group.
  + For this, another temporary surface is created. It will be used as a
    mask.
  + The inside of the shape on this mask is cleared, everything else is
    filled. Thus, the mask now contains everything "not content".
  + Everything inside the mask is filled with the background color.
- Also in :after_draw_children(), the group is drawn to the actual
  target surface.
  + Again, this needs a mask.
  + This time, we draw the shape to the mask with twice the border width.
    Thus, half of this line will be outside of the shape.
  + Then, the shape itself is also filled so that the mask contains the
    shape and the border.
  + This mask is then used to copy the right parts of the temporary
    surface were the child widget and border was drawn to the actual
    target surface that will be visible on screen.

This approach has some upsides. Because we no longer have "half the
border" above content, colors with some transparency work fine for the
border. Also, this should avoid issues with anti-aliasing, because e.g.
the border is not just drawn with the border width, but also further out
to everything else so that the background cannot "bleed through".

Fixes: https://github.com/awesomeWM/awesome/issues/2516
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-27 11:42:36 +01:00
Emmanuel Lepage Vallée d25abddeb7
Merge pull request #2610 from Elv13/arcchat_fixes
Fix the arcchart rounded edges
2019-01-26 13:04:54 -05:00
Emmanuel Lepage Vallée f735a60b95
Merge pull request #2511 from Elv13/xmas_2k18_5
Add the layoutlist
2019-01-26 12:22:03 -05:00
Sorky bf62695f76 awful.menu: Move code from rc.lua to awful.menu
Fixes: #2524
2019-01-26 12:19:05 -05:00
Emmanuel Lepage Vallee dbb552097c arcchart: Also compute the sum when the limits are provided.
The result was used even when it wasn't computed.
2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 090f80d173 arcchart: Place the rounded edge in the right side of the arc. 2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 9efcf9df87 shape.arc: Prevent an angle underflow when rounded edges are enabled.
Fixes #2604
2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 8b60c05118 widget: Add a layoutlist widget
Like taglist and tasklist, but for layouts
2019-01-26 01:34:59 -05:00
mergify[bot] e8bf75ef3c
Merge pull request #2592 from Sorky/patch-1
beautiful.init: Fix return values and improve doco. fixes: #2588
2019-01-25 15:41:15 +00:00
Sorky 366be2105a beautiful.init: Fix return values and improve doco. fixes: #2588 #2592
squashing updates from review by blueyed

Added busted tests

Fixed test files EOF

Remove Travis warning
2019-01-25 22:56:41 +11:00
Emmanuel Lepage Vallée 7e7733c6d1
Merge pull request #2521 from Elv13/modifiers
awesome: Add a `modifiers` field.
2019-01-24 23:59:54 -05:00
Emmanuel Lepage Vallée c87e7aad56
Merge pull request #2510 from Elv13/xmas_2k18_4
Add the popup widget take 2 (only relevant commits)
2019-01-24 23:24:22 -05:00
Emmanuel Lepage Vallee 031c773658 popup: Add a popup module to awful
This module is half way between the tooltip and the raw wibox.

It supports the following features:

 * Auto resize to its widget size
 * Support parent objects and placement

Fix #1683
2019-01-24 10:58:45 -05:00
Emmanuel Lepage Vallee 063ae48438 awful.tag: Select the fallback layout from the list of layouts.
This isn't 100% consistent with the old fallback, but avoids the
case where it has an explicit list to pick from and picks something
else.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 831e92410e tag.layouts: Skip get_layout when looking for the current layout.
If the `layouts` are set during initialization, `t.layout` will
return `floating` if `t.layouts` is added before `t.layout`. By
using the raw layout, the fallback doesn't kicks in.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 2892648916 awful.layout: Add a deprecated notice.
It was already deprecated, but this wasn't documented and silently
fixed.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee eb3ca746ca awful.layout: Support the current tag layouts in `.inc()`.
Also "modernize" the code by leveraging gears.table for more logic.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 8757e15d30 gears: Add `find_keys` and `find_first_key` to `gears.table`.
Fills a small gap between keys_filters and hasitem.
2019-01-24 06:31:57 -05:00
Kevin Zander 012f130738 Add Science category to menubar menu generation categories table. Fixes #2602 2019-01-21 11:58:44 -06:00
Sorky 9927b7a88d squash 2019-01-21 21:37:45 +11:00
Emmanuel Lepage Vallee 0d80b3f0e9 keygrabber: Do not try to guess the modifiers name
There is no an API to query the correct value

Fixes #2515
2019-01-21 03:14:26 -05:00
Uli Schlachter 3145272292 beautiful.init(): reset theme_path if called with a table
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-14 09:18:58 +01:00
Uli Schlachter 69a0de3f03 Make beautiful.theme_path actually work
Commit ac8af66005 added beautiful.theme_path, which is used to save the
directory that contains the theme file that was loaded. Just two months
later, commit ca12473584 broke this code by adding a __newindex
metamethod. This caused the assignment to beautiful.theme_path to be
redirected to the theme. However, the theme is immediately replaced by
beautiful.init() after setting up the theme_path, so this assignment got
lost.

Fix this by using rawset() to bypass the metamethod.

Fixes: https://github.com/awesomeWM/awesome/issues/2573
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-14 09:18:40 +01:00
Emmanuel Lepage Vallee 4b76ca9d38 doc: Fix awful.hotkeys_popup.show_help formatting. 2019-01-13 23:57:04 -05:00
Sorky cf5b0b51ef Update awesomerc.lua
Alternative fix for hotkey_popup via awful menu showing on wrong screen
2019-01-13 23:50:58 -05:00
Aire-One a01669693e layout.manual: Implement the `:insert()` method. (#2557)
It was documented but not implemented. It is necessary when the
"Z index" needs to be manually specified.
2019-01-09 00:31:14 -05:00
Emmanuel Lepage Vallee eb8bfa6407 doc: Fix a copy/paste mistake in the screen module 2019-01-05 04:32:37 -05:00
mergify[bot] dab2732bc3
Merge pull request #2537 from blueyed/fix-treturn
doc: fix `@treturn` usage with index_theme:get_per_directory_keys
2019-01-05 09:00:06 +00:00
Daniel Hahler 25fca23772 doc: revisit gears.table 2019-01-03 17:13:40 +01:00
Daniel Hahler ef4f3277b0 doc: fix @treturn usage with index_theme:get_per_directory_keys 2019-01-03 14:30:21 +01:00
mergify[bot] 6d2fc5c12b
Merge pull request #2523 from Elv13/compact_doc
doc: Merge some documentation pages
2019-01-03 12:50:21 +00:00
Daniel Hahler 1e4ef0bca0
Merge pull request #2379 from Perlovka/menubar/utils.lua
menubar.utils: Allow to add programs with OnlyShowIn option being set
2019-01-03 13:47:26 +01:00
Daniel Hahler f7c144f365
doc: fix type for cmd with easy_async_with_shell (#2531)
It only accepts a string.

With a table it will return an error (string):

> "spawn: parse error: Non-string argument at table index 3"

[ci skip]
2019-01-03 13:46:11 +01:00
Emmanuel Lepage Vallée a2cd918603
wibox: Stop monkey-patching the `get_children_by_id` function. (#2513)
Before this commit, it was added by `wibox.widget.base` if
`:setup()` is used. However it doesn't work for the `awful.popup`
because of the extra indirection.

This commit stops the monkey-patching and make sure the function
always exists. This doesn't prevent it from not working and in
the long run this should still be moved into the hierarchy.

However for now it makes the situation a lot more consistent and is a
quick band-aid without too much controversy.

Mitigate #2181
2019-01-01 15:04:47 -05:00
Emmanuel Lepage Vallee 6ca970395c doc: Merge gears.object and gears.object.properties
The `properties` submodule is almost for private use anyway. It is
not worth poluting the API index for it.
2018-12-31 17:50:37 -05:00
Emmanuel Lepage Vallee 491a46875c doc: Merge the beautiful documentation
Given they are all small, it makes more sense to just merge them like
we did for the client API

For some reasons GTK doesn't want to be merged. To be investigated.
2018-12-31 17:49:44 -05:00
Emmanuel Lepage Vallee f0df2d6e8f doc: Merge the `termite` hotkey popup doc
The other components are already merged as such.
2018-12-31 17:49:14 -05:00
Emmanuel Lepage Vallée a559f55c6a
prompt: Add a `with_shell` property. (#2500)
Fixes #2486
2018-12-31 15:38:14 -05:00
glenvt18 61970761fb fix(menubar): escape XML entities in the item name (#2522) 2018-12-31 15:35:52 -05:00
Emmanuel Lepage Vallee e2f164208c doc: Better document awful.placement.next_to 2018-12-24 21:52:54 -05:00
Emmanuel Lepage Vallee 8bcdd0b794 placement: Add some extra checks to limit the risk of regressions.
Given noone understand this code, this will prevent some semi likely
regressions from going unnoticed. The main risk is the shims not
producing the exact same results as the real implementation and
cause different code paths to be taken.

As of this commit, both the "real" and "shim" implementation were given
the same set of tests with print() at every step of next_to. The
resulting log was then checksummed to ensure both are identical.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 89867386c5 tests: Add images to the tooltip documentation
It also add some properties such as `border_width`, `border_color`
and `preferred_alignments`.

It also fix a documentation bug where the `margin_topleft` was called
`margins_topleft`. To conform to the documentation, both are now valid
but one should be removed the next time the API changes.

Fixes #1978
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 52f62b712c tooltip: Allow the border to be configured.
Given the tooltip border is "client side" instead of X11 to allow
anti-aliasing to work when a shape is used, it doesn't use the wibox
border.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 2b52926b48 tooltip: Pass the parent object to awful.placement, not the position.
By passing the geometry, important information used by
awful.placement.next_to were "lost". Given `next_to` supports both
widget position, the mouse and client/wibox relative positioning, it
has to know the object type.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 68bfde45e1 tooltip: Cleanup the margin API.
Make it closer to other APIs across Awesome.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 3380fd85fc tooltip: Add alignment options.
It's a list of preferred alignments because sometime the best one wont
fit in the screen.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 7d6f52c4dc wibox: Add the wibox reference to `find_widgets`
This is necessary to compute the widget real position on screen
because it's the only way to know the border_width offset.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee d8a7782bf4 tests: Add an awful.placement.next_to test
It was overdue
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee 33a39ce38d placement: Make sure `next_to` result is consistent across calls
It depended on a hash `pairs` iteration. This caused an issue only when
the primary position wasn't available.
2018-12-24 21:52:30 -05:00
Emmanuel Lepage Vallee f1145af49d placement: Allow to configure the next_to anchors
They were previously hardcoded to match the classic context menu
behavior. It isn't flexible enough for some popup type.
2018-12-24 21:49:52 -05:00
Emmanuel Lepage Vallee 3fa42f3b1a placement: Fix `border_width` for `next_to`
All previous users used client side borders so the issue went
unnoticed. This code will be unit tested by the `popup` module
in a few commits.
2018-12-24 21:49:52 -05:00
mergify[bot] 7d0976912e
Merge pull request #2435 from PeterNerlich/fix-hotkeys_popup
stop keygrabber on hide through click
2018-12-20 04:06:17 +00:00
Yauhen Kirylau 820094c3c4 feat(awful: titlebar): expose fallback title (#2459)
feat(awful: titlebar): expose fallback title
2018-12-17 12:47:14 -05:00
Emmanuel Lepage Vallée de04cecf46
Merge pull request #2454 from Aire-One/add_widget_prompt_params
Add parameters to awful.widget.prompt constructor.
2018-12-17 10:45:54 -05:00
actionless 1da5554fdc fix(hotkeys_popup): rebase fix for keygrabber instance 2018-12-17 16:29:36 +01:00
Emmanuel Lepage Vallée 7231087bdb Update widget.lua 2018-12-17 16:29:36 +01:00
Peter Nerlich e55cc7c912 stop keygrabber on hide through click
fixes #2434
2018-12-17 16:29:36 +01:00