Commit graph

122 commits

Author SHA1 Message Date
Ogromny
19a9f099e2 modules/pipewire: new module 2022-12-13 10:16:58 +01:00
Willem van de Krol
dcf21f0b06 modules: add pulse
The pulse module shows information about PulseAudio sinks and sources.
2022-12-12 18:51:28 +01:00
Daniel Eklöf
f9fa43845e
changelog: ‘map’ changes: add ref to 182 2022-12-11 18:44:24 +01:00
Leonardo Gibrowski Faé
4a41d4296a
Implement '&&' and '||' operators on map
'-' is a valid character for tags.

Commit 03e1c7d (module/network: Add link stats, 2022-04-30) introduced
two new tags for the network module: `ul-speed` and `dl-speed`. These
use the `-` character, that was previously never used in any tag.

We had two options: either change those tags to use `_` instead, or just
accept `-`s as a valid character. Going forward, I can see many people
deciding to name their tags with `-` instead of `_`, so I believe it is
better to just accept it once and for all.

Note that `-` cannot be used as the first character of a tag (e.g.
`-tag1`) since the `-` has a special meaning in `.yml` files. I don't
believe this will happen often, however, and should be easy to both
detect and correct if it does.
2022-12-10 22:53:30 -03:00
Daniel Eklöf
463b39b56d
changelog: line-wrap long line 2022-12-09 15:25:29 +01:00
Leonardo Gibrowski Faé
87854fa101
float tag: let user specify number of decimals
Closes #200
2022-12-09 15:24:59 +01:00
Daniel Eklöf
028011a816
module/sway-xkb: don’t add the “same” device multiple times
Not sure if Sway bug or not, but we’ve seen Sway presenting multiple
input devices with the exact same ID (and nothing else differentiating
them).

This caused a crash in the sway-xkb module, since we didn’t check if
we were already tracking the device, and thus bumped the
“num_existing_inputs” variable multiple times for the same input
object.

This lead to a content() returning an array with uninitialized
elements, and thus a crash.

Closes #229
2022-10-04 21:16:56 +02:00
Peter Rice
6ed576c719
particle/on-click: support next/previous buttons 2022-10-04 21:14:29 +02:00
Daniel Eklöf
4143099e94
module/network: resurrect SSID
Recent kernels, or possibly updated wireless drivers, no longer
provide the SSID in `NL80211_CMD_NEW_STATION` responses.

For yambar, this meant the SSID was always missing.

This patch fixes this, by also issuing a NL80211_CMD_GET_SCAN
command. The response to this (NL80211_CMD_SCAN_RESULTS) _may_ return
many access points. Pick out the one that we’re associated with, and
inspect its BSS_INFORMATION_ELEMENTS. This is a raw data structure
containing, among other things, the SSID.

I haven’t been able to find any documentation of the format, but could
glean enough from
https://git.kernel.org/pub/scm/linux/kernel/git/jberg/iw.git/tree/scan.c#n2313
to be able to parse out the SSID.

Note that we get a “device or resource busy” error if we try to issue
both the NL80211_CMD_GET_STATION and the NL80211_CMD_GET_SCAN commands
at the same time. Therefore, we issue the GET_SCAN command after
completing the GET_STATION command.

Closes #226
2022-09-10 13:46:34 +02:00
Midgard
d1a8029e6c
module/mpd: add “file” tag 2022-09-03 12:12:11 +02:00
Daniel Eklöf
5da1cd4a38
module/script: process *all* transactions received in a single read()
When the script module received multiple transactions in a single
batch, only the first were processed. This lead to multiple,
unprocessed transactions stacking up in the receive buffer. Every time
a new transaction was received, we popped the oldest transaction from
the buffer, but never actually getting to the last one. This is
perceived as "lag" by the user, where the bar displays outdated
information.

Closes #221
2022-09-03 12:09:30 +02:00
Daniel Eklöf
6c10eb2153
module/alsa: use channel’s dB range instead of raw volume, if available
For channels that have a defined dB range, use that instead of the raw
volume range when calculating the volume percent.

Also use the same logic as alsamixer when calculating the percent from
the dB values: assume a linear scale if the dB range is “small
enough”, and otherwise normalize it against a logarithmic scale.

With this, yambar’s “percent” value matches alsamixer’s exactly.

The ‘volume’ tag remains unchanged - it always reflects the raw volume
values.

Instead, we add a new tag ‘dB’, that reflects the dB values.

