Commit Graph

281 Commits

Author SHA1 Message Date
d5203e5b37 Fixed cpu module: Provide stub implementation for parseCpuFrequencies 2023-09-13 23:12:35 +02:00
93d66a9258 Moved cpu/common.cpp to cpu.cpp 2023-09-13 21:56:37 +02:00
d1602e383c cpu module: Reuse getCpuUsage of cpu_usage module 2023-09-13 21:56:36 +02:00
888adb57ec Introduce cpu_usage module 2023-09-13 21:56:32 +02:00
c36fe3a004 Introduce cpu_frequency module 2023-09-13 21:56:31 +02:00
729564cc27 Introduced separate load module
The module provides the three system load averages. This is an
improvement compared what you can do with the cpu module: cpu
only provides the one minute sample and the state of the cpu module is
derived from the cpu usage which messes up the formating of the load
average. Also, at least on modern Linux systems, the load of a system
takes much more than the cpu utilization into account and it should
therefore live in a separate module.
2023-09-13 21:56:30 +02:00
fc67558717 Merge branch 'master' into darkmode 2023-09-11 09:25:45 +02:00
79cf33b9f1 refactor: enumparser create implementation file 2023-09-09 17:59:40 -05:00
09873f0ed9 search for dark or light mode stylesheet
summary:
-------
This commit adds xdg-desktop-portal support to waybar. If a portal
supporting `org.freedesktop.portal.Settings` exists, then it will be
queried for the current colorscheme. This colorscheme will then be used
to prefer a `style-light.css` or `style-dark.css` over the basic
`style.css`.

technical details:
-----------------
Appearance is provided by several libraries, such as libhandy (mobile)
and libadwaita. However, waybar links to neither of these libraries. As
the amount of code required to communicate with xdg-desktop portal as a
client is rather minimal, I believe doing so is better than linking to
an additional library.

The Gio library for communicating with dbus is rather messy, Instead of
the `Portal` class containing a `Gio::Dbus::Proxy`, it extends it which
simplifies signal handling.

`Portal` then exposes its own signal, which can be listened to by waybar
to update CSS.

For a reference implementation, please see another one of my projects:
https://github.com/4e554c4c/darkman.nvim/blob/main/portal.go

test plan:
---------
If no desktop portal which provides `Settings` exists, then waybar
continues with the log line
```
[2023-09-06 14:14:37.754] [info] Unable to receive desktop appearance: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.Settings” on object at path /org/freedesktop/portal/desktop
```

Furthermore, if `style-light.css` or `style-dark.css` do not exist, then
`style.css` will still be searched for.

Waybar has been tested with both light and dark startup. E.g. if the
appearance is dark on startup the log lines
```
[2023-09-06 14:27:45.379] [info] Discovered appearance 'dark'
[2023-09-06 14:27:45.379] [debug] Try expanding: $XDG_CONFIG_HOME/waybar/style-dark.css
[2023-09-06 14:27:45.379] [debug] Found config file: $XDG_CONFIG_HOME/waybar/style-dark.css
[2023-09-06 14:27:45.379] [info] Using CSS file /home/pounce/.config/waybar/style-dark.css
```
will be observed.
If the color then changes to light during the operation of waybar, it
will change css files:
```
[2023-09-06 14:28:17.173] [info] Received new appearance 'dark'
[2023-09-06 14:28:17.173] [debug] Try expanding: $XDG_CONFIG_HOME/waybar/style-light.css
[2023-09-06 14:28:17.173] [debug] Found config file: $XDG_CONFIG_HOME/waybar/style-light.css
[2023-09-06 14:28:17.173] [info] Using CSS file /home/pounce/.config/waybar/style-light.css
```

Finally, tested resetting waybar and toggling style (works, and style is
only changed once).

fixes: Alexays/Waybar#1973
2023-09-06 15:19:56 +00:00
e30fba0b8f chore: 0.9.22 2023-08-16 13:34:05 +02:00
e90c66a102 chore: 0.9.21 2023-08-14 15:33:52 +02:00
2f04a49129 Merge branch 'Alexays:master' into master 2023-07-23 14:30:14 +02:00
430f0e5d65 Merge pull request #2333 from LukashonakV/cava_man
cava man page
2023-07-19 21:47:33 +02:00
4dff1d4b2b cava man page
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-19 20:44:52 +03:00
56df72f61c Merge pull request #2328 from LukashonakV/ISSUE_2281
cava bump
2023-07-18 16:59:38 +02:00
8fdd456fa9 cava bump
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-07-18 17:51:23 +03:00
3ecd4030e3 chore: v0.9.20 2023-07-18 08:29:32 +02:00
c85738574c Use C++20 by default 2023-07-16 16:00:26 +02:00
00e143d47e Introducce AAppIconLabel class
Implemented for hyprland
2023-07-10 22:50:58 +02:00
d8a808f76c chore: 0.9.19 2023-07-04 23:03:50 +02:00
a1cd0acac5 Fix random segfault on GTK icon functions
The segfaults were happening on GTK icon theme functions, which are
called via the C++ interface functions such as Gtk::IconTheme::has_icon.

