Linux users love customization, and few tools show that flexibility better than Waybar. If you use a Wayland compositor such as Sway, Hyprland, Niri, River, or another compatible environment, Waybar can give you a clean, useful, and highly personalized status bar.
Waybar can display everything from your workspaces and active window to CPU usage, memory, battery level, Wi-Fi status, volume, media information, date, time, and system tray icons. Better still, almost every part of the bar can be customized.
In this guide, we will explain the best Waybar modules, how Waybar customization works, useful configuration tips, styling ideas, common mistakes, and practical ways to build a status bar that looks good without becoming distracting.
What Is Waybar?
Waybar is a customizable status bar designed for Wayland environments. It is commonly used with compositors such as Sway and Hyprland, although its current module support also includes other compositors such as Niri and River.
Instead of giving you one fixed layout, Waybar lets you decide what information appears on the bar and where it appears.
For example, you can place:
- workspaces on the left
- the active window title in the center
- network, volume, battery, and clock information on the right
This modular approach is one of the main reasons Waybar is popular among Linux users who enjoy building their own desktop environment.
Why Use Waybar?
A good status bar should give you important information without getting in your way.
Waybar can help you monitor your system while keeping your desktop clean. Depending on your setup, it can show:
- active workspaces
- running applications
- CPU usage
- RAM usage
- storage usage
- system temperature
- battery percentage
- charging status
- Wi-Fi connection
- IP information
- Bluetooth status
- audio volume
- microphone status
- currently playing media
- date and time
- system tray applications
- power controls
Waybar’s official module collection includes modules for hardware, networking, audio, media, desktop information, power management, and custom scripts.
Where Is the Waybar Configuration File?
Waybar normally reads its configuration from locations such as:
~/.config/waybar/config
or:
~/.config/waybar/config.jsonc
The official documentation confirms that Waybar supports JSONC configuration files and searches several standard configuration directories, including ~/.config/waybar/.
The styling file is usually:
~/.config/waybar/style.css
A simple Waybar configuration may look like this:
{
"position": "top",
"height": 30,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"cpu",
"memory",
"network",
"pulseaudio",
"battery",
"clock"
]
}
The exact module names you use will depend on your compositor and installed system components.
Best Waybar Modules for Linux Users
There is no single perfect Waybar setup. The best modules are the ones that provide useful information without filling the screen with unnecessary details.
Here are some of the most useful options.
1. Workspaces Module
The workspace module is one of the most important parts of a Wayland status bar.
It shows which workspace you are currently using and allows you to see or switch between other workspaces.
Depending on your compositor, you may use modules such as:
sway/workspaces
or:
hyprland/workspaces
Other compositors can have their own workspace integrations as well.
A workspace module is especially useful if you organize your applications across several virtual desktops.
For example:
- Workspace 1 — terminal
- Workspace 2 — browser
- Workspace 3 — code editor
- Workspace 4 — communication
- Workspace 5 — music
You can also replace workspace numbers with icons.
2. Active Window Module
The active window module displays information about the application currently in focus.
For example, if Firefox is active, Waybar may display the current browser window title.
A typical Hyprland setup may use:
hyprland/window
A Sway configuration may use:
sway/window
This is helpful when using minimal window decorations because you can still identify the active application from the bar.
3. Clock Module
The clock module is simple but extremely useful.
The official example configuration supports displaying both the time and alternate date formats, along with calendar information in tooltips.
A basic configuration could look like:
"clock": {
"format": "{:%H:%M}",
"format-alt": "{:%A, %d %B %Y}"
}
This displays the current time normally and can show a longer date format when using the alternate view.
You can customize it to show:
- 12-hour time
- 24-hour time
- date
- weekday
- month
- year
- calendar information
4. CPU Module
The CPU module displays processor usage.
Example:
"cpu": {
"format": "CPU {usage}%"
}
This can be useful when you are compiling software, gaming, running virtual machines, or troubleshooting a slow system.
However, avoid displaying too much information permanently. A simple percentage is often enough.
5. Memory Module
The memory module helps you see how much RAM your system is using.
Example:
"memory": {
"format": "RAM {}%"
}
Waybar’s default example configuration includes both CPU and memory modules as standard system-monitoring options.
The memory module is especially helpful on systems with limited RAM.
6. Temperature Module
If you want to keep an eye on CPU or system temperature, the temperature module can be very useful.
Example:
"temperature": {
"critical-threshold": 80,
"format": "{temperatureC}°C"
}
Waybar supports critical temperature thresholds, which means you can also style the module differently when temperatures become high.
This is especially useful for:
- laptops
- gaming PCs
- compact computers
- older systems
- machines running heavy workloads
7. Battery Module
Laptop users should almost always include the battery module.
It can display:
- current battery percentage
- charging status
- plugged-in status
- estimated battery time
- low-battery warnings
For example:
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% ⚡"
}
The official example configuration also demonstrates separate formatting for charging, full, and plugged-in states.
A good battery module helps laptop users quickly see when they need to connect a charger.
8. Network M odule
The network module displays information about your internet connection.
It can show different information depending on whether you are connected through Wi-Fi or Ethernet.
Example:
"network": {
"format-wifi": "{essid} {signalStrength}%",
"format-ethernet": "Ethernet",
"format-disconnected": "Disconnected"
}
Waybar’s example configuration supports Wi-Fi signal strength, SSID information, Ethernet details, interface names, gateway information, and disconnected states.
For a cleaner bar, you might only show an icon and place detailed information inside a tooltip.
9. Audio Module
Audio is another popular Waybar feature.
Many systems use:
pulseaudio
while other setups may use WirePlumber or another supported audio module.
Waybar currently includes support for several audio technologies, including PulseAudio and WirePlumber.
Example:
"pulseaudio": {
"format": "{volume}% {icon}",
"format-muted": "Muted",
"on-click": "pavucontrol"
}
This allows you to:
- view volume level
- see muted status
- open an audio mixer
- change volume using the mouse wheel
That turns Waybar into more than an information display. It becomes an interactive control panel.
10. Backlight Module
Laptop users may also find the backlight module helpful.
It can show the current screen brightness level.
Example:
"backlight": {
"format": "{percent}%"
}
The official example configuration includes brightness percentages and multiple brightness icons.
You can also configure scrolling actions to increase or decrease brightness if your system supports them.
11. System Tray Module
The system tray module provides an area where applications can display tray icons.
Add it with:
tray
A basic configuration could be:
"tray": {
"spacing": 8
}
This can be useful for applications such as:
- messaging clients
- cloud synchronization software
- VPN tools
- clipboard managers
- Bluetooth utilities
Be careful not to let the tray become overcrowded.
12. Media Player Module
Music listeners can add media information to Waybar.
Waybar supports media-related modules such as MPRIS and MPD, and custom modules can also be used for media scripts.
A media section can display:
- song title
- artist
- playback status
- album
- current player
This works especially well with compatible music players that expose playback controls through MPRIS.
13. Idle Inhibitor Module
The idle inhibitor module allows you to temporarily prevent your system from becoming idle.
This can be useful when:
- watching videos
- giving presentations
- reading long documents
- running tasks that should not be interrupted
The official Waybar configuration includes an idle_inhibitor module with separate active and inactive states.
14. Power Profiles Module
On supported systems, Waybar can display your current power mode through the power profiles daemon.
Typical profiles may include:
- performance
- balanced
- power saver
This is useful for laptop users who regularly switch between battery efficiency and maximum performance.
15. Custom Modules
One of Waybar’s most powerful features is the ability to create custom modules.
A custom module can run your own command or script.
For example:
"custom/hello": {
"format": "{}",
"exec": "echo Hello",
"interval": 60
}
Custom modules can display almost anything you can retrieve from a command or script.
Ideas include:
- weather
- package updates
- VPN status
- unread notifications
- Pomodoro timer
- cryptocurrency prices
- disk space
- GPU temperature
- fan speed
- current keyboard layout
- custom power menus
Because custom modules execute external commands, keep performance and security in mind.
Best Waybar Layout for Everyday Use
A useful Waybar does not need dozens of modules.
A simple layout might be:
Left Side
- workspaces
- active mode
- media information
Center
- active window title
Right Side
- CPU
- memory
- network
- audio
- battery
- clock
- tray
This structure is similar to the organization used by the project’s default example configuration, which divides modules into left, center, and right groups.
How to Customize Waybar with CSS
Waybar uses CSS for visual styling.
That means you can change:
- colors
- backgrounds
- borders
- spacing
- padding
- font size
- fonts
- rounded corners
- hover effects
- module appearance
The official documentation uses CSS stylesheets such as style.css, and newer configuration documentation also recognizes appearance-specific light and dark stylesheets.
Here is a simple example:
* {
font-family: "JetBrainsMono Nerd Font";
font-size: 13px;
}
window#waybar {
background: rgba(20, 20, 20, 0.9);
}
#workspaces button {
padding: 0 8px;
}
#clock,
#battery,
#network,
#pulseaudio,
#cpu,
#memory {
padding: 0 10px;
}
This gives your bar a clean base that you can customize further.
Add Rounded Corners
Rounded modules are popular in modern Linux desktops.
Example:
#clock {
border-radius: 10px;
padding: 0 12px;
margin: 4px;
}
You can apply this style individually or group several modules together.
Add Hover Effects
Hover effects make your bar feel more interactive.
Example:
#workspaces button:hover {
background: rgba(255, 255, 255, 0.1);
}
Avoid overly dramatic animations because they can make a status bar distracting.
Use Different Styles for Warning States
One powerful Waybar feature is state-based styling.
For example:
#battery.warning {
font-weight: bold;
}
#battery.critical {
font-weight: bold;
}
#temperature.critical {
font-weight: bold;
}
You can then assign suitable colors or other visual changes according to your desktop theme.
This makes important information easier to notice.
Use Nerd Fonts for Icons
Many Waybar configurations use Nerd Fonts because they include a large collection of useful symbols.
Icons can represent:
- Wi-Fi
- battery
- CPU
- memory
- audio
- headphones
- temperature
- calendar
- power
- workspaces
For example:
"cpu": {
"format": " {usage}%"
}
If your icons appear as empty boxes or unusual symbols, the required font may not be installed or Waybar may be using the wrong font family.
Keep Your Waybar Configuration Simple
It is easy to become excited and add every available module.
However, more information does not automatically create a better status bar.
A good rule is:
Only display information that you regularly use.
For example, if you never check CPU temperature, there may be no reason to keep it visible all day.
Instead, you could place less important information inside tooltips or custom menus.
Use Tooltips for Extra Information
Tooltips allow you to keep the bar minimal while still providing detailed information.
For example, your network module could display only a Wi-Fi icon but show the interface, gateway, or address when you hover over it.
Your clock could show only the time while displaying a calendar inside its tooltip.
The default Waybar configuration demonstrates this approach with several modules.
Make Modules Clickable
Many Waybar modules support mouse actions.
Common actions include:
on-click
on-click-right
on-click-middle
on-scroll-up
on-scroll-down
For example:
"pulseaudio": {
"format": "{volume}%",
"on-click": "pavucontrol"
}
You can use clickable modules to open:
- terminal
- audio mixer
- network manager
- calendar
- system monitor
- launcher
- power menu
This makes Waybar feel more like an interactive desktop panel.
Use Scroll Actions Carefully
Scrolling over modules can be very convenient.
For example, scrolling over the audio module can adjust volume.
But avoid assigning powerful actions to scroll events because accidental scrolling can trigger them.
Good scroll actions include:
- volume changes
- brightness adjustments
- workspace switching
Poor choices include:
- shutting down
- restarting services
- deleting files
Customize Module Spacing
Good spacing can make even a basic Waybar configuration look professional.
Too little spacing makes modules hard to read.
Too much spacing wastes screen space.
You can control spacing through the main configuration and CSS.
For example:
"spacing": 6
Waybar’s official example configuration includes a global spacing option between modules.
You can also add margin and padding through CSS.
Top vs Bottom Waybar
Waybar can usually be positioned at the top or bottom of the screen, and other orientations may also be supported depending on your setup.
The official example configuration shows configurable bar positioning.
Top Bar
A top bar works well for users who prefer:
- traditional tiling-window-manager layouts
- fast workspace visibility
- a minimal desktop
Bottom Bar
A bottom bar can feel more familiar to users coming from:
- Windows
- KDE Plasma
- traditional desktop environments
Neither position is better. Choose the one that feels most natural.
Waybar Customization Tips for Hyprland Users
Waybar is extremely popular with Hyprland because both tools are highly customizable.
A practical Hyprland bar may include:
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"network",
"pulseaudio",
"battery",
"clock"
]
You can then match your Waybar colors, spacing, borders, and fonts with your Hyprland theme.
For a cleaner desktop, use the same design language across:
- Waybar
- terminal
- application launcher
- notification daemon
- lock screen
- wallpaper
Waybar Customization Tips for Sway Users
Sway users can use native Waybar modules such as:
sway/workspaces
sway/window
sway/mode
sway/scratchpad
sway/language
Several of these are included in Waybar’s official sample configuration.
A useful Sway setup could display workspaces on the left, focused window information in the center, and system information on the right.
How to Reload Waybar After Making Changes
After editing your configuration, you will usually need to reload or restart Waybar.
One simple approach is:
pkill waybar
waybar &
If your compositor starts Waybar automatically, another common option is to restart it using your compositor’s startup command or a user service if you have configured one.
When testing, it is also helpful to launch Waybar from a terminal so error messages remain visible.
How to Troubleshoot a Broken Waybar Configuration
If Waybar fails to start after editing the configuration, do not panic.
Configuration mistakes are common.
Check the following areas.
Check JSON Syntax
Look for:
- missing commas
- extra commas in unsupported contexts
- missing quotation marks
- unmatched braces
- misspelled module names
Because Waybar uses JSONC, comments are supported in its configuration format.
Run Waybar from a Terminal
Start it manually:
waybar
Terminal output can often reveal the problematic module or configuration entry.
Check CSS Errors
An invalid selector or malformed CSS rule can create styling problems.
If the bar runs but looks wrong, temporarily use a very small stylesheet and then add your custom rules back gradually.
Check Installed Dependencies
Some modules require additional programs or services.
Examples may include:
- audio services
- network services
- media players
- hardware-monitoring interfaces
- custom scripts
If a module does not work, confirm that the required backend is installed and running.
Performance Tips for Waybar
Waybar itself can remain lightweight, but badly designed custom scripts can waste CPU or battery.
Keep these recommendations in mind:
- Avoid running heavy shell commands every second.
- Use longer update intervals when real-time information is unnecessary.
- Avoid unnecessary external API calls.
- Cache information when practical.
- Remove modules you never use.
- Keep custom scripts short and efficient.
For example, weather data does not need to refresh every second. Updating it every 15 or 30 minutes is usually more reasonable.
Common Waybar Customization Mistakes
Adding Too Many Modules
A crowded status bar becomes difficult to scan.
Focus on the information you actually need.
Using Too Many Colors
Every module does not need a different bright color.
A consistent palette usually looks cleaner.
Using Too Many Icons
Icons are useful, but a bar filled with unfamiliar symbols can become confusing.
Combine icons with short text where necessary.
Using Tiny Fonts
Small text may look minimal in screenshots but become uncomfortable during daily use.
Choose a font size that remains readable on your display.
Copying Configurations Without Understanding Them
Online Waybar configurations can provide inspiration, but copying large configurations without understanding the dependencies can cause errors.
Start small and add features gradually.
Minimal Waybar Configuration Example
Here is a simple configuration suitable for many users:
{
"position": "top",
"height": 30,
"spacing": 6,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"clock"
],
"modules-right": [
"cpu",
"memory",
"network",
"pulseaudio",
"battery"
],
"clock": {
"format": "{:%H:%M}",
"format-alt": "{:%A, %d %B %Y}"
},
"cpu": {
"format": "CPU {usage}%"
},
"memory": {
"format": "RAM {}%"
},
"network": {
"format-wifi": "Wi-Fi {signalStrength}%",
"format-ethernet": "Ethernet",
"format-disconnected": "Offline"
},
"pulseaudio": {
"format": "VOL {volume}%",
"format-muted": "Muted",
"on-click": "pavucontrol"
},
"battery": {
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}%"
}
}
If you use Sway or another compositor, replace the compositor-specific modules with the appropriate alternatives.
Minimal Waybar CSS Example
You can pair the configuration with this simple stylesheet:
* {
font-family: "JetBrainsMono Nerd Font";
font-size: 13px;
}
window#waybar {
background: rgba(20, 20, 20, 0.92);
}
#workspaces,
#clock,
#cpu,
#memory,
#network,
#pulseaudio,
#battery {
padding: 0 10px;
margin: 4px 2px;
}
#workspaces button {
padding: 0 6px;
}
#workspaces button.active {
font-weight: bold;
}
#battery.warning,
#battery.critical {
font-weight: bold;
}
You can then adjust the colors to match your own Linux theme.
Best Practices for Building a Professional Waybar Setup
A good Waybar configuration should balance design and usefulness.
Try following these principles:
- Keep important modules visible.
- Move secondary information into tooltips.
- Use consistent spacing.
- Keep colors limited.
- Match fonts with your desktop theme.
- Use icons only when they are easy to understand.
- Add warning states for battery and temperature.
- Use clickable actions for frequently opened tools.
- Avoid overly frequent custom-script updates.
- Keep backup copies of working configurations.
Most importantly, customize Waybar around your workflow rather than copying someone else’s desktop exactly.
Frequently Asked Questions About Waybar
What is Waybar used for?
Waybar is a customizable status bar for Wayland desktop environments. It can display workspaces, system information, battery status, network connections, media controls, time, notifications from tray applications, and other useful data.
Does Waybar work with Hyprland?
Yes. Waybar includes integrations for Hyprland, including workspace and window-related functionality.
Does Waybar work with Sway?
Yes. Sway is one of the main compositors supported by Waybar, with modules for workspaces, focused windows, modes, language, and related desktop information.
Can I customize Waybar colors?
Yes. Waybar uses CSS stylesheets, allowing you to customize backgrounds, text, borders, spacing, fonts, module states, and many other visual properties.
Can Waybar display CPU and RAM usage?
Yes. Waybar provides CPU and memory modules that can display processor and memory usage.
Can Waybar show Wi-Fi information?
Yes. Its network module can display information such as Wi-Fi network names, connection strength, interface details, and disconnected states.
Can I create my own Waybar modules?
Yes. Custom modules allow you to run commands and scripts, making it possible to display information that is not covered by the standard modules.
Why are Waybar icons not displaying correctly?
The most common reason is a missing icon font. Many Waybar themes rely on Nerd Fonts or other icon-enabled fonts.
Install the correct font and make sure your CSS references the same font family.
Is Waybar only for advanced Linux users?
No. Advanced customization can become technical, but beginners can start with a basic configuration and slowly add modules as they learn.
Which Waybar modules should beginners use?
A good beginner setup includes:
- workspaces
- clock
- network
- audio
- battery
- CPU
- memory
Desktop users without batteries can simply remove the battery module.
Final Thoughts
Waybar is one of the most flexible ways to create a personalized status bar on a Wayland-based Linux desktop.
The best Waybar modules are not necessarily the most complicated ones. A simple combination of workspaces, clock, network, audio, battery, CPU, and memory can already create a highly useful desktop panel.
Once the basic setup works, you can improve it with CSS themes, icons, clickable actions, media controls, system monitoring, custom scripts, and compositor-specific modules.
The key is to keep your setup practical. Build a Waybar that helps you understand and control your system quickly instead of filling your desktop with information you rarely use.
With thoughtful module selection and clean customization, Waybar can become one of the most useful parts of your Linux workflow.