dotfiles: update waybar, mpv, and launcher configs

- tweak Waybar layout/styling, add temp cycling + volume group

- template mpv config and add jellyfin-mpv-shim defaults

- add owlry config, Hyprland launcher bind, and agent notes
This commit is contained in:
s0wlz (Matthias Puchstein)
2025-12-29 01:04:48 +01:00
parent 2e78c5f17b
commit d90cca305f
16 changed files with 498 additions and 209 deletions

View File

@@ -36,3 +36,6 @@
AGENTS.md
GEMINI.md
.config/hypr/AGENTS.md
.config/waybar/AGENTS.md

View File

@@ -9,6 +9,42 @@ This is a chezmoi dotfiles source tree. Key paths:
- Host-specific variants use `##hostname.<name>` (e.g., `hyprpaper.conf##hostname.owlenlap01`).
- `dot_config/waybar/waybar.wiki/` and `dot_config/hypr/hyprland.wiki/` are mirrored docs with `dot_git/` metadata; treat them as upstream mirrors unless intentionally updating.
## Chezmoi Config (chezmoi.toml)
- Source of truth: `~/.config/chezmoi/chezmoi.toml` (not tracked here).
- Tag keys are stable across machines; templates must access them via `.chezmoi.config.data.tags.<tag>`.
- `microphone` is only present when `pipewire` is true; guard access with the tag.
- `data.monitors` is an array and the number of entries varies by machine.
- Reference structure (current machine):
```
[data]
tags = { desktop = true, laptop = false, hyprland = true, waybar = true, pipewire = true, dev = true, entertainment = true, cs2 = true, bluetooth = false }
microphone = "alsa_input.usb-DCMT_Technology_USB_Condenser_Microphone_214b206000000178-00.mono-fallback"
# --- Primary Monitor ---
[[data.monitors]]
name = "DP-1"
primary = true
width = 1920
height = 1080
refresh_rate = 60
position = "0x0"
scale = 1.0
workspaces = [1, 2, 3, 4, 5]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/rosepinesuccubus11.png"
# --- Secondary Monitor ---
[[data.monitors]]
name = "DP-2"
width = 1920
height = 1080
refresh_rate = 144
position = "1920x0"
scale = 1.0
vrr = 1
workspaces = [6, 7, 8, 9, 10]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/witch_autumn.png"
```
## Build, Test, and Development Commands
There is no build system; apply and verify changes with chezmoi:
- `chezmoi diff` preview pending changes.

75
dot_config/hypr/AGENTS.md Normal file
View File

