Commit Graph

9493 Commits

Author SHA1 Message Date
Uli Schlachter 2afa5b5fae Move setup of selection() to selection.c
The function selection() is now registered in the Lua global table from
selection.c instead of in luaa.c. This "feels cleaner" to me and is
preparatory for later changes.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-16 15:44:42 +01:00
Uli Schlachter 4cd05133f7 Migrate a bit away from luaL_register().
luaL_register() only exists in Lua 5.1 and was removed in never
versions. It has two completely different behaviours depending on
whether its second argument is NULL or not.

This commit splits that up by adding a wrapper for luaL_setfuncs()
(which does not exist in Lua 5.1) and using that everywhere instead of
our wrapper for luaL_register().

No behavioural changes are intended. This is simply meant as a cleanup.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-16 14:25:20 +01:00
Uli Schlachter 8fdc89ff09 Add and use gears.timer.run_delayed_calls_now()
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-15 17:04:19 +01:00
Uli Schlachter e50fa84f61 gears.protected_call: Automatically detect xpcall features
In Lua 5.1, xpcall() has exactly two arguments: The function to call and
the error handler. Everywhere else, xpcall() passes extra arguments on
to the function to call. This includes LuaJIT, however since LuaJIT sets
_VERSION to "Lua 5.1", so far gears.protected_call used the workaround
for Lua 5.1 here.

