Commit Graph

10685 Commits

Author SHA1 Message Date
poisson-aerohead b4cb3eae7b Debug the suggested changes to lib/awful/screen.lua per the discussion
thread at PR 3448. PR 3448 involves changes to expand the content
(screenshot) API. Originally, I added both root.content() and and
screen.content to the C source, as client.content has always been
handled. However, screen.content in effect takes a root screenshot and
returns a crop of it. This can just as easily be done through Lua.

When this quick update was implemented in github, the code added to
awful.screen.lua was not quite correct. These changes represent the
debugged version. Users can now call s.content for a screen object, s,
and the screenshot will work transparently.

Signed Off: Brian Sobulefsky <brian.sobulefsky@protonmail.com>
2021-10-04 19:49:22 -07:00
poisson-aerohead a9bf812c17 Update screen.c 2021-10-04 19:49:22 -07:00
poisson-aerohead 5f58bc3195 Apply suggestions from code review
Co-authored-by: Aire-One <aireone@aireone.xyz>
2021-10-04 19:49:21 -07:00
Brian Sobulefsky f6eef228e2 Updated API in the same interface as the client.content property to support
screenshots at the root window and screen levels. A call to the
root.content() method will return a screenshot as a Cairo surface of the
entire root window (generally all physical screens). Getting the
screen.content property will return a screenshot as a Cairo surface of the
screen object (generally a physical screen) just as client.content will for
a client object.

Sample usage - the traditional API supported focused client screenshot as:

  c = client.focus
  if c then
    gears.surface(c.content):write_to_png("/path/to/screenshot.png")
  end

Similarly, this API extension adds:

  s = awful.screen.focused()
  if s then
    gears.surface(s.content):write_to_png("/path/to/screenshot.png")
  end

for the screen class and:

  gears.surface(root.content()):write_to_png("/path/to/screenshot.png")

for the root window. Note that the example shows how to get a screenshot
of the focused screen, but this is not a limitation. A lua script could
call it on any screen object.

