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>
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>
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.
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.
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.
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.
`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
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.
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.
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.