Commit Graph

980 Commits

Author SHA1 Message Date
Ciaran Downey 5186dd27e6 Use while (getline) instead of a for loop
Also make the comments surrounding the /proc/net/dev parsing clearer and
remove the apparently redundant "is the netdev file still good?" check.
2021-08-26 11:33:52 -07:00
Ciaran Downey 9d9f959769 Switch network module to read /proc/net/dev
This fixes issue #610 by reading bandwidth usage per-interface from
/proc/net/dev instead of globally via /proc/net/netstat. It supports the
same matching logic as elsewhere, so setting interface to '*' should
display the same sum-total bandwidth usage as the previous
implementation.
2021-08-25 15:00:05 -07:00
Tobias Bengfort 7b4b5e55a2 support format-icon for cpu und memory 2021-08-23 07:30:19 +02:00
Michael Swiger cb49650ea4 Use g_memdup2 instead of g_memdup
This fixes a compile warning.

See: https://discourse.gnome.org/t/port-your-module-from-g-memdup-to-g-memdup2-now/5538
2021-08-22 14:46:40 -07:00
Gavin Beatty 9ee701974f
Fix memory leak and data race
- Delete previous Layout before creating next one, and in destructor
- Use stack XKBContext instead of local new+delete
- Lock mutex in update() as it is called from a different thread than onEvent(res)
2021-08-20 10:06:35 -05:00
Alex 8940c3bbe8
Merge pull request #1211 from mswiger/fix_multi_display_tray_icon_scaling
Fix tray icon scaling on multi-display setups
2021-08-20 17:00:41 +02:00
dmitry c058a2d196 Add number to shortDescripton 2021-08-20 01:09:16 +03:00
Isaac Freund 024fd42e27
river/tags: support urgent tags
Upstream river has a concept of urgent views/tags as of commit e59c2a73.
Introduce a new urgent style to expose this in the waybar module.
2021-08-19 15:01:49 +02:00
Michael Swiger 2d80d31527 Fix tray icon scaling on multi-display setups 2021-08-16 23:33:29 -07:00
dmitry a87a967a97 Fix leak 2021-08-17 05:29:35 +03:00
dmitry a57e431437 Add shortDescription 2021-08-17 05:28:41 +03:00
Michael Swiger 4f6a9b1bc2 Fix incorrect tray icon scaling 2021-07-31 18:01:31 -07:00
Alex 65166109c9
Merge branch 'master' into fix_power_calc 2021-07-25 15:07:01 +02:00
dmitry 68e4457f3a Add tooltip-formay 2021-07-24 17:24:37 +03:00
Alex 445ad22580
Merge branch 'master' into keyboard_state 2021-07-23 15:59:08 +02:00
Grant Moyer 88a5f713ed Prefer keyboard-state over keyboard_state 2021-07-23 09:45:07 -04:00
Alex b47705ac21
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-23 09:07:43 +02:00
Aleksei Bavshin a5fe6f40b8
feat(tray): handle Status property
On the `Passive` value of `Status` tray items would be hidden unless
`show-passive-items` is set to true.
On the `NeedsAttention` value of `Status` tray items will have a
`.needs-attention` CSS class.
2021-07-22 08:04:06 -07:00
Aleksei Bavshin 245f7f4b11
feat(tray): handle scroll events 2021-07-22 08:04:05 -07:00
Aleksei Bavshin 1418f96e46
feat(tray): fallback to Title for items without ToolTip 2021-07-22 08:04:04 -07:00
Aleksei Bavshin 84a8f79bbe
feat(tray): implement tooltips (text only) for tray items 2021-07-22 08:04:03 -07:00
Aleksei Bavshin 4b6253e810
refactor(tray): infer changed properties from signal name
Comparing two GVariants is too expensive; let's collect the set of
properties updated by each signal and apply them unconditionally.
2021-07-22 08:04:00 -07:00
Aleksei Bavshin 929fc16994
fix(tray): ignore unused WindowId property 2021-07-22 08:01:25 -07:00
Alex 100d4d3499
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-21 09:40:19 +02:00
Michael Swiger 1440ed29d4 Fix blurry tray icons for HiDPI displays 2021-07-20 22:29:34 -07:00
Grant Moyer 311c5779ea Remove unused variable 2021-07-20 23:03:41 -04:00
Grant Moyer 08e886ebc6 Search for device automatically if none given 2021-07-20 21:09:00 -04:00
Grant Moyer 40e6360722 Update css class when locked/unlocked 2021-07-20 21:09:00 -04:00
Grant Moyer 642e28166b Add more configuaration 2021-07-20 21:09:00 -04:00
Grant Moyer 6dfa31fb17 Basic keyboard state module 2021-07-20 21:09:00 -04:00
Lars Christensen 6f2bfd43bf Fix pulseaudio icon name compilation error 2021-07-20 15:25:05 +02:00
Alex f43f8773c4
Merge pull request #1169 from roosemberth/pa-control-active-sink
pulseaudio: Control currently running sink
2021-07-20 14:01:23 +02:00
Roosembert Palacios 86a43b9042
pulseaudio: Control currently running sink
In a system with multiple sinks, the default sink may not always be
the once currently being used. It is more useful to control the
currently active sink rather than an unused one.

