Commit Graph

503 Commits

Author SHA1 Message Date
dmitry
23991b6543 Finish 2021-11-23 03:10:44 +03:00
Alex
331dfa87da
Merge pull request #1230 from ciarand/if-changes-isolate
Switch network module to read /proc/net/dev
2021-11-22 08:00:54 +01:00
Aleksei Bavshin
6bfb674d1b
fix(swaybar-ipc): better logs 2021-11-21 17:28:47 -08:00
dmitry
ef4c6a9ba3 Update to proto. Fix displaying. Rename classes. 2021-11-22 01:12:55 +03:00
dmitry
ffeecf626c Update names 2021-11-21 15:01:25 +03:00
Anakael
cb6af026f6
Update taskbar.hpp 2021-11-19 18:51:28 +03:00
Anakael
18ea53fcbc
Update taskbar.hpp 2021-11-19 18:39:49 +03:00
Anakael
23955fdcc2
Update taskbar.hpp 2021-11-19 18:38:59 +03:00
dmitry
15761ef802 Merge branch 'master' of https://github.com/Alexays/Waybar into workspace-manager-implementation 2021-11-16 21:44:50 +03:00
John Fredriksson
ad3f46214d river/tags: Add possibility for mouse clicks
Left mouse click - set-focused-tags
Right mouse click - toggle-focused-tags
2021-11-15 22:31:38 +01:00
mazunki
b0eab5d793 maybe we shouldn't actually runtime error, but still doing a check 2021-11-09 19:03:15 +01:00
mazunki
17bb5643ae explicitly checking for errors to silence unused variable warnings when writing to fd 2021-11-09 18:38:07 +01:00
dmitry
75a6dddea5 Finish 2021-10-20 01:23:00 +03:00
Sergey Mishin
110c66dd32
Refactor Clock: generalize multi timezones and single timezone cases
After this refactoring:
1. Timezones parses only once on start and the we refer to saved values. All time_zone.isString() checks gone to the constructor.
2. Single timezone case handling as case of multi timezoned logic.
3. Scroll event seems more clear now.
4. Tooltip template parses on start to check if there calendar placeholder or not. To do not calculate calendar_text() if not necessary.
2021-10-03 16:57:55 +00:00
Sergey Mishin
174db444d6
Fix Clock crash on empty string in timezones field
Also fixed timezones behavior: now waybar starting with the first timezone in timezones list and falling back to timezone field only if timezones omit or has no elements.
2021-10-03 03:27:54 +00:00
Darkclainer
6e5a0bc80a Add cpu usage for every core 2021-09-19 14:02:25 +03:00
Alex
67c7302938
Revert "Add CPU usage for every core" 2021-09-18 13:50:16 +02:00
Alex
8489646b66
Merge pull request #1250 from Darkclainer/master
Add CPU usage for every core
2021-09-18 13:48:39 +02:00
Alex
6938921e92
Merge pull request #1239 from mazunki/default-gateway
Added support for {gwaddr} as a variable
2021-09-18 13:47:32 +02:00
Darkclainer
a51ac59252 Merge remote-tracking branch 'origin/master' 2021-09-17 22:30:31 +03:00
Darkclainer
4bf577e89b Add CPU usage for every core 2021-09-17 21:18:21 +03:00
Aleksei Bavshin
ccc60b4245
refactor(config): more sensible multi-bar include behavior 2021-09-15 22:15:27 +07:00
Aleksei Bavshin
1f7d399b8e
refactor(config): remove style handling from Config 2021-09-15 21:34:53 +07:00
Aleksei Bavshin
4fff2eaaa0
refactor(client): change config visibility to public 2021-09-15 21:34:10 +07:00
Aleksei Bavshin
b377520a38
refactor(client): extract config handling into a new class 2021-09-14 13:15:54 +07:00
Rolf Vidar Mazunki Hoksaas
2c380a53ca added support for the {gwaddr} variable 2021-09-09 20:05:18 +02:00
dmitry
12c42fc6e4 Merge branch 'master' of https://github.com/Alexays/Waybar into pr/anakael/add-name-to-taskbar 2021-08-27 01:43:31 +03: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
dmitry
ddfe036f00 Format 2021-08-22 20:42:16 +03:00
dmitry
38afa345dd Finish 2021-08-22 20:18:03 +03: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
a57e431437 Add shortDescription 2021-08-17 05:28:41 +03:00
dmitry
61783aafaa save 2021-08-17 04:31:17 +03:00
Michael Swiger
4f6a9b1bc2 Fix incorrect tray icon scaling 2021-07-31 18:01:31 -07: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
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
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
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
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
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
14f626d422
Add recursive config includes 2021-06-21 19:05:01 +02:00
Aleksei Bavshin
5da268077c
fix(util): protect std::condition_variable methods from pthread_cancel
The changes in GCC 11.x made `std::condition_variable` implementation
internals `noexcept`. `noexcept` is known to interact particularly bad
with `pthread_cancel`, i.e. `__cxxabiv1::__force_unwind` passing through
the `noexcept` call stack frame causes a `std::terminate` call and
immediate termination of the program

Digging through the GCC ML archives[1] lead me to the idea of patching
this with a few pthread_setcancelstate's. As bad as the solution is, it
seems to be the best we can do within C++17 limits and without major
rework.

