Commit Graph

796 Commits

Author SHA1 Message Date
Emmanuel Lepage Vallee 9e755d59ea shims: Minor fixes
* Allow tags to be passed to the client (fake) constructor
 * Add the border color fallback
2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee 8fb4e2b721 doc: Add a client "sticky" example. 2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee 522d628c2c doc: Complete the widget documentation page.
This adds the `awful.widget` content along with some images.
2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee ac0aeb65c0 doc: Modernize the landing page.
The previous index.html was scary and the most useful links were
at the bottom. This commit fixes that.

It also adds an image of the default config with some labels to name
all visible components.
2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee 9f50c5e062 doc: Add more tag images. 2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee 42a86efa50 doc: Document some of the `tag` properties. 2021-03-21 23:58:05 -07:00
Emmanuel Lepage Vallee 9b4f5b7969 doc: Add an example for mouse `snap` and client edge tiling. 2021-03-21 23:58:05 -07:00
Emmanuel Lepage Vallee a39f66e1c6 doc: Add an example for the client struts. 2021-03-21 23:58:05 -07:00
Emmanuel Lepage Vallee 1cbd839084 tests: "Complete" the screen template.
This isn't very nice code, far from it. But it renders fine. So,
as mentionned like what, 1.5 years ago, the original code dump was
half of the scope. This is the second half. It it has various sizes
for various core objects. All of them are hardcoded and some off by
a few pixels, but overall it works.
2021-03-21 23:58:05 -07:00
Emmanuel Lepage Vallee f982cecd6b tests: Fix a regression in the placement rendering.
One is a real bug introduced by some ruled.client changes which
cause the clients to be moved twice in the first loop. This needs
fixing, but is mitigated for the doc.