This patch does not make any difference if the system only uses the
default sink.

Signed-off-by: Roosembert Palacios <roosemberth@posteo.ch>
2021-07-20 10:16:53 +02:00
Alex ad09072a6d
Merge branch 'master' into pr/anakael/sway-language-impr 2021-07-15 22:17:38 +02:00
Patrick Nicolas 9c2b5efe7b Support per-device icon in pulseaudio 2021-07-15 09:20:43 +02:00
dmitry 8310700bbb Improve sway/language 2021-07-13 04:33:12 +03:00
tiosgz 78aaa5c1b4 Do not fail to parse a multi-bar config 2021-07-10 20:22:37 +00:00
John Helmert III 368e4813de
libfmt >=8.0.0 compatibility 2021-06-30 13:12:38 -05:00
Oskar Carl e62b634f72
Workaround for circular imports 2021-06-21 19:29:09 +02:00
Oskar Carl e8278431d2
Proper formatting 2021-06-21 19:05:01 +02:00
Oskar Carl 14f626d422
Add recursive config includes 2021-06-21 19:05:01 +02:00
Anthony PERARD 194f4c2f18 network: Fix mix use of default and state specific format
Whenever the network module is configured with both "format" and
"format-$state" and when the module use "format-$state" once, it
override the value that was saved from "format".

For example, if both "format" and "format-disconnect" are configured,
and only those, as soon as the module show information about a
disconnected interface, it will keep showing the format for
disconnected, even if the interface is connected again later.

Fix that by always setting a value to default_format_ in update() and
thus use the intended default format when needed.

Fixes #1129
2021-06-08 18:50:32 +01:00
Alex 9e34be7b16
Merge pull request #1126 from tperard/fix-network-auto-detection
Fix network interface auto detection
2021-06-05 18:06:30 +02:00
Anthony PERARD 33617b67f0 network: Fix one case where default route is deleted without notification
When an interface's state is change to "down", all the route
associated with it are deleted without an RTM_DELROUTE event.

So when this happen, reset the module to start looking for a new
external interface / default route.

Fixes #1117
2021-06-05 16:52:04 +01:00
Anthony PERARD efaac20d82 network: Handle ip route priority
When there's a new default route with higher priority, switch to it.
2021-06-05 16:51:54 +01:00
Anthony PERARD ce97df34e6 network: Also clear ifname in clearIface()
Since we reset `ifid_`, clear `ifname_` as well.
2021-06-05 16:51:40 +01:00
Anthony PERARD 23b9923eeb network: Parse whole RTM_NEWROUTE msg before interpreting it
The check to figure out if we have the default route should be after
the for loop that parses the route attributes, to avoid acting on
incomplete information. We are going to use more fields from the
message.
2021-06-05 16:51:35 +01:00
Maxim Baz 999c1b6b81
sway-language: ignore events with empty layout 2021-06-05 15:03:52 +02:00
Amanieu d'Antras 1a98ecf6b0
Merge branch 'master' into fix_power_calc 2021-05-30 11:17:54 +01:00
Anthony PERARD f49a7a1acb network: Update WiFi information when available
The module doesn't update the `essid_` as soon as a WiFi interface is
connected, but that happens at some point later, depending on
"interval" configuration.