This commit switches gears.protected_call to actually test for this
feature instead of just guessing based on _VERSION. Thus, this now also
uses the better code with LuaJIT.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-15 09:25:06 +01:00
Daniel Hahler 991d525f7d
ci: codecov: improve flags/env (#2651) 2019-02-14 18:46:01 +01:00
Daniel Hahler df9ed76418
ci: codecov: use env vars instead of flags (#2648)
Using flags appears to trigger timeouts with codecov's backend.
This uses env variables instead.
2019-02-14 17:18:54 +01:00
Uli Schlachter 7cb9ec4798 gears.timer: Use gears.debug.print_error (#2647)
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-14 10:21:55 -05:00
mergify[bot] 5a7594a8cb
Merge pull request #2644 from psychon/useless_int_return
property: Remove unused int return
2019-02-12 15:57:31 +00:00
Uli Schlachter d29cf0c926 property: Remove unused int return
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 10:13:13 +01:00
Uli Schlachter c3338c5a74 Luacheck: Allow selection_acquire global
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter fa39de17b3 Add a test for selection ownership and transfer
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter 6d7014ca68 Selection transfer: Change event mask after append
When a selection transfer is done, we are no longer interested in events
from the selection window. However, this happens after we set the
property to indicate end of transfer, not before.

The (untested) theory here is that this should make selection transfers
from AwesomeWM to AwesomeWM, i.e. internal transfers, work.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter 18dd22811e Transfer objects: Accept data in chunks
This commit adds a "continue" signal on transfer objects. This signal is
used to request the next chunk of data from Lua after the last one was
sent.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter 434f97e4b1 Selection transfer: Support INCR transfers
Large amounts of data have to be send in chunks via the INCR protocol.
This commit adds support for that protocol to selection transfers.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter fe62ad5faa selection transfer: Support atom format
This commit makes :send{ data={"TARGETS", "UTF8_STRING"}, format="atom"}
work correctly. This was tested with xclip -o -target TARGETS.

With this commit, it becomes possible to implement the TARGETS target.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter a4bac0683e Add a :send method to selection transfers
This makes the following work on a selection acquire object:

    o:connect_signal("request", function(_, _, t)
        t:send{ data = "Hello World!\n" }
    end)

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter 53db43c2b2 Emit a "request" signal on selection acquire objects
This now creates a selection transfer object and requests Lua to reply
to the request via this object. However, so far no answer is possible.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:50 +01:00
Uli Schlachter b979fb724a Start a selection transfer object
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:21:43 +01:00
Uli Schlachter 0f948d0dd9 Begin implementing selection transfers
This commit adds an implementation that always answers "Test\n" when
asked for the selection contents.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:01:37 +01:00
Uli Schlachter 869b1b0dff selection_acquire: Also emit release when X11 selection is lost
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:01:21 +01:00
Uli Schlachter e4199dd6b5 Add a :release() method to selection acquire objects
This allows to voluntarily give up ownership of a selection. Because
selection acquire objects cannot be garbage-collected before they are
released, this also gets rid of the function destroying the window when
its selection acquire object is destroyed. Instead, the window is
immediately destroyed when no longer needed.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:01:21 +01:00
Uli Schlachter 967c9f7a01 Add selection_acquire objects
It is now possible to construct such objects and they already own a
selection.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:01:21 +01:00
Uli Schlachter 94d413345a Prepare a selection acquiring interface
No run-time behaviour is changed so far.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-11 09:01:21 +01:00
mergify[bot] ec47abb4bc
Merge pull request #2639 from psychon/selection_get
Add selection getter objects
2019-02-11 04:00:59 +00:00
Uli Schlachter 4c82199d19 selection_getter: Convert to use a table as argument
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-10 09:49:11 +01:00
Uli Schlachter 3f23914626 Start writing NEWS for the next release (#2624)
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-09 17:35:42 -05:00
mergify[bot] 4fdb3980f3
Merge pull request #2632 from Sorky/patch-1
Aligning 'regex' with other PR / Minor readability improvements
2019-02-09 20:36:23 +00:00
mergify[bot] a5e8cde34e
Merge pull request #2638 from psychon/selection_watch
Add selection watcher objects
2019-02-09 20:22:20 +00:00
Sorky 3f26624160 Aligning 'regex' with other PR / Minor readability improvements
https://github.com/awesomeWM/awesome/issues/2596

Re-matched regex used elsewhere & updated test cases for "." in filename

Allowed for alternative extensions to be found even if specified

Reverted the change of behaviour but adjusted code for readability

Small readability change

Avoided delay searches that would never work

Untabify

Reverted possible [unlikely/undesired] behaviour changes

Untabify
2019-02-09 19:21:46 +11:00
Uli Schlachter 3dac3fd1d8 Luacheck: Allow selection_getter global
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 18:22:14 +01:00
Uli Schlachter cc73c39a60 Add a test case for the selection getter
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 17:59:36 +01:00
Uli Schlachter 9b3f3e35d9 selection_getter: Add support for ATOMs
The list of supported formats of the selection is queried by requesting
the target TARGETS. This target is a list of ATOMs and needs special
handling which is what this commit adds.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 17:56:26 +01:00
Uli Schlachter 0d2c6fc5d1 Implement INCR transfers
Incremental transfers are required to be supported. This commit adds
that necessary support to awesomeWM.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 17:56:26 +01:00
Uli Schlachter 8ad29950f5 selection_getter: Implement simple data transfers
This commit adds support for simple selection transfers. INCR support is
still missing. The API is that a selection getter object emit the "data"
signal when some data becomes available and "data_end" when all data was
received.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 17:56:26 +01:00
Uli Schlachter 010c51aa83 Implement constructing selection getter objects
So far they do not do match. The selection and target are specified and
a window is created for a transfer, but no transfer is actually started
yet.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 17:56:26 +01:00
Uli Schlachter e17912ec0c Prepare a selection getter interface
This prepares a new class for getting selection contents. No run-time
behaviour changes yet.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-07 15:16:48 +01:00
Uli Schlachter 75e67e1d33 Fix Luacheck warnings
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 14:31:57 +01:00
Uli Schlachter 83ffc2b0ce Add a test case for the selection watcher
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 14:31:57 +01:00
Uli Schlachter 1304373a19 selection watcher: Actually watch selections
When the selection that is watched by an active selection watcher
changes, then the signal "selection_changed" is emitted on the watcher.
This signal has one boolean argument that indicates if the selection is
owned. This means that this argument is false when the selection owner
went away and the selection now has no owner at all.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 10:27:59 +01:00
Uli Schlachter a24f35532c Implement selection watcher objects
These objects are created via e.g. selection_watcher("CLIPBOARD") to
track the CLIPBOARD selection. They start watching when their .active
property is set to true and stop when this property is unset again.

This commit implements the Lua side of that: A list of active watchers
is kept and updated when needed.

The next commit will add the X11-side of this so that these objects
actually do something.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 10:10:52 +01:00
Uli Schlachter 0295df81c1 Prepare a selection watcher interface
This commit adds the necessary method calls to setup the class and also
so that xfixes selection notify events can be handled. Currently, these
are empty functions, but later commits will fill them.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 09:30:16 +01:00
Uli Schlachter 2023ed187a Add xcb-xfixes as a new dependency and initialise it
This commit prepares changes in the following commits

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-06 09:21:26 +01:00
mergify[bot] a7474412da
Merge pull request #2630 from psychon/fix_background_foreground
background container: Actually set the foreground color
2019-02-01 15:04:11 +00:00
Uli Schlachter 6a463da636 background container: Actually set the foreground color
Commit ba75da7976 worked around a bug in LGI. However, it did so by
just dropping the code that set the foreground color. Instead, it should
have changed the code so that cr:set_source() is only called if the
background container has a foreground color configured instead of "just
always".

Fixes: https://github.com/awesomeWM/awesome/pull/2609#issuecomment-459580395
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-02-01 15:28:29 +01:00
Uli Schlachter 5f2cdabc01 textclock: Produce reproducible output (#2622)
When $SOURCE_DIRECTORY is set, we are most likely currently running the
examples test, i.e. generating images. These images end up in the
documentation.

To make the images reproducable, i.e. independent from the current time,
this commit makes the textclock honor $SOURCE_DATE_EPOCH if
$SOURCE_DIRECTORY is set.

See commit 9d7eaf02 for some more details.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-31 20:34:41 +01:00
mergify[bot] 0b4a84ccf3
Merge pull request #2628 from warptozero/pr-rules-shape
awful.rules: Fix shape function not being set as client property
2019-01-30 15:01:39 +00:00
warptozero eca5c869fa
awful.rules: Fix shape function not being set as client property 2019-01-30 07:44:00 +01:00
Uli Schlachter b5abd53cbf Use reproducible timestamps in more doc examples (#2626)
This adds require("_date") to some example tests that use the current
date via os.date. This allows reproducibility by replacing os.date()
with a function that uses a static date from $SOURCE_DATE_EPOCH. See
commit 9d7eaf0 for more details.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-29 19:36:40 +01:00
mergify[bot] cdd6e360f5
Merge pull request #2609 from psychon/shape_outside
Change the way the shape is done in the background container
2019-01-29 18:21:24 +00:00
Daniel Hahler a4fe84a8c2
ci: mergify: update for Travis, remove Codacy (#2627)
* ci: mergify: remove Codacy from required checks

It might be hanging, and is not really valuable enough currently to
require a rebuild etc.

* ci: mergify: rename check for Travis CI

It was moved from travis-ci.org to travis-ci.com.
2019-01-29 12:53:24 +01:00