The other is mostly fixed in the last commit and was a shim bug.
2021-03-21 23:58:05 -07:00
Emmanuel Lepage Vallee e5a84e2fda shims: Prevent signals when setting the client geo to the same value. 2021-03-21 23:58:05 -07:00
Grumph 4e36cf862f Add tests 2021-01-27 01:41:56 +01:00
Emmanuel Lepage Vallée 5cbc423938
notifications: Make `:reset_timer()` more intuitive. (#3175)
Previously it would only work if there already was a timeout to
avoid some infinite loops. Now it just delay the new timer to the
next loop.

Fix #3147
2020-09-27 23:34:14 -07:00
mergify[bot] 9d766ba622
Merge pull request #3176 from Elv13/notification_foot_gun
naughty: Improve backward compatibility to protecting the constants.
2020-09-14 17:04:00 +00:00
Emmanuel Lepage Vallee 0cbb7f59b0 naughty: Improve backward compatibility to protecting the constants.
If the user copy/pasted `naughty.config.*` into their config rather
than set values 1 by 1, we could no longer add new values since they
would get removed. To prevent more users being affected by this, we
now silently ignore the new table while still setting all the values.

Fix #3145
2020-09-14 02:11:32 -07:00
Emmanuel Lepage Vallee be05862bf4 doc: Add an awful.tag.clear example. 2020-09-14 01:17:31 -07:00
Emmanuel Lepage Vallee a0fda78714 tests: Test clearing a tag. 2020-09-14 01:17:31 -07:00
James Reed e2b00c71e7
Fix adjust misspelling
Co-authored-by: Aire-One <Aire-One@users.noreply.github.com>
2020-07-31 17:33:12 -06:00
Enric Morales 21d916828f Fix runner.sh compatibility with OpenBSD and FreeBSD 2020-05-09 14:19:10 +02:00
Emmanuel Lepage Vallée 535b296b59
Merge pull request #3070 from aDogCalledSpot/menubar_match_empty
Menubar match empty
2020-05-04 01:45:51 -07:00
Emmanuel Lepage Vallée e384ee449f
Merge pull request #3073 from actionless/placement-skip-fullscreen
feat(awful: placement): add "skip_fullscreen"
2020-05-04 01:43:55 -07:00
hung fdee02cdcf gears.shape: new shape (partial) squircle 2020-05-02 17:04:36 +07:00
Ari Breitkreuz 2e6c911821 Add test for menubar.match_empty 2020-04-26 19:48:47 +02:00
actionless d686a0e357 test(examples: awful: placement: skip_fullscreen): cover non-fullscreen clients 2020-04-23 08:29:27 +02:00
actionless e820136810 fixup! fix(awful: placement: skip_fullscreen): force screen geometry
doc(awful: placement: no_offscreen): add descriptions to examples
2020-04-23 07:41:18 +02:00
actionless 05d905cd7d test(examples: awful: placement): add for "skip_fullscreen" 2020-04-23 07:14:21 +02:00
Aire-One 00e826dcad Fix `awful.titlebar` example property. 2020-04-22 19:53:38 +02:00
Gerome Matilla 158cc37a0d
Apply placement margins on awful.tooltip (#3053)
Co-authored-by: Gerome Matilla <gerome.matilla@gmail.com>
2020-04-01 02:13:58 -07:00
hung 4eff88679c new shape: star 2020-03-28 20:21:39 +07:00
mergify[bot] 5d1394b91d
Merge pull request #3041 from SethBarberee/tag_gap_doc
[Doc] add example for master_count in awful.tag
2020-03-20 12:46:16 +00:00
Seth Barberee 6d24dc2ab7 add example for master_count 2020-03-20 01:00:53 -05:00
Seth Barberee 5c7574bce8 convert hotkeys_popup to awful.popup instead of wibox 2020-03-19 10:51:51 -05:00
Emmanuel Lepage Vallée 2da1cb9ba0
Merge pull request #3040 from Elv13/notif_icons_v3
[RFC] Redesign how notification icons are handled.
2020-03-18 21:35:29 -07:00
Emmanuel Lepage Vallee 64fb498422 tests: Test the newly added notification icon request handlers. 2020-03-16 04:44:15 -04:00
Emmanuel Lepage Vallee 32fd11a220 naughty: Move the get_icon implementation to 2 request handlers.
They can now be disconnected or extended.
2020-03-16 04:44:10 -04:00
Emmanuel Lepage Vallee 9e19e7a18c tests: Test naughty request::icon. 2020-03-16 04:43:55 -04:00
Emmanuel Lepage Vallee a3c37382be naughty: Add a new request::icon for the main icon.
My initial implementation was overly optimistic. It turns out there
is no end in sight to "correctly" support icons. Apps randomly use
XDG name, paths and URLs. Rather than baloon the size of the
implementation, this commit moves toward to request:: pattern
found in other APIs. This will allow people who wish to "fix"
specific icons to do so in a way that scales.

The next 2 commits will move the current implementation to request
handlers.
2020-03-15 03:35:40 -04:00
Emmanuel Lepage Vallee 9cf717b994 naughty: Replace request::icon by request::action_icon.
It wasn't a good idea to use ::icon because sometime the notification
themselves needs to request assistance for their icons.
2020-03-14 20:21:35 -04:00
ArenaL5 e5566c0415 Add a test for awesome.get_key_name()
Signed-off-by: ArenaL5 <arenal5@gmx.com>
2020-03-14 19:33:04 -04:00
Emmanuel Lepage Vallee b8e00b245f tests: Trigger the widget "update content" code path. 2020-03-08 20:14:53 -04:00
Emmanuel Lepage Vallée dd289e5ab2
Merge pull request #2853 from Elv13/notif_rules
Add the notification rules.
2020-02-22 18:48:27 -05:00
Seth Barberee b3766c0544 add two examples for awful.wibar 2020-02-20 04:51:44 -06:00
Emmanuel Lepage Vallee f50a84b70b tests: Disable the default `rc.lua` rules for the sake of testing. 2020-02-17 04:41:28 -05:00
Emmanuel Lepage Vallee 2d477383ee tests: Test the notification rules. 2020-02-15 20:33:21 -05:00
Emmanuel Lepage Vallée 59b31e74b3
Merge pull request #2988 from Elv13/notif_rules_groundwork
Fix multiple notifications issue
2020-02-15 17:59:28 -05:00
Emmanuel Lepage Vallée 10e32198e7
Merge pull request #2982 from Elv13/modeline
Support shebangs (#!), modelines, API levels and add more doc.
2020-02-15 17:53:41 -05:00
mergify[bot] fd237b9cd8
Merge pull request #2991 from psychon/cleanup_tag_history
Cleanup tag history on screen removal
2020-02-13 00:31:04 +00:00
Uli Schlachter 38a2a524a7 Cleanup tag history on screen removal
The tag history kept a strong reference to a screen even after that
screen was removed. This prevented the garbage collector from cleaning
up.

Fix this by getting rid of the tag history on screen removal.

Related-to: https://github.com/awesomeWM/awesome/issues/2983#issuecomment-584249568
Signed-off-by: Uli Schlachter <psychon@znc.in>
2020-02-12 20:33:21 +01:00
Emmanuel Lepage Vallee ad880080f4 tests: Better test how the `box` notification handle screens.
Right now, there is still a memory leak *only* when there is active
`box` notification when the screen is removed. I failed to identify
where *this* leak is comming from. The previous few commits fix
~5 other leaks.
2020-02-10 04:13:17 -05:00
Emmanuel Lepage Vallee 21caa19a21 naughty: Add a way to revert to the legacy mode.
When `rc.lua` will use the new notification API by default, we need
a way to revert back to the lagacy mode to be able to test it.
2020-02-10 04:13:17 -05:00
Emmanuel Lepage Vallee ee80fe052f init: Add an API level concept to `capi`.
The API level concept is something used by other projects such as
Android and iOS to allow deprecated features to be removed and the
bahavior to be altered without breaking compability with existing
code.

The same will apply to AwesomeWM. The current API level is "4" and
as long as config use this, no deprecation or bahavior change will
be exposed. If the user sets it to an higher value or we release
the next major version and new users start to use the, then current,
default config, they will use the new API level.

The the far future, if ever, we could fork the entire Lua libraries
to support legacy APIs. This would only require to keep the core
API support for those legacy calls. In the meantime, `gears.debug`
will use this to manage the deprecation and some conditional code
will be added as a last resort attempt to preserve behavior
compatibility while moving forward with breaking changes.
2020-02-08 17:18:01 -05:00
Emmanuel Lepage Vallee c616400239 cmd: Add an option to force the command line arguments.
The next commit will add modeline support. By default, modelines have
the final work on which options to set. However, mostly for testing,
this isn't flexible enough.
2020-02-08 17:12:56 -05:00
Emmanuel Lepage Vallee 20743a9a16 Remove all usage of the now deprecated `awful.rules`. 2020-01-19 02:59:10 -05:00
Emmanuel Lepage Vallee 171a14dbc8 tests: Port the hardcoded awful.rules test to the sequence template. 2020-01-19 02:58:41 -05:00
Emmanuel Lepage Vallee 71c230035c rules: Move `awful.rules` to `ruled.client`.
From now on, all core object will have their own rules. `awful.rules`
hardcodes some client specific code. All `rules` module have some form
of class specific code. This code will now be part of a new module
called `ruled`. Since a year or so, a lot of work has been done to
refactor the rules on top of the shared `gears.matcher` class. This way
there wont be as much duplication.
2020-01-19 02:58:37 -05:00
Seth Barberee ab6381686e add calendar_popup pic to doc 2020-01-17 16:02:18 -06:00
Emmanuel Lepage Vallee 839dddee25 tests: Test the tag `request::layouts`. 2020-01-11 15:43:31 -08:00
Emmanuel Lepage Vallee 6b427e73a8 tag: Add a request::layouts signal and append/remove layout. 2020-01-11 15:43:31 -08:00
Emmanuel Lepage Vallee 5818de41ce awful: Rename awful.ewmh to awful.permissions.
It has nothing to do with EWMH since a long time. It was already used
for the requests, so lets formalize this.
2020-01-11 15:43:30 -08:00
Emmanuel Lepage Vallee 8365dbc1b6 tests: Test rc.lua `c:activate()` actions. 2020-01-11 15:43:15 -08:00
Emmanuel Lepage Vallee b51a20670b tests: Test client.active. 2020-01-11 15:43:15 -08:00
Emmanuel Lepage Vallee 04c757322c client: Turn `rc.lua` logic into a new `request::border` signal.
The default `rc.lua` was using the focus/unfocus signals to set
the border color along with `awful.rules`. This logic block was
no longer aligned with the rest of `rc.lua` since it was
the only place where `beautiful` variables where only used by
`rc.lua`.

On top of this, the new request handler also has extra contexts
for the urgent and floating/maximixed use cases. So it can be used
by themes to implement much smarter borders than just focus based
ones. They were previously limited by the fact most of the
(un-monkey-patchable) logic was in `rc.lua`.

Note that this commit also shuffle the awful.rules order between
the titlebar and the border and changes the tests accordignly.
After some consideration, I came to the conclusion the previous
behavior was bogus and the fact that the placement tests required
to know about the titlebar height is simply a proof of that. The
change was required in this commit because since the border is no
longer in the default rules, a new buggy edge case surfaced.
2020-01-11 15:43:11 -08:00
Emmanuel Lepage Vallee ba5385dd40 client: Update existing code to use `c.active`. 2020-01-11 14:43:56 -08:00
Emmanuel Lepage Vallee 067bcaca60 client: Rename the `manage` and `unmanage` signals.
They currently fit the general concept of a `request::` in the sense
that they are not property related and have "request handlers".

The commit also add deprecation for signals.

The reason for this fits within the larger standardization project.
Non-namespaced signals will eventually be renamed. This has started
a long time ago.

What is old is new again. Once upon a time, there was a `startup`
parameter to the `manage` signal. It is now back in the form of
a context.

Finally, this commit removes the `manage` section of `rc.lua`. It no
longer did anything worthy of being in the config. Each of its
important parts have been moved out over the years and the last
remaining bit is always required anyway. The code has been moved
to `client.lua`.
2020-01-11 14:43:56 -08:00
Seth Barberee b9bb9cbe69 add docs for gears.cache 2020-01-05 20:58:36 -06:00
Seth Barberee d05b7d80f1 gears.string doc revamp 2019-12-19 09:52:03 -06:00
Seth Barberee 9e3c418a03 add gears.table.cycle_value (#2942) 2019-12-12 22:10:10 -08:00
Emmanuel Lepage Vallee b48527b672 tests: Test more of awful.mouse 2019-12-06 01:41:42 -05:00
Emmanuel Lepage Vallée d2b7d292b0
Merge pull request #2939 from SethBarberee/layoutbox-doc
Add layoutbox example
2019-12-06 00:18:24 -05:00
Emmanuel Lepage Vallee 90ddbb9cd0 doc: Add `local` in the launcher example.
It caused some versions of luacheck to bark.
2019-12-05 23:51:00 -05:00
Seth Barberee 431791accc add layoutbox example 2019-12-05 23:48:55 -05:00
Emmanuel Lepage Vallee 38b5527825 tests: Test adding and removing key/mouse bindings on existing clients. 2019-12-05 22:50:02 -05:00
Emmanuel Lepage Vallee a53ff7418e tests: Add more global awful.key in test-awesomerc.
This forces the hotkey popup to have pages.
2019-12-05 22:48:56 -05:00
Seth Barberee 7440cf66f0 more docs for launcher (#2935)
Co-Authored-By: Aire-One <Aire-One@users.noreply.github.com>
2019-12-04 00:08:40 -05:00
mergify[bot] a0386dad91
Merge pull request #2921 from Aire-One/doc_fix_modules_summaries
[Draft/Proposal] DOC - Fix modules summaries.
2019-11-29 06:22:34 +00:00
Aire-One 3e6c33af64 Add imagebox doc example for `resize` property. 2019-11-28 13:53:59 +01:00
Aire-One 86a9bbfd71 Improve the `wibox.widget.imagebox` descrition.
* Add a better descrition for the `imagebox` role in the wiboxes system ;
* Improve image + code render and integration into the descrition ;
* Add a second code exemple to show both coding style (imperative and declarative).

I think the user can now have a better overview of what's a `wibox.widget.imagebox` and how to use it.
2019-11-28 13:53:59 +01:00
Aire-One fcc3d0b590 Add an option to draw clients.
Change how wibox are drawn to build a more flexible function reusable in the context of clients.
Add `clients` option to the template. This new option needs an associative table `{ ['label'] = client }` to work. Where label will be a text rendered on the middle of the client area.
Add a new example: `texts/examples/screen/tiled_clients.lua`.
2019-11-28 13:31:21 +01:00
Aire-One 3791daaeaf Add wibar drawing to screen properties images. 2019-11-22 14:40:21 +01:00
Aire-One 92f698bbae Add an option to draw the wibar on screen images.
Add a new option to the screen image template: `draw_wibar`.
This option draw the wibar on the generated image.
2019-11-22 14:40:21 +01:00
Aire-One 3830e9de35 Invert rulers insertion order.
Rulers insertion order impact the result of the bubble sort algorithm.
By inverting the order, we can make the output image looking more natural.

Awesome's screen properties can be seen like this:
* The screen has a geometry (its size) ;
* Inside there is the workarea ;
* Inside there is the tiling_area.

It seems better to draw rulers in this order.
2019-11-22 14:39:52 +01:00
Emmanuel Lepage Vallee ee331a4eff keygrabber: Remove the hardcoded way to add keybindings.
There is now a real API for this.
2019-11-09 16:43:53 -05:00
Emmanuel Lepage Vallee 944ef213e6 tests: Try both the `args` and parameters based `awful.{key,button}`. 2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee 4723c3218a tests: Make sure the legacy buttons/keys method are converted back. 2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee 12a7d026c2 tests: Test the new key/button binding API 2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee afbb3b7faf shims: Add the legacy _keys and _buttons to the client shims. 2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee f4cfb99cde shims: Update the `button` and `key` shims to be objects.
Now that something actually tries to set the index handlers, it
cannot be a dumb function anymore.
2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee 45823f230a capi: Move from `.data` to `._private` for the property data.
This will bring the CAPI classes closer to the gears.object ones.

Fixes #2897
2019-11-09 16:43:12 -05:00
Emmanuel Lepage Vallee 4501f0e768 Allow to add and remove keys and buttons.
Another step in moving these APIs toward the common object oriented and
declarative paradigms used by other APIs.

This commit introduces the `awful.keyboard` module. It currenly only
exists as a placeholder for the first few append/remove function, but
will grow in scope in another pull request to expose the currently
private modifier APIs and to provide keybindings collision detection
and replace some of `awful.hotkey_popup` business logic.

The `keygrabber` tests which uses root keybindings are disabled for
now to keep the commit size small. This is necessary since the shims
will need many iterations of changes before this work again with the
new syntax.
2019-11-09 16:42:06 -05:00
actionless 68651477fb refactor(test: awesomerc: hotkeys): imitate fake vim client instead of depending on vim as test dep 2019-10-18 19:02:47 +02:00
Xinhao Yuan 0e8dd4c1c9 Added more tests to check partial maximization handling, which require wmctrl as an optional dependency. 2019-10-17 18:54:29 -04:00
Xinhao Yuan 33570e45d7 Added a test to check if window state is restored after a client unmaximizing itself. 2019-10-16 18:23:21 -04:00
mergify[bot] 344964a44a
Merge pull request #2529 from actionless/hotkeys-popup-dont-show-empty-groups
fix(awful: hotkeys_popup): don't show group label if group itself is empty
2019-10-12 22:14:48 +00:00
actionless 0374bf1b1b test(awful: hotkeys_popup): test pagination and app-specific hotkeys (on vim example) 2019-10-11 15:33:43 +02:00
Emmanuel Lepage Vallee 2c08c2fa39 quality: Port all legacy `:buttons()` to `.buttons`. 2019-10-06 03:50:56 -04:00
Emmanuel Lepage Vallee fa414a86a3 tests: Test `widget:add_button()` 2019-10-06 03:50:56 -04:00
Emmanuel Lepage Vallee b23a2e81c5 tests: Stop using the legacy layoutbox constructor.
(done in a commit so the CI can test some commits with the old
constructor)
2019-10-05 22:57:05 -04:00
Emmanuel Lepage Vallee cbb90d8bd1 root: Turn `root.keys()` into a property. 2019-10-05 18:06:51 -04:00
Emmanuel Lepage Vallee 296ad18922 client: Move the `c:keys()` method to a property. 2019-10-05 18:06:51 -04:00
Emmanuel Lepage Vallee 29e804a4f8 drawin: Turn `:buttons()` into a property. 2019-10-05 18:06:51 -04:00