@@ -0,0 +1,75 @@
# Repository Guidelines
## Project Structure & Module Organization
This directory is the Hyprland portion of a chezmoi dotfiles source tree. Key paths:
- `dot_config/` maps to `~/.config/` (e.g., `dot_config/hypr/`, `dot_config/nvim/`, `dot_config/waybar/`).
- `dot_local/` maps to `~/.local/` (scripts, data, and app state).
- `dot_profile.tmpl` renders to `~/.profile`.
- `.chezmoiscripts/` holds chezmoi hooks such as `run_onchange_*`.
- Host-specific variants use `##hostname.<name>` (e.g., `hyprpaper.conf##hostname.owlenlap01`).
- `dot_config/hypr/hyprland.wiki/` is a mirrored docs subtree; treat it as upstream unless intentionally updating.
Hyprland configuration lives here in `hyprland.conf`, with modular includes under `hyprland.d/` and related configs like `hypridle.conf`, `hyprlock.conf.tmpl`, and `hyprpaper.conf.tmpl`.
## Chezmoi Config (chezmoi.toml)
- Source of truth: `~/.config/chezmoi/chezmoi.toml` (not tracked here).
- Tag keys are stable across machines; templates must access them via `.chezmoi.config.data.tags.<tag>`.
- `microphone` is only present when `pipewire` is true; guard access with the tag.
- `data.monitors` is an array and the number of entries varies by machine.
- Reference structure (current machine):
```
[data]
tags = { desktop = true, laptop = false, hyprland = true, waybar = true, pipewire = true, dev = true, entertainment = true, cs2 = true, bluetooth = false }
microphone = "alsa_input.usb-DCMT_Technology_USB_Condenser_Microphone_214b206000000178-00.mono-fallback"
# --- Primary Monitor ---
[[data.monitors]]
name = "DP-1"
primary = true
width = 1920
height = 1080
refresh_rate = 60
position = "0x0"
scale = 1.0
workspaces = [1, 2, 3, 4, 5]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/rosepinesuccubus11.png"
# --- Secondary Monitor ---
[[data.monitors]]
name = "DP-2"
width = 1920
height = 1080
refresh_rate = 144
position = "1920x0"
scale = 1.0
vrr = 1
workspaces = [6, 7, 8, 9, 10]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/witch_autumn.png"
```
## Build, Test, and Development Commands
There is no build system. Validate changes via chezmoi:
- `chezmoi diff` shows pending changes between source and target files.
- `chezmoi apply` renders templates and applies updates to `$HOME`.
- `chezmoi status` summarizes managed file state.
After applying, reload Hyprland (e.g., `hyprctl reload`) or restart related tools to verify behavior.
## Coding Style & Naming Conventions
- Match existing formatting; avoid reflowing unrelated blocks.
- Use chezmoi prefixes: `dot_` for dotfiles, `executable_` for executables, `symlink_` for symlinks, `private_` for restricted files, and `.tmpl` for Go templates.
- Keep templates minimal and use `##hostname.<name>` for host-specific variants.
## Testing Guidelines
No automated tests are defined. Validate by:
- Running `chezmoi diff` and `chezmoi apply`.
- Smoke-testing the affected tool (e.g., reload Hyprland, start Waybar).
## Commit & Pull Request Guidelines
No established Git history. Use concise, imperative commit subjects with optional scope (e.g., `hypr: adjust keybinds`). For PRs, include:
- A clear summary of changes.
- Affected paths (e.g., `dot_config/hypr/hyprland.conf`).
- Screenshots for visible UI changes.
## Agent-Specific Notes
When editing mirrored docs under `dot_config/hypr/hyprland.wiki/`, treat them as upstream mirrors unless explicitly asked to update.

View File

@@ -9,7 +9,7 @@ $term_tmux = uwsm app -- kitty tmux
$term_tmux_append = uwsm app -- kitty tmux a
$filemanager = uwsm app -- nautilus
$launcher = uwsm app -- sherlock
$powermenu = uwsm app -- sherlock -sm pm
$launcheralt = uwsm app -- owlry
$clipman = uwsm app -- sherlock-clp | sherlock | cliphist decode | wl-copy
$browser = uwsm app -- firefox
$browserprv = uwsm app -- firefox --private-window
@@ -40,7 +40,7 @@ bind = $mainMod CTRL, W, exec, $altbrowser
bind = $mainMod Shift, E, exec, $editor
bind = $mainMod CTRL, E, exec, $alteditor
bind = $mainMod, X, exec, $launcher
bind = $mainMod, B, exec, $powermenu
bind = $mainMod SHIFT, X, exec, $launcheralt
bind = $mainMod, C, exec, $clipman
bind = $mainMod, Return, exec, $terminal_backup
bind = $mainMod SHIFT, Return, exec, $term_tmux

View File

View File

@@ -0,0 +1,24 @@
# --- Video & Quality ---
{{- if .chezmoi.config.data.tags.desktop }}
profile=high-quality
vo=gpu-next
gpu-api=vulkan
hwdec=vaapi
{{- else }}
vo=gpu-next
hwdec=auto-safe
{{- end }}
# --- Motion ---
video-sync=display-resample
interpolation=yes
tscale=oversample
# --- Window ---
geometry=50%:50%
# --- Screenshots ---
screenshot-format=png
screenshot-high-bit-depth=yes
screenshot-png-compression=7
screenshot-directory=~/Pictures/Screenshots

View File