Closes #202
2022-06-21 19:49:06 +02:00
Leonardo Gibrowski Faé
a0c07d7836
modules: creates disk-io-module
This creates the disk-io-module, which displays io information read from
`/proc/diskstats`. Details on `diskstats` can be found on:
https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats
2022-06-17 12:04:13 -03:00
Daniel Eklöf
605a6a9ede
particle/string: don’t try to call c32len() on a NULL string 2022-06-13 12:07:24 +02:00
Daniel Eklöf
36a4250a96
changelog: i3: newly created, unfocused, workspaces are considered non-empty 2022-06-11 12:00:16 +02:00
Johannes
03e1c7dc13 module/network: Add link stats
Exports two new tags from network module, `ul-speed` and `dl-speed`.
Because these work through polling, poll-interval must be set.
Otherwise, these two tags always will be 0.
2022-06-06 15:11:24 +02:00
Daniel Eklöf
9353aa14fe
bar: set clip region before calling the particles’ expose() methods
This ensures particles that are “too wide” doesn’t try to render
outside the bar, possibly overrunning both margins and borders. Or
worse, crashes yambar.

Closes #198
2022-06-05 00:33:30 +02:00
Daniel Eklöf
8a8a40bfb5
changelog: sway-xkb: don’t crash on “added” event for already tracked device 2022-06-03 19:37:57 +02:00
Daniel Eklöf
ca077447c2
module/network: tx/rx-bitrate is now in bits/s instead of Mb/s 2022-06-02 22:25:53 +02:00
Daniel Eklöf
de4814d16e
tag: use as_float() when kb/mb/gb formatting a float tag value 2022-06-02 21:33:04 +02:00
Daniel Eklöf
c738f1c63d
module/river: add support for the ‘mode’ event
Seat status v3 adds a new ‘mode’ event, that informs us of the current
mode (as set by e.g. ‘riverctl enter-mode passthrough’)

The mode is exposed as a tag (named “mode”) on river’s “title”
particle:

  - river:
      title:
        map:
          default: {empty: {}}
          conditions:
            mode == passthrough:
              string: {text: " {mode} ", deco: {background: {color: ff0000ff}}}
2022-06-02 17:24:42 +02:00
Daniel Eklöf
a3a0334069
changelog: dwl-tags updates 2022-04-24 22:10:57 +02:00
Leonardo Gibrowski Faé
82a3b2ae11 Updates CHANGELOG.md and changes map.c formatting 2022-04-24 11:21:40 -03:00
Daniel Eklöf
4496d82cfb
changelog: hyperlink lists under their corresponding sub-section 2022-04-23 11:14:50 +02:00
Daniel Eklöf
1206153b03
changelog: convert all issue links to reference links in ‘unreleased’ 2022-04-22 20:25:11 +02:00
Daniel Eklöf
acb8a09376
changelog: turn all issue links into markdown hyperlinks 2022-04-22 20:23:08 +02:00
Daniel Eklöf
9c28d36898
changelog: cpu: don’t error out on systems with SMT disabled 2022-04-07 13:33:41 +02:00
Daniel Eklöf
fd014dc33b
Don’t loop 65536 FDs, trying to close them, when fork+exec:ing
All FDs should now have the CLOEXEC flag set, and thus there’s no
longer needed to manually loop “all” possible FDs and (trying to)
close them.

Note: the alsa module (alsalib, actually) is “racy” - while booting
up, it temporarily opens the asoundrc file without CLOEXEC. If
e.g. the script module starts its script inside this window, it’ll
have a leaked FD. Not much we can do about it though :/

Closes #169
2022-03-29 18:23:55 +02:00
Daniel Eklöf
4daa3d9904
meson: stop using deprecated functions, require meson >= 0.58
* get_pkgconfig_variable() -> get_variable()
* prog.path() -> prog.full_path()
* meson.build_root() -> meson.global_build_root()
2022-02-27 11:32:46 +01:00
Daniel Eklöf
ffccabbb13
config: add inheritable option “font-shaping”
This patch adds an inheritable option, “font-shaping”, that controls
whether a particle that renders text should enable font-shaping or
not.

The option works similar to the ‘font’ option: one can set it at the
top-level, and it gets inherited down through all modules and to their
particles.

Or, you can set it on a module and it gets inherited to all its
particles, but not to other modules’ particles.

Finally, you can set it on individual particles, in which case it only
applies to them (or “child” particles).

