On laptops and similar devices, RandR sometimes returns zero active
screens, for example when closing a laptop's lid before it suspends.
Don't restart in that case because the new polybar instance will see
zero screens and quit. Instead, just ignore those kind of events.
* Fix backlight initial value matching the actual brightness level
The initial value is `0`. If the actual brightness is also `0` you see
`%percentage%` token as text, it’s not being replaced. Since
`m_brightness` is an `int` the initial value could be just `-1` since
the actual brightness is never goes below zero. Thus this bug will never
show up again because actual brightness on first render won’t match
the “old” `m_brightness` value.
See also for more detailed explanation of the bug:
https://github.com/polybar/polybar/discussions/3079#discussioncomment-8169932
* Add docs
---------
Co-authored-by: Viacheslav Lotsmanov <lotsmanov89@gmail.com>
Modules that don't produce any output are hidden by the controller
(don't have margins or separators).
The tray module should also do that for `format = <tray>` when there are
no icons.
This required the visibility handling to be tied to the module
visibility instead of being handled by the renderer.
Otherwise, the renderer would hide the tray (because the %{Pt} tag was
never sent) and the tray would not unhide when new icons appeared; it
can't differentiate between hidden because empty and hidden because the
module is hidden by the user (the latter is the reason the renderer does
hiding at all).
Fixes#3036
By default, we group workspaces by monitor with the help of
_NET_DESKTOP_VIEWPORT. However, some users may experience this as an
unpredictable "shuffling" of workspaces. While WMs could disable
advertising the property itself, it seems more sensible to handle this
at the level of polybar. Hence, introduce a new group-by-monitor
flag—defaulting to true—which can be used to disable this behaviour.
Closes: https://github.com/polybar/polybar/issues/2603
Related: https://github.com/xmonad/xmonad-contrib/pull/791
Related: https://github.com/qtile/qtile/issues/3375
Co-authored-by: scaramangado <scaramangado@gmail.com>
The `backlight` file seems to not receive modification events for
inotify (it does receive other events though).
These other events still trigger an update, but the value read is still
the old value because the events arrive just slightly before the file is
updated.
The new `poll-interval` setting will inject an event every X seconds to
force an update.
If the actual_brightness file is used, the interval is set to 0 and thus
turned off.
This does not add any more wakeups to the module, the inotify modules
wake up every second anyway and during that time, the interval is
checked.
Fixes#2835
The ewmh strategy has to be dropped because the
`_NET_SUPPORTING_WM_CHECK` window may (at least in bspwm) appear
anywhere in the window stack.
To fix the overlapping monitors issue in #2873, we simply restack
against the topmost of these root windows.
Fixes#2972Fixes#2873 (again)
In alsa 1.2.10, the `alsa/control.h` header cannot be included on its
own because it does not include all symbols it uses.
We are basically duplicating asoundlib.h anyway and there is even a
macro variable to switch to it.
Ref: #3009
Ref: https://github.com/alsa-project/alsa-lib/issues/348
Positions the bar window above the _NET_SUPPORTING_WM_CHECK window
The generic restacking strategy now first tries the ewmh strategy, the
the bottom strategy.
* Remove unused function
* Refactor deprecation warning
* Modules take config as parameter instead of using the singleton
* Bar take config as parameter instead of using the singleton
* Renderer take config as parameter instead of using the singleton
* Legacy Tray Manager take config as parameter instead of using the singleton
* Screen take config as parameter instead of using the singleton
* Controller take config as parameter instead of using the singleton
* Remove the config singleton
* Apply review suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
* Apply style suggestion
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
---------
Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>
tray-padding determines space added before and after each icon
tray-spacing determines space added between icons (but not at the edge)
Both are an extent value and accept both pixel and point values.
The size accepts a percentage with offset relative to the bar height and
determines the width and height of tray icons.
Defaults to 66%
Does not affect spacing
In polybar-msg, the connection handle was captured as a reference to a
shared_ptr, but the shared_ptr went out of scope right after.
This probably always caused UB, but was only noticeable for two or more
instances.