Fix that by rerunning the get WiFi information thread when the
`carrier` state changes. Also, we will clear the state related to WiFi
when the connection is drop to avoid stale information.
2021-05-27 19:36:14 +01:00
Anthony PERARD 28dfb0ba41 network: Fix use of carrier information
Some RTM_NEWLINK messages may not have the IFLA_CARRIER information.
This is the case when a WiFi interface report scan result are
available. `carrier` is used regardless of if it is present in the
message or not. This would result in the interface appearing
"disconnected" in waybar when it isn't.

This patch now check that `carrier` is available before using it.

The same thing could potentially happen to `ifname` so check if it's
set before recording it.

Fixes: c1427ff (network: Handle carrier information)
Fixes #388
2021-05-26 19:23:20 +01:00
Aleksei Bavshin 7aaa3df701
feat(bar): add config flag to disable exclusive zone 2021-05-21 22:44:18 -07:00
Aleksei Bavshin 729553d3bc
feat(bar): add config flag for pointer event passthrough 2021-05-21 22:44:17 -07:00
Alex f78a802d11
Merge pull request #1106 from tperard/network-module-reword
Network module rework
2021-05-21 17:02:28 +02:00
Yonatan Avhar 99918205ed Correct .json to .jsonc 2021-05-21 17:53:43 +03:00
Yonatan Avhar c65ec9e14f Add options to use a .json extension for the config filename 2021-05-21 15:54:48 +03:00
Anthony PERARD c1427ff807 network: Handle carrier information
IFLA_CARRIER allows to know when a cable is plugged to the Ethernet
card or when the WiFi is connected. If there's no carrier, the
interface will be considered disconnected.
2021-05-15 16:38:00 +01:00
Anthony PERARD 0bb436f949 network: Rework interface auto detection, handle route change events
Last part of the rework of handleEvents(), this time we take the
getExternalInterface() function and add it to the handleEvents()
function. That way, waybar can react immediately when a new "external
interface" is available and doesn't need to probe. Also that avoid to
have two different functions consuming from the same socket and we
don't need to recode some of the functions that are already available
via libnl (to send and receive messages).
2021-05-15 16:38:00 +01:00
Anthony PERARD 0fc7ef6685 network: Rework address lookup to use only events
In order to get the IP address of an interface, we can get the
information out of NEWADDR events without needed to call getifaddrs().
And when now events are expected, we can requests a dump of all
addresses and handle addresses changes the same way via handleEvents()
only.
2021-05-15 16:38:00 +01:00
Anthony PERARD c9bbaa7241 network: Rework initial interface search by using a dump
Instead of using an alternative way to list all links in order to
choose one when an "interface" is in the configuration, we can ask for
a dump of all interface an reuse the handleEvents() function.

This patch also start to rework the handleEvents() function to grab
more information out of each event, like the interface name.
2021-05-15 16:38:00 +01:00
Anthony PERARD 63fdf66ad6 network: Read all available messages on ev_sock_
When more than one message is available to read on the ev_sock_
socket, only the first one is read.

Make some changes to be able to read all the messages available by
setting the socket to non-blocking. This way we can detect when
there's nothing left to read and loop back to wait with epoll.
2021-05-15 16:38:00 +01:00
Anthony PERARD 9357a6cb88 network: Start the module with some text in the label_
Fix modules starting with no text, but not hidding.