[1]: https://gcc.gnu.org/legacy-ml/gcc/2017-08/msg00156.html
2021-06-12 12:56:44 -07: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
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
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
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
dmitry
5ad3b6018a Remove exceed protected 2021-04-18 21:37:58 +03:00
dmitry
ba278985e8 Add ignore-list param to wlr/taskbar 2021-04-18 21:34:29 +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
Antonin Reitz
a49b12b66b Fix CPU load values 2021-03-12 20:58:51 +01:00
Genesis
08ea5ebe1f
Add cpu frequency 2021-02-25 09:14:51 +01:00
Alex
cb1c7ea12c
Merge pull request #1032 from matteodelabre/terminate-custom-on-exit
Terminate custom module scripts on exit
2021-02-23 09:40:05 +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
Mattéo Delabre
d8706af2ea
Terminate custom module scripts on exit
(Fixes #358.)

Subprocesses created for custom module scripts were previously left
running when the parent Waybar process exited. This patch sets the
parent-death signal of child processes (PR_SET_PDEATHSIG on Linux,
PROC_PDEATHSIG_CTL on FreeBSD) to SIGTERM.

Caveats:

* This uses Linux-specific or FreeBSD-specific calls. I don’t know if
  this project targets other systems?
* There is a possibility that Waybar exits after calling `fork()`, but
  before calling `prctl` to set the parent-death signal. In this case,
  the child will not receive the SIGTERM signal and will continue to
  run. I did not handle this case as I consider it quite unlikely, since
  module scripts are usually launched only when Waybar starts. Please
  let me know if you think it needs to be handled.

Testing:

* With `htop` open, run Waybar v0.9.5 with a custom module that has an
  `exec` script. Terminate the Waybar process and notice that the
  script’s subprocess stays alive and is now a child of the init
  process.
* Run Waybar with this patch and follow the same steps as above. Notice
  that this time the script’s subprocess terminates when the parent
  exits.
2021-02-12 21:14:46 +01: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
Genesis
7eb2a6b709
Add a configuration entry to disable auto_back_and_forth on Sway workspaces 2021-02-02 21:58:26 +01:00
nullobsi
d2a1f41750
Use g_unichar_iswide to properly align calendar on CJK locales 2021-01-31 11:53:53 -08:00
Martin Pittermann
3bcf390484 add power to battery formatter 2021-01-24 21:39:14 +01:00
Alex
a2d98ddde8
Merge pull request #842 from rdnetto/config-reloading
Implement support for reloading of config files.
2021-01-18 12:06:25 +01:00
Alex
ede1146ddc
Merge pull request #903 from spk/simpleclock
Add simpleclock as fallback when hhdate is not available
2021-01-18 12:00:48 +01:00
Andreas Backx
e5684c6127
Separated name and description setup and moved bar creation to done callback. 2020-12-25 23:03:01 +00:00
Andreas Backx
0233e0eeec
Added waybar_output.identifier support.
Resolves #602.
2020-12-25 20:54:38 +00:00
Alex
f391186749
Revert "Replace lowercase "k" with uppercase "K" to make it look more consistent" 2020-12-25 09:28:05 +01:00
Pedro Côrte-Real
09c89bcd20 Don't update battery list on every update
Speedup battery state update by only updating the battery list when we
get a CREATE/DELETE event in the directory or whenever we do a full
refresh on the interval.
2020-12-03 09:52:33 +00:00
Alex
cc365a8175
Merge pull request #923 from pedrocr/fix-battery-calculations
Simplify and improve battery state calculations
2020-12-02 14:35:56 +01:00
Thomas Hebb
c784e8170e clock: initialize cached date
We are currently using this value once before it's initialized, since we
check it before we set it in Clock::calendar_text(). This was caught by
Valgrind, producing the following error:

    ==8962== Conditional jump or move depends on uninitialised value(s)
    ==8962==    at 0x138285: date::operator==(date::year_month_day const&, date::year_month_day const&) (date.h:2793)
    ==8962==    by 0x135F11: waybar::modules::Clock::calendar_text[abi:cxx11](waybar::modules::waybar_time const&) (clock.cpp:111)
    ==8962==    by 0x13587C: waybar::modules::Clock::update() (clock.cpp:62)
    ==8962==    by 0x156EFA: waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}::operator()() const (bar.cpp:577)
    ==8962==    by 0x157F39: sigc::adaptor_functor<waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}>::operator()() const (adaptor_trait.h:256)
    ==8962==    by 0x157D94: sigc::internal::slot_call0<waybar::Bar::getModules(waybar::Factory const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, void>::call_it(sigc::internal::slot_rep*) (slot.h:136)
    ==8962==    by 0x5177B21: Glib::DispatchNotifier::pipe_io_handler(Glib::IOCondition) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x517DB5B: Glib::IOSource::dispatch(sigc::slot_base*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x5188B96: Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) (in /usr/lib/libglibmm-2.4.so.1.3.0)
    ==8962==    by 0x5CBC913: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6600.2)
    ==8962==    by 0x5D107D0: ??? (in /usr/lib/libglib-2.0.so.0.6600.2)
    ==8962==    by 0x5CBB120: g_main_context_iteration (in /usr/lib/libglib-2.0.so.0.6600.2)

Initialize the value to prevent the error.
2020-11-30 12:49:48 -08:00
Pedro Côrte-Real
89ca155c43 Support hotplugging of batteries
Refresh the list of batteries on update to handle hotplug correctly.
Probably fixes #490.
2020-11-27 13:56:04 +00: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
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