Created convenient scripts for testing different configurations: - switch-layout.sh: Switch between 24 available layouts - switch-style.sh: Switch between 30+ themes - Works with rofi (GUI) or CLI menu - Automatically reloads waybar after switching
Arch Waybar Configuration
Opinionated Waybar setup tailored for Hyprland on Arch Linux. Includes:
- Hyprland workspaces/window modules
- Pywal-driven colors via a symlinked colors.css
- A weather widget powered by wttr.in (Python script)
- Multimedia controls (audio, mic), battery, temperature, network, bluetooth, and clock
Repository: https://git.biohazardvfx.com/Nicholai/arch-waybar
Repository Structure
~/.config/waybar/
├── colors.css # symlink to ~/.cache/wal/colors-waybar.css (generated by Pywal)
├── config.jsonc # main Waybar configuration
├── style.css # Waybar CSS (imports colors.css)
└── scripts/
└── waybar-wttr.py # weather script (wttr.in) for custom/weather module
Requirements
Core:
- Waybar (with Hyprland module support)
- Hyprland (for
hyprland/*modules) or adjust modules if using Sway/etc. - JetBrainsMono Nerd Font (for glyphs/icons)
- Python 3 +
requests(for weather)- Install:
pip install --user requests
- Install:
Utilities:
- pamixer (volume + mic controls)
- blueman (for
blueman-managerlauncher) - pywal (to generate the wal CSS that colors.css links to)
Optional (if enabling commented actions in config):
- asusctl (power profiles)
- brightnessctl (backlight block currently commented)
Installation
- Clone to your Waybar config directory:
git clone https://git.biohazardvfx.com/Nicholai/arch-waybar.git ~/.config/waybar
- Fonts
- Install JetBrainsMono Nerd Font and ensure Waybar can use it.
- Colors via Pywal
- This setup expects Pywal to generate
~/.cache/wal/colors-waybar.css. colors.cssin this repo is a symlink pointing to an absolute path (/home/Nicholai/.cache/wal/colors-waybar.css).- On another machine or a different username, update the symlink:
cd ~/.config/waybar rm -f colors.css ln -s ~/.cache/wal/colors-waybar.css colors.css - Or, edit
style.cssto import a different palette file.
- On another machine or a different username, update the symlink:
- Python dependency for weather
pip install --user requests
- Launch or reload Waybar
- If Waybar is already running:
- Standard reload:
pkill -SIGUSR2 waybar - Or restart your session bar (depends on your launcher/service setup)
- Standard reload:
Modules Overview (config.jsonc)
Enabled modules:
-
Left:
clock(12-hour format)custom/weather(from scripts/waybar-wttr.py; tooltip shows forecast)custom/wallpaper(on-click: ~/scripts/pywal/wallpapermenu.sh — external)hyprland/window(current window title)
-
Center:
hyprland/workspaces- Custom icons
- Persistent workspaces for output
Virtual-1
-
Right:
networkbluetooth(left-click opens blueman-manager)temperature(thermal zone 1, Fahrenheit display; critical threshold set)custom/power_profile(watch + signal hook; on-click options commented)batterybacklight(block fully commented out)pulseaudio(speakers: click toggles mute; scroll adjusts volume)pulseaudio#microphone(mic: click toggles mute; scroll adjusts gain)
Notes:
custom/wallpaperuses~/scripts/pywal/wallpapermenu.sh, which is not part of this repo. Provide your own script or remove/disable the module.custom/power_profileis configured to refresh on RTMIN+8 signal; changing profiles viaasusctlis commented. Uncomment and installasusctlif needed.temperatureuses thermal zone 1; adjust per your hardware.
Styling (style.css)
- Imports
colors.css, which is expected to be generated by Pywal. - Uses JetBrainsMono Nerd Font; set globally in the CSS.
- Blocks have semi-transparent backgrounds and rounded corners.
- Active/hover/focused styles for workspaces customized.
- Theming expects Wal-provided variables like
@background,@colorX.
If you do not use Pywal, replace the import and variables with your preferred palette.
Weather Script (scripts/waybar-wttr.py)
- Fetches JSON from
https://wttr.in/?format=j1 - Outputs a JSON payload that Waybar consumes for the
custom/weathermodule:text: compact current condition + feels-liketooltip: multi-line details: current, wind, humidity, plus daily and hourly forecast
Manual test:
python ~/.config/waybar/scripts/waybar-wttr.py
If it prints a JSON string, the module should render in Waybar.
Caveats:
- Network access to wttr.in is required and may be rate-limited.
- Python
requestsmust be installed. - The script currently references a
format_time()helper in one place; ensure it exists or remove references if you customize the script. The shipped config works as-is on machines where this script is already in use.
Troubleshooting
- Colors not applying:
- Ensure Pywal has generated
~/.cache/wal/colors-waybar.css. - Ensure
colors.csssymlink points to the correct wal file for your user.
- Ensure Pywal has generated
- Missing icons:
- Verify Nerd Font install and that Waybar uses it.
- Weather not loading:
- Check
pip show requestsand network connectivity. - Run the script manually to inspect any exceptions.
- Check
- Bluetooth manager not opening:
- Install
bluemanand verifyblueman-manageris on PATH.
- Install
Customization Tips
- To adjust the clock format, edit the
clock.formatstring inconfig.jsonc. - To change workspace icons or persistence, modify
hyprland/workspaces.format-iconsandpersistent-workspaces. - To enable volume/backlight/power-profile click actions, uncomment the relevant sections and install required tools.
License
No license specified. Add one if you intend to share or redistribute.
Description
Languages
CSS
93.8%
Python
3.4%
Shell
2.8%