Commit Graph

807 Commits

Author SHA1 Message Date
Pedro Côrte-Real
eb3f4216d4 Show battery state as rounded number
Round the battery charge state so that 99.9% shows as 100%.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
e0cdcb6e30 Handle charging above 100% gracefully
When calibrating a battery it's possible to go above 100%. Handle that
gracefully by just presenting the battery as full and 100%.
2020-11-27 11:02:11 +00:00
Pedro Côrte-Real
a7056f7cce Calculate battery state from just energy values
The energy values are all that's needed to calculate the battery state.
Using other values for the total capacity results in broken results in
some cases. This matches the output of TLP and i3status, while also
being more straightforward.
2020-11-27 11:02:11 +00:00
Daniel De Graaf
3b576ae12d Add "tooltip-format" to temperature module 2020-11-26 20:23:19 -05:00
Aleksei Bavshin
2695985da0
fix: compilation error with gcc 11
../src/modules/network.cpp:22:6: error: ‘optional’ in namespace ‘std’ does not name a template type
   22 | std::optional<unsigned long long> read_netstat(std::string_view category, std::string_view key) {
      |      ^~~~~~~~
../src/modules/network.cpp:7:1: note: ‘std::optional’ is defined in header ‘<optional>’; did you forget to ‘#include <optional>’?
    6 | #include "util/format.hpp"
  +++ |+#include <optional>
    7 | #ifdef WANT_RFKILL
2020-11-26 15:42:44 -08:00
Alex
05b12602d4
fix: don't check against nullptr 2020-11-26 15:16:55 +01:00
Alex
374d5ae5a1
fix: check get_icon return non nullpt 2020-11-26 15:10:33 +01:00
Arnaud Vallette d'Osia
d8dafa7ecc
add minimize-raise() action 2020-11-18 20:12:07 +01:00
Alex
faacd76f62
Merge pull request #892 from alebastr/layer-surfaces-v3
Refactor layer surface implementations (again)
2020-11-02 10:17:57 +01:00
Jordan Leppert
9785a89013 Making active a bool 2020-11-01 18:25:41 +00:00
Jordan Leppert
b015836e7b Ensure style class is removed from all IdleInhibitor instances by moving it to update(). 2020-11-01 18:17:51 +00:00
Jordan Leppert
a9dae931c7 Renaming idle_inhibitor_modules and idle_inhibitor_status to shorter, more convenient names. 2020-11-01 17:14:05 +00:00
Jordan Leppert
071cb86b45 Moving idle inhibitor shared stuff out of Client and into idle_inhibitor module as static members. 2020-11-01 17:09:48 +00:00
Jordan Leppert
c6743988d3 Removing 'click_param' as it is no longer used. 2020-11-01 16:03:39 +00:00
Jordan Leppert
bb33427f65 Making idle_inhibitor_ private and initialised in constructor, as it was before. 2020-11-01 13:38:58 +00:00
Jordan Leppert
4889e655eb Since idle_inhibitor's have a surface, we should have one for each inhibitor module. Therefore, the status is stored on the Client, and all modules create or destroy their inhibitors depending on Client's idle_inhibitor_status. Also, when modules are destroyed they remove themselves from Client's idle_inhibitor_modules. 2020-11-01 13:33:28 +00:00
Jordan Leppert
aa4fc3dd29 Idle inhibitor toggle no longer update all modules - a list of idle inhibitors is maintained on the Client. 2020-10-31 17:30:25 +00:00
Jordan Leppert
4872091442 Draft fix for syncing idle inhibitor across outputs. The idle_inhibitor surface has been moved to Client, all instances of idle inhibitor module now use one surface between them. Any time an idle inhibitor is clicked, currently it force updates ALL modules on all outputs, this needs work. 2020-10-31 16:31:27 +00:00
Jordan Leppert
abe1fa5bd4 Custom module - only call label_.set_tooltip_markup if tooltip markup has actually changed - fixes tooltips not appearing at all if a custom module is updating too frequently. 2020-10-31 12:21:51 +00:00
Laurent Arnoud
96d965fe04
Add simpleclock as fallback when hhdate is not available
ref https://github.com/Alexays/Waybar/issues/668
2020-10-29 19:40:28 +01:00
Aleksei Bavshin
9c566564e1
fix(bar): address some of RawSurfaceImpl resizing issues 2020-10-28 08:22:26 -07:00
Aleksei Bavshin
fc5906dbd4
feat(bar): change layer to bottom when hidden
Invisible bar on a `top` layer would still intercept pointer events and
stop them from reaching windows below. Always changing the layer to
to `bottom` along with making bar invisible would prevent that.
2020-10-28 08:18:49 -07:00
Aleksei Bavshin
fe3aeb36c5
refactor(bar): wrap layer_surface pointer in unique_ptr 2020-10-28 08:15:02 -07:00
Aleksei Bavshin
591a417b7d
fix(bar): rework surface commit calls for RawSurfaceImpl
wayland log shows that some changes were committed twice and some
weren't committed until the next redraw.
2020-10-28 08:14:57 -07:00
Aleksei Bavshin
f97de599dd
refactor: header cleanup
Replace a couple of header includes with forward declarations.
2020-10-28 08:08:03 -07:00
Aleksei Bavshin
f01996ae99
fix(bar): CamelCase SurfaceImpl method names 2020-10-28 08:07:40 -07:00
Aleksei Bavshin
7735c80d0e
refactor(bar): Split GLS and raw layer-shell implementations
Extract two surface implementations from the bar class: GLSSurfaceImpl
and RawSurfaceImpl. This change allowed to remove _all_ surface type
conditionals and significantly simplify the Bar code.

The change also applies PImpl pattern to the Bar, allowing to remove
some headers and fields from `bar.hpp`.
2020-10-28 07:53:37 -07:00
Aleksei Bavshin
2b3d7be9cb
feat(bar): let gtk-layer-shell manage exclusive zone
Previous attempts to use auto exclusive zone from gtk-layer-shell failed
because gls was expecting real booleans (`TRUE`/`FALSE`) as set_anchor
arguments. With that being fixed, gtk_layer_auto_exclusive_zone_enable
makes gls handle everything related to the bar resizing.

The only remaining purpose of onConfigureGLS is to log warnings and bar
size changes; gtk-layer-shell code path no longer needs saved width_ or
height_ values.
2020-10-28 07:53:32 -07:00
Aleksei Bavshin
67d54ef3d5
fix(wlr/taskbar): do not bind to unsupported protocol versions
It's not allowed to bind to a higher version of a wayland protocol than
supported by the client. Binding wlr-foreign-toplevel-manager-v1 v3 to
a generated code for v2 causes errors in libwayland due to a missing
handler for `zwlr_foreign_toplevel_handle_v1.parent` event.
2020-10-25 10:26:44 -07:00
Flakebi
be3f47b374
Fix various mpd bugs
- Add elapsedTime and totalTime to tooltip format arguments
- Catch format exceptions and print error
- Copy mpd connection error message before it gets freed
- Update display after connection to mpd was lost
2020-10-23 21:13:20 +02:00
nikto_b
f13f49ccb5
Merge branch 'master' into sway-language-module 2020-10-20 12:22:22 +03:00
Joseph Benden
587eb5fdb4
mpd: support password protected MPD
- Add MPD module option `password`, and document it.
- Add logic to send the password, directly after connecting to
  MPD.

Fixes: #576
Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-19 11:54:36 -07:00
Joseph Benden
8f961ac397
mpd: revamped to event-driven, single-threaded
Fix MPD connection issues by converting/rewriting module into a
state-machine driven system. It is fully single-threaded and uses
events for transitioning between states. It supports all features
and functionality of the previous MPD module.

Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-18 10:37:57 -07:00
Alex
54beabb9dc
Revert "mpd: revamped to event-driven, single-threaded" 2020-10-18 10:45:31 +02:00
Alex
41752ad5a2
Merge pull request #877 from jbenden/jbenden/mpd-module
mpd: revamped to event-driven, single-threaded
2020-10-18 10:39:12 +02:00
nikto_b
8349316fcd
Merge branch 'master' into sway-language-module 2020-10-12 13:31:39 +03:00
Ole Martin Handeland
4229e9b2ca Implemented format-{state} for cpu/disk/memory 2020-10-12 02:05:26 +02:00
Alex
d6381eeaff
Merge branch 'master' into taskbar/remove-trim 2020-10-11 23:06:32 +02:00
Alex
45f7f9b07a
Merge branch 'master' into config-reloading 2020-10-11 23:00:25 +02:00
Christoffer Noerbjerg
e9b2d275c8 added module group selectors for styling 2020-10-11 22:36:30 +02:00
Alex
f270d317bb
Merge pull request #869 from lrhel/master
Add format-icons for workspace's name entry in sway/workspaces module
2020-10-11 14:39:39 +02:00
nikto_b
cc3acf8102
feature: created sway language submodule; added styles & config part for a sway language submodule 2020-10-10 19:09:18 +03:00
Joseph Benden
21fdcf41c3
mpd: revamped to event-driven, single-threaded
Fix MPD connection issues by converting/rewriting module into a
state-machine driven system. It is fully single-threaded and uses
events for transitioning between states. It supports all features
and functionality of the previous MPD module.

Signed-off-by: Joseph Benden <joe@benden.us>
2020-10-08 16:43:22 -07:00
Érico Rolim
22e46ea6cc sndio: Add reconnection support. 2020-10-04 14:59:20 -03:00
Érico Rolim
e4427cb017 sndio: Add module.
- can control sndio: change volume, toggle mute
- appearance is somewhat dynamic: takes muted status into account
- uses polling inside sleeper thread to update values
- uses sioctl_* functions, requires sndio>=1.7.0.
2020-10-04 02:54:57 -03:00
Minijackson
e9b5be9adb
fix: add global /etc/xdg/waybar back. fixes #714 2020-09-29 22:28:39 +02:00
lrhel
83d679bf72 Add format-icons for workspace's name entry 2020-09-26 23:06:12 +00:00
Daniel De Graaf
7ba14c2097 Fix "on-click-backward" when "on-click-forward" is not present 2020-09-26 15:55:06 -04:00
Thorben Günther
12016d35bb
disk module: add state for percentage_used 2020-09-23 14:01:25 +02:00
Alex
063c5a5ace
Merge branch 'master' into fix-network 2020-09-21 12:09:54 +02:00
Alex
95f505a457 revert: restore eventfd 2020-09-21 10:56:40 +02:00
Alex
577dc1fa00
Merge branch 'master' into poll-h 2020-09-21 10:40:46 +02:00
koffeinfriedhof
c651670222 Added song position and queue length. 2020-09-13 18:49:47 +02:00
Alex
459df4e0c9
Merge pull request #851 from tamirzb/exec-on-event
Add an "exec-on-event" config for the custom module
2020-09-08 09:18:32 +02:00
Tamir Zahavi-Brunner
9e3e4368c7 custom: Add "exec-on-event" config
This config allows disabling the default behavior of re-executing the
script whenever an event that has a command set is triggered.

Fixes #841
2020-09-06 22:49:18 +03:00
Luca Weiss
98b6d7f283
Fix non-standard usage of <sys/poll.h>
Fixes the following build warning with musl libc:

In file included from ../src/util/rfkill.cpp:24:
/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
    1 | #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
      |  ^~~~~~~
2020-09-06 21:48:42 +02:00
MusiKid
225a0eccdd
Add support for memory tooltip 2020-09-02 14:35:39 +02:00
Alex
44119db436
Merge pull request #840 from tamirzb/fix-restart-interval
Fix "restart-interval" in the custom module
2020-08-28 15:38:41 +02:00
Renee D'Netto
943b6bc51b Implement support for reloading of config files.
Fixes #759.
2020-08-28 22:34:24 +10:00
Alex
4a22057138
Merge pull request #814 from danieldg/markup-fixes
Allow enabing pango markup in the taskbar string
2020-08-28 09:01:32 +02:00
Tamir Zahavi-Brunner
ba78199dd1 custom: Fix "restart-interval"
This commit fixes the issue where the process would restart immediately
and the thread would sleep after the process has restarted, and not
before.

Fixes #621
2020-08-28 01:43:19 +03:00
Marek Černoch
9b51094743
Merge branch 'master' into battery-custom-tooltip 2020-08-20 13:52:25 +02:00
Daniel De Graaf
ea722615c4 Allow enabing pango markup in the taskbar string
The fix for taskbar tooltips in 6a2d214b55 was incomplete: it causes the label
to contain escaped titles.  Use set_markup so that GTK decodes markup again,
but only if requested by the user (disabling markup is needed if using format
strings like "{title:.15}" to avoid terminating the string in the middle of an
XML entity).
2020-08-19 22:26:11 -04:00
Pedro Côrte-Real
6f7d7e645a Prevent line breaks in ellipsized labels
If a label is being ellipsized it doesn't make sense to allow it to use
line breaks to have multiple lines.

Fixes #827
2020-08-19 23:38:59 +01:00
Marek Černoch
8fb54f47ea battery: allow custom tooltip format 2020-08-19 23:13:03 +02:00
Marek Černoch
d263607b27 network: fix typo - update tooltip only when it changes 2020-08-18 23:09:35 +02:00
dmitry
b54fb24745 Remove trim usage in format
Some clang-tidy fixes
2020-08-16 15:54:21 +03:00
Alex
0cf3b25d50
Merge pull request #824 from alebastr/gls-resize
Fix resizing of the bar with gtk-layer-shell
2020-08-15 10:59:12 +02:00
Alex
033f0b01b7
Fix rfkill condition 2020-08-15 10:36:15 +02:00
Aleksei Bavshin
3663b9193d
refactor(bar): separate GTK event handlers for gtk-layer-shell
Cleanly separate resizing logic for gtk-layer-shell and manually managed
layer surface code.
2020-08-14 22:47:57 -07:00
Alex
591eb2ea38
Merge pull request #821 from danieldg/new-clock-features
New clock features
2020-08-14 22:12:48 +02:00
wjoe
4d775008df only return a bluetooth module from factory if the rfkill feature is enabled. 2020-08-14 20:59:30 +02:00
wjoe
4565f7f8b9 only compile rfkill into the network module if the feature is enabled. 2020-08-14 20:58:48 +02:00
Daniel De Graaf
62082bdb01 clock: scroll through multiple timezones 2020-08-13 18:53:18 -04:00
Daniel De Graaf
8cd6e13308 clock: allow custom formatting for today in calendar 2020-08-13 18:53:18 -04:00
Pedro Côrte-Real
29fa74f621 Add IDs to sway workspace buttons for CSS styling
In case you want to style a specific workspace add IDs to the workspace
buttons. Styling is done by matching button#sway-workspace-${name}.
2020-08-13 11:36:19 +01:00
Pedro Côrte-Real
8f10c9056c Add option for no workspace switch on click
In sway/workspaces, just like disable-scroll turns on/off the ability to
change workspaces by scrolling the mouse add disable-click that turns
on/off the ability to change workspaces by clicking.
2020-08-12 11:38:48 +01:00
Alex
5ebd3594e4
Merge pull request #778 from excellentname/handle-sigchld
Handle SIGCHLD for exec/forkExec
2020-08-07 13:33:27 +02:00
Alex
a446cd692d
Fix MPD, add missing while loop 2020-08-06 21:57:02 +02:00
NotAFile
9ebfc54eb5
switch workspace on mouse-down to match swaybar
fixes #686
2020-08-06 16:04:30 +02:00
Daniel De Graaf
4cd31cf3c3 Fix wlr/taskbar all-outputs config string 2020-08-05 20:39:12 -04:00
Daniel De Graaf
6a2d214b55 Fix titles containing & and other HTML entities 2020-08-05 20:39:12 -04:00
Eivind Uggedal
fb8cda9d90 network: make missing nl80211 non-fatal
This will enable the networking module to be used for ethernet
interfaces on kernels without nl80211 support.

It should be reasonable to allow desktop systems without
wireless interfaces to run custom kenrel configs
without nl80211 compiled in.
2020-07-31 08:15:16 +02:00
Michael Rodler
006850ea5e Changed helper function for workspace->num assignment to a static method of Workspaces class
and adapted comments/method name to be consistent with the rest
2020-07-27 10:56:49 +02:00
excellentname
c3359dec1b Replace signal handler with signal handling thread 2020-07-25 21:02:59 +10:00
Michael Rodler
15fe73a252 duplicate the logic to assign numbers to workspaces from sway into waybar to handle perisstent workspaces 2020-07-22 16:13:24 +02:00
excellentname
246f7bf555 Handle SIGCHLD for exec/forkExec
When forkExec is called it begins to ignore all SIGCHLD signals for
the rest of the progam's execution so that they are automatically
reaped. However, this means that subsequent waitpid calls in the exec
function will always fail. So instead handle SIGCHLD by reaping any
processes created by forkExec and ignoring all others so that they can be
handled directly by the exec function.
2020-07-21 12:36:48 +10:00
Alex
759602af64
Update mpd.cpp 2020-07-18 10:23:04 +02:00
Alex
e3fdd6d94a
fix: don't a warning for a width/height of 0 2020-07-12 11:57:47 +02:00
Till Smejkal
bc112eaae1 Convert icon-theme option to array|string
Use the config support of using arrays in its options instead of the
complicated and error-prone parsing of the string.
2020-07-07 11:22:08 +02:00
Till Smejkal
70e368a1c6 Refactor the lower_app_id logic
Move the lower_app_id lookup logic completely in the image_load_icon
method and use it also when looking up the icon from the desktop files
as well as icon themes.
2020-07-07 10:39:28 +02:00
Till Smejkal
7d9f6096fe Respect XDG_DATA_DIRS when looking for icons.
Use the base folders as defined in $XDG_DATA_DIRS and only fall back to
/usr/share and /usr/local/share if the environment variable does not
exist.
2020-07-05 13:16:41 +02:00
Till Smejkal
06ad35c42b Add support for multiple icon themes in the config
If there are multiple icon themes defined in the config option
'icon-theme' the module will try from left to right to find an icon.
The system default will always be added to this list.
2020-07-05 13:16:38 +02:00
Till Smejkal
b7e8275d90 Properly trim when splitting up the format string
Previously only single spaces would be trimmed and not multiple ones.
Now use a proper trim implementation for strings.
2020-07-05 13:13:34 +02:00
dmitry
8a13ed59bc Fix lower 2020-07-01 03:05:17 +03:00
dmitry
43500a9983 Move lower to load_icon phase 2020-07-01 02:56:44 +03:00
dmitry
8e6cbc1021 Change find icon priority and to_lower app_id 2020-07-01 02:10:22 +03:00
Till Smejkal
b7a8e8e544 Fix format option for the taskbar module
When using additional format options in addition to {icon} the format is
separated into text before and text after the icon. Each of the texts is
displayed in a separate label one before and one after the image for the
icon.

The code updating the labels on changes used the wrong format strings
when updating the label after the icon.
2020-06-24 09:47:34 +02:00
Till Smejkal
7429d1f9cc Fix click events for the taskbar module
When only the option 'on-click-right' was set and no other 'on-click'
option than the taskbar module wouldn't register for click events and
hence those events were handled by the generic AModule::on-click code.
This code would try to start a shell with the specified command, which
wouldn't make any sense in this circumstances.

The taskbar code falsely checked for the 'on-click-left' option instead
for the 'on-click-right' when deciding to register for click events.
2020-06-24 09:36:28 +02:00
Jannusch Bigge
401ea05dd8 add check that all batteries from type battery 2020-06-16 12:30:21 +02:00