Commit Graph

3904 Commits

Author SHA1 Message Date
Cauchy Underground c9a7698677 Add a scroll smooth step function 2024-04-06 11:07:51 +02:00
Emmanuel Lepage Vallée 8b1f8958b4
Merge pull request #3746 from Elv13/grid_border
Modernize the `wibox.layout.grid` module and add border support.
2024-03-23 22:50:03 -07:00
Emmanuel Lepage Vallée e6f5c79808
Merge pull request #3879 from Elv13/2023_xmas_commits_pr1
Fix the documentation warnings
2024-01-20 16:34:06 -08:00
Peter Anderson 0dcfc86167
Update object.lua 2024-01-11 10:09:54 +00:00
Emmanuel Lepage Vallée 1f7ac8f9c7
Merge pull request #3559 from Elv13/border_container
Add a new border container
2023-12-31 15:36:02 -08:00
Emmanuel Lepage Vallée 2eab55e536 Update lib/wibox/container/border.lua
Co-authored-by: Aire-One <aireone@aireone.xyz>
2023-12-31 15:27:21 -08:00
Emmanuel Lepage Vallée 00ba63b44e
gears.surface: Add crop (#3882)
* added surface crop function

* added busted tests

* added devShell Flake

* Revert "added devShell Flake"

This reverts commit 0acb3d4e43.

* general purpose crop added

* cleanup

* merged functions, added tests

* replaced gdebug.print_error with error

* clearer error message for crop

Co-authored-by: Lucas Schwiderski <4508454+sclu1034@users.noreply.github.com>

* make error message shorter

* surface.crop: Fix doc warnings.

---------

Co-authored-by: Paul Schneider <74120050+paulhersch@users.noreply.github.com>
Co-authored-by: Paul Schneider <paul.schneider2@student.uni-halle.de>
Co-authored-by: Lucas Schwiderski <4508454+sclu1034@users.noreply.github.com>
2023-12-31 15:15:50 -08:00
Emmanuel Lepage Vallee 5ee926d5f1 background: Add a way to scale a background gradient.
This is a feature request from the chat. Right now, only deprecated
hacks allow this to be implemented. This is a valid use case and
must be supported for HiDPI use cases.
2023-12-31 14:57:10 -08:00
Emmanuel Lepage Vallee e82de8edb4 background: Deprecate `bgimage`.
It is now handled by the `wibox.container.border`. The current
implementation had many unhandled corner case and is less
flexible than the new API.

Some might argue deprecating the background from a background
container is... strange. This is true. However, keeing all
use case within the same codebase would make it too large.

The `gears.shape` support is incompatible with the border
widgets (which are used to implement the background images).
2023-12-31 14:56:18 -08:00
Emmanuel Lepage Vallee dc207d5b49 container: Add a broder container.
Rather than bloat the `background` container with another 1k lines,
a new container is added. The goal is to implement CSS-style slicing
for the background images. The container also allows to place
generic widgets on each sides and corners of the container.

The main use case for this container is to replace the old
`awful.titlebar` API with `awful.decoration`. That new module will
allow a central client widget to be surrounded by widgets rather than
have 4 separate drawing areas. The border container is designed to
make complex border+titlebar setup trivial.
2023-12-31 14:54:44 -08:00
Emmanuel Lepage Vallee e23940cc6a imagebox: Expose the "optimal size" properties.
The `textbox` already has the equivalent. This will soon be used
by the new `wibox.container.border` widget.
2023-12-31 14:54:44 -08:00
Emmanuel Lepage Vallee ab121e9ac0 imagebox: Support a CSS file.
Before, the CSS had to be inline. Now that the border container uses
this code, it makes sense to make it more flexible.
2023-12-31 14:54:44 -08:00
Emmanuel Lepage Vallee 5c9ffb8ef3 imagebox: Expose the private SVG handling function.
To be used by `wibox.container.border`, which is a specialized imagebox.
2023-12-31 14:54:44 -08:00
Emmanuel Lepage Vallee ecc20dd0b8 imagebox: Add 3 new fit policies.
This will be used soon by a nice CSS inspired image slicer
container/layout.

They have a limitation inherited from Cairo of only working on a
single axis. This isn't important for 99% of the use case.
2023-12-31 14:54:42 -08:00
Emmanuel Lepage Vallee eddb83fb72 calendar: Add a border width property. 2023-12-31 00:57:07 -08:00
Emmanuel Lepage Vallee 956bd96e94 grid: Apply Awesome v4.2 naming conventions.
* Stop using top level properties for vertical/horizontal
* No abbreviations
* Use height/width instead of size
* Don't use methods where properties can be used
2023-12-31 00:57:07 -08:00
Emmanuel Lepage Vallee f8f5e2c69b grid: Add border support.
This is long overdue. A bit of historical context. The grid API
is losely somewhat based on the old `radical` module, but was
heavily improved by @getzze. That version had row_span and col_span.

This made the way the previous implementation coded the border
incompatible. I spent some time back then trying to bolt it back on,
but the complexity is quite high and never made it work right.

This commit goes in another direction. Rather than draw the border,
it creates a mask where the border should *not* be, then bucket fill
the widget. This is the equivalent of CSS `border-collapse`.

It also support custom borders. This allows dashed lines and partial
borders.

The main use case will be to add border support to the calendar. It
was previously possible to partially do it using custom cell painters,
but was pretty hacky. Now that the calendar will deprecate the custom
painters in favor of `widget_template`s, a more robust alternative was
required.

The drawback of this commit is obviously the added complexity to the
most complex layout. This is why it adds many tests to cover the various
corner cases.
2023-12-31 00:57:07 -08:00
Emmanuel Lepage Vallee 2d5c4b64c5 grid: Add the ability to specify the properties inline.
This is already used in the `wibox.layout.manual` layout. It makes
the widget easier to use. Previously, using the imperative syntax
was necessary for most grids.
2023-12-31 00:56:24 -08:00
Emmanuel Lepage Vallee 3cb42b7a33 doc: Fix warnings in `awful.screenshot` and `gears.shape`.
Those were written before the doc linting was merged.
2023-12-30 14:21:13 -08:00
Peter Anderson cb72c0a8b1
Update menu.lua (#3876) 2023-12-29 13:19:12 -08:00
mergify[bot] 3813320a55
Merge pull request #3869 from unknown321/patch-1
#3867 allow KP_Enter in main menu
2023-11-19 01:41:45 +00:00
Denis Efremov dfe6a47893
Added gears.string.psplit function to support patterns (#3839) 2023-11-18 17:14:35 -08:00
u bcb97c9c18
#3867 allow KP_Enter in main menu 2023-11-19 03:37:16 +03:00
BarbUk 5daae2bb5d
Send a default action when notification is closed by user 2023-10-09 15:07:39 +02:00
Actionless Loveless aa8c7c6e27
fix(awful: layouts: tile: mouse_resize_handler): count the size of useless_gaps around the client (fixes #424) (#3846) 2023-08-30 04:27:52 -07:00
Actionless Loveless cd7cb0e7e7
fix(permissions: geometry): allow geometry change for non-floating clients if it was requested by awesome's own fullscreen and maximize handlers (fixes: #3844, #3834) (#3845) 2023-08-30 04:25:59 -07:00
Actionless Loveless 28381d2792
style(awful: permissions): luacheck updated (https://github.com/awesomeWM/awesome/pull/3839#issuecomment-1676985065) (#3840) 2023-08-17 10:18:35 -07:00
Actionless Loveless d36e1324d1
fix(naughty: icon: new, fit): use `icon_size` from the notification object if defined (fixes #3752) (#3805)
* fix(naughty: icon: new, fit): use `icon_size` from the notification object if defined (fixes #3752)

* fixup! fix(naughty: icon: new, fit): use `icon_size` from the notification object if defined (fixes #3752)

* fixup! fixup! fix(naughty: icon: new, fit): use `icon_size` from the notification object if defined (fixes #3752)
2023-08-13 15:52:12 -07:00
David Kosorin ed71b17f1b
Fix slider with minimum value (#3807) 2023-08-12 16:59:15 -07:00
HoNamDuong 96bdf0af44 fix(awful.key.keygroups): can't use 0 . key 2023-06-06 22:59:42 +07:00
mergify[bot] 485661b706
Merge pull request #3225 from mphe/focus_bydirection_fix
Use focus.filter in awful.client.focus.(global_)bydirection
2023-05-18 13:59:42 +00:00
mergify[bot] b13ac3e34d
Merge pull request #3790 from mireq/fix-layoutbox-rendering
Layoutbox rendering is blurry on HiDPI screen
2023-05-16 17:29:08 +00:00
Miroslav Bendík b6421667d9 Removed unused require 2023-05-13 07:22:06 +02:00
INeido d4555f7dba
Fix typo in taglist.lua (#3803)
* Fix typo in taglist.lua

Just a small typo correction from 'templete' to 'template' in the comments.

* Fix another typo in taglist.lua

Also changed 'genetate' to 'generate'
2023-05-01 05:45:36 +02:00
Miroslav Bendík a03aaec1dc Variation without load_silently 2023-03-26 08:09:39 +02:00
Miroslav Bendík bca49ce408 Whitespace 2023-03-26 07:58:15 +02:00
Miroslav Bendík eccf35fa23 Fixed blurry rendering of layoutbox 2023-03-26 07:45:30 +02:00
David Kosorin b54e50ad6c
Update taglist when tag.volatile value is changed (#3765)
The `volatile` property is supported by the taglist (theme variables
`beautiful.taglist_bg_volatile` and `beautiful.taglist_fg_volatile`)
but taglist is not updated when the property is changed.
2023-01-16 15:02:11 -08:00
王恒 1239cdf4bc
docs(naughty): fix broken link (#3749)
* docs(naughty): fix broken link

New GNOME developer documentation website
https://discourse.gnome.org/t/new-gnome-developer-documentation-website/7134

* docs(naughty): fix broken link
2022-12-09 20:50:17 +01:00
David Kosorin d3c3380168
Arrange layout when client gets untagged (#3748)
This fixes the following bug.

When client gets untagged with current tag then the tag layout
is not arranged. This can leave empty space in some layouts.
To fix this, the user must manually ensure layout arrange using
other action (e.g. resize any client, unselect and select again current
tag, ...).

**Steps to reproduce:**

1. Initial state (`awful.layout.suit.tile` layout)

        tag 1 (selected)  tag 2
        +───+─────────+   +─────────────+
        |   |    2    |   |             |
        |   +─────────+   |             |
        | 1 |    3    |   |    empty    |
        |   +─────────+   |             |
        |   |    4    |   |             |
        +───+─────────+   +─────────────+

2. Toggle tag 2 on client 4 (`c4:toggle_tag(t2)`)

        tag 1 (selected)  tag 2
        +───+─────────+   +─────────────+
        |   |    2    |   |             |
        |   +─────────+   |             |
        | 1 |    3    |   |      4      |
        |   +─────────+   |             |
        |   |    4    |   |             |
        +───+─────────+   +─────────────+

3. Toggle tag 1 on client 4 (`c4:toggle_tag(t1)`)

    **Actual result:**

        tag 1 (selected)  tag 2
        +───+─────────+   +─────────────+
        |   |    2    |   |             |
        |   +─────────+   |             |
        | 1 |    3    |   |      4      |
        |   +─────────+   |             |
        |   |  empty  |   |             |
        +───+─────────+   +─────────────+

    **Expected result:**

        tag 1 (selected)  tag 2
        +───+─────────+   +─────────────+
        |   |    2    |   |             |
        | 1 +─────────+   |      4      |
        |   |    3    |   |             |
        +───+─────────+   +─────────────+
2022-12-08 09:01:48 -08:00
croyleje e281fa3a32
Grammar correction. (#3744)
Corrected misspelled work in qutebrowser hotkeys pupup.
2022-12-03 14:30:08 -08:00
Emmanuel Lepage Vallee 9207b78f81 doc: Add `awful.screenshot` examples. 2022-11-13 17:35:32 -08:00
Emmanuel Lepage Vallee d92a1c498b awful.screenshot: Allow to export widgets instead of files.
Useful for alt-tab widgets and CDE / E16 style Iconified clients.
2022-11-13 17:35:32 -08:00
Emmanuel Lepage Vallee f55a334972 awful.screenshot: Add a delay feature.
This can also act as an auto-save feature if the delay is zero. It
also adds more signals. These signals are intended for creating
notifications. `awful` cannot safely depend on `naughty`, so this
intergration will have to be done by the users.
2022-11-13 17:35:32 -08:00
Emmanuel Lepage Vallee b7dcece40c awful.screenshot: Add keyboard support. 2022-11-13 16:53:32 -08:00
Emmanuel Lepage Vallee fa971ceb7c tmp add keygrabber signal 2022-11-13 16:53:32 -08:00
Emmanuel Lepage Vallee 6338412b5f awful.key: Fix the `modifiers` property.
It was called `mod` rather than `modifiers`.
2022-11-13 16:53:32 -08:00
Emmanuel Lepage Vallee c391fc7fe4 keygrabber: Add `:remove_keybinding()`.
It was possible to add new keys, but not remove existing ones.
2022-11-13 16:53:32 -08:00
Emmanuel Lepage Vallee f0a7f904f9 keygrabber: Add a new signal to catch awful.keys activations.
Some downstream modules with keys don't control the callbacks. Using
signals on multiple keys is more cumbersome than simply exposing
this at the keygrabber level.
2022-11-13 16:53:32 -08:00
Emmanuel Lepage Vallee aca9136b02 screenshot: Cleanup the API.
* Fix all warnings
 * Make indentation consistent across the file
 * Simplify/unify the validation (use `error()` rather
   than try to silently fix problems, move to setters)
   and fallback code (move to the getters rather than...
   everywhere)
 * Write the documentation
 * Finish the tests
 * Remove unnecessary constructors
 * Remove path builder because it belongs in
   `gears.filesystem` and wasn't really used anyway
 * Add more properties and a beautiful variable to
   replace `set_defaults` and hardcoded values.
 * Replace callbacks with signals (common pattern
   in modern AwesomeWM APIs)
 * Moved from `os.date` to GLib and some boilerplate
   code to make Debian devs less angry
 * Changed the way the snipping tool selection wibox works.
   Now it freeze the screenshot before the selection.
   The old way had a bunch of side effects for things
   like Qt/GTK comboboxes. It also could crash.
2022-11-13 16:53:32 -08:00