150 lines
5.4 KiB
Markdown
150 lines
5.4 KiB
Markdown
# 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
|
|
```
|
|
|
|
2) Fonts
|
|
- Install JetBrainsMono Nerd Font and ensure Waybar can use it.
|
|
|
|
3) 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.
|
|
|
|
4) Python dependency for weather
|
|
```
|
|
pip install --user requests
|
|
```
|
|
|
|
5) 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.
|