Regenerated

This commit is contained in:
2026-04-29 10:02:21 +02:00
parent f8bf8f54f1
commit bca90e6f34
84 changed files with 5507 additions and 423 deletions
@@ -0,0 +1,327 @@
{
"layer": "top",
"position": "top",
"autohide": true,
"autohide-blocked": false,
"exclusive": true,
"passthrough": false,
"gtk-layer-shell": true,
/*******************************************************************/
"modules-left": [
"group/hardware"
],
"modules-center": [
"group/workspaces"
,"group/sporadic"
],
"modules-right": [
"group/audio"
,"group/tray"
,"group/datestuff"
,"group/system"
,"group/notifications"
],
/*******************************************************************/
"group/workspaces": {
"orientation": "horizontal",
"modules": [
"hyprland/workspaces",
"custom/windows"
]
},
/*******************************************************************/
"group/hardware": {
"orientation": "horizontal",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"custom/hardware-anchor",
"battery",
"cpu",
"memory",
"temperature"
]
},
"custom/hardware-anchor": {
"format": " ",
"tooltip": false
},
/*******************************************************************/
"group/tray": {
"orientation": "horizontal",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"custom/tray-anchor"
,"tray"
]
},
"custom/tray-anchor": {
"format": "󰄝 ",
"tooltip": false
},
/*******************************************************************/
"group/system": {
"orientation": "horizontal",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"custom/system-anchor"
,"custom/power"
,"idle_inhibitor"
]
},
"custom/system-anchor": {
"format": "󱄅",
"tooltip": false
},
/*************************/
"group/connections": {
"orientation": "horizontal",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"custom/connections-anchor"
,"custom/bluetooth"
,"network"
]
},
"custom/connections-anchor": {
"format": " ",
"tooltip": false
},
/*************************/
"group/audio": {
"orientation": "horizontal",
"modules": [
/* "custom/media", */
"pulseaudio"
,"pulseaudio/slider"
]
},
/*************************/
"group/sporadic": {
"orientation": "horizontal",
"modules": [
"custom/media"
,"custom/batterywarn"
/* ,"custom/kdeconnect" */
]
},
/*************************/
"group/datestuff": {
"orientation": "horizontal",
"modules": [
"clock"
]
},
/*************************/
"group/notifications": {
"orientation": "horizontal",
"modules": [
"custom/notifications"
]
},
/*******************************************************************/
"hyprland/workspaces": {
"align": 1,
"format": "{name}",
"interval": 2,
},
"custom/windows": {
"align": 0,
"format": "{text}",
"exec": "~/.config/waybar/scripts/hypr-workspaces.sh",
"interval": 2,
"return-type": "json",
"on-click": "~/.config/waybar/scripts/hypr-workspacesmenu.sh",
"tooltip": true
},
"custom/media": {
"exec": "~/.config/waybar/scripts/media.sh",
"interval": 1,
"return-type": "json",
"format": "{}",
"on-click": "qs -c media",
"max-length": 20,
"scroll-step": 1,
"tooltip": true
},
"custom/bluetooth": {
"exec": "~/.config/waybar/scripts/bluetooth-status.sh",
"interval": 5,
"return-type": "json",
"on-click": "blueman-manager",
"format": "{}"
},
"custom/batterywarn": {
"exec": "~/.config/waybar/scripts/batterywarn.sh",
"interval": 60,
"format": "{}"
},
"custom/kdeconnect": {
"format": "{name} {battery}% ",
"interval": 10,
"exec": "~/.config/waybar/scripts/kdeconnect-status.sh",
"tooltip": true
},
"custom/notifications": {
"tooltip": false,
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"format": "{icon}",
"format-icons": {
"notification": "󰂞",
"none": "",
"dnd-notification": "󰂠",
"dnd-none": "󰪓",
},
"on-click": "swaync-client -t",
"on-click-right": "swaync-client -d",
"on-click-middle": "swaync-client -dn",
},
"custom/power": {
"format": "󰤄",
"on-click": "qs -c powermenu",
"tooltip-format": "Power Menu"
},
"pulseaudio": {
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"headphones": "",
"headset": "",
"phone": "",
"portable": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
"pulseaudio/slider": {
"min": 0,
"max": 100,
"orientation": "horizontal"
},
"idle_inhibitor": {
"tooltip": true,
"format": "{icon}",
"format-icons": {
"activated": "  ",
"deactivated": " 󰒲 "
},
"tooltip-format-activated": "Staying awake",
"tooltip-format-deactivated": "Might sleep...."
},
"network": {
"format-wifi": " ({bandwidthDownBits})",
"format-ethernet": " ({bandwidthDownBits})",
"format-disconnected": "Disconnected ⚠",
"tooltip-format-wifi": "{essid} ({signalStrength}%)",
"tooltip-format-ethernet": "{ifname}: {ipaddr}/{cidr}",
"on-click": "networkmanager_dmenu --dmenu --style ~/.config/wofi/style.css --allow-images=false",
"on-click-right": "nm-connection-editor"
},
"cpu": {
"format": "{usage}%  ",
"tooltip": false
},
"memory": {
"format": "{percentage}%  "
},
"temperature": {
"format": "{temperatureC}°C ",
"tooltip": false
},
"tray": {
"spacing": 10,
"icon-size": 13
},
"clock": {
"format": "{:%H:%M}",
"tooltip-format": "<tt><small>{calendar}</small></tt>",
"calendar": {
"mode" : "year",
"mode-mon-col" : 3,
"weeks-pos" : "left",
"on-scroll" : 1,
"on-click-right": "mode",
"format": {
"months": "<span color='#fab387'><b>{}</b></span>",
"days": "<span color='#cba6f7'><b>{}</b></span>",
"weeks": "<span color='#a6e3a1'><b>W{}</b></span>",
"weekdays": "<span color='#f9e2af'><b>{}</b></span>",
"today": "<span color='#1e1e2e' bgcolor='#a6e3a1'>{}</span>"
}
},
"on-click": "flatpak run eu.betterbird.Betterbird -calendar"
},
"battery": {
"bat": "BAT0",
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% 󰂄",
"format-plugged": "{capacity}%  ",
"format-icons": ["󰁺", "󰁼", "󰁾", "󰂀", "󱈏 "]
}
}
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
capacity=$(cat /sys/class/power_supply/BAT*/capacity)
status=$(cat /sys/class/power_supply/BAT*/status)
if [ "$status" != "Charging" ] && [ "$capacity" -lt 15 ]; then
echo " $capacity%"
else
echo ""
fi
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
bt_connected=""
while read -r _ mac name_rest; do
if [ "$(bluetoothctl info "$mac" | awk '/Connected:/ {print $2}')" = "yes" ]; then
bt_connected+="$name_rest\n"
fi
done < <(bluetoothctl devices)
# icon
if [ -n "$bt_connected" ]; then
icon=""
tooltip=$(printf "%b" "$bt_connected")
else
icon=""
tooltip="No devices connected"
fi
# ALWAYS produce valid JSON
printf '{"text": "%s", "tooltip": "%s"}\n' "$icon" "$tooltip"
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
# Get focused monitor name
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused==true) | .name')
monitor="${WAYBAR_OUTPUT_NAME:-$focused_monitor}"
# Hide if not focused monitor
if [ "$monitor" != "$focused_monitor" ]; then
jq -c -n '{text:"", class:"hidden"}'
exit 0
fi
# Get active workspace on this monitor
active_ws=$(hyprctl monitors -j | jq -r \
".[] | select(.name==\"$monitor\") | .activeWorkspace.id")
# Get clients
clients=$(hyprctl clients -j | jq -r \
".[] | select(.workspace.id==$active_ws) | \"\(.title)\"")
count=$(echo "$clients" | grep -c '\S')
# Hide if 0 or 1 clients — no point showing window switcher
if [ "$count" -le 1 ]; then
jq -c -n '{text:"", class:"hidden"}'
exit 0
fi
tooltip=$(echo "$clients" | sed 's/^/• /' | paste -sd '\n' -)
jq -c -n \
--arg text "$count" \
--arg tooltip "$tooltip" \
--arg class "active" \
'{text:$text, tooltip:$tooltip, class:$class}'
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
active_ws=$(hyprctl activeworkspace -j | jq -r '.id')
clients=$(hyprctl clients -j | jq -r \
".[] | select(.workspace.id==$active_ws) | \"\(.address)|\(.title)\"")
choice=$(echo "$clients" | cut -d'|' -f2 \
| wofi --dmenu \
--style ~/.config/wofi/style.css \
--allow-images=false \
--prompt "Active windows ...")
[ -z "$choice" ] && exit 0
addr=$(echo "$clients" | grep "|$choice" | head -n1 | cut -d'|' -f1)
hyprctl dispatch focuswindow address:"$addr"
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
DEVICE=$(kdeconnect-cli --list-devices | grep -oP '(?<=\().*?(?=\))' | head -n 1)
if [ -z "$DEVICE" ]; then
echo "No phone"
exit 0
fi
NAME=$(kdeconnect-cli -d "$DEVICE" --name 2>/dev/null)
BATTERY=$(kdeconnect-cli -d "$DEVICE" --battery 2>/dev/null | grep -o '[0-9]\+' | head -n 1)
if [ -z "$BATTERY" ]; then
echo "$NAME"
else
echo "$NAME $BATTERY%"
fi
+92
View File
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
# Player selection — prefer actively playing player
player=$(playerctl -l 2>/dev/null | while read -r p; do
st=$(playerctl --player="$p" status 2>/dev/null)
[ "$st" = "Playing" ] && echo "$p" && break
done)
[ -z "$player" ] && player=$(playerctl -l 2>/dev/null | head -n1)
if [ -z "$player" ]; then
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
exit 0
fi
status=$(playerctl --player="$player" status 2>/dev/null)
if [ "$status" != "Playing" ] && [ "$status" != "Paused" ]; then
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
exit 0
fi
artist=$(playerctl --player="$player" metadata artist 2>/dev/null)
title=$(playerctl --player="$player" metadata title 2>/dev/null)
album=$(playerctl --player="$player" metadata album 2>/dev/null)
art=$(playerctl --player="$player" metadata mpris:artUrl 2>/dev/null)
length=$(playerctl --player="$player" metadata mpris:length 2>/dev/null)
position=$(playerctl --player="$player" position 2>/dev/null)
# Progress percentage — pure bash, no bc needed
if [ -n "$length" ] && [ -n "$position" ] && [ "$length" -gt 0 ] 2>/dev/null; then
pos_us=$(echo "$position" | awk '{printf "%d", $1 * 1000000}')
progress=$(( pos_us * 100 / length ))
else
progress=0
fi
# Spotify device
device=""
if [[ "$player" == *"spotify"* ]]; then
device=$(playerctl --player="$player" metadata xesam:url 2>/dev/null | grep -o 'device=[^&]*' | cut -d= -f2)
fi
# Icon
if [ "$status" = "Paused" ]; then
icon="⏸ "
else
icon="▶ "
fi
# Scrolling ticker
CACHE_FILE="/tmp/waybar_media_scroll_${player//\//_}"
full_text="${artist}${title}"
text_len=${#full_text}
display_len=30
# Reset scroll offset when track changes
TRACK_FILE="/tmp/waybar_media_track_${player//\//_}"
last_track=""
[ -f "$TRACK_FILE" ] && last_track=$(cat "$TRACK_FILE")
if [ "$full_text" != "$last_track" ]; then
echo "0" > "$CACHE_FILE"
echo "$full_text" > "$TRACK_FILE"
fi
if [ "$text_len" -le "$display_len" ]; then
text="$full_text"
else
offset=0
[ -f "$CACHE_FILE" ] && offset=$(cat "$CACHE_FILE")
padded="${full_text} ${full_text}"
text="${padded:$offset:$display_len}"
next_offset=$(( (offset + 1) % (text_len + 4) ))
echo "$next_offset" > "$CACHE_FILE"
fi
# Build tooltip
tooltip="Artist: ${artist}
Title: ${title}
Album: ${album}"
if [ -n "$device" ]; then
tooltip="${tooltip}
󰓻 ${device}"
fi
tooltip="${tooltip}"
jq -c -n \
--arg text "${icon}${text}" \
--arg tooltip "$tooltip" \
--arg class "$player" \
--arg art "$art" \
'{text: $text, tooltip: $tooltip, class: $class, alt: $art}'
@@ -0,0 +1,252 @@
/* --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- */
@import url("file:///home/henrov/.config/shared/colors.css");
/* --- Global --- */
* {
font-family:
Aporetic Sans Mono,
Iosevka Nerd Font,
Roboto,
Helvetica,
Arial,
sans-serif;
font-size: 13px;
}
window#waybar {
background-color: transparent;
color: @text;
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
}
/* ---------GROUPS------------------------------------------------ */
/* --- Group-level theming --- */
#hardware,
#workspaces,
#sporadic,
#audio,
#tray,
#datestuff,
#system,
#notifications,
#connections {
color: @text;
font-weight: bold;
border-radius: 30px;
/* --- Option 1 Green blue filled
background:
linear-gradient(transparent, transparent) padding-box,
linear-gradient(45deg, @blue, @green) border-box;
border: 2px solid transparent;
--- */
/* --- Option 2 default background green blue border
background:
linear-gradient(@base, @base) padding-box,
linear-gradient(45deg, @blue, @green) border-box;
border: 2px solid transparent;
*/
/* --- Option 3 NO background, no border */
background: transparent;
border: 2px solid transparent;
/* --- Option 5 Solid border
background: transparent;
border: 2px solid @border;
--- */
margin: 0px 3px;
padding: 1px 4px;
}
/* --- Group-level label padding --- */
#hardware label,
#workspaces label,
#sporadic label,
#audio label,
#tray label,
#datestuff label,
#system label,
#notifications label,
#connections label {
padding: 0px 5px;
transition: padding 0.2s ease;
}
/* --- Group anchors default visible --- */
#custom-hardware-anchor,
#custom-tray-anchor,
#custom-system-anchor,
#custom-connections-anchor {
/* min-width: 80px; */
padding: 0 5px;
margin: 0 2px;
opacity: 1;
transition: opacity 0.2s ease, min-width 0.2s ease, padding 0.2s ease;
}
/* --- Hide anchors on hover of the group --- */
#hardware:hover #custom-hardware-anchor,
#tray:hover #custom-tray-anchor,
#system:hover #custom-system-anchor,
#connections:hover #custom-connections-anchor {
opacity: 0;
min-width: 0;
padding: 0;
margin: 0;
}
/* -----------------------------
WORKSPACES / WINDOWS MODULE
----------------------------- */
#workspaces {
border: none;
background: none;
}
/* Disable hover effects completely */
#workspaces button,
#workspaces button:hover {
border: 2px solid transparent;
padding: 0 6px;
margin: 0;
border-radius: 30px;
transition: none;
}
/* Active vs inactive workspace colors */
#workspaces button.active {
background: linear-gradient(45deg, @blue, @green);
color: @base;
}
activeworkspaces:not(.active) {
background: linear-gradient(@base-alpha, @base-alpha);
border: 2px solid transparent;
color: @text-muted;
}
label#custom-windows.module {
font-size: 14px;
color: @base;
padding: 0 8px;
border-radius: 30px;
transition: all 0.3s ease;
}
label#custom-windows.active {
background: linear-gradient(45deg, alpha(@blue, 0.5), alpha(@green, 0.5));
}
label#custom-windows:not(.active) {
background: transparent;
color: transparent;
}
/* ---- Media ---*/
#custom-media {
padding: 0 8px;
color: @text;
}
#custom-media.inactive {
background: transparent;
color: transparent;
opacity: 0;
padding: 0;
margin: 0;
min-width: 0;
}
/* ---- Pulseaudio ---*/
#pulseaudio-slider {
padding: 0 4px;
margin: 0;
min-width: 140px;
}
#pulseaudio-slider slider {
min-height: 0px;
min-width: 0px;
opacity: 0;
border-radius: 30px;
background: linear-gradient(45deg, @blue, @green);
border: none;
box-shadow: none;
margin: 0;
padding: 0;
}
#pulseaudio-slider trough {
min-height: 10px;
min-width: 120px;
border-radius: 30px;
background: transparent;
}
#pulseaudio-slider highlight {
min-width: 10px;
border-radius: 30px;
background: linear-gradient(45deg, @blue, @green);
border: 2px solid transparent;
}
/* --------------------------------------------------------- */
/* STATES / SPECIALS */
#custom-notifications.notification,
#custom-notifications.dnd-notification,
#idle_inhibitor.activated {
background: linear-gradient(45deg, @blue, @green);
border: 2px solid transparent;
color: @base;
border-radius: 30px;
}
#battery.charging {
color: @green;
}
#batterywarn {
color: @red;
animation: blink 0.5s linear infinite alternate;
border-radius: 30px;
border: 2px solid transparent;
}
#battery.warning:not(.charging) {
color: @text;
animation: blink 0.5s linear infinite alternate;
border-radius: 30px;
border: 2px solid transparent;
}
#custom-batterywarn {
margin: 0 5px;
padding: 0 10px;
color: @red;
animation: blink 0.5s linear infinite alternate;
}
@keyframes blink {
to {
background-color: #ffffff;
color: @base;
border-radius: 30px;
border: 2px solid transparent;
}
}
#network.disconnected {
background-color: @red;
border-radius: 30px;
border: 2px solid transparent;
}
#temperature.critical {
background-color: @red;
border-radius: 30px;
border: 2px solid transparent;
}