Commit Graph
221 Commits
Author SHA1 Message Date
Alexis Rouillard 6acc94ca37 Merge pull request #4967 from argentite/net-addr-del-fix
Network: fix: delete correct address type
2026-04-07 12:45:07 +02:00
Anubhab Ghosh 16886117b3 Network: fix: delete correct address type
Only delete the corresponding address type (IPv4 or IPv6) when an event
about a specific type (AF_INET or AF_INET6) is received

This fixes situations where only one type of the address is deleted (and
possibly added again) but Waybar still thinks the interface is in
"linked" (no IP) state.
2026-04-02 19:54:19 +05:30
Adrian LopezandSisyphus 753294dbf4 fix(network): prevent near-zero bandwidth on rapid event-driven updates
When netlink events (link/addr/route changes) fire between timer
intervals, dp.emit() triggers update() which consumes the byte delta
and resets bandwidth_down_total_. A subsequent timer update sees
near-zero delta, displaying very small bandwidth.

Cache the last computed bandwidth values and skip recalculation
when update() is called within half the interval. Event-driven
updates reuse the cached values instead.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 19:38:24 +02:00
Alexis Rouillard 06c3d4393c Merge pull request #4943 from sgruendel/network_multi_monitor
Fix network bandwidth rate calculation for early updates
2026-03-25 12:30:17 +01:00
Greg Darke b64265bdf7 Network: Fix default interface selection.
When an interface is not specified for the network module, we parse the
routing table to look for default routes.

We have defined a default route to:
- have a gateway specified, and
- have no destination specified, or have an all-zero destination.

Previous versions of Waybar had the second condition inverted,
causing it to incorrectly pick interfaces are used to route a
subnet/single host.

For example, with the following routing table, we should pick `eth0` to
show information about, not `wg0`.

```
ip -4 route
default via 192.168.252.1 dev eth0 proto dhcp src 192.168.252.200 metric 100
192.168.252.0/24 dev eth0 proto kernel scope link src 192.168.252.200 metric 100
192.168.2.254 via 192.168.1.1 dev wg0 proto static metric 50
192.168.1.0/24 dev wg0 proto static scope link metric 50
192.168.1.0/24 dev wg0 proto kernel scope link src 192.168.1.254 metric 50
```
2026-03-23 15:04:47 +11:00
Stefan Gründel dc31db6d0c fix: linting error 2026-03-21 18:38:33 +01:00
Stefan Gründel c0c1a4223a Fix network bandwidth rate calculation for early updates 2026-03-21 13:17:06 +01:00
Alexis Rouillard b31292dee2 Merge pull request #4898 from khaneliman/memory
perf(memory): optimize string operations; remove deep copies, memdup, and icon theme rescanning
2026-03-04 22:40:55 +01:00
Austin Horstman c5449bd361 fix(network): log new address only when state changes
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-02 23:12:54 -06:00
Austin Horstman 4c71b2bf9f perf(memory): optimize C++ string operations to reduce heap fragmentation
- Replaced pass-by-value std::string parameters with const std::string&
or std::string_view to prevent SSO overallocations.

- Refactored static mapping functions in UPower to return
std::string_view instead of constructing std::string literals, enabling
perfect cache locality.

- Optimized string concatenation in hot loops (network IPs, inhibitor
lists, sway window marks) by using std::string::append() and
pre-reserving capacity instead of overloaded operator+ which produces
temporary heap instances.

These optimizations reduce high-frequency memory churn and overall heap
fragmentation within the main rendering loops.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-02 22:54:07 -06:00
Austin Horstman 25089b2456 fix(network): align tooltip and tooltip text
Closes https://github.com/Alexays/Waybar/issues/4867

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2026-03-02 21:24:12 -06:00
Alex 802bf184fb fix: lint 2026-02-24 00:49:23 +01:00
Alex ef3d55980e fix: some crashes 2026-02-24 00:49:08 +01:00
Alex 47fb21a2c1 chore: upgrade to clang-format@21 2026-02-04 09:24:14 +01:00
DreamMaoMao 801319f024 fix: Correct the error in converting network speed units 2025-10-02 08:55:40 +08:00
peelz 4c72033309 refactor: why is that line there 2025-07-29 07:52:46 -04:00
peelz b5093f3e58 feat: match network interfaces by their altnames 2025-07-29 07:52:46 -04:00
peelz 73d9c5f560 fix(network): reset is_p2p_ in clearIface 2025-07-10 08:01:20 -04:00
peelz b85f0c17c3 fix(network): ignore carrier state when the interface is down
I'm not sure why, but my network card (mt7921e) sometimes will report
having a carrier when the interface is down. This usually happens
when rfkill was active before rebooting.
2025-07-10 08:01:20 -04:00
peelz b02694caef fix(network): initialize all fields
Some fields were previously uninitialized (e.g. carrier), which
could lead to UB.
2025-07-10 08:01:20 -04:00
peelz 0e07c7ac5c feat(network): add rfkill setting
This setting makes it possible to have a configuration with two
network modules where one of them displays the ethernet state
(disconnected, linked, ethernet), and the other, the wifi state
(disabled, disconnected, linked, wifi).