@@ -1,150 +0,0 @@
#
# Example mpv configuration file
#
# Warning:
#
# The commented example options usually do _not_ set the default values. Call
# mpv with --list-options to see the default values for most options. There is
# no builtin or example mpv.conf with all the defaults.
#
#
# Configuration files are read system-wide from /etc/mpv or /usr/local/etc/mpv,
# and per-user from ~/.config/mpv, where per-user settings override
# system-wide settings, all of which are overridden by the command line.
#
# Configuration file settings and the command line options use the same
# underlying mechanisms. Most options can be put into the configuration file
# by dropping the preceding '--'. See the man page for a complete list of
# options.
#
# Lines starting with '#' are comments and are ignored.
#
# See the CONFIGURATION FILES section in the man page
# for a detailed description of the syntax.
#
# Profiles should be placed at the bottom of the configuration file to ensure
# that settings wanted as defaults are not restricted to specific profiles.
##################
# video settings #
##################
# Start in fullscreen mode by default.
#fs=yes
# force starting with centered window
#geometry=50%:50%
# don't allow a new window to have a size larger than 90% of the screen size
#autofit-larger=90%x90%
# Do not close the window on exit.
#keep-open=yes
# Do not wait with showing the video window until it has loaded. (This will
# resize the window once video is loaded. Also always shows a window with
# audio.)
#force-window=immediate
# Disable the On Screen Controller (OSC).
#osc=no
# Keep the player window on top of all other windows.
#ontop=yes
# Specify fast video rendering preset (for --vo=<gpu|gpu-next> only)
# Recommended for mobile devices or older hardware with limited processing power
#profile=fast
# Specify high quality video rendering preset (for --vo=<gpu|gpu-next> only)
# Offers superior image fidelity and visual quality for an enhanced viewing
# experience on capable hardware
#profile=high-quality
# Force video to lock on the display's refresh rate, and change video and audio
# speed to some degree to ensure synchronous playback - can cause problems
# with some drivers and desktop environments.
#video-sync=display-resample
# Enable hardware decoding if available. Often, this does not work with all
# video outputs, but should work well with default settings on most systems.
# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
# may or may not help.
hwdec=auto
##################
# audio settings #
##################
# Specify default audio device. You can list devices with: --audio-device=help
# The option takes the device string (the stuff between the '...').
#audio-device=alsa/default
# Do not filter audio to keep pitch when changing playback speed.
#audio-pitch-correction=no
# Output 5.1 audio natively, and upmix/downmix audio with a different format.
#audio-channels=5.1
# Disable any automatic remix, _if_ the audio output accepts the audio format.
# of the currently played file. See caveats mentioned in the manpage.
# (The default is "auto-safe", see manpage.)
#audio-channels=auto
##################
# other settings #
##################
# Pretend to be a web browser. Might fix playback with some streaming sites,
# but also will break with shoutcast streams.
#user-agent="Mozilla/5.0"
# cache settings
#
# Use a large seekable RAM cache even for local input.
#cache=yes
#
# Use extra large RAM cache (needs cache=yes to make it useful).
#demuxer-max-bytes=500M
#demuxer-max-back-bytes=100M
#
# Disable the behavior that the player will pause if the cache goes below a
# certain fill size.
#cache-pause=no
#
# Store cache payload on the hard disk instead of in RAM. (This may negatively
# impact performance unless used for slow input such as network.)
#cache-dir=~/.cache/
#cache-on-disk=yes
# Display English subtitles if available.
#slang=en
# Play Finnish audio if available, fall back to English otherwise.
#alang=fi,en
# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
# If the file seems to be valid UTF-8, prefer UTF-8.
# (You can add '+' in front of the codepage to force it.)
#sub-codepage=cp1256
# You can also include other configuration files.
#include=/path/to/the/file/you/want/to/include
############
# Profiles #
############
# The options declared as part of profiles override global default settings,
# but only take effect when the profile is active.
# The following profile can be enabled on the command line with: --profile=eye-cancer
#[eye-cancer]
#sharpen=5
# uosc provides seeking & volume indicators (via flash-timeline and flash-volume commands)
# if you decide to use them, you don't need osd-bar
osd-bar=no
# uosc will draw its own window controls and border if you disable window border
border=no

View File

