Commit Graph

593 Commits

Author SHA1 Message Date
Uli Schlachter ec3901a81e Rewrite the xcursor caching code
Previously, the cache for xcursors consisted of a static array. We had a
hardcoded list of supported cursor names and each one got assigned a
position in this array. This hardcoded list means that one cannot simply
use whatever cursor a cursor theme happens to provide, since the name
needs to be in our list.

In this commit, the code is rewritten. Instead of a hardcoded list, a
sorted array is now used as the cache, as provided by the BARRAY code
from common/util.h. The array is sorted by the name of the cursor.

This change implies an API change for the xcursor code. Previously, one
had to first translate a cursor name into a cache index
(xcursor_font_fromstr()) and could then use this to actually get the
cursor (xcursor_new()). With this commit, xcursor_new() is the only
function provided by the cursor code and it directly gets a string as
argument.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2022-12-04 08:55:46 +01:00
Sean Chapel 56835aef4a
fix xrandr 1.5 virtual monitors. issue 3132 (#3743) 2022-12-03 14:18:44 -08:00
Emmanuel Lepage Vallee 1998fe8609 objects.tag: Update the property documentation. 2022-08-29 22:49:47 -07:00
Emmanuel Lepage Vallee f30800ec4e objects.screen: Update the property documentation. 2022-08-29 22:49:47 -07:00
Emmanuel Lepage Vallee c60e7002e0 objects.drawable: Update the property documentation. 2022-08-29 22:49:47 -07:00
Emmanuel Lepage Vallee 34f936b646 objects.client: Update the property documentation. 2022-08-29 22:49:47 -07:00
Emmanuel Lepage Vallee 86d1b1c22c doc: Add a mandatory `@noreturn` for functions and methods.
The goal is to catch cases where the return value exists, but is
forgotten. There was a large enough number of them to turn this
into a real check. Initially, I just wanted to implement it to fix
the problems, then delete the code. But since this is so common, I
think it is worth the annoyance.
2022-08-29 22:49:45 -07:00
Emmanuel Lepage Vallee 4bd90f0f35 doc: Add documentation linting and fix all issues it found. 2022-08-29 22:48:54 -07:00
Emmanuel Lepage Vallee 75ab366769 doc: Proof reading fixes.
* Rendering problems
 * Incomplete type information
 * Obsolete type information
 * Missing type information
 * Missing return value
 * Incomplete return value type
2022-08-29 22:48:54 -07:00
madprops 29c0057795
Fixed some typos (#3633) 2022-06-18 12:38:59 -07:00
Xinhao Yuan ab6f7e03ca
Relocate a client window as if it is undecorated when reparenting it back. It eliminates the position offset due to re-decorating when a client trys to restore its previous position. (#3253)
Add tests for geometry changes when managing/unmanaging clients. Also verified that it fixed issue #2308.
2022-02-02 22:59:01 +01:00
Xinhao Yuan 21b908bef9
Fix a regression that only property::x and property::width are emitted when all {x,y,width,height} properties are changed. (#3537) 2021-12-30 13:23:44 -08:00
Aire-One aa378a1d4c
fix(client_get_some_icon) loosness about fail
Review @sclu1034
2021-11-15 22:44:26 +01:00
Aire-One 219cff8726 doc(icon) note on default value 2021-11-15 19:18:02 +01:00
Aire-One ea349cee6a doc(client_get_some_icon) Improve description 2021-11-15 19:18:02 +01:00
Sergey fcef95b1f0 Removing duplicating descriptions of screen properties as read only
Removed "Immutable: true" from readonly properties descriptions.
2021-10-27 14:52:36 -04:00
Sergey 6c3d233893 Mark readonly properties for screen 2021-10-27 14:52:36 -04:00
Sergey 43ff4e07ad Marking readonly properties for client 2021-10-27 14:52:36 -04:00
Emmanuel Lepage Vallee ae71158093 doc: Add documentation for the client "window factor" related functions
It might be a good idea to deprecate them and move them to the tag
class. However, these APIs are not exactly well designed, so
moving them wont solve that. Some day the dynamic client layout will
hopefully be merged and send these functions to the heap of smelly
bad ideas trash.
2021-10-18 14:38:37 -07:00
Emmanuel Lepage Vallee 62685c661d doc: Modernize the tag documentation... again...
The last time this page had a refresh was in parallel with another
massive whole-doc project. Thus, this page still had older
conventions which everything else had already removed.
2021-10-18 14:38:37 -07:00
Emmanuel Lepage Vallee a8d2fa0297 doc: Add a large number of `client` examples.
Backfill some under-documented APIs with yet more shiny images.
2021-10-18 14:38:37 -07:00
Emmanuel Lepage Vallee 028d01590a doc: Add a client.border_width example. 2021-10-15 19:50:03 -07:00
Emmanuel Lepage Vallee 80515c2225 doc: Fix rendering of `client:swap()`. 2021-10-15 14:27:30 -07:00
Lucas Schwiderski 4520f33309
doc(client): Improve signal wording
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-20 13:49:23 +02:00
Lucas Schwiderski fcae67cc03
doc: Move inline usage to example files
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-20 13:47:27 +02:00
Lucas Schwiderski dc0d5df4da
doc: Implement review suggetions
Co-authored-by: Aire-One <Aire-One@users.noreply.github.com>
2021-06-20 12:25:11 +02:00
Lucas Schwiderski bf4ad3310d
doc(client): Improve signal documentation
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-17 15:37:35 +02:00
Lucas Schwiderski 1cd89e7de5
doc(tag): Add example for request::default_layouts
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-17 15:37:33 +02:00
Lucas Schwiderski a6864a3e59
doc(tag): Reword signals documentation
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-17 15:37:32 +02:00
Lucas Schwiderski 7838e89d7f
doc(client): Fix incorrect documentation
Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-06-17 15:37:31 +02:00
Lucas Schwiderski e0dea455c1
doc(client): Document special case for border color
Apparently transparent client borders only work when the border color is
set to `#00000000` specifically.

Signed-off-by: Lucas Schwiderski <lucas@lschwiderski.de>
2021-05-22 01:18:16 +02:00
Emmanuel Lepage Vallee 31fcce436c doc: Add a client border color example. 2021-03-22 00:56:02 -07:00
Emmanuel Lepage Vallee 8fb4e2b721 doc: Add a client "sticky" example. 2021-03-22 00:54:00 -07:00
Emmanuel Lepage Vallee a39f66e1c6 doc: Add an example for the client struts. 2021-03-21 23:58:05 -07:00
Uli Schlachter db330e0cfe
Make sure that c.name is never nil (#3251)
Fixes: https://github.com/awesomeWM/awesome/issues/3248
Signed-off-by: Uli Schlachter <psychon@znc.in>
2021-02-28 23:02:54 -08:00
Peter Lyons 764b84da56
Doc typo mislabeled height 2020-09-19 08:28:00 -06:00
Emmanuel Lepage Vallee 68bc9eba15 tag: Fix an off-by-one caused by a mutatation during a `foreach`.
Fix #3167
2020-09-14 00:19:38 -07:00
Reiner Herrmann d256d90550 Move variable declarations from header to C file to fix build with GCC 10
GCC 10 builds with -fno-common by default, which causes linker errors when
variables are declared in header files and included in multiple places.

See also: https://gcc.gnu.org/gcc-10/porting_to.html
2020-04-17 19:25:40 +02:00
Uli Schlachter 8df463f971 doc: Improve the client documentation. 2020-01-19 20:30:06 -05:00
Emmanuel Lepage-Vallee 575b0f12dc doc: Remove all type aliases.
They render poorly and serve no purpose.

    #!/bin/bash
    for FILE in $(git ls-files | grep -E "\.(h|c|lua)" | grep -v tests | grep -v spec); do
        sed -i 's/^[ ]*--*[ ]*@client /-- @tparam client /g' $FILE
    done
2020-01-19 20:30:06 -05:00
Emmanuel Lepage-Vallee 5e720c9744 doc: Major client documentation backfill.
This commit mostly rewrite the client documentation and pay the
technical debt accumulated over the years. Most of the client
documentation was still one-liners from the luadoc era. It now
has all the new tags, type. It also has actual description of
what the properties do beyond the name.
2020-01-19 20:11:19 -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 6ecab5f2f1 doc: Add documentation in each objects which emit request:: signals. 2020-01-11 15:43:31 -08:00
Emmanuel Lepage Vallee 257556793a doc: Document the client request::default_keybindings signal. 2020-01-11 15:43:31 -08:00
Emmanuel Lepage Vallee c5202a4870 tag: Add a context to request::select. 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 efc42b1be1 autofocus: Modify `awful.autofocus` to be a request::.
This also pulls in part of the permission framework to ensure
backward compatibility is kept.

`awful.autofocus` was always weird. It is a module part of `awful`,
but it was never part of `awful` `init.lua`. Rather, `rc.lua` was
the sole place it was used. It behave exactly like a request, but
predate them by years. As I cleanup the request:: API before the
permissions API gets formalized, this has to be fixed now.

It isn't deprecated in this commit because it makes too many tests
fail. Another pull request will solve that by adding the "API level"
concept to AwesomeWM so I can change the behavior without breaking
existing configs. With that, the behavior of `autofocus` will be
enabled by default with the permissions to disable it.
2020-01-11 15:43:15 -08:00
Emmanuel Lepage Vallee 5ad0856fee layout: Add a `request::default_layouts` to fill the list of layouts.
This will allow the default client layout list to be manipulated by
modules without the risk of overwriting each other.

The commit also add a new `--{{{ Tag --}}}` section to `rc.lua`. It will
be expanded once the tag rules get merged.
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 c10bdc3cfe client: Add a property::active signal. 2020-01-11 14:43:56 -08:00