Otherwise the ethernet state would show up as "disabled" (instead of
"disconnected") when rfkill is active.
2025-07-10 08:01:20 -04:00
peelz 46a152abc8 fix(network): display as disabled if rfkill and no carrier
We want the "disabled" state even when an interface is selected
explicitly.
2025-07-10 08:01:20 -04:00
peelz b6c13ba58b fix: 'ethernet' network state should have precedence over 'disabled' 2025-07-01 10:37:31 -04:00
peelz b8a985d606 style: fix formatting 2025-06-21 10:54:16 -04:00
peelz 07468357f4 fix: network module not displaying rfkill state 2025-06-13 21:40:18 -04:00
Harishankar G 5e4dac1c0a Newline as a seperator when displaying IPv4 and 6 at the same time 2025-03-05 15:29:21 +05:30
Harishankar G 4a6c417ef5 Add format replacements
For cidr6, netmask6
2025-03-04 19:09:21 +05:30
Harishankar G 8bd0285c88 Remove redundant if condition 2025-02-26 16:06:58 +05:30
Harishankar G 212c676251 Provide an option to show ipv4 or ipv6 or both of them 2025-02-26 15:59:33 +05:30
Gustaf Ullberg db943dae98 Let network module handle ipv4 and ipv6 simultaneously 2024-12-05 15:31:40 +01:00
Austin Horstman 895c870d02 network: use fmt for format
Fixes the gentoo build
2024-07-15 09:44:39 -05:00
Austin Horstman b19890c0b1 network: clang-format 2024-07-15 09:02:27 -05:00
Siddhant Kameswar e117bd7cb6 network: add bssid format replacement 2024-07-12 20:46:26 -05:00
zjeffer 7576611782 formatting 2023-10-21 17:06:02 +02:00
Davide Galassi 6829ed1bb4 Different interfaces have different index 2023-10-20 08:25:28 +02:00
Alex b9cd0287f4 fix: typo 2023-07-01 11:12:46 +02:00
Alex 9d741f89e2 fix: lint 2023-07-01 11:12:14 +02:00
Alex cc4370f1b2 fix: build 2023-07-01 11:08:31 +02:00
zjeffer 25c2aaabcb Fixed build warnings 2023-07-01 10:12:24 +02:00
Alex 097cbc0c53 fix: lint 2023-05-29 09:24:33 +02:00
cptpcrd 6163be687d Open network module eventfd as close-on-exec
Ensures that it is not leaked to child processes.
2023-05-21 12:13:17 -04:00
Viktar Lukashonak 8c83af75a1 happy linter
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-28 15:38:34 +03:00
Paymon 3da3732cc9 network: detect if link is p2p and use local addr
without this we endup with peer's addr

Signed-off-by: Paymon MARANDI <darwinskernel@gmail.com>
2023-04-26 13:52:17 -04:00
Elyes Haouas 0d99d38089 modules/network.cpp: Remove repeated "the"
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
2023-02-25 09:51:40 +01:00
Aleksei Bavshin ea17a66dfc fix: compilation errors with cpp_std=c++20
There were two main issues with fmtlib and C++20 mode:

 - `fmt::format` defaults to compile-time argument checking and requires
   using `fmt::runtime(format_string)` to bypass that.
 - `std::format` implementation introduces conflicting declarations and
   we have to specify the namespace for all `format`/`format_to` calls.
2023-01-20 22:50:02 -08:00
Simon Plakolb 5e9bbe5c76 modules: Revert button to label 2022-11-24 13:08:16 +01:00
Alex ebdf575d45 fix: lint 2022-10-28 14:44:48 +02:00
Alex a4d27ea806 fix: checking router id in handleEvent function 2022-10-28 14:44:04 +02:00
Simon Plakolb 2b735f44bc modules: Set tooltip on button
Mouse-over tooltips set on the label only appear once the mouse hovers
over exactly the label. Other apps (e.g. firefox) show the tooltip once
the pointer hovers the button. Not solely its label. With this commit we
get the same behaviour.
2022-10-12 10:25:30 +02:00
Simon Plakolb 8fa5d9b838 modules: Set style-context on button
Fixes issue where the class parameters in style.css would have no
effect.

The CSS now references the GtkButton instead of the GtkLabel. Removing
all style-classes from the custom module GtkButton however removes
any properties set via style.css. Thus, the default classes 'flat' and
'text-button' are added on every update of these modules.
2022-10-12 10:25:30 +02:00