Start with some "text" in the module's label_, update() will then
update it. Since the text should be different, update() will be able
to show or hide the event_box_. This is to work around the case where
the module start with no text, but the the event_box_ is shown.
2021-05-15 16:38:00 +01:00
Anthony PERARD dbc06abf18 network: Initialise cidr_ like clearIface() does 2021-05-15 16:38:00 +01:00
Amanieu d'Antras 4d067619a8 Fix power calculation when battery units are in μA instead of μW 2021-05-15 15:55:38 +01:00
Max1Truc f3a6e2d494 fix: incorrect battery percentage on Pinebook Pro 2021-05-10 21:00:14 +02:00
Alex 71d7596b6f
fix: bluetooth status tooltip 2021-04-30 14:23:49 +02:00
Patrick Hilhorst a03283d65f
rewriteTitle: allow multiple sequential rewrites 2021-04-26 20:26:43 +02:00
Gabe Gorelick 7e13e26c29
[modules/battery] allow format-discharging-full
`format-discharging-full` has been impossible since #923 made it
impossible to be full and discharging at the same time. This should
fix that by only making `format-charging-full` impossible. Whether
or not that should be allowed is a good question, but beyond the
scope of this change.

Fixes #1031
2021-04-25 22:00:24 -04:00
David96 2213380dc0 [modules/pulseaudio] fix bluetooth class for PipeWire
apparently, pipewire-pulse slightly changed the naming of the sink.
2021-04-25 11:19:35 +02:00
Matthias Richter af3c868a5b Catch exception on erroneous rules
std::regex and std::regex_replace may throw an std::regex_error if the
expression or replacement contain errors.

Log this error and carry on with the next rule, so that the title is
shown even if the config contains errors.
2021-04-21 12:24:47 +02:00
Matthias Richter b16c8972c7 Add option to rewrite sway/window title
Rewrites window title according to config option "rewrite".
"rewrite" is an object where keys are regular expressions and values are
rewrite rules if the expression matches. Rules may contain references to
captures of the expression. Regex and replacement follow ECMA-script
rules. If no regex matches, the title is left unchanged.

example:
"sway/window": {
  "rewrite": {
    "(.*) - Mozilla Firefox": " $1",
    "(.*) - zsh": " $1",
  }
}
2021-04-21 12:24:47 +02:00
Sefa Eyeoglu fc89b01ba6
feat: implement mpd volume format template
Allow the user to show the current volume from MPD status via the
`format` and/or `tooltip-format` configuration options.

The values are provided by libmpdclient and are integers, generally
between 0-100 (without %). Values above 100 are also possible, as mpd
output plugins like `pulse` support volumes above 100%.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2021-04-20 08:35:47 +02:00
dmitry ba278985e8 Add ignore-list param to wlr/taskbar 2021-04-18 21:34:29 +03:00
Alex d0f60c47bf
Merge pull request #1070 from jgmdev/cpumodulefix
[Module CPU] fix crash due to empty frequencies.
2021-04-15 21:17:00 +02:00
Alex 07f2470e36
Merge pull request #974 from kamushadenes/patch-1
Improve Pulseaudio sink/source separation
2021-04-15 21:09:35 +02:00
jgmdev f8f1e791a3 [Module CPU] fix crash due to empty frequencies.
On some systems (eg: ARM) the supported frequencies of the CPU are not
properly reported by /proc/cpuinfo so if that fails try to retrieve them
from /sys/devices/system/cpu/cpufreq/policy[0-9]/cpuinfo_[max|min]_freq.
2021-04-15 14:30:29 -04:00
Petri Lehtinen c850212288 Use the correct battery status when multiple batteries are present 2021-03-28 20:07:35 +03:00
Alex 600afaf530
Merge pull request #1037 from Moonlight-Angel/cpu-frequency
Add cpu min/max/avg frequencies
2021-03-25 12:09:42 +01:00
nullobsi bf3efdb89c
Merge branch 'master' into master 2021-03-14 21:34:25 -07:00
Antonin Reitz a49b12b66b Fix CPU load values 2021-03-12 20:58:51 +01:00
nullobsi 1573e1eb97
change variable instead of substr(len) 2021-02-26 13:29:58 -08:00
nullobsi 9b9daaee6f
Merge branch 'master' into master 2021-02-26 13:22:34 -08:00
Genesis 99643ba2e6
Stub parseCpuFrequencies on *BSD platforms 2021-02-25 09:14:51 +01:00
Genesis 08ea5ebe1f
Add cpu frequency 2021-02-25 09:14:51 +01:00
Aleksei Bavshin 943ba3a2da
fix: schedule output destruction on idle callback
Defer destruction of bars for the output to the next iteration of the
event loop to avoid deleting objects referenced by currently executed
code.
2021-02-22 18:35:09 -08:00
nullobsi b4728f2e1d
Merge branch 'master' into master 2021-02-16 21:51:31 -08:00
Alex 08e19602f7
Merge pull request #1015 from alebastr/rfkill-events
rfkill code refactoring
2021-02-11 10:20:13 +01:00
nullobsi b12b500bfc
Merge branch 'master' into master 2021-02-10 09:39:03 -08:00
Aleksei Bavshin e786ea601e
fix(rfkill): handle EAGAIN correctly 2021-02-10 08:26:21 -08:00
Aleksei Bavshin 6d5afdaa5f
fix(network): don't block the main thread on rfkill update
Moving rfkill to the main event loop had unexpected side-effects.
Notably, the network module mutex can block all the main thread events
for several seconds while the network worker thread is sleeping.