Signed off by Brian Sobulefsky <brian.sobulefsky@protonmail.com>
2021-10-04 19:49:21 -07:00
Elyes HAOUAS 54a5a7dce5
Fix some spelling errors (#3450)
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2021-10-04 19:20:03 -07:00
Lucas Schwiderski d755d9add3 ci: Fix the debug messages. 2021-10-04 18:19:52 -07:00
Emmanuel Lepage Vallee 4ef08f7339 ci: Cleanup the previous test commits. 2021-10-04 14:35:01 -07:00
Emmanuel Lepage Vallée 46ae927951
ci: Fix another branch name issue 2021-10-04 14:24:17 -07:00
Emmanuel Lepage Vallée 3807ed83b0
ci: Change the branch check to see if it fixes the apidoc. (#3453) 2021-10-04 14:11:32 -07:00
Emmanuel Lepage Vallée f3e16e2466
Merge pull request #3452 from Elv13/token
Attempt to fix the APIDOC token
2021-10-04 10:42:18 -07:00
Emmanuel Lepage Vallee 5f321df4cc doc: Fix the image link on the index page. 2021-10-04 10:38:05 -07:00
Emmanuel Lepage Vallee 30eb441f3a ci: Change the API doc token name.
@blueyed added the old token used by Travis and it is called
"AWESOME_ROBOT_TOKEN"
2021-10-04 10:27:55 -07:00
Emmanuel Lepage Vallée 2bca64b89c
Merge pull request #3343 from Elv13/awful_wallpaper
Rewrite the wallpaper API
2021-10-02 13:38:21 -07:00
Emmanuel Lepage Vallee c3fe4c15ed doc: Uncomment the wallpaper `screen` property. 2021-10-01 16:54:22 -07:00
Emmanuel Lepage Vallée eb07ca4c47 Update lib/awful/wallpaper.lua
Co-authored-by: Aire-One <aireone@aireone.xyz>
2021-10-01 16:26:33 -07:00
Emmanuel Lepage Vallee 546ac6aec9 container.tile: Correctly transfer the Cairo source to the tile. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallée 01ae508899 Update lib/awful/wallpaper.lua
Co-authored-by: Aire-One <aireone@aireone.xyz>
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallée 7b8426bd24 Update lib/wibox/widget/imagebox.lua
Co-authored-by: Aire-One <aireone@aireone.xyz>
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallée 7806763667 Update docs/05-awesomerc.md.lua
Co-authored-by: Aire-One <aireone@aireone.xyz>
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 70cd293839 doc: Integrate `awful.wallpaper` into the guides. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 4a0645e942 doc: Correctly render --DOC_NO_USAGE + --DOC_GEN_OUTPUT.
It was previously merged into a single block.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 1ff860454e theme: Use a SVG wallpaper for the xresources theme.
It uses a stylesheet for the colors. This is not "as good" as the
old one because it only supports 16:9 aspect ratio. However, the
old wallpaper function doesn't fit great in the new model. The
widget doesn't know the screen, so it cannot pass it to a function.
It's possible to stretch the wallpaper.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee bbf1c9270f tests: Test the imagebox DPI and CSS stylesheet. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee d8bc791818 imagebox: Add DPI and CSS Stylesheet properties for SVG images.
This exposes the `librsvg` DPI and Stylesheet properties. This
is a groundwork commit to port the xresources theme to use a SVG
wallpaper instead of hardcoded Cairo code to generate the colorfar
logo.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 883cdb7f41 doc: Fix the rendering of double quotes and semicolons
CMake uses quotes and semicolon in its internal list datatype.

Previously, all double quotes were converted to single quotes to
avoid this problem. Semicolors were interpreted as newlines in
ldoc.

With this commit, both of them render fine. This was required
because a new example uses CSS and XML where those symbols have
a specific meanning.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee ddccddb6dc imagebox: Allow to load SVG data without saving it. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 3f2db184ad gears.wallpaper: Deprecate. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee e55ea2b0d5 doc: Support multiple screens in the "default look" template. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 6b7ecc51f8 tests: Add awful.wallpaper tests 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 580f16b7ff tests: Draw the wallpaper in the awful template 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee dcdc6a1089 shims: Add awesome._get_key_name 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 8481af90c5 shims: Add a wallpaper setter. 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee b9971a5acc root: Do not end up in an infinite loop if the wallpaper is `nil`.
If `root.wallpaper` was called with `nil` during initialization,
AwesomeWM would get into an infinite restart loop.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee b0a2d82d8f compat: Do not require to pass pattern._native to the wallpaper.
It makes the shims impossible to implement without a double free,
a memory leak or a crash. Using `capi` should not require to
destroy the LGI wrappers.

Another example, not fixed in this commit, are the client shapes.
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 82f54ab95c rc.lua: Switch to awful.wallpaper 2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee 98dd78b777 awful: Add a wallpaper module.
`gears.wallpaper` is a flat API (that doesn't even belong in gears) and
is neither well integrated with the other AwesomeWM concepts, nor well
documented or easy to understand for newcomers.

This module adds an object oriented, declarative, module with properties
for the most common wallpaper types. It also integrates with
`awful.placement` and the `wibox` module.

The design attempts to make the wallpaper a "wibox like" object like
the titlebars. It is non-interactive, but still allows the widgets. Note
that this is slow and should be avoided for dynamic content. It is why
the widgets are never updated unless manually reloaded. The objects also
attempt to be disposable rather than persistent. Thus they are immutable
by default to prevent accidental abuse.

Fix #3428 #2596
2021-09-24 08:42:42 -07:00
Emmanuel Lepage Vallee aa998db626 tests: Test the imagebox upscale and downscale properties. 2021-09-24 08:38:13 -07:00
Emmanuel Lepage Vallee 5212f0634a imagebox: Add a `downscale` and `upscale` property.
Previously, it was really hard to get the image to do one *or* the
other. The `resize` property set both at the same time.

While it could, this does not deprecate the old `resize` property
since 99% of the user wan't to lock both.
2021-09-24 08:38:13 -07:00
Emmanuel Lepage Vallee cefd4f843e gears.filesystem: Improve get_random_file_from_dir.
Previously, only a filename was returned. Getting the path was
inconvinient when used within a declarative construct.

It was also misbehaving then the directory didn't exist. Finally,
the extention list now accept extension names starting with a dot.
2021-09-24 08:38:13 -07:00
Emmanuel Lepage Vallée eddabebac4
Merge pull request #3436 from Elv13/fix_3428
Fix setting the screen in a notification preset.
2021-09-24 07:53:54 -07:00
Emmanuel Lepage Vallee 64d190546d core: Always add a search path when `-c` is passed to the cli.
This way modular config load with just `-c` and don't require the
extra `-s`.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee b038463e22 naughty.legacy: Handle broken configs betters.
If a config with naughty.layouts.box crashes at startup and the
fallback config uses naughty.layouts.legaxy, it is possible their
will be some lookup for an object which isn't tracked by the legacy
module.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee 24fc1043ee tests: Remove a flackyness in test-input-binding 2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee ccbe116877 tests: Try to mitigate a flacky test with luajit 5.1.
Give more attempt for the wibars to be GCed. This test fails ~5% of
the time since moving from Travis CI to GitHub actions.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee bd8f2f936b naughty: Fix a memory leak related to suspended notifications. 2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee 552b2a22d1 tests: Test the notification presets.
Make sure they behave the same in legacy and ruled modes.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee 9336b62f80 ruled.notification: Handle legacy presets.
This is deprecated, but some modules like `lain` use them, so it
must still minimally work for backward compatibility.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee e752943b98 notification: Correctly handle `screen` set in the presets.
It was setting directly to `_private`, which both didn't work
and caused a memory leak.

Fix #3428
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee 21a111d154 naughty: Allow to set the message from the presets again.
This was never really supported and is really not what the presets
were event meant to be used for. But it worked and `lain` used it.
2021-09-22 19:17:02 -07:00
Emmanuel Lepage Vallee 89c84caee4 naughty.legacy: Explicitly remove the screen.
Do not rely on the GC. It isn't reliable with Luajit.
2021-09-22 13:39:58 -07:00