Daniel Eklöf
ba54e709ee
module/script: no need to handle SIGCHLD
...
Assume that a closed pipe means the child died. Even if it hasn’t, we
can’t read anymore from it. We’ll end up killing it anyway before
returning from run().
2020-11-25 20:41:10 +01:00
Daniel Eklöf
e0169d38f3
module/script: don’t re-direct stderr to /dev/null
2020-11-25 20:41:10 +01:00
Daniel Eklöf
aa34925f54
module/script: close all unrelated FDs
...
While most FDs are CLOEXEC, not all are. For example, other script
modules’ re-direction pipes.
2020-11-25 20:41:10 +01:00
Daniel Eklöf
31f6a4a6a0
module/script: don’t re-close comm-pipe on failure
2020-11-25 20:41:10 +01:00
Daniel Eklöf
c11a79c98d
bar, module: particles may no longer return NULL in instantiate()
2020-11-25 20:41:10 +01:00
Daniel Eklöf
fef40d18e1
module/sway-xkb: fix name of .so file, fixes load failures when built as shared module
2020-11-25 20:41:09 +01:00
Daniel Eklöf
df2d8fec36
particle/list: assert sub particles where instantiated correctly
2020-11-25 20:41:09 +01:00
Daniel Eklöf
44db9304c5
particle/ramp: assert sub particles where instantiated correctly
2020-11-25 20:41:09 +01:00
Daniel Eklöf
c3cfae13e8
particle/progress-bar: assert sub particles where instantiated correctly
2020-11-25 20:41:09 +01:00
Daniel Eklöf
86ef9dcc02
particle/map: don’t return NULL from instantiate()
...
Instead return an empty dynlist.
2020-11-25 20:41:09 +01:00
Daniel Eklöf
198a351c7c
meson: particles: data-driven foreach loop, and link map against dynlist
2020-11-25 20:41:09 +01:00
Daniel Eklöf
d0360f2de1
particle: reset signals and signal mask when executing an on-click handler
2020-11-25 20:41:09 +01:00
Daniel Eklöf
074af015fb
module/river: exclude seats while river is starting up
...
This is mainly to fix a race when river is *not* running; sometimes we
ended up allocating particles for N seats in content(), but then when
iterating the seats, run() had destroyed all, or some of the seats,
causing us to feed NULL pointers to dynlist, which crashed.
2020-11-25 20:41:09 +01:00
Daniel Eklöf
74754b0ab9
module/script: improved verification of tag type parameters and tag values
...
* Verify int/float/bool values are that, and nothing else
* Verify tag ranges are integers
* Verify a range tag value is inside its range
* Don’t allow anything but false|true for booleans
2020-11-25 20:41:09 +01:00
Daniel Eklöf
d10ad8924b
doc/yambar-modules: document the ‘script’ module
2020-11-25 20:41:07 +01:00
Daniel Eklöf
f0a34d0055
module/script: parse booleans correctly
...
User is expected to send ‘false’ or ‘true’. But we were parsing the
value using `strtol()`. This caused all bools to be false, since
`strtol()` would always return 0.
2020-11-25 20:36:46 +01:00
Daniel Eklöf
1e5a1d0341
particle/map: return NULL if we neither find a matching tag, nor have a default tag
2020-11-25 20:36:46 +01:00
Daniel Eklöf
4d05947985
bar: deal with NULL exposables
...
Allow modules to return NULL in begin_expose()
2020-11-25 20:36:46 +01:00
Daniel Eklöf
2bb70c6fcb
module/script: require ‘path’ to be an absolute path
2020-11-25 20:36:46 +01:00
Daniel Eklöf
5c9030129d
module/script: use NULL terminated ‘value’ when converting to int/bool/float
2020-11-25 20:36:46 +01:00
Daniel Eklöf
37447cd955
module/script: initialize string tags from our NULL-terminated ‘value’
...
`_value` is a pointer into the receive buffer, and may not be NULL
terminated, and may also contain data belonging to the next tag.
2020-11-25 20:36:46 +01:00
Daniel Eklöf
9945fce2d2
module/script: explicitly ignore return value of write(3)
2020-11-25 20:36:45 +01:00
Daniel Eklöf
7f1ffd126b
module/script: close script communication pipe FD on error
2020-11-25 20:36:45 +01:00
Daniel Eklöf
fb0d443e1d
module/script: plug memory leak: free ‘tags’ array
2020-11-25 20:36:45 +01:00
Daniel Eklöf
008235d904
bar/wayland: close command pipe FDs in cleanup
2020-11-25 20:36:45 +01:00
Daniel Eklöf
328ebe8fe9
bar/wayland: plug memory leak: free seat name
2020-11-25 20:36:45 +01:00
Daniel Eklöf
73407853e4
module/script: can’t use logical OR when building a base 10 number
2020-11-25 20:36:45 +01:00
Daniel Eklöf
08bac77907
module/script: script arguments
...
Add new config attribute, ‘args’. This is a list of strings, that will
be passed as arguments to the script.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
8702378c74
module/script: restore signal handlers and mask in child process
...
This fixes the issue where `killpg()` didn’t manage to kill the
sub-process tree.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
c911d20e73
module/script: add debug logging of raw received data
2020-11-25 20:36:45 +01:00
Daniel Eklöf
f2814f786e
module/script: copy ‘value’ to a NULL-terminated string
...
This ensures e.g. strtol() doesn’t parse data beyond current
tag/value.
2020-11-25 20:36:45 +01:00
Daniel Eklöf
430e505bd2
module/script: remove debug output that wasn’t actually using LOG_DBG()
2020-11-25 20:36:44 +01:00
Daniel Eklöf
fbaa208768
module/script: disable debug output
2020-11-25 20:36:44 +01:00
Daniel Eklöf
80d0025e64
module/script: drop setsid() call
2020-11-25 20:36:44 +01:00
Daniel Eklöf
99aa8dea82
main: block SIGCHLD globally
...
This allows threads (modules) to create signal FDs for SIGCHLD.
2020-11-25 20:36:44 +01:00
Daniel Eklöf
19fe2f5a6f
module/script: wip: new plugin, reads data from a user provided script/binary
...
This module exec’s a script (or binary), specified by the ‘path’
attribute in the configuration.
It then reads tags from the script’s stdout.
The format of the output is:
tag|type|value
tag|type|value
<empty line>
I.e. the script writes N tags followed by an empty line. This
constitutes a transaction.
When a new transaction is received, its tags replaces *all* previous
tags.
2020-11-25 20:36:44 +01:00
Daniel Eklöf
cadf227bc6
module/battery: doh! fix spelling of ‘status’
2020-11-14 23:03:11 +01:00
Daniel Eklöf
c0c5df0f6a
module/battery: map “Not charging” to STATE_DISCHARGING
2020-11-14 23:02:18 +01:00
Daniel Eklöf
8a7e07af28
module/mpd: don’t overload enum mpd_state
...
We overloaded enum mpd_state to add an “offline” state. Don’t do
this. We can detect the offline state by checking if our connection
object is NULL.
Closes #16
2020-11-09 20:27:42 +01:00
Daniel Eklöf
1262f1b3d1
bar/wayland: use wl_*_release() instead of wl_*_destroy()
...
This lets the compositor free up internal state.
2020-11-09 19:53:57 +01:00
Daniel Eklöf
5113357fb2
Merge branch 'document-river'
2020-11-01 13:08:42 +01:00
Daniel Eklöf
fcfc7442c7
doc: yambar-modules: document the river module
...
Closes #9
2020-11-01 13:08:09 +01:00
Daniel Eklöf
c55153bad8
readme installation: mention -Dbackend-*=disabled|enabled
2020-09-24 20:15:06 +02:00
Daniel Eklöf
d645aff48e
module/clock: silence compiler warning: ensure timeout_ms is initialized
2020-09-24 17:47:20 +02:00
Daniel Eklöf
e25c42dc87
module/river: meson: explicitly add wl_proto_src + wl_proto_headers to sources
...
The ‘river’ module depends on generated protocol sources. These are
normally provided, indirectly, by the Wayland bar backend. But when
building plugins as shared modules, the plugins no longer depend on
the bar, and thus ‘river’ fails to build.
Fix this by doing two things:
* **Remove** the ‘river’ protocol from the ‘generic’ Wayland protocols
* Explicitly add both the generic and the ‘river’ specific protocols
to the ‘river’ module.
2020-09-24 17:30:18 +02:00
Daniel Eklöf
41d0a17ea5
doc: yambar-tags: document the :hex and :oct suffixes
2020-09-24 17:03:36 +02:00
Daniel Eklöf
a5faf4896a
changelog: add issue link for alsa: volume as percentage
2020-09-24 16:01:46 +02:00
Daniel Eklöf
bd29bf765b
Merge branch 'clock-seconds-granularity' into master
2020-09-24 16:01:25 +02:00
Daniel Eklöf
0cde404d2a
module/clock: detect when we need to update every second
...
Closes #12
2020-09-24 16:01:18 +02:00
Daniel Eklöf
318965b715
module/clock: internally use either minutes or seconds granularity
2020-09-24 14:32:39 +02:00