There are multiple modules and threads using this functions on the default
icon theme by calling Gtk::IconTheme::get_default(), which returns the same
object for all callers, and was causing concurrent access to the same internal
data structures on the GTK lib. Even a seemingly read-only function such as
has_icon can cause writes due to the internal icon cache being updated.

To avoid this issues, a program wide global mutex must be used to ensure
a single thread is accessing the default icon theme instance.

This commit implements wrappers for the existing IconTheme function calls,
ensuring the global lock is held while calling the underling GTK functions.
2023-07-03 22:32:24 +01:00
85854c71d6 Merge pull request #2219 from xytovl/wake_threads_on_resume
Wake all sleeping threads when leaving suspend
2023-07-01 11:02:13 +02:00
0b602632f2 return catch2 2023-07-01 02:23:37 +03:00
33236c222f save 2023-06-28 02:52:01 +03:00
3c9cbc99d7 Wake all sleeping threads when leaving suspend
std::condition_variable::wait_for does not count time spent in sleep
mode, resulting in longer than expected waits.
2023-06-07 10:17:42 +02:00
47193a3d2f chore: v0.9.18 2023-05-29 09:25:01 +02:00
e253c34cd4 cava bump
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-28 13:38:35 +03:00
33d1ee413f fix: typo 2023-04-17 09:07:59 +02:00
272d672953 fix: add missing man 2023-04-17 09:03:01 +02:00
8be889c5aa Merge pull request #2103 from xdavidel/dwl-module
Add DWL tags module
2023-04-17 09:01:00 +02:00
8aafe817bf Merge pull request #2102 from LukashonakV/Cava 2023-04-16 18:06:53 +02:00
a5607b66ca Cava module
Signed-off-by: Viktar Lukashonak <myxabeer@gmail.com>
2023-04-15 02:36:15 +03:00
4dff1b91fe Merge branch 'Alexays:master' into dwl-module 2023-04-13 17:18:27 +03:00
18a2b90fc0 fix: generate wireplumber module man page 2023-04-11 08:17:45 +03:00
60cdf10e64 Add DWL tags module 2023-04-11 04:50:21 +03:00
63525ec956 Rename function name 2023-03-25 17:33:01 +01:00
5e4a47c0a8 Merge branch 'master' into add-river-layout 2023-02-11 13:22:46 +11:00
757a450324 add river/layout 2023-01-31 16:34:38 +11:00
69b95e6d71 Merge pull request #1959 from alebastr/gcc-13 2023-01-23 09:18:13 +01:00
0ca1c3957a docs(image): add image doc in meson and fix title 2023-01-22 20:16:46 +08:00
93e340a081 feat(clock): support chrono Time Zone extensions.
Use chrono Calendars and Time Zones (P0355R7, P1466R3) when available
instead of the `date` library.
Verified with a patched build of a recent GCC 13 snapshot.
2023-01-21 02:18:44 -08:00
43d52c59d9 test: fix build with Catch2 v2.x
Use smaller includes for Catch2 v3.
2023-01-20 22:49:59 -08:00
f0bead34d4 chore: 0.9.17 2023-01-11 11:39:30 +01:00
86850f5c7a Merge pull request #1520 from robertgzr/mpris-module 2023-01-06 22:35:24 +01:00
0bc5314e08 Add mpris module
Uses libplayerctl to use the MPRIS dbus protocol to query, listen and
control media players.

Signed-off-by: Robert Günzler <r@gnzler.io>
2023-01-06 20:55:31 +01:00
4d59de42af Implement hyprland submap module 2022-12-21 01:45:57 +01:00
80b2b29a77 Merge pull request #1397 from JakeStanger/feat/image-module
Resolves https://github.com/Alexays/Waybar/issues/1191
2022-11-24 20:40:56 +01:00
9eb6c4e296 chore: v0.9.16 2022-11-24 20:34:12 +01:00
235861fd3d button: Remove AButton class 2022-11-24 13:08:16 +01:00
c2f98d07ef feat: wireplumber support
Adds basic support for showing volume via wireplumber. Allows specifying
the node-id or falling back to the default Audio/Sink node id if node-id
is not set. If tooltip on hover is enabled, will show `{node_name}` by
default otherwise `tooltip-format`.

Format replacements:

`{volume}` - Volume in percentage
`{node_name}` - The node's nickname (`node.nick` property)
2022-11-16 23:23:07 -08:00