When font-shaping is enabled (the default), the string particle shapes
full text runs using the fcft_rasterize_text_run_utf32() API. In fcft,
this results in HarfBuzz being used to shape the string.

When disabled, the string particle instead uses the simpler
fcft_rasterize_char_utf32() API, which rasterizes individual
characters.

This gives user greater control over the font rendering. One example
is bitmap fonts, which HarfBuzz often doesn’t get right.

Closes #159
2022-02-23 18:43:13 +01:00
Daniel Eklöf
c44970717b
module/i3: workspace::focus is apparently Sway only
On i3, users are currently greeted with:

  err: modules/i3.c:94: workspace reply/event without 'name' and/or
       'output', and/or 'focus' properties

This patch makes ‘focus’ an optional attribute. When missing, we
assume a node-count of 0, which means the workspace’s ‘empty’ tag will
always be true. Document this in the i3 man page.
2022-02-15 21:14:08 +01:00
Daniel Eklöf
a2cf05a64d
module/i3: add ‘strip-workspace-numbers’ option
This is a boolean option. When set, “N:” prefixes will be stripped
from the workspaces’ name tag, *after* having been sorted (if the
‘sort’ option is being used).

This makes it useful to arrange the workspaces in a fixed order, by
prefixing the names with a number in the Sway config:

  set $ws1 “1:xyz”
  set $ws2 “2:abc”

Then, in the yambar config:

  i3:
    sort: ascending
    strip-workspace-numbers: true
2022-02-11 21:44:43 +01:00
Daniel Eklöf
605490c872
overline: new decoration
Similar to the ‘underline’ decoration
2022-02-10 20:49:09 +01:00
Daniel Eklöf
6ac046dec3
config: implement font fallback
Fonts in the configuration may now be a comma separated list of
fonts (all using the fontconfig format). The first font is the primary
font, and the rest are fallback fonts that will be searched, in order.
2022-02-10 18:34:15 +01:00
Daniel Eklöf
2cfe45ee81
changelog: add new ‘unreleased’ section 2022-02-05 18:02:50 +01:00
Daniel Eklöf
3cc142a273
changelog: fix 1.8.0 header 2022-02-05 18:00:01 +01:00
Daniel Eklöf
973aa929c1
changelog: prepare for 1.8.0 2022-02-05 17:57:17 +01:00
Daniel Eklöf
ff238e62ba
fcft: adapt to API changes in fcft-3.x 2022-02-05 12:51:08 +01:00
Daniel Eklöf
52e0b5f3d1
tag: fix inverted logic for KiB vs KB logic 2022-02-01 19:01:04 +01:00
Daniel Eklöf
f053ddff7d
changelog: bar does not exit when monitor is disabled/unplugged 2022-01-01 11:47:24 +01:00
Daniel Eklöf
0aff641d0c
changelog: audio CD support 2021-12-26 12:30:08 +01:00
Alexandre Acebedo
ae5c7e0fc3 modules: add cpu module 2021-12-21 18:44:36 +01:00
Alexandre Acebedo
337ce7681f modules: add mem module 2021-12-21 18:44:14 +01:00
Daniel Eklöf
26ea137938
changelog: i3/sway: ‘empty’ tag 2021-12-19 17:54:41 +01:00
Daniel Eklöf
9d94cec549
changelog: integer options incorrectly allowed < 0 values 2021-11-15 18:21:19 +01:00
Daniel Eklöf
f0782d5124
deco: new decoration, ‘border’
Kind of like “underline”, but draws a border around the entire
particle.
2021-10-24 18:22:21 +02:00
Daniel Eklöf
31f160141e
changelog: network: failure to retrieve wireless attributes 2021-10-24 17:50:10 +02:00
Daniel Eklöf
94a0154c23
bar: refresh before starting the main loop
This ensures the bar surface gets mapped, and a background + border
rendered, even though no module “refreshes” it during initialization.

Closes #116
2021-10-17 16:48:09 +02:00
Daniel Eklöf
515b36da0d
foreign-toplevel: refresh the bar when a top-level is closed
Fixes an issue where the last active window is still being displayed
in the bar after the corresponding top-level has been closed.

Reported here: https://github.com/johanmalm/labwc/issues/73#issuecomment-945007028
2021-10-17 09:52:28 +02:00
Daniel Eklöf
1bcf116859
modules: handle udev_monitor_receive_device() returning NULL
Closes #109
2021-09-30 10:01:36 +02:00