Commit Graph

949 Commits

Author SHA1 Message Date
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
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 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
1sixth 7a0c0ca613
replace lowercase "k" with uppercase "K"
Other units are all uppercased, so using an uppercased "K" makes it look more consistent (especially when {bandwidthUpBits} or something like that is used).
2020-10-28 19:39:50 +08:00
nikto_b f13f49ccb5
Merge branch 'master' into sway-language-module 2020-10-20 12:22:22 +03:00
Aleksei Bavshin ebdeb86703
feat(swaybar-ipc): handle visibility_by_modifier update 2020-10-19 19:35:55 -07:00
Aleksei Bavshin 23e5181cac
feat(swaybar-ipc): add swaybar IPC client 2020-10-19 19:34:48 -07:00
Aleksei Bavshin 452dcaa5d3
feat(client): store bar_id argument 2021-11-19 20:28:41 -08:00
Aleksei Bavshin 52361ed360
refactor(bar): make setVisible switch between "default" and "invisible" modes 2021-11-21 11:00:57 -08:00
Aleksei Bavshin 6d2ba7a75b
feat(bar): store modes as a map of presets
This allows to apply the mode atomically and adds possibility of
defining custom modes (to be implemented).
2021-11-19 19:29:51 -08:00
Aleksei Bavshin 03a641ed83
feat(bar): support swaybar `mode` for configuring window
Use `mode` (`waybar::Bar::setMode`) as a shorthand to configure bar
visibility, layer, exclusive zones and input event handling in the same
way as `swaybar` does.
See `sway-bar(5)` for a description of available modes.
2021-09-15 22:35:50 +07:00
Aleksei Bavshin 79883dbce4
feat(util): optimize SafeSignal for events from the main thread 2020-12-28 17:31:23 -08:00
Aleksei Bavshin 8a0e76c8d8
fix(util): avoid creating temporary functor for each event 2020-10-19 18:42:25 -07:00
Aleksei Bavshin 285a264aae
feat(util): SafeSignal class for cross-thread signals with arguments
Implement a wrapper over Glib::Dispatcher that passes the arguments to
the signal consumer via synchronized `std::queue`.
Arguments are always passed by value and the return type of the signal
is expected to be `void`.
2020-12-28 17:26:55 -08: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
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
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
Alex 95f505a457 revert: restore eventfd 2020-09-21 10:56:40 +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
Renee D'Netto 943b6bc51b Implement support for reloading of config files.
Fixes #759.
2020-08-28 22:34:24 +10:00
dmitry b54fb24745 Remove trim usage in format
Some clang-tidy fixes
2020-08-16 15:54:21 +03: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
dmitry 22409d27c5 Fix docs typos
Add removing buttons
Adjust handling multiple outputs.
2020-08-11 00:28:56 +03:00
Thorben Günther 9b41b95934
Fix crash with fmt 2020-08-10 20:53:29 +02:00
dmitry 0ad29a5960 Finish base implementation 2020-08-07 23:46:47 +03:00
Alex 5ebd3594e4
Merge pull request #778 from excellentname/handle-sigchld
Handle SIGCHLD for exec/forkExec
2020-08-07 13:33:27 +02:00
dmitry 4c251578e9 Add formatting and states handling 2020-08-07 02:45:08 +03:00
dmitry 7638f5c595 Add base name representation 2020-08-06 01:42:57 +03:00
dmitry edd4d8ee11 Finish implement wlr 2020-08-05 23:10:08 +03:00
dmitry 2b11b7ef8c Base wlr impl (Manager, Group) 2020-08-05 02:17:38 +03: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
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
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
Isaac Freund 343a8bef22
river/tags: add module 2020-06-12 15:19:46 +02:00
Tudor Brindus 0080feb9af sway/workspaces: make clicking on workspaces idempotent
Previously, clicking on the same workspace you were on would throw you
to another workspace if `workspace_auto_back_and_forth yes` was
specified in your sway config. This also fixes workspace output moving
misbehaving and doing the same.
2020-06-09 20:43:43 -04:00
Till Smejkal adaf843048
foreign-toplevel-manager based taskbar module (#692)
Co-authored-by: Alex <alexisr245@gmail.com>
2020-05-30 12:07:38 +02:00
Alex 6e7f22ac3a fix: cancel thread and fix window close 2020-05-27 09:10:38 +02:00
Alex 1d92d78de7 refactor: prefer spdlog 2020-05-24 22:14:17 +02:00
Alex eb624c929d fix: fmt format 2020-05-24 22:08:10 +02:00
Alex 7b4ded306b fix: restart-interval 2020-05-24 21:33:38 +02:00
Alex 9b9d13ab0d feat: execNoRead 2020-05-24 18:27:21 +02:00
Alex 6ca4e14b29
Feat icons vector (#716) 2020-05-22 21:23:04 +02:00
Alex 6b32aca094 feat: debug cmd 2020-05-22 20:57:41 +02:00
Jan Beich 1885ecc958 bluetooth: limit to Linux due to missing /dev/rfkill
../src/modules/bluetooth.cpp:3:10: fatal error: 'linux/rfkill.h' file not found
 #include <linux/rfkill.h>
          ^~~~~~~~~~~~~~~~
2020-05-19 10:44:31 +00:00
Jan Beich 4e567d0483 cpu: port parseCpuinfo to BSDs 2020-05-19 10:43:42 +00:00
Jan Beich c4f7cdeec4 memory: port parseMeminfo to BSDs 2020-05-19 10:42:21 +00:00
Jan Beich c844d7ac2e tray: drop std::filesystem dependency 2020-05-19 10:37:27 +00:00
Jan Beich 496e782544 battery: limit to Linux due to /sys/class/power_supply
../include/modules/battery.hpp:9:10: fatal error: 'sys/inotify.h' file not found
 #include <sys/inotify.h>
          ^~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Jan Beich d5df185ac6 cpu: make getCpuLoad more portable
../include/modules/cpu.hpp:4:10: fatal error: 'sys/sysinfo.h' file not found
 #include <sys/sysinfo.h>
          ^~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
Jan Beich 1dc557456e Add missing includes for libc++
In file included from ../src/modules/custom.cpp:1:
In file included from ../include/modules/custom.hpp:7:
../include/util/command.hpp:15:25: error: implicit instantiation of undefined template 'std::__1::array<char, 128>'
  std::array<char, 128> buffer = {0};
                        ^
../src/modules/pulseaudio.cpp:175:41: error: implicit instantiation of undefined template 'std::__1::array<std::__1::basic_string<char>, 9>'
static const std::array<std::string, 9> ports = {
                                        ^
/usr/include/c++/v1/__tuple:223:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
                                                               ^
In file included from ../src/factory.cpp:1:
In file included from ../include/factory.hpp:8:
../include/modules/sway/workspaces.hpp:39:8: error: no template named 'unordered_map' in namespace 'std'
  std::unordered_map<std::string, Gtk::Button> buttons_;
  ~~~~~^
../src/factory.cpp:20:14: error: cannot initialize return object of type 'waybar::AModule *' with an rvalue of type 'waybar::modules::sway::Workspaces *'
      return new waybar::modules::sway::Workspaces(id, bar_, config_[name]);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2020-05-19 10:37:27 +00:00
phosit 6e946bf872 Add kelvin-scale 2020-04-25 18:44:48 +02:00
Marc Radau 2d02ae5e97
Merge branch 'master' into master 2020-04-16 14:43:10 +02:00
Danilo Spinella 09ec40e38d fix(memory): add missing unordered_map include 2020-04-13 18:02:50 +02:00
Marc Radau 8a5c3af949
Merge pull request #8 from Alexays/master
Merge Alexays:master into marcplustwo:master
2020-04-05 16:13:56 +02:00
Alex ec451b5908 fix(command): check WIFEXITED 2020-03-30 10:36:24 +02:00
Yuuki Harano af96150f5c restore SIGCHLD settings to SIG_DFL. 2020-03-28 01:35:21 +09:00
Tudor Brindus 19743f3085 fix(memory): provide better free memory approximation on old kernels
The approximation should include SReclaimable, and subtract Shmem. To
prevent the parsing code from ballooning in size, this commit also
refactors the parsing into a map.
2020-03-20 17:37:22 -04:00
Guillaume Maudoux 190b2dd922 pulseaudio: track only the default sink and source
When you have multiple sinks (resp. sources), the module used to display
the state of the most recently changed one. This changes remembers the
default sink name, and only records changes to that one.
2020-02-24 11:30:35 +01:00
Marc dd7d78cd60 changes requested 2020-02-23 23:09:05 +01:00
Marc Radau 9abe1e2790
Merge branch 'master' into master 2020-02-23 23:00:09 +01:00
Guillaume Maudoux 047c2929c1 Use the same StatusNotifierWatcher for all trays 2020-02-19 12:06:35 +01:00
Danilo Spinella e0c42ae415 fix(sway): add missing unordered_map include 2020-02-11 14:31:17 +01:00
Aleksei Bavshin e70f8d8730
fix(clock): lower precision of zoned_time to avoid fractional seconds in output 2020-02-06 10:04:22 -08:00
Alex e1215a6d17
Merge pull request #578 from alebastr/ipc-use-after-free
fix(sway): resolve destruction dependency between Ipc and SleeperThread
2020-02-06 17:36:11 +00:00
Skirmantas Kligys d1f427618f Cache calendar per clock instance, weekdays properly handle locales. 2020-02-05 11:07:47 -08:00
Aleksei Bavshin ae6ca36fa7
fix(sway): resolve destruction dependency between Ipc and SleeperThread
Ipc destructor closes socket and thus wakes up SleeperThread which was
waiting for socket data in Ipc::handleEvent.
Ipc::handleEvent then proceeds with sending signal to already destroyed
object, causing heap-use-after-free Address Sanitizer error.
2020-02-04 23:22:43 -08:00
Marc 58eb8ad11f Merge branch 'master' of github.com:marcplustwo/Waybar 2020-01-26 05:35:34 +01:00
Marc c045288ce4 add man page for bluetooth, fix bluetooth race-condition 2020-01-26 05:34:31 +01:00
Marc Radau f9618d30f3
Merge pull request #7 from Alexays/master
Merge latest changes from upstream
2020-01-23 17:30:33 +01:00
Marc e3bf6b968c bluetooth module handles rfkill events instantly 2020-01-23 17:17:29 +01:00
Guillaume Maudoux 84b671f6b2 Attempt at supporting locale and timezones (#1) 2020-01-23 08:27:10 -05:00
Michael Cordover 6e30b7af3c Remove duplicate dependency, use current locale 2020-01-23 08:27:00 -05:00
Marc Radau d85f0e1060
Merge pull request #3 from marcplustwo/addbluetoothmodule
Add bluetooth module
2020-01-22 11:44:25 +01:00
Marc 89cb9673d4 bluetooth module working 2020-01-22 11:37:47 +01:00
Marc f0dbd8b78d properly structure rfkill util 2020-01-21 17:48:45 +01:00
Marc 626af1ddc1 add rudimentary bluetooth module functionality 2020-01-21 17:04:54 +01:00
Marc 2c4369a653 add basis for bluetooth module implementation 2020-01-21 15:46:08 +01:00
Marc Radau b8aeda794c
Merge pull request #2 from marcplustwo/airplane_mode
distinguish between wifi disabled and disconnected
2020-01-20 10:46:59 +01:00
Marc 2dc4ae78fc distinguish between wifi disabled and disconnected 2020-01-20 00:35:37 +01:00
Alex d5875c468f
Merge pull request #550 from PlusMinus0/use_form_factor
Use PA_PROP_DEVICE_FORM_FACTOR for device icon.
2020-01-15 10:05:34 +00:00
Aleksei Bavshin f80270519b
refactor(client): use std::list<waybar_output> to store outputs
std::unique_ptr is not required here as the only benefit it gives is
stability of address on vector resize and it's easy to invalidate it
accidentaly. std::list provides the same guarantee of stable addresses
of the elements and correct destruction while avoiding smart pointer
overhead.

Also fixes #554, caused by incorrect usage of std::remove_if.
2020-01-14 07:27:08 -08:00
PlusMinus0 8fb3211594 Use PA_PROP_DEVICE_FORM_FACTOR for device icon. 2020-01-13 11:34:33 +01:00
Cole Helbling 75c6e2e7d5
mpd: add paused format string 2020-01-07 09:15:54 -08:00
Aleksei Bavshin dde700f2c9
feat: use gtk-layer-shell library for correct positioning of popups
To enable: use sway >= 1.2, compile waybar with `-Dgtk-layer-shell=enabled` meson option.
Original behavior could be restored at runtime by setting `"gtk-layer-shell": false` in waybar config.
2019-12-27 16:42:14 -08:00
Aleksei Bavshin d1637d34cf
refactor: fetch outputs from Gtk::Display instead of wl_registry.
gtk-layer-shell wants Gdk::Monitor instead of wl_output;
change code to deal with Gdk objects and slightly simplify it.
Requires gtkmm 3.22.0+ (first release with Gdk::Monitor support).
2019-12-27 16:42:12 -08:00
Thomas Venriès 358426cb1c fix: No need to format string with unused 'arg' named argument (#484)
The fmt::format() function looks for the "{arg}" named argument
in the given "format" string which does not exist. It will fail
if the string contains any {...} curled-brace substring.

Consequently, any "on-click*" option's command line containing for
instance substring like "${var}" or "awk '{...}'" will crash the program.

Signed-off-by: Thomas Venriès <thomas.venries@gmail.com>
2019-10-16 22:39:45 +02:00
Guillaume Maudoux f4d2ca2736 custom formatter for numbers in 'pow' units format 2019-09-25 12:53:06 +02:00
Alex 211b1c2785 fix: no need to wait on start 2019-09-25 09:32:22 +01:00
Guillaume Maudoux 1d39ef5c8e Add a disk module 2019-09-25 08:47:33 +02:00
Jonas Spanoghe e6599d8ed5 modules/mpd: take lock in waitForEvent to prevent SIGABORT
+ replaced deprecated MPD_IDLE_PLAYLIST with MPD_IDLE_QUEUE
+ add mutex for periodic_updater
2019-09-19 21:43:12 +02:00
Aleksei Bavshin 529daedcec
fix: correct handling of margins on anchored axis 2019-09-01 01:08:15 -07:00
Aleksei Bavshin 089d1299c4
fix: correct calculation of exclusive zone 2019-09-01 01:08:07 -07:00
Alex f592e3d38b
Merge branch 'master' into fmt 2019-08-29 11:29:48 +02:00
Jan Beich 712424f9a8 Unbreak build with fmtlib 6.0.0
In file included from ../src/factory.cpp:1:
In file included from ../include/factory.hpp:4:
../include/modules/clock.hpp:5:10: fatal error: 'fmt/time.h' file not found
 #include "fmt/time.h"
          ^~~~~~~~~~~~
In file included from ../src/bar.cpp:4:
In file included from ../include/factory.hpp:4:
In file included from ../include/modules/clock.hpp:3:
In file included from /usr/include/fmt/chrono.h:12:
/usr/include/fmt/locale.h:19:35: error: parameter type 'fmt::v5::internal::buffer' (aka 'basic_buffer<char>') is an abstract class
    const std::locale& loc, buffer<Char>& buf,
                                  ^
/usr/include/spdlog/fmt/bundled/core.h:238:16: note: unimplemented pure virtual method 'grow' in 'basic_buffer'
  virtual void grow(std::size_t capacity) = 0;
               ^
In file included from ../src/modules/sni/host.cpp:3:
/usr/include/fmt/ostream.h:22:9: error: expected member name or ';' after declaration specifiers
  buffer<Char>& buffer_;
  ~~~~~~^
/usr/include/fmt/ostream.h:25:19: error: expected ')'
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
                  ^
/usr/include/fmt/ostream.h:25:12: note: to match this '('
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
           ^
/usr/include/fmt/ostream.h:25:42: error: use of undeclared identifier 'buf'; did you mean 'prettify_handler::buf'?
  formatbuf(buffer<Char>& buf) : buffer_(buf) {}
                                         ^~~
                                         prettify_handler::buf
/usr/include/spdlog/fmt/bundled/format-inl.h:551:11: note: 'prettify_handler::buf' declared here
  buffer &buf;
          ^
2019-08-29 01:38:54 +00:00
Aleksei Bavshin 01ad3d96d8
fix(tray): pre-create dbusmenu for tray items
It seems that dbusmenu is not ready to display menu immediately and
needs some time to sync data via DBus.
Fixes LIBDBUSMENU-GLIB-CRITICAL: dbusmenu_menuitem_send_about_to_show:
assertion 'DBUSMENU_IS_MENUITEM(mi)' failed.
Also fixes initial render of the menu with layer shell popups support patch.
2019-08-27 00:34:00 -07:00
Aleksei Bavshin 642fd48af1
fix(tray): restore Activate support for compliant SNI implementation
Set ItemIsMenu to true by default because libappindicator supports
neither ItemIsMenu nor Activate method and compiant SNI implementations
are expected to reset the flag during initial property fetch.
To be revisited if anyone finds the implementation that has Activate
but does not set ItemIsMenu.
2019-08-27 00:33:59 -07:00
Alex bb99e6cf5b fix: check before destroy 2019-07-15 10:06:01 +02:00
Alex a6980fca7f feat: ellipsize modules 2019-06-28 14:16:09 +02:00
Alex ff9d598c16 fix: add proper mutex 2019-06-17 11:39:45 +02:00
Alex 527144a440 refactor(pulseaudio): proper scroll override 2019-06-16 15:08:08 +02:00
Patrick Hilhorst 7f13478396
AModule: handle X axis scrolling 2019-06-16 13:17:34 +02:00
Alex 90a9c0e25f refactor: get rid of some mutex 2019-06-15 15:01:03 +02:00
Alex 340ec7be91 refactor: AModule 2019-06-15 14:57:52 +02:00
Alex dabe2bebbb feat(sway/window): handle floating nodes 2019-06-14 11:27:40 +02:00
Alex 486b5a5d38 fix(sway/window): check output recursively 2019-06-14 10:57:22 +02:00
Alex 11bbc3b24d
Fix twitchy scrolling on touchpads (#381)
Fix twitchy scrolling on touchpads
2019-06-14 10:38:25 +02:00
Alex 564fdcb369 fix(custom): exit status 2019-06-11 22:09:47 +02:00
Patrick Hilhorst ae397c8fa2
ALabel: add smooth-scrolling-threshold 2019-06-11 17:56:10 +02:00
Patrick Hilhorst ed4521d113
Workspaces: fix twitchy scrolling on touchpads
Previously, any and all scroll events were interpreted as reason to switch
workspaces. This resulted in twitchy behaviour, where the scrolling was
practically unusable.

Now, we pool all scroll values, and only scroll if the value is larger than the
new config option "smooth-scrolling-threshold". If this option is not set, the
behaviour is unchanged.
2019-06-11 17:22:24 +02:00
Thomas Kerpe d20a586734 Prevent zombie apocalypse by ignoring SIGCHLD
Fixes Issue #369
2019-06-05 14:35:25 +02:00
Alex 1962caf144 refactor(window): gtk stuff in update method 2019-06-04 17:34:00 +02:00
Alex fcf2d18a01 refactor: destroy threads first 2019-05-29 17:53:22 +02:00
Alex 5ae5821929 refactor(network): re-add MAX_RETRY in order to detect external interface 2019-05-28 11:08:48 +02:00
Alex 6e73c6db61 refactor(network): remove last_ext_iface_ 2019-05-26 23:16:09 +02:00
Alex ecec02c8be refactor(network): better events handler 2019-05-26 22:36:26 +02:00
Alex 2a9fa1a4b9 refactor(bar): onRealize, onMap 2019-05-25 17:50:45 +02:00
Alex 07147878a9 refactor(network): code cleaning 2019-05-24 09:49:56 +02:00
Alex ffadd5c1a7 refactor: avoid useless class vars 2019-05-24 09:49:09 +02:00
Alex 85d60f95c4 refactor(network): const methods 2019-05-22 22:20:50 +02:00
Alex 9e1200ae32 refactor: also pass id to custom modules 2019-05-22 12:20:13 +02:00
Alex d24d85bebf refactor: move label name and id to label contructor 2019-05-22 12:06:24 +02:00
Max Reppen 00ada46dfc feat(Battery) Time remaining on tooltip 2019-05-21 13:36:14 -04:00
Max Reppen 2db81a6107 fix(Battery) "current" unused and removed 2019-05-21 13:35:39 -04:00
Alex 48a58cd979 fix(network): switch between ifaces upon disconnection 2019-05-21 17:38:47 +02:00
Alex bb4af295bc feat(pulseaudio): source info 2019-05-21 14:53:31 +02:00
Alex e3879559a2
Merge pull request #330 from Organic-Code/master
Adding sway/workspaces:persistant_workspaces
2019-05-20 14:33:31 +02:00
Alex 67593b8c0f
Merge pull request #332 from Organic-Code/enhancement/spdlog
Adding spdlog
2019-05-20 12:07:58 +02:00
Alex f2edc8f965 feat(Watcher): define watcher_id 2019-05-20 11:47:52 +02:00
Lucas Lazare 51be97f9aa Adding spdlog 2019-05-18 19:44:45 -04:00
Lucas Lazare 1a76aa0c8c Improving ordering 2019-05-18 11:58:01 -04:00
Alex ff28de0482 feat(custom): update on click/scroll 2019-05-18 16:07:55 +02:00
Alex 93a644eec4
Merge branch 'master' into master 2019-05-18 15:42:27 +02:00
Alex 4865a9ad6c fix(network): reset frequency 2019-05-18 13:57:50 +02:00
Lucas Lazare 794fb12e8c Adding bandwidth support for network module [linux only] 2019-05-17 23:39:51 -04:00
Alex d2d9db23b5 fix: uninitialized bool 2019-05-17 14:23:52 +02:00
Alex cb2d6e1997 feat(Network): frequency 2019-05-17 11:27:38 +02:00
Alex 4d4cadb5ae refactor: simpler code 2019-05-17 09:59:37 +02:00
RX14 b45dcdf74e
Allow scrolling on the entire bar surface 2019-05-16 22:18:43 +01:00
Alex 31f63398dc
Merge pull request #319 from Alexays/network
Network improvements
2019-05-16 14:11:32 +02:00
Alex 841576497a refactor: cleaner events 2019-05-16 11:22:22 +02:00
Alex 963d4f68e4 refactor: remove useless param 2019-05-16 09:39:06 +02:00
unresolvedsymbol 7e8eee0571 fix state behavior 2019-05-15 22:14:51 -05:00
Alex 5b3402e110 feat(Battery): plugged status 2019-05-14 15:43:57 +02:00
Alex 362c393b1d refactor: try/catch, sigc trackable 2019-05-13 15:15:50 +02:00
Alex 0c3c548bc0 fix(Window): avoid concurrency 2019-05-13 14:35:45 +02:00
Alex 4f1defe6d5 fix(Pulseaudio): avoid handleScroll override 2019-05-13 11:46:12 +02:00
Alex 92967c7c06 fix(Label): reverse only battery states 2019-05-13 11:36:34 +02:00
Alex fcb23d3104 feat(temperature): format-icons 2019-05-13 11:31:05 +02:00
Alex 80e9ea746b fix(battery): use path for the / operator 2019-05-12 19:53:22 +02:00
Dan e343cf4b00 fix(btformat): fixes an issue where btformat was not being correctly detected 2019-05-10 12:07:17 -04:00
Alex 4688002f23 feat: margins 2019-05-09 15:10:13 +02:00
Alex 5bf0ca85ac refactor: try/catch around json parse 2019-05-09 10:30:54 +02:00
Alex 5a44c8c6de refactor: avoid unneeded json parsing 2019-05-07 13:43:48 +02:00
Alex b75e0bb0d0 refactor: remove useless bar param 2019-05-07 13:21:18 +02:00
Dan dd0ebe117c chore(cr): cr cleanup 2019-05-03 08:08:55 -04:00
Dan 3bac96945c Revert "feat(percent): adds a percent class to numeric modules"
This reverts commit 82302e58f3b611f7ff6d686d1783b1c32914f7c9.
2019-05-02 22:24:29 -04:00
Dan e158a3e132 feat(states): add generic 'states' to all labels 2019-05-02 22:24:29 -04:00
Dan 472363a623 feat(percent): adds a percent class to numeric modules 2019-05-02 22:24:29 -04:00
Alex 5623bbecfe feat(idle_inhibitor): pass status to click events exec 2019-05-02 16:56:45 +02:00
Alex d027243a19 fix: json thread safe 2019-05-02 14:24:54 +02:00
Alex bb8ff5a99f feat(Bar): add class depend of window in the workspace 2019-04-25 16:47:51 +02:00
Alex 79a5e9ecee feat: multiple bar with same process 2019-04-25 13:25:06 +02:00
Alex 9504b7ac03 fix(Bar): typo 2019-04-24 12:42:16 +02:00
Alex 311c34ecbc feat(Bar): handle widget size changes 2019-04-24 12:37:24 +02:00
Alex 90d89fe974 refactor: kill custom modules scripts en destroy 2019-04-23 15:56:38 +02:00
Alex cccf60c30e fix(Workspaces): fix concurrence and move json parser to ipc client 2019-04-23 11:42:08 +02:00
Minijackson b50650f63f
fix(mpd): regularly timeout the event listener to prevent timeout
The MPD server has a connection_timeout that defaults to 60. If no data
is transferred in this timespan, the connection is closed. If the
connection is closed while the event listener is listening for events,
it will block forever. By timing out the event listening and
re-connecting regularly, we prevent this issue. An option "timeout" has
been added for users that have a lower server connection_timeout than
default. Fixes #277
2019-04-21 10:58:40 +02:00
Cole Helbling 160837b900
Ensure no NULL tags are set
Because `mpd_song_get_tag` from libmpdclient can return NULL, verify the
value of tag is valid. Otherwise, set a default string of "N/A". Also
adds configuration to specify what this default string should be.
2019-04-20 09:12:30 -07:00
Alex 8cf19826aa fix(Tray): Unexport on exit 2019-04-19 17:03:46 +02:00
Alex cbb6f2a307 refactor(Workspaces, IPC): no more mutex in the workspaces modules, moved to the IPC client for a proper handling 2019-04-19 16:48:02 +02:00
Alex e77c155ede fix(workspaces): avoid mutex block 2019-04-19 12:11:55 +02:00
Alex 171ecd53aa refactor(Bar): roundtrip before setup widgets 2019-04-19 11:56:40 +02:00
Alex bb1cf7570e refactor(IPC): use sigc signal 2019-04-19 11:09:06 +02:00
Alex 6ed8f94dab refactor: format code 2019-04-18 17:52:00 +02:00
Alex 807ef32357 refactor: format && better output management 2019-04-18 17:47:40 +02:00
Minijackson ab43d34a1e
refactor(mpd): Add module name to log messages 2019-04-18 15:57:57 +02:00
Minijackson cd92b475ad
chore: Add clang-format configuration and format MPD module 2019-04-18 15:57:57 +02:00
Minijackson 235997fa73
feat(mpd): Add support for elapsed and total time 2019-04-18 15:55:46 +02:00
Minijackson 80a12d0238
feat(mpd): play/pause on click & stop on right-click 2019-04-18 15:55:46 +02:00
Minijackson 07dab2baec
feat(mpd): Add support for options (random, repeat, etc.) 2019-04-18 15:55:45 +02:00
Minijackson cbfcec4867
feat(mpd): Add support for play/pause icons 2019-04-18 15:55:45 +02:00
Minijackson 557b786ce0
feat(mpd): Allow for specifying the reconnect interval 2019-04-18 15:55:45 +02:00
Minijackson 06aff70e2e
feat: Add basic support for MPD 2019-04-18 15:55:45 +02:00
Alex 6d6df4be00 refactor(sni-item): better way to search in default theme 2019-04-17 22:15:18 +02:00
Alex 346ec68578 refactor: format tray && partial fix for #235 2019-04-17 14:19:04 +02:00
Alex d05b8398fa fix: prefer to hold running even when no window is open 2019-04-15 11:42:16 +02:00
Alex 5828d34fa0
Merge branch 'master' into custom-multiple-classes 2019-04-15 10:58:27 +02:00
Alex bc9a49787a feat: enable pango markup on sway workspaces 2019-04-15 10:55:44 +02:00
Alex 6aee51479d feat: ability to add multiple classes 2019-04-15 10:18:27 +02:00
Alex 57c99dc526 refactor(Tray): also search in default theme 2019-04-11 15:28:38 +02:00
Alex 78067462be fix(Tray): icons update 2019-04-11 15:20:39 +02:00
Alex 5870421f84 refactor(temperature): check if file exist on init 2019-04-11 15:08:23 +02:00
Alex 1f6f443c48 Revert "refactor(network): fix skipped messages"
This reverts commit 1ccf372f8e.
2019-04-01 11:41:43 +02:00
Alex 3a8cd91cc0 Revert "refactor: partial revert of 1ccf372f8e9d74cb18e92220c18a0729832fe69e"
This reverts commit 949a4ecf2e.
2019-03-30 09:20:28 +01:00
Alex 949a4ecf2e refactor: partial revert of 1ccf372f8e 2019-03-30 09:03:31 +01:00
Aleksei Bavshin 5a2b5624dc feat(tray): process tray icon update signals 2019-03-29 18:40:28 -07:00
Aleksei Bavshin 82fcee33b3 refactor(tray): use Gio::DBus bindings in SNI Item class 2019-03-29 18:28:29 -07:00
Alex 47142a61ae feat: allow waybar to be positioned on left/right 2019-03-22 12:25:05 +01:00
hoellen 1f924c9c06
Merge branch 'master' into feat-rtsignal 2019-03-18 19:04:11 +01:00
hoellen 38fa7ceab1 add signalhandler for module update 2019-03-18 18:46:44 +01:00
Alex 22cddc5e26 refactor(workspaces): scroll output aware 2019-03-18 14:44:07 +01:00
Alex 1ccf372f8e refactor(network): fix skipped messages 2019-03-18 11:07:36 +01:00
Groggy 7ae549dc9e
Add temperature module 2019-03-13 13:35:43 +01:00
Jonas 80ef63791d [bugfix] idle_inhibitor handles click events correctly
- Declare event handler in ALabel virtual so the idle_inhibitor can
  overriding them
- Handle the right click event in idle_inhibitor and call ALabel handler if needed
2019-03-03 22:02:34 +01:00
John Doe 737da3615f resolves #205 2019-03-03 21:35:32 +11:00
Alex 6633e34bbd
Merge branch 'master' into custom_alt 2019-02-26 12:18:34 +01:00
Ian Hattendorf c1295c8fd6
Fix crash when monitor unplugged
`Backlight#devices_` was being destructed before
`Backlight#udev_thread_`. Also check if thread is still running after
`epoll_wait`
2019-02-25 20:05:44 -07:00
Robinhuett 39bf403505 feat(custom): Add field for additional data to json 2019-02-25 22:04:09 +01:00
Robinhuett 63e97df9ff fix(backlight) Allow format-alt 2019-02-24 22:15:41 +01:00
Jonas d708ce2be9 Add idle inhibitor module 2019-02-22 16:55:46 +01:00
Alex 83a6475510 feat: can disable tooltip 2019-02-22 11:35:47 +01:00
Ian Hattendorf e67347f6ad
Gate backlight module behind libudev availability 2019-02-18 21:11:18 -07:00
Ian Hattendorf 875306804c
Add backlight module
Monitor the backlight level via udev. Poll every `interval` as well,
in case backlight udev events aren't supported.
2019-02-17 15:29:49 -07:00
Alex d0370acb21 refactor(network): better network disconnection 2019-02-11 19:06:39 +01:00
Alex dc9fe04d11 refactor: add retry to get external interface 2019-02-06 10:33:12 +01:00
Alex 01cec9fcb7 fix(bar): multi screens 2019-02-04 22:09:01 +01:00
Alex add9e925f4 fix(Workspaces): button order 2019-02-02 00:36:52 +01:00
Alex 0ddcf26a45 feat: output configuration 2019-02-01 21:45:59 +01:00
Alexis eace8c549f fix(Network): format-alt 2019-01-13 22:36:37 +01:00
Alexis 800d2f388e refactor(network): proper signal strength type 2019-01-13 22:22:22 +01:00
Alexis 399f61df98 refactor: proper modules destruction 2019-01-13 22:22:22 +01:00
Robinhuett 29a2ee1744 refactor: Replace all occurencec of gtkmm.h and only use the necessary headers 2019-01-08 21:05:44 +01:00
Caleb Bassi 8ea0659ee2 Remove ws index from sway ws names 2018-12-28 09:36:02 -08:00
Caleb Bassi b4d38294a7 Fix typo 2018-12-27 16:03:29 -08:00
Robinhuett 4698c9d2cf chore(custom): Change int conversion 2018-12-26 11:35:58 +01:00
Robinhuett 11c98f13e3 feat(custom): Add format-icons to custom module
This commit allows custom modules (json only) to set a percentage. This can be displayed either by using {percentage} or by using {icon} with format-icons set.
2018-12-26 03:52:05 +01:00
Alexis e3c0624c48 fix(battery): typo 2018-12-24 08:38:37 +01:00
Alexis 87e55ea993 feat(battery): check adapter online as fallback when battery status report unknown 2018-12-24 08:37:10 +01:00
Alexis b554094c7e feat: args && class id 2018-12-18 17:30:54 +01:00
Alexis c7b0639f32 fix(workspaces): check thread is running 2018-12-09 10:49:28 +01:00
Alexis 1b13f9e38c fix(custom): close endless scripts 2018-12-08 12:58:47 +01:00
Alexis 1d96d57b75 feat: warn user about stopped endless custom module 2018-12-03 09:35:10 +01:00
Alexis 691fb88057 refactor(modules): const bar 2018-12-01 00:10:41 +01:00
Alexis 087de4e956 refactor(client): lambda to method 2018-11-24 11:04:56 +01:00
Alexis ad7400d5ce refactor(ALabel): add interval 2018-11-23 11:57:37 +01:00
Alexis 36652158ad refactor(tray): more cpp binding 2018-11-23 10:46:58 +01:00
Alexis 8db94f7efd revert(ALabel): ref on format 2018-11-22 16:50:42 +01:00
Alexis 0b1b0eb1a7 feat(tray): multiple hosts 2018-11-22 16:20:49 +01:00
Alexis f00be0b552 refactor(tray): remove useless variable 2018-11-22 15:51:55 +01:00
Alexis ba79b4d397 refactor(tray): cleanup and fixes 2018-11-22 15:47:23 +01:00
Alexis 69fceb1c92 fix(tray): sigsev on click when multiple icons is available 2018-11-16 12:01:03 +01:00
Alexis e42fae32ab feat(network): network info interval 2018-11-16 10:02:12 +01:00
Alexis 94b9f0a399 feat(cpu): add both usage and load 2018-11-15 14:44:43 +01:00
Robinhuett 5c66b1a770 feat(network): display ip address and subnetmask 2018-11-13 21:31:26 +01:00
Robinhuett e1d98f0ad9 fix(cpu): show correct load
feat(cpu): show cores in tooltip
2018-11-11 03:11:32 +01:00
Alexis 45bb8b1a1f refactor: simpler memory code 2018-11-09 22:55:25 +01:00
Robinhuett 9ea0815dea Use ifstream to reaad /proc/meminfo 2018-11-09 16:24:13 +01:00
Robinhuett ac0963c608 Use /proc/meminfo for Memory module 2018-11-08 21:09:56 +01:00
David96 168415440f Fix clicking and scrolling through workspaces
The way waybar used the workspace "num", clicking a workspace called "1:
something" resulted in going to a newly created workspace called "1",
because the workspace ipc command expects the workspace name, not its number.
2018-11-05 20:16:19 +01:00
Alex 5ece0d98ee
Merge pull request #78 from mithodin/filesystem-experimental
add option for when filesystem still lives in the experimental namespace
2018-11-03 13:00:04 +01:00
Lucas L. Treffenstädt d8b6201632 ...and fix the function signature in the header 2018-11-02 22:15:54 +01:00
Lucas L. Treffenstädt 123ce083b4 fix typo and initialize old_status_ 2018-11-02 22:08:55 +01:00
Lucas L. Treffenstädt 0522577fe5 make status and state fully configurable formats 2018-11-02 22:04:43 +01:00
Lucas L. Treffenstädt 236be90c2f add option for when filesystem still lives in the experimental namespace 2018-11-02 20:59:41 +01:00
Alexis 9b201c77d7 feat: battery states && format-full/charging 2018-11-02 11:23:29 +01:00
Alexis 9d4048983d refactor: remove useless tmp variable 2018-11-01 09:27:00 +01:00
Robinhuett e23fbd0add Added return-type json to custom module 2018-11-01 00:40:44 +01:00
Robinhuett 341d3300fa Custom modules can control tooltip and CSS class 2018-10-30 21:28:31 +01:00
Alex c3e185546d
Merge pull request #68 from harishkrupo/master
Add configuration options for widgets on mouse events
2018-10-30 16:32:37 +01:00
Harish Krupo 3e34137ac7 pulseaudio: Change volume on scroll event
Subscribe for mouse scroll events on the pulseaudio widget
and change volume when event is received.
Scroll up increments the volume and scroll down decrements it.
These events are only subscibed when there are no user defined
commands present for them.

Signed-off-by: Harish Krupo <harishkrupo@gmail.com>
2018-10-30 20:53:43 +05:30
Harish Krupo d7d1ebd736 ALabel: Add support for configurable mouse events
This patch adds 3 new configuration options applicable for
subclasses of ALabel. The options can be used to execute
user defined code in response to the 3 mouse events:
* on-click: The left mouse button click
* on-scroll-up
* on-scroll-down
This patch also modifies the behaviour of the format-alt toggle
such that when the on-click event is configured, format-alt is
toggled on any mouse click other than left click. When on-click
is not defined, any mouse button would toggle format-alt.

Signed-off-by: Harish Krupo <harishkrupo@gmail.com>
2018-10-30 20:52:23 +05:30
Robinhuett a042eea384 Add module to show sway binding mode 2018-10-30 13:39:30 +01:00
maxice8 047473e5a4
add missing <cstring> include for strncpy, fixes musl
I/usr/include/libdbusmenu-glib-0.4 -flto -fdiagnostics-color=always -DNDEBUG -pipe -D_FILE_OFFSET_BITS=64 -std=c++17 -DHAVE_SWAY -DHAVE_LIBPULSE -DHAVE_DBUSMENU -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -D_REENTRANT -pthread  -MD -MQ 'waybar@exe/src_modules_sway_ipc_client.cpp.o' -MF 'waybar@exe/src_modules_sway_ipc_client.cpp.o.d' -o 'waybar@exe/src_modules_sway_ipc_client.cpp.o' -c ../src/modules/sway/ipc/client.cpp
../src/modules/sway/ipc/client.cpp: In member function 'int waybar::modules::sway::Ipc::open(const string&) const':
../src/modules/sway/ipc/client.cpp:47:3: error: 'strncpy' was not declared in this scope
   strncpy(addr.sun_path, socketPath.c_str(), sizeof(addr.sun_path) - 1);
   ^~~~~~~
../src/modules/sway/ipc/client.cpp:47:3: note: 'strncpy' is defined in header '<cstring>'; did you forget to '#include <cstring>'?
../src/modules/sway/ipc/client.cpp:2:1:
+#include <cstring>

../src/modules/sway/ipc/client.cpp:47:3:
   strncpy(addr.sun_path, socketPath.c_str(), sizeof(addr.sun_path) - 1);
   ^~~~~~~
[36/44] Compiling C++ object 'waybar@exe/src_modules_custom.cpp.o'.
[37/44] Compiling C++ object 'waybar@exe/src_client.cpp.o'.
[38/44] Compiling C++ object 'waybar@exe/src_modules_cpu.cpp.o'.
ninja: build stopped: subcommand failed.
2018-10-28 04:06:07 -03:00
Alexis a55a1ae866 fix(tray): icons size 2018-10-26 14:53:39 +02:00
Alexis 5010227e6b fix(tray): icons 2018-10-26 11:59:03 +02:00
Alexis f20441fa92 refactor: simpler sni naming 2018-10-26 10:05:54 +02:00
Alexis fd76e98552 fix: ifdef include 2018-10-25 19:12:28 +02:00
Alexis 9fae5efc06 feat: use interval thread until got inotify event 2018-10-25 17:39:15 +02:00
Tobias Pisani a13ce6e227
Merge branch 'tray-gdbus' into tray-gdbus 2018-10-05 21:20:36 +02:00
Alexis 091b460d03 feat(Tray): handle click 2018-10-04 18:53:50 +02:00
Alexis dc799adf45 feat(Tray): icon pixmap 2018-10-04 18:53:50 +02:00
Alexis 75c9477aa8 feat(Tray): handle item unregister 2018-10-04 18:53:50 +02:00
Alexis 75cf1d70fd feat(WIP): tray
feat(wip): tray

feat(wip): tray

feat(WIP): gdbus

feat(WIP): tray
2018-10-04 18:53:50 +02:00
topisani 9a333088e5 Merge branch 'tray-gdbus' of github.com:topisani/Waybar into tray-gdbus 2018-10-04 18:47:06 +02:00
topisani b231054b69 Merge remote-tracking branch 'origin/master' into tray-gdbus 2018-10-04 18:04:36 +02:00
topisani 108b1092e5 WIP sni dbus-menu support. 2018-10-04 18:03:01 +02:00
Alexis 00959c7d65
feat(Custom): handle continuous script 2018-09-18 23:15:37 +02:00
Alexis d5d620e72d
feat(Window): handle closed window 2018-09-18 21:16:35 +02:00
Alexis fcdb8387af
feat(Tray): handle click 2018-09-17 23:32:05 +02:00
Alexis 86958f264e
feat(Tray): icon pixmap 2018-09-15 19:01:28 +02:00
Alexis 20ff2cab9e
feat(Tray): handle item unregister 2018-09-15 19:01:28 +02:00
Alexis fc6e42d748
feat(WIP): tray
feat(wip): tray

feat(wip): tray

feat(WIP): gdbus

feat(WIP): tray
2018-09-15 19:00:45 +02:00
Alexis 55e1905284
fix(Sway): compile without sway 2018-09-10 11:25:53 +02:00
Alexis 0abaaf2f7f
style: fix 2018-09-10 11:16:57 +02:00
Alexis de5df09fcd
fix(Custom): loop script block main loop 2018-09-05 19:20:19 +02:00
Alexis 7020af7653
feat(Workspaces): urgent, visible, focused icons 2018-09-05 00:16:56 +02:00
Alexis 0eee8eade7
feat(WIP): tray
feat(wip): tray

feat(wip): tray

feat(WIP): gdbus

feat(WIP): tray
2018-09-02 17:29:16 +02:00
Alexis 6dd9b5ccc4
feat(Pulseadio): port icons 2018-08-29 23:50:41 +02:00
Alexis d0933ab50f
fix(thread): check before detach 2018-08-29 21:07:58 +02:00
Alexis 53956d9d18
feat(ALabel): Toggleable labels 2018-08-27 01:36:25 +02:00
Alexis 0ad2bc7516 refactor(Network): clean nl socket 2018-08-24 15:32:06 +02:00
Alexis 0dba3abc1d fix(custom): do not take the custom module ref 2018-08-21 10:50:09 +02:00
Alexis 8be67d5008 chore: optional deps 2018-08-20 17:20:02 +02:00
Alex 49232eed8d
Clean (#31) 2018-08-20 14:50:45 +02:00
Alexis 8ce33e0c64 fix(window): pick only con title 2018-08-19 20:37:33 +02:00
Alex 6705134034
Handle screens disconnection (#29) 2018-08-19 13:39:57 +02:00
Alexis ce50a627be refactor: move command execution into their own file 2018-08-18 17:54:20 +02:00
Alexis b794ca63d1 feat(custom): exec-if 2018-08-18 17:27:40 +02:00
Alexis 38ede5b3d5 refactor(ipc): clean 2018-08-18 16:01:56 +02:00
Alexis 27dfffa4e3 refactor: style issue 2018-08-18 15:05:18 +02:00
Alexis b1fd4d7b82 feat(modules): generic label module to allow max-length on all labels 2018-08-18 11:43:48 +02:00
Alex d280f5e8bd
Network detect (#26) 2018-08-17 14:24:00 +02:00
Alex 6635548d3e
Style code (#25) 2018-08-16 14:29:41 +02:00
Alexis 608b791ac1 refactor(clock): use fmt::localtime 2018-08-15 20:53:27 +02:00
Alexis f94598c138 feat(sway): add focused window name 2018-08-15 20:17:17 +02:00
Alexis 9b75302d22 refactor(client): cleanup 2018-08-15 17:31:45 +02:00
Alexis e3e099f836 feat(workspaces): icons 2018-08-15 14:48:08 +02:00
Alexis d1d51b76aa fix(client): try to fix #20 2018-08-15 01:53:43 +02:00
Alex cee031d2fa
Workspaces scroll event (#19) 2018-08-14 11:26:06 +02:00
Alexis 1555cb71e1 feat(pulseaudio): volume icons 2018-08-13 22:33:07 +02:00
Alexis ea9a08d473 refactor(workspaces): listen ipc event 2018-08-13 21:23:43 +02:00
Alex a423f7032d
Battery event (#18) 2018-08-13 14:05:13 +02:00
Alexis 01894f18cd chore: clean headers 2018-08-12 20:25:19 +02:00
Alexis b381e2a596 feat(battery): capacity icons 2018-08-11 13:15:31 +02:00
Alexis 6ff296a4b0 refactor(bar): prefer standard unique_ptr 2018-08-11 12:49:28 +02:00
Alexis 8d5b61a9fd refactor(bar): default width is 0 2018-08-11 10:25:21 +02:00
Alexis 424ebb3c9b feat(workspace): only show workspaces which are on same output as bar 2018-08-11 00:32:59 +02:00
Alexis 2512d51564 fix(gtk): use idle to avoid mutex 2018-08-10 23:21:21 +02:00
Alexis c792871f6e feat(bar): choose height from config file 2018-08-10 18:46:31 +02:00
Alexis e16cce646b feat: add custom module to allow execution of external script 2018-08-10 16:26:46 +02:00
Alexis c52b0c5f03 feat(network): add signal strength percentage 2018-08-10 10:45:13 +02:00
Alexis f810713570 refactor(pulseaudio): use pulseaudio thread rater than cpp 2018-08-10 00:34:13 +02:00
Alexis b85289f7ce fix(pulseaudio): remove useless include 2018-08-09 23:59:40 +02:00
Alexis 7ccb76935d feat: add pulseaudio module 2018-08-09 23:55:38 +02:00
Alexis c276c3b907 feat(network): signal strength 2018-08-09 22:05:15 +02:00
Alexis 23f48cb8b7 refactor: prefer static methods 2018-08-09 20:22:01 +02:00
Alexis 731a352b41 feat: add network module 2018-08-09 16:38:24 +02:00
Alex e749f00aa7
Merge pull request #1 from BlueGone/multiple-default-paths
Add different default paths for config and css files
2018-08-09 14:22:41 +02:00
Thomas Plaçais 6f9fb72cdf Add different default paths for config and css files 2018-08-09 14:20:22 +02:00
Alexis dc4e4860bd feat(config): format modules 2018-08-09 13:30:11 +02:00
Alexis 39a0ae04a8 feat: basic config file 2018-08-09 12:05:48 +02:00
Alexis b987668f97 style: clean class 2018-08-09 10:50:16 +02:00
Alexis d5bfc754c6 feat: cpu module 2018-08-09 01:54:33 +02:00
Alexis 17fc77cb5e feat: memory module 2018-08-09 01:42:52 +02:00
Alexis c1e2735314 feat: add idle protocol to avoid update workspace when idle 2018-08-09 01:10:07 +02:00
Alexis fcb6a9aa8b feat: init repo 2018-08-08 23:54:58 +02:00