@@ -0,0 +1,40 @@
# --- General ---
keep-open=yes
save-position-on-quit=yes
geometry=50%:50%
# --- UI (uosc support) ---
osd-bar=no
border=no
# --- Video ---
# Smooth motion handling
video-sync=display-resample
interpolation=yes
tscale=oversample
# --- Hardware & Quality (Chezmoi) ---
{{- if .chezmoi.config.data.tags.desktop }}
profile=high-quality
vo=gpu-next
gpu-api=vulkan
hwdec=vaapi
{{- else }}
vo=gpu-next
hwdec=auto-safe
{{- end }}
# --- Languages ---
# English, German, French, Japanese
alang=eng,en,deu,de,fra,fr,jpn,jp
slang=eng,en,deu,de,fra,fr
# --- Subtitles ---
sub-auto=fuzzy
sub-font-size=48
# --- Screenshots ---
screenshot-format=png
screenshot-high-bit-depth=yes
screenshot-png-compression=7
screenshot-directory=~/Pictures/Screenshots

View File

@@ -0,0 +1,77 @@
# Owlry Configuration
# Copy to ~/.config/owlry/config.toml
[general]
show_icons = true
max_results = 10
terminal_command = "kitty" # Auto-detected if not set
# Launch wrapper for app execution (auto-detected if not set)
# Examples:
# "uwsm app --" # For uwsm sessions
# "hyprctl dispatch exec --" # For Hyprland
# "" # Direct execution
# launch_wrapper = "uwsm app --"
[appearance]
width = 600
height = 400
font_size = 14
border_radius = 12
# Theme: "owl" for built-in dark theme, or leave unset for GTK default
theme = "owl"
# Individual color overrides (CSS color values)
# [appearance.colors]
# background = "#1a1b26"
# background_secondary = "#24283b"
# border = "#414868"
# text = "#c0caf5"
# text_secondary = "#565f89"
# accent = "#7aa2f7"
# accent_bright = "#89b4fa"
# badge_app = "#9ece6a"
# badge_calc = "#e0af68"
# badge_cmd = "#7aa2f7"
# badge_dmenu = "#bb9af7"
# badge_uuctl = "#f7768e"
[providers]
applications = true
commands = true
uuctl = true
# Calculator provider (type "= 5+3" or "calc 5+3")
calculator = true
# Frecency: boost frequently/recently used items in search results
frecency = true
frecency_weight = 0.3 # 0.0 = disabled, 1.0 = strong boost
# Web search provider (type "? query" or "web query")
websearch = true
# Options: google, duckduckgo, bing, startpage, searxng, brave, ecosia
# Or custom URL with {query} placeholder, e.g. "https://search.example.com/?q={query}"
search_engine = "duckduckgo"
# System commands (shutdown, reboot, lock, suspend, hibernate, logout, BIOS)
system = true
# SSH connections from ~/.ssh/config
ssh = true
# Clipboard history (requires cliphist)
clipboard = true
# Browser bookmarks (Chrome, Chromium, Brave, Edge, Vivaldi)
bookmarks = true
# Emoji picker (copies to clipboard)
emoji = true
# Custom scripts from ~/.config/owlry/scripts/
scripts = true
# File search (requires fd or locate, trigger with "/ pattern" or "find pattern")
files = true

View File

View File

