Nicholai 24385e6e65 Add waybar layout and style switcher scripts
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
2025-11-23 23:08:47 -07:00
2025-11-23 22:11:53 -07:00

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

Utilities:

  • pamixer (volume + mic controls)
  • blueman (for blueman-manager launcher)
  • 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

  1. Clone to your Waybar config directory:
git clone https://git.biohazardvfx.com/Nicholai/arch-waybar.git ~/.config/waybar
  1. Fonts
  • Install JetBrainsMono Nerd Font and ensure Waybar can use it.
  1. Colors via Pywal
  • This setup expects Pywal to generate ~/.cache/wal/colors-waybar.css.
  • colors.css in 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.css to import a different palette file.
  1. Python dependency for weather
pip install --user requests
  1. 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)

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:

    • network
    • bluetooth (left-click opens blueman-manager)
    • temperature (thermal zone 1, Fahrenheit display; critical threshold set)
    • custom/power_profile (watch + signal hook; on-click options commented)
    • battery
    • backlight (block fully commented out)
    • pulseaudio (speakers: click toggles mute; scroll adjusts volume)
    • pulseaudio#microphone (mic: click toggles mute; scroll adjusts gain)

Notes:

  • custom/wallpaper uses ~/scripts/pywal/wallpapermenu.sh, which is not part of this repo. Provide your own script or remove/disable the module.
  • custom/power_profile is configured to refresh on RTMIN+8 signal; changing profiles via asusctl is commented. Uncomment and install asusctl if needed.
  • temperature uses 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/weather module:
    • text: compact current condition + feels-like
    • tooltip: 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 requests must 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.css symlink points to the correct wal file for your user.
  • Missing icons:
    • Verify Nerd Font install and that Waybar uses it.
  • Weather not loading:
    • Check pip show requests and network connectivity.
    • Run the script manually to inspect any exceptions.
  • Bluetooth manager not opening:
    • Install blueman and verify blueman-manager is on PATH.

Customization Tips

  • To adjust the clock format, edit the clock.format string in config.jsonc.
  • To change workspace icons or persistence, modify hyprland/workspaces.format-icons and persistent-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
Nicholai's waybar config
Readme 122 KiB
Languages
CSS 93.8%
Python 3.4%
Shell 2.8%