Instead of waiting for the mutex let's hope that the worker thread
succeeds and schedule timer thread wakeup just in case.
2021-02-09 21:27:22 -08:00
Aleksei Bavshin 52dd3d2446
refactor(bluetooth): remove `interval` and timer thread
The timer thread was always reading the same value from Rfkill state.
2021-02-09 21:27:21 -08:00
Aleksei Bavshin ecc32ddd18
refactor(bluetooth): remove Bluetooth::status_
The string was always overwritten in `update()`; don't need to store
temporary value in the class.
2021-02-09 21:27:20 -08:00
Aleksei Bavshin 38c29fc242
refactor(rfkill): poll rfkill events from Glib main loop
Open rfkill device only once per module.
Remove rfkill threads and use `Glib::signal_io` as a more efficient way
to poll the rfkill device.
Handle runtime errors from rfkill and stop polling of the device instead
of crashing waybar.
2021-02-09 21:27:19 -08:00
Aleksei Bavshin 40f4dc9ecf
fix(rfkill): accept events larger than v1 event size
Kernel 5.11 added one more field to the `struct rfkill_event` and broke
unnecessarily strict check in `rfkill.cpp`. According to `linux/rfkill.h`,
we must accept events at least as large as v1 event size and should be
prepared to get additional fields at the end of a v1 event structure.
2021-02-09 21:27:18 -08:00
Andy Russell 95a6689077
disable Idle Inhibitor module if unsupported 2021-02-09 18:37:13 -05:00
Aleksei Bavshin 89b5e819a3
fix(client): improve guard from repeated xdg_output.done events
Multiple .done events may arrive in batch. In this case libwayland would
queue xdg_output.destroy and dispatch all pending events, triggering
this callback several times for the same output.

Delete xdg_output pointer immediately on the first event and use the
value as a guard for reentering.
2021-02-08 23:25:58 -08:00
Aleksei Bavshin 6585381230
fix(client): remove unnecessary wl_output_roundtrip
At this point we're not awaiting any protocol events and flushing
wayland queue makes little sense. As #1019 shows, it may be even harmful
as an extra roundtrip could process wl_output disappearance and delete
output object right from under our code.
2021-02-08 22:30:01 -08:00
Alex f3ce7ff86c
Merge pull request #1021 from jgmdev/taskbar-icons
[wlr/taskbar] Check StartupWMClass
2021-02-07 16:52:34 +01:00
jgmdev e4a65c72dd Added missing 'if' space. 2021-02-07 04:27:16 -04:00
jgmdev f14a73584f [wlr/taskbar] Added break when matching StartupWMClass is found. 2021-02-07 01:01:57 -04:00