@@ -0,0 +1,70 @@
# Repository Guidelines
## Project Structure & Module Organization
This is a chezmoi dotfiles source tree scoped to Waybar. The current directory maps to `~/.config/waybar/` on apply.
- `dot_config/waybar/` contains Waybar config, style, and module files.
- `dot_config/waybar/waybar.wiki/` is a mirrored upstream doc set with `dot_git/` metadata; avoid editing unless intentionally updating the mirror.
- Host-specific variants use `##hostname.<name>` suffixes (e.g., `config##hostname.laptop`).
## Chezmoi Config (chezmoi.toml)
- Source of truth: `~/.config/chezmoi/chezmoi.toml` (not tracked here).
- Tag keys are stable across machines; templates must access them via `.chezmoi.config.data.tags.<tag>`.
- `microphone` is only present when `pipewire` is true; guard access with the tag.
- `data.monitors` is an array and the number of entries varies by machine.
- Reference structure (current machine):
```
[data]
tags = { desktop = true, laptop = false, hyprland = true, waybar = true, pipewire = true, dev = true, entertainment = true, cs2 = true, bluetooth = false }
microphone = "alsa_input.usb-DCMT_Technology_USB_Condenser_Microphone_214b206000000178-00.mono-fallback"
# --- Primary Monitor ---
[[data.monitors]]
name = "DP-1"
primary = true
width = 1920
height = 1080
refresh_rate = 60
position = "0x0"
scale = 1.0
workspaces = [1, 2, 3, 4, 5]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/rosepinesuccubus11.png"
# --- Secondary Monitor ---
[[data.monitors]]
name = "DP-2"
width = 1920
height = 1080
refresh_rate = 144
position = "1920x0"
scale = 1.0
vrr = 1
workspaces = [6, 7, 8, 9, 10]
wallpaper = "/home/mpuchstein/Pictures/wallpaper/ki/1920x1080/witch_autumn.png"
```
## Build, Test, and Development Commands
There is no build system. Use chezmoi to preview and apply changes:
- `chezmoi diff` preview pending changes.
- `chezmoi apply` render and apply files to `$HOME`.
- `chezmoi status` show managed file status.
After applying, restart Waybar to validate changes.
## Coding Style & Naming Conventions
- Match existing file formatting; avoid reflowing unrelated sections.
- Prefer ASCII unless the file already uses Unicode.
- Use chezmoi naming conventions: `dot_` for dotfiles, `executable_` for executables, `private_` for restricted files, `.tmpl` for Go templates, `symlink_` for symlinks.
- Keep module names descriptive and aligned with Waybars config keys.
## Testing Guidelines
No automated tests are defined. Validate by:
- Running `chezmoi diff` and `chezmoi apply`.
- Smoke-testing Waybar (reload or restart) to confirm layout and modules.
## Commit & Pull Request Guidelines
The repository has no established Git history. Use short, imperative commit subjects and include a scope when helpful (e.g., `waybar: tweak clock format`). For pull requests, include:
- A concise summary of changes.
- Affected paths (e.g., `dot_config/waybar/config`).
- Screenshots for visual/UI changes.
## Notes for Contributors
Avoid editing unrelated dotfiles unless requested. If you touch mirrored docs or host-specific files, call it out explicitly in your summary.

View File

@@ -8,10 +8,10 @@
"layer": "top",
"position": "left",
"output": "{{ $primary_output }}",
"width": 95,
"spacing": 6,
"margin-top": 6,
"margin-bottom": 6,
"width": 90,
"spacing": 4,
"margin-top": 0,
"margin-bottom": 0,
"modules-left": [
"clock",
@@ -28,8 +28,7 @@
"memory",
"disk#root",
"network",
"temperature#cpu",
"temperature#gpu_hotspot"
"group/temps"
],
"modules-right": [
@@ -37,17 +36,20 @@
"custom/hyprsunset",
"gamemode",
"privacy",
"wireplumber#source",
"wireplumber#sink",
"group/volume",
"tray",
{{- if .chezmoi.config.data.tags.bluetooth }}
"bluetooth",
{{- end }}
{{- if .chezmoi.config.data.tags.laptop }}
"power-profiles-daemon",
"battery"
{{- end }}
],
"hyprland/window": {
"format": "{title}",
"max-length": 28,
"max-length": 18,
"icon": true,
"icon-size": 18,
"separate-outputs": false
@@ -86,8 +88,8 @@
"network": {
"interval": 3,
"format-wifi": " {essid}%",
"format-ethernet": " {ifname}",
"format-wifi": " {signalStrength}%",
"format-ethernet": "",
"tooltip-format-wifi": "{signalStrength}\n {bandwidthUpBytes}\n {bandwidthDownBytes}",
"tooltip-format-ethernet": " {bandwidthUpBytes}\n {bandwidthDownBytes}",
"format-disconnected": ""
@@ -197,23 +199,26 @@
"group/temps": {
"orientation": "horizontal",
"orientation": "vertical",
"drawer": {
"transition-duration": 300,
"transition-left-to-right": true,
"click-to-reveal": true
},
"modules": [
"custom/temps-wrap", // leader, always visible
"custom/temps-cycle", // leader, always visible
"temperature#cpu",
"temperature#gpu_hotspot",
"temperature#nvme"
]
},
"custom/temps-wrap": {
"format": "",
"tooltip-format": "Temperatures"
"custom/temps-cycle": {
"exec": "$HOME/.config/waybar/scripts/temps-cycle.sh",
"return-type": "json",
"interval": 3,
"format": "{text}",
"tooltip": true
},
"temperature#cpu": {
@@ -221,8 +226,8 @@
"input-filename": "temp1_input",
"interval": 5,
"critical-threshold": 85,
"format": " CPU: {temperatureC}°C",
"format-critical": " CPU: {temperatureC}°C ",
"format": " {temperatureC}°C",
"format-critical": " {temperatureC}°C ",
"tooltip-format": "CPU Tctl: {temperatureC}°C"
},
@@ -241,8 +246,8 @@
"input-filename": "temp2_input",
"interval": 5,
"critical-threshold": 110,
"format": " GPU: {temperatureC}°C",
"format-critical": " GPU: {temperatureC}°C ",
"format": " {temperatureC}°C",
"format-critical": " {temperatureC}°C ",
"tooltip-format": "GPU junction: {temperatureC}°C"
},
@@ -297,5 +302,13 @@
"tooltip": true,
"format": "{text}",
"on-click": "kitty --hold alhp.utils -j"
},
"group/volume": {
"orientation": "vertical",
"modules": [
"wireplumber#source",
"wireplumber#sink"
]
}
}
}

View File

@@ -0,0 +1,96 @@
#!/usr/bin/env bash
set -euo pipefail
cycle_seconds=3
resolve_hwmon_file() {
local base="$1" file="$2" sub
if [[ -r "$base/$file" ]]; then
printf '%s' "$base/$file"
return 0
fi
if [[ -d "$base" ]]; then
for sub in "$base"/hwmon*; do
if [[ -r "$sub/$file" ]]; then
printf '%s' "$sub/$file"
return 0
fi
done
fi
return 1
}
resolve_hwmon_by_name() {
local target="$1" file="$2" h
[[ -n "$target" ]] || return 1
for h in /sys/class/hwmon/hwmon*; do
[[ -r "$h/name" ]] || continue
if [[ "$(cat "$h/name")" == "$target" && -r "$h/$file" ]]; then
printf '%s' "$h/$file"
return 0
fi
done
return 1
}
read_temp() {
local base="$1" file="$2" fallback="$3" raw path
if path=$(resolve_hwmon_file "$base" "$file"); then
:
elif path=$(resolve_hwmon_by_name "$fallback" "$file"); then
:
else
return 1
fi
raw=$(<"$path")
if [[ "$raw" =~ ^[0-9]+$ ]]; then
printf '%s' "$((raw / 1000))"
return 0
fi
return 1
}
cpu_path="/sys/devices/pci0000:00/0000:00:18.3/hwmon"
gpu_path="/sys/devices/pci0000:00/0000:00:01.1/0000:10:00.0/0000:11:00.0/0000:12:00.0/hwmon"
nvme_path="/sys/devices/pci0000:00/0000:00:02.2/0000:23:00.0/nvme/nvme0/hwmon"
labels=()
icons=()
values=()
if temp=$(read_temp "$cpu_path" "temp1_input" "k10temp"); then
labels+=("CPU")
icons+=("")
values+=("$temp")
fi
if temp=$(read_temp "$gpu_path" "temp2_input" "amdgpu"); then
labels+=("GPU")
icons+=("")
values+=("$temp")
fi
if temp=$(read_temp "$nvme_path" "temp1_input" "nvme"); then
labels+=("NVMe")
icons+=("")
values+=("$temp")
fi
count=${#values[@]}
if (( count == 0 )); then
printf '{"text":" --","tooltip":"No temp sensors found"}\n'
exit 0
fi
idx=$(( ($(date +%s) / cycle_seconds) % count ))
text="${icons[idx]} ${values[idx]}°C"
tooltip=""
for i in "${!values[@]}"; do
if [[ -n "$tooltip" ]]; then
tooltip+='\n'
fi
tooltip+="${labels[i]}: ${values[i]}°C"
done
printf '{"text":"%s","tooltip":"%s"}\n' "$text" "$tooltip"

View File

@@ -13,12 +13,28 @@
@define-color hl_low #21202e;
@define-color hl_med #403d52;
@define-color hl_high #524f67;
@define-color bar_alpha rgba(25, 23, 36, 0.65);
@define-color surface_alpha rgba(31, 29, 46, 0.82);
@define-color overlay_alpha rgba(38, 35, 58, 0.9);
/* Bar */
window#waybar {
background: @base;
background: @bar_alpha;
color: @text;
border-right: 1px solid @hl_low;
border: 0;
}
/* Extra breathing room for the first/last pill in each section */
#left > :first-child,
#center > :first-child,
#right > :first-child {
margin-top: 8px;
}
#left > :last-child,
#center > :last-child,
#right > :last-child {
margin-bottom: 8px;
}
/* Typography */
@@ -37,7 +53,7 @@ window#waybar {
}
#workspaces button {
background: @surface;
background: @surface_alpha;
color: @text;
border: 1px solid @hl_low;
border-radius: 6px;
@@ -46,7 +62,7 @@ window#waybar {
}
#workspaces button:hover {
background: @overlay;
background: @overlay_alpha;
}
#workspaces button.active {
@@ -74,18 +90,18 @@ window#waybar {
#battery,
#power-profiles-daemon,
#bluetooth,
#group-temps,
#tray,
#temperature,
#custom-swaync,
#custom-temps-cycle,
#custom-hyprsunset,
#custom-alhp {
background: @surface;
background: @surface_alpha;
color: @text;
border: 1px solid @hl_low;
border-radius: 8px;
padding: 3px 6px;
margin: 2px 4px;
margin: 2px 3px;
}
/* Universal hover effects - FIXED */
@@ -102,13 +118,13 @@ window#waybar {
#battery:hover,
#power-profiles-daemon:hover,
#bluetooth:hover,
#group-temps:hover,
#tray:hover,
#temperature:hover,
#custom-swaync:hover,
#custom-temps-cycle:hover,
#custom-hyprsunset:hover,
#custom-alhp:hover {
background: @overlay;
background: @overlay_alpha;
}
/* Window title */
@@ -138,18 +154,10 @@ window#waybar {
border-left: 3px solid @pine;
}
#temperature.gpu_edge {
border-left: 3px solid @iris;
}
#temperature.gpu_hotspot {
border-left: 3px solid @rose;
}
#temperature.gpu_mem {
border-left: 3px solid @foam;
}
#temperature.nvme {
border-left: 3px solid @gold;
}
@@ -272,33 +280,25 @@ window#waybar {
border-left: 3px solid @pine;
}
/* Temps group: outer pill + compact rows */
#group-temps {
border-left: 3px solid @rose;
}
#group-temps > * {
/* Group wrappers (no extra padding to avoid width growth) */
#group-temps,
#group-volume {
background: transparent;
border: 0;
margin: 0;
padding: 0;
}
#custom-temps-wrap {
padding: 4px 6px;
border-radius: 6px;
#custom-temps-cycle {
border-left: 3px solid @rose;
}
#group-temps #temperature {
background: transparent;
color: @text;
margin: 2px 0;
padding: 4px 6px;
border-radius: 6px;
}
#group-temps #temperature:hover {
background: @overlay;
background: @overlay_alpha;
}
/* Temperature modules within group - maintain specific colors */
@@ -314,10 +314,6 @@ window#waybar {
border-left: 3px solid @rose;
}
#group-temps #temperature.gpu2_edge {
border-left: 3px solid @foam;
}
#group-temps #temperature.nvme {
border-left: 3px solid @gold;
}
@@ -340,6 +336,15 @@ window#waybar {
border-left: 3px solid @love;
}
#group-volume #wireplumber {
margin: 1px 0;
padding: 2px 4px;
}
#group-volume #wireplumber:hover {
background: @overlay_alpha;
}
/* Tooltips */
tooltip,
window#waybar tooltip {
@@ -372,7 +377,7 @@ menuitem,
menuitem:hover,
.menuitem:hover {
background: @overlay;
background: @overlay_alpha;
}
menuitem:disabled,