Add stretching of modules and modules-center toggling

This Patch allows the stretching of modules-{left,center,right} as well
add a "expand" flag to AModule. This allows one module to consume the
leftover space.
To allow the left or right modules to fully consume the center, the
changes also include a way to remove the center box (center_)
altogether.
This commit is contained in:
Lars Niesen
2024-10-30 17:04:13 +01:00
parent 8645115619
commit f9acc1fed9
49 changed files with 277 additions and 10 deletions

View File

@ -23,6 +23,8 @@ class AModule : public IModule {
/// Emitting on this dispatcher triggers a update() call /// Emitting on this dispatcher triggers a update() call
Glib::Dispatcher dp; Glib::Dispatcher dp;
bool expandEnabled() const;
protected: protected:
// Don't need to make an object directly // Don't need to make an object directly
// Derived classes are able to use it // Derived classes are able to use it
@ -50,6 +52,7 @@ class AModule : public IModule {
private: private:
bool handleUserEvent(GdkEventButton *const &ev); bool handleUserEvent(GdkEventButton *const &ev);
const bool isTooltip; const bool isTooltip;
const bool isExpand;
bool hasUserEvents_; bool hasUserEvents_;
std::vector<int> pid_; std::vector<int> pid_;
gdouble distance_scrolled_y_; gdouble distance_scrolled_y_;

View File

@ -31,6 +31,11 @@ The brightness can be controlled by dragging the slider across the bar or clicki
typeof: string ++ typeof: string ++
The name of the preferred device to control. If left empty, a device will be chosen automatically. The name of the preferred device to control. If left empty, a device will be chosen automatically.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -99,6 +99,11 @@ The *backlight* module displays the current backlight level.
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLE: # EXAMPLE:
``` ```

View File

@ -122,6 +122,11 @@ The *battery* module displays the current capacity and state (eg. charging) of y
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{capacity}*: Capacity in percentage *{capacity}*: Capacity in percentage

View File

@ -142,6 +142,11 @@ Addressed by *bluetooth*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{status}*: Status of the bluetooth device. *{status}*: Status of the bluetooth device.

View File

@ -15,6 +15,11 @@ Addressed by *cffi/<name>*
typeof: string ++ typeof: string ++
The path to the dynamic library to load to control the widget. The path to the dynamic library to load to control the widget.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
Some additional configuration may be required depending on the cffi dynamic library being used. Some additional configuration may be required depending on the cffi dynamic library being used.

View File

@ -96,6 +96,10 @@ $XDG_CONFIG_HOME/waybar/config ++
:[ array :[ array
:[ :[
:[ The actions corresponding to the buttons of the menu. :[ The actions corresponding to the buttons of the menu.
|[ *expand*:
:[ bool
:[ false
:[ Enables this module to consume all left over space dynamically.
View all valid format options in *strftime(3)* or have a look https://en.cppreference.com/w/cpp/chrono/duration/formatter View all valid format options in *strftime(3)* or have a look https://en.cppreference.com/w/cpp/chrono/duration/formatter

View File

@ -82,6 +82,11 @@ The *cpu* module displays the current CPU utilization.
default: true ++ default: true ++
Option to disable tooltip on hover. Option to disable tooltip on hover.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{load}*: Current CPU load. *{load}*: Current CPU load.

View File

@ -138,6 +138,11 @@ Addressed by *custom/<name>*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# RETURN-TYPE # RETURN-TYPE
When *return-type* is set to *json*, Waybar expects the *exec*-script to output its data in JSON format. When *return-type* is set to *json*, Waybar expects the *exec*-script to output its data in JSON format.

View File

@ -106,6 +106,11 @@ Addressed by *disk*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{percentage_used}*: Percentage of disk in use. *{percentage_used}*: Percentage of disk in use.

View File

@ -26,6 +26,11 @@ Addressed by *dwl/tags*
default: false ++ default: false ++
If set to false, you can left-click to set focused tag. Right-click to toggle tag focus. If set to true this behaviour is disabled. If set to false, you can left-click to set focused tag. Right-click to toggle tag focus. If set to true this behaviour is disabled.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLE # EXAMPLE
``` ```

View File

@ -84,6 +84,11 @@ Addressed by *dwl/window*
default: 24 ++ default: 24 ++
Option to change the size of the application icon. Option to change the size of the application icon.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{title}*: The title of the focused window. *{title}*: The title of the focused window.

View File

@ -61,6 +61,11 @@ Feral Gamemode optimizations.
default: 4 ++ default: 4 ++
Defines the spacing between the icon and the text. Defines the spacing between the icon and the text.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{glyph}*: The string icon glyph to use instead. *{glyph}*: The string icon glyph to use instead.

View File

@ -38,6 +38,11 @@ Addressed by *hyprland/language*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS

View File

@ -93,6 +93,11 @@ Addressed by *hyprland/submap*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES

View File

@ -35,6 +35,11 @@ Addressed by *hyprland/window*
default: 24 ++ default: 24 ++
Option to change the size of the application icon. Option to change the size of the application icon.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
See the output of "hyprctl clients" for examples See the output of "hyprctl clients" for examples

View File

@ -78,6 +78,11 @@ Addressed by *hyprland/workspaces*
If set to id, workspaces will sort by id. If set to id, workspaces will sort by id.
If none of those, workspaces will sort with default behavior. If none of those, workspaces will sort with default behavior.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{id}*: id of workspace assigned by compositor *{id}*: id of workspace assigned by compositor

View File

@ -102,6 +102,11 @@ screensaver, also known as "presentation mode".
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{status}*: status (*activated* or *deactivated*) *{status}*: status (*activated* or *deactivated*)

View File

@ -64,6 +64,11 @@ The *image* module displays an image from a path.
default: true ++ default: true ++
Option to enable tooltip on hover. Option to enable tooltip on hover.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# SCRIPT OUTPUT # SCRIPT OUTPUT
Similar to the *custom* module, output values of the script are *newline* separated. Similar to the *custom* module, output values of the script are *newline* separated.

View File

@ -89,6 +89,11 @@ See *systemd-inhibit*(1) for more information.
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{status}*: status (*activated* or *deactivated*) *{status}*: status (*activated* or *deactivated*)

View File

@ -98,6 +98,11 @@ Addressed by *jack*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{load}*: The current CPU load estimated by JACK. *{load}*: The current CPU load estimated by JACK.

View File

@ -53,6 +53,11 @@ You must be a member of the input group to use this module.
default: [58, 69, 70] ++ default: [58, 69, 70] ++
Customize the key to trigger this module, the key number can be found in /usr/include/linux/input-event-codes.h or running sudo libinput debug-events --show-keycodes. Customize the key to trigger this module, the key number can be found in /usr/include/linux/input-event-codes.h or running sudo libinput debug-events --show-keycodes.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{name}*: Caps, Num, or Scroll. *{name}*: Caps, Num, or Scroll.

View File

@ -97,6 +97,11 @@ Addressed by *memory*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{percentage}*: Percentage of memory in use. *{percentage}*: Percentage of memory in use.

View File

@ -175,6 +175,11 @@ Addressed by *mpd*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
## WHEN PLAYING/PAUSED ## WHEN PLAYING/PAUSED

View File

@ -148,6 +148,11 @@ The *mpris* module displays currently playing media via libplayerctl.
typeof: map[string]string ++ typeof: map[string]string ++
Allows setting _{status_icon}_ based on player status (playing, paused, stopped). Allows setting _{status_icon}_ based on player status (playing, paused, stopped).
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS

View File

@ -142,6 +142,11 @@ Addressed by *network*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{ifname}*: Name of the network interface. *{ifname}*: Name of the network interface.

View File

@ -33,6 +33,11 @@ Addressed by *niri/language*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{short}*: Short name of layout (e.g. "us"). Equals to {}. *{short}*: Short name of layout (e.g. "us"). Equals to {}.

View File

@ -35,6 +35,11 @@ Addressed by *niri/window*
default: 24 ++ default: 24 ++
Option to change the size of the application icon. Option to change the size of the application icon.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
See the output of "niri msg windows" for examples See the output of "niri msg windows" for examples

View File

@ -45,6 +45,11 @@ Addressed by *niri/workspaces*
typeof: string ++ typeof: string ++
Command to execute when the module is updated. Command to execute when the module is updated.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{value}*: Name of the workspace, or index for unnamed workspaces, *{value}*: Name of the workspace, or index for unnamed workspaces,

View File

@ -35,6 +35,13 @@ $XDG_CONFIG_HOME/waybar/config
:[ object :[ object
:[ See default value in the example below. :[ See default value in the example below.
:[ Icons used to represent the various power-profile. *Note*: the default configuration uses the font-awesome icons. You may want to override it if you don't have this font installed on your system. :[ Icons used to represent the various power-profile. *Note*: the default configuration uses the font-awesome icons. You may want to override it if you don't have this font installed on your system.
|[ *expand*:
:[ bool
:[ false
:[ Enables this module to consume all left over space dynamically.
# CONFIGURATION EXAMPLES # CONFIGURATION EXAMPLES

View File

@ -32,6 +32,11 @@ the screen or playing audio.
Which privacy modules to monitor. See *MODULES CONFIGURATION* for++ Which privacy modules to monitor. See *MODULES CONFIGURATION* for++
more information. more information.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# MODULES CONFIGURATION # MODULES CONFIGURATION
*type*: ++ *type*: ++

View File

@ -27,6 +27,11 @@ The volume can be controlled by dragging the slider across the bar or clicking o
default: horizontal ++ default: horizontal ++
The orientation of the slider. Can be either `horizontal` or `vertical`. The orientation of the slider. Can be either `horizontal` or `vertical`.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -126,6 +126,11 @@ Additionally, you can control the volume by scrolling *up* or *down* while the c
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{desc}*: Pulseaudio port's description, for bluetooth it'll be the device name. *{desc}*: Pulseaudio port's description, for bluetooth it'll be the device name.

View File

@ -64,6 +64,11 @@ Addressed by *river/layout*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLE # EXAMPLE
``` ```

View File

@ -78,6 +78,11 @@ Addressed by *river/mode*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -26,6 +26,11 @@ Addressed by *river/tags*
default: false ++ default: false ++
If set to false, you can left-click to set focused tag. Right-click to toggle tag focus. If set to true this behaviour is disabled. If set to false, you can left-click to set focused tag. Right-click to toggle tag focus. If set to true this behaviour is disabled.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLE # EXAMPLE
``` ```

View File

@ -62,6 +62,11 @@ Addressed by *river/window*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -87,6 +87,11 @@ cursor is over the module, and clicking on the module toggles mute.
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{volume}*: Volume in percentage. *{volume}*: Volume in percentage.

View File

@ -45,6 +45,11 @@ Addressed by *sway/language*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{short}*: Short name of layout (e.g. "us"). Equals to {}. *{short}*: Short name of layout (e.g. "us"). Equals to {}.

View File

@ -83,6 +83,11 @@ Addressed by *sway/mode*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -49,6 +49,11 @@ Addressed by *sway/scratchpad*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{icon}*: Icon, as defined in *format-icons*. *{icon}*: Icon, as defined in *format-icons*.

View File

@ -103,6 +103,11 @@ Addressed by *sway/window*
default: 24 ++ default: 24 ++
Option to change the size of the application icon. Option to change the size of the application icon.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{title}*: The title of the focused window. *{title}*: The title of the focused window.

View File

@ -99,6 +99,11 @@ warp-on-scroll: ++
default: " " ++ default: " " ++
The separator to be used between windows in a workspace. The separator to be used between windows in a workspace.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS

View File

@ -49,6 +49,11 @@ Addressed by *systemd-failed-units*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{nr_failed_system}*: Number of failed units from systemwide (PID=1) systemd. *{nr_failed_system}*: Number of failed units from systemwide (PID=1) systemd.

View File

@ -132,6 +132,11 @@ Addressed by *temperature*
typeof: array ++ typeof: array ++
The actions corresponding to the buttons of the menu. The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS # FORMAT REPLACEMENTS
*{temperatureC}*: Temperature in Celsius. *{temperatureC}*: Temperature in Celsius.

View File

@ -37,6 +37,11 @@ Addressed by *tray*
typeof: string ++ typeof: string ++
Command to execute when the module is updated. Command to execute when the module is updated.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# EXAMPLES # EXAMPLES
``` ```

View File

@ -23,6 +23,21 @@ The visual display elements for waybar use a CSS stylesheet, see *waybar-styles(
# BAR CONFIGURATION # BAR CONFIGURATION
*expand-center* ++
typeof: bool ++
default: false ++
Enables the modules-center to consume all left over space dynamically.
*expand-left* ++
typeof: bool ++
default: false ++
Enables the modules-left to consume all left over space dynamically.
*expand-right* ++
typeof: bool ++
default: false ++
Enables the modules-left to consume all left over space dynamically.
*layer* ++ *layer* ++
typeof: string ++ typeof: string ++
default: bottom ++ default: bottom ++
@ -68,6 +83,11 @@ The visual display elements for waybar use a CSS stylesheet, see *waybar-styles(
typeof: integer ++ typeof: integer ++
Margins value without units. Margins value without units.
*no-center* ++
typeof: bool ++
default: false ++
Option to disable the center modules fully usefull together with expand-\*.
*spacing* ++ *spacing* ++
typeof: integer ++ typeof: integer ++
Size of gaps in between the different modules. Size of gaps in between the different modules.

View File

@ -15,6 +15,7 @@ AModule::AModule(const Json::Value& config, const std::string& name, const std::
: name_(name), : name_(name),
config_(config), config_(config),
isTooltip{config_["tooltip"].isBool() ? config_["tooltip"].asBool() : true}, isTooltip{config_["tooltip"].isBool() ? config_["tooltip"].asBool() : true},
isExpand{config_["expand"].isBool() ? config_["expand"].asBool() : false},
distance_scrolled_y_(0.0), distance_scrolled_y_(0.0),
distance_scrolled_x_(0.0) { distance_scrolled_x_(0.0) {
// Configure module action Map // Configure module action Map
@ -273,6 +274,7 @@ bool AModule::handleScroll(GdkEventScroll* e) {
} }
bool AModule::tooltipEnabled() const { return isTooltip; } bool AModule::tooltipEnabled() const { return isTooltip; }
bool AModule::expandEnabled() const { return isExpand; }
AModule::operator Gtk::Widget&() { return event_box_; } AModule::operator Gtk::Widget&() { return event_box_; }

View File

@ -534,13 +534,22 @@ void waybar::Bar::getModules(const Factory& factory, const std::string& pos,
auto waybar::Bar::setupWidgets() -> void { auto waybar::Bar::setupWidgets() -> void {
window.add(box_); window.add(box_);
box_.pack_start(left_, false, false);
if (config["fixed-center"].isBool() ? config["fixed-center"].asBool() : true) { bool expand_left = config["expand-left"].isBool() ? config["expand-left"].asBool() : false;
box_.set_center_widget(center_); bool expand_center = config["expand-center"].isBool() ? config["expand-center"].asBool() : false;
} else { bool expand_right = config["expand-right"].isBool() ? config["expand-right"].asBool() : false;
box_.pack_start(center_, true, false); bool no_center = config["no-center"].isBool() ? config["no-center"].asBool() : false;
box_.pack_start(left_, expand_left, expand_left);
if (!no_center) {
if (config["fixed-center"].isBool() ? config["fixed-center"].asBool() : true) {
box_.set_center_widget(center_);
} else {
spdlog::error("No fixed center_");
box_.pack_start(center_, true, expand_center);
}
} }
box_.pack_end(right_, false, false); box_.pack_end(right_, expand_right, expand_right);
// Convert to button code for every module that is used. // Convert to button code for every module that is used.
setupAltFormatKeyForModuleList("modules-left"); setupAltFormatKeyForModuleList("modules-left");
@ -549,14 +558,21 @@ auto waybar::Bar::setupWidgets() -> void {
Factory factory(*this, config); Factory factory(*this, config);
getModules(factory, "modules-left"); getModules(factory, "modules-left");
getModules(factory, "modules-center"); if (!no_center) {
getModules(factory, "modules-center");
}
getModules(factory, "modules-right"); getModules(factory, "modules-right");
for (auto const& module : modules_left_) { for (auto const& module : modules_left_) {
left_.pack_start(*module, false, false); left_.pack_start(*module, module->expandEnabled(), module->expandEnabled());
} }
for (auto const& module : modules_center_) {
center_.pack_start(*module, false, false); if (!no_center) {
for (auto const& module : modules_center_) {
center_.pack_start(*module, false, false);
}
} }
std::reverse(modules_right_.begin(), modules_right_.end()); std::reverse(modules_right_.begin(), modules_right_.end());
for (auto const& module : modules_right_) { for (auto const& module : modules_right_) {
right_.pack_end(*module, false, false); right_.pack_end(*module, false, false);