Add README with setup, dependencies, modules, and usage

This commit is contained in:
nicholai 2025-09-08 04:14:28 -06:00
parent 610709287d
commit fa1ef980b1

149
README.md Normal file
View File

@ -0,0 +1,149 @@
# 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.