feat(network): Add mac address token (#2569)
* Add mac address option * Add error handling * Address changes * Move outside of for loop * Update changelog
This commit is contained in:
parent
6e34265d7b
commit
195a0d94df
@ -73,6 +73,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- `DEBUG_SHADED` cmake variable and its associated functionality.
|
||||
|
||||
### Added
|
||||
- `internal/network`: New token `%mac%`
|
||||
([2569](https://github.com/polybar/polybar/pull/2569))
|
||||
- Polybar can now read config files from stdin: `polybar -c /dev/stdin`.
|
||||
- `custom/script`: Implement `env-*` config option.
|
||||
([2090](https://github.com/polybar/polybar/issues/2090))
|
||||
|
@ -68,6 +68,7 @@ namespace net {
|
||||
struct link_status {
|
||||
string ip;
|
||||
string ip6;
|
||||
string mac;
|
||||
link_activity previous{};
|
||||
link_activity current{};
|
||||
};
|
||||
@ -86,6 +87,7 @@ namespace net {
|
||||
|
||||
string ip() const;
|
||||
string ip6() const;
|
||||
string mac() const;
|
||||
string downspeed(int minwidth = 3, const string& unit = "B/s") const;
|
||||
string upspeed(int minwidth = 3, const string& unit = "B/s") const;
|
||||
void set_unknown_up(bool unknown = true);
|
||||
|
@ -31,6 +31,7 @@ namespace net {
|
||||
};
|
||||
|
||||
static const string NO_IP = string("N/A");
|
||||
static const string NO_MAC = string("N/A");
|
||||
static const string NET_PATH = "/sys/class/net/";
|
||||
static const string VIRTUAL_PATH = "/sys/devices/virtual/";
|
||||
|
||||
@ -150,6 +151,11 @@ namespace net {
|
||||
return false;
|
||||
}
|
||||
|
||||
m_status.mac = string_util::trim(file_util::contents(NET_PATH + m_interface + "/address"), isspace);
|
||||
if (m_status.mac == "") {
|
||||
m_status.mac = NO_MAC;
|
||||
}
|
||||
|
||||
for (auto ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next) {
|
||||
if (ifa->ifa_addr == nullptr) {
|
||||
continue;
|
||||
@ -228,6 +234,12 @@ namespace net {
|
||||
string network::ip() const {
|
||||
return m_status.ip;
|
||||
}
|
||||
/**
|
||||
* Get interface mac address
|
||||
*/
|
||||
string network::mac() const {
|
||||
return m_status.mac;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get interface ipv6 address
|
||||
|
@ -154,6 +154,7 @@ namespace modules {
|
||||
label->reset_tokens();
|
||||
label->replace_token("%ifname%", m_interface);
|
||||
label->replace_token("%local_ip%", network->ip());
|
||||
label->replace_token("%mac%", network->mac());
|
||||
label->replace_token("%local_ip6%", network->ip6());
|
||||
label->replace_token("%upspeed%", upspeed);
|
||||
label->replace_token("%downspeed%", downspeed);
|
||||
|
Loading…
Reference